Message IPDatagram

File: Network/IPv4/IPDatagram.msg

C++ definition: click here

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.

Inheritance diagram:

The following diagram shows part of the inheritance hierarchy. Unresolved types are missing from the diagram. Click here to see the full picture.

IPDatagram

Properties:

Name Value Description
omitGetVerb true

Fields:

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

Source code:

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
};