Class IPv6ControlInfo

File: src/networklayer/contract/IPv6ControlInfo.msg

C++ definition

Control information for sending/receiving packets over IPv6.

To send a packet over IPv6, fill in an IPv6ControlInfo object, attach it to the packet with the C++ method setControlInfo(), the send it to the IPv6 module.

When sending, the following fields are required:

Optional fields:

When IPv6 delivers a packet to higher layers, it also attaches an IPv6ControlInfo to it. It fills in the following fields:

IPv6 also puts the original datagram object into the control info, because it may be needed by higher layers.

Usage diagram:

The following diagram shows usage relationships between types. Unresolved types are missing from the diagram. Click here to see the full picture.

Inheritance diagram:

The following diagram shows inheritance relationships for this type. Unresolved types are missing from the diagram. Click here to see the full picture.

Fields:

Name Type Description
protocol int

transport layer protocol

interfaceId int

interface on which the datagram was received, or should be sent (see InterfaceTable)

hopLimit short

hop limit

destAddr IPv6Address

destination IPv6 address

srcAddr IPv6Address

source IPv6 address

Source code:

//
// Control information for sending/receiving packets over \IPv6.
//
// To send a packet over \IPv6, fill in an IPv6ControlInfo object,
// attach it to the packet with the C++ method setControlInfo(),
// the send it to the IPv6 module.
//
// When sending, the following fields are required:
// - protocol: a value from IPProtocolId
// - destAddr
//
// Optional fields:
// - srcAddr: it will be set to the address of the outgoing interface
// - timeToLive
//
// When IPv6 delivers a packet to higher layers, it also attaches an 
// IPv6ControlInfo to it. It fills in the following fields: 
//  - srcAddr, destAddr, protocol, hopLimit: values from the original datagram
//  - interfaceId: the interface on which the datagram arrived, or -1 if it was
//    created locally
//
// IPv6 also puts the original datagram object into the control info, because
// it may be needed by higher layers.
//
class IPv6ControlInfo
{
    @customize(true);
    int protocol @enum(IPProtocolId);  // transport layer protocol
    IPv6Address destAddr; // destination IPv6 address
    IPv6Address srcAddr;  // source IPv6 address
    short hopLimit;       // hop limit
    int interfaceId = -1; // interface on which the datagram was received, or
                          // should be sent (see InterfaceTable)
}