## Network Layer Decodes

### Class ICMP6

Provides access to fields in an (IPv6) ICMP header.

Instance Variables
type | icmp.type -> anInteger
| ICMP message type
code | icmp.code -> anInteger
| ICMP message code
checksum | icmp.checksum -> anInteger
| ICMP checksum
data | icmp.data -> aByteArray
| All the ICMP bytes, i.e. header and payload. Use this if you need to work with some of the ICMP message types that python-libtrace doesn't decode fully
payload | icmp.payload ->anIP6 for types 1, 2, 3 and 4, otherwise aByteArray
| Some ICMP messages carry content from the packet that triggered them; icmp6.payload returns as much as it can of the triggering packet

The content of an (IPv6) ICMP header varies depending on its type field. python-libtrace decodes the following types ...

Echo Request (type 128) and Echo Reply (type 129)
ident | icmp6.echo.ident -> anInteger
| Echo identifier
sequence | icmp6.echo.sequence -> anInteger
| Echo sequence number

Packet too big (type 2)
mtu | icmp6.toobig.mtu -> anInteger
| MTU of link causing problem. Used as part of the Path MTU Discovery process

Parameter problem (type 4)
pointer | icmp6.param.pointer-> anInteger
| Offset within the invoking packet where an error was detected

Neighbour discovery (types 135-136), Redirect (type 137)
target_prefix | icmp6.neighbour.target_prefix -> anIPprefix
| IPv6 address of the solicitation's target
dest-prefix | icmp6.neighbour.target.dest_prefix -> anIPprefix
| Source Address of the packet that triggered the redirect message

Nevil Brownlee
Sat, 22 Oct 16 (NZDT)