Namespace inet
IcmpHeader
classICMP message class
Note: receiver MUST NOT decapsulate the datagram from ICMP error messages, because their contents is conceptually truncated. decapsulate() would result in a "length became negative" error; use getEncapsulatedMsg() instead.
TODO add originator id and sequence number and create an ICMPControlInfo
Extends
| Name | Type | Description |
|---|---|---|
| FieldsChunk | (unknown -- not in documented files) |
Fields
| Name | Type | Description |
|---|---|---|
| chunkLength | ||
| type | IcmpType |
1 byte |
| code | int |
1 byte |
| chksum | int |
2 bytes, RFC 1071 |
| crcMode | CrcMode |
Packet operations (observed)
| action | module |
|---|---|
| insertAtFront | Icmp |
| peekAtFront | Icmp, Udp |
| peekDataAt | Icmp |
| popAtFront | PingApp, PcapRecorder, Udp |
Source code
// // ICMP message class // // Note: receiver MUST NOT decapsulate the datagram from ICMP error messages, // because their contents is conceptually truncated. decapsulate() would result // in a "length became negative" error; use getEncapsulatedMsg() instead. // // TODO add originator id and sequence number and create an ICMPControlInfo class IcmpHeader extends FieldsChunk { chunkLength = B(8); IcmpType type; // 1 byte int code = -1; // 1 byte int chksum = 0; // 2 bytes, RFC 1071 CrcMode crcMode = CRC_MODE_UNDEFINED; }File: src/inet/networklayer/ipv4/IcmpHeader.msg