File: Network/IPv4/IPDatagram.msg
Represents an IP datagram.
Uses the following cMessage fields:
Additional length fields defined in this class are in bytes (totalLength()=length()/8 and header_length), or 8 bytes (fragment_offset).
Only only one of the option fields can exist at a time.
The following diagram shows part of the inheritance hierarchy. Unresolved types are missing from the diagram. Click here to see the full picture.

| Name | Value | Description |
|---|---|---|
| omitGetVerb | true |
| Name | Type | Description |
|---|---|---|
| version | short | |
| headerLength | short | |
| srcAddress | IPAddress | |
| destAddress | IPAddress | |
| transportProtocol | int | |
| timeToLive | short | |
| identification | int | |
| moreFragments | bool | |
| dontFragment | bool | |
| fragmentOffset | int | |
| diffServCodePoint | unsigned char | |
| optionCode | int | |
| recordRoute | IPRecordRouteOption | |
| timestampOption | IPTimestampOption | |
| sourceRoutingOption | IPSourceRoutingOption | optionCode determines if strict or loose source routing |
message IPDatagram { properties: omitGetVerb = true; fields: short version = 4; short headerLength = IP_HEADER_BYTES; IPAddress srcAddress; IPAddress destAddress; int transportProtocol enum(IPProtocolId) = IP_PROT_NONE; short timeToLive; int identification; bool moreFragments; bool dontFragment; int fragmentOffset; unsigned char diffServCodePoint; int optionCode enum(IPOption) = IPOPTION_NO_OPTION; //# FIXME modify header length when options are present IPRecordRouteOption recordRoute; IPTimestampOption timestampOption; IPSourceRoutingOption sourceRoutingOption; // optionCode determines if strict or loose source routing };