INET Framework for OMNeT++/OMNEST
|
Class generated from inet/networklayer/contract/ipv6/IPv6ControlInfo.msg:68
by nedtool.
More...
#include <IPv6ControlInfo_m.h>
Public Member Functions | |
virtual | ~IPv6ControlInfo_Base () |
virtual IPv6ControlInfo_Base * | dup () const override |
virtual void | parsimPack (omnetpp::cCommBuffer *b) const override |
virtual void | parsimUnpack (omnetpp::cCommBuffer *b) override |
virtual short | getProtocol () const |
virtual void | setProtocol (short protocol) |
virtual IPv6Address & | getDestAddr () |
virtual const IPv6Address & | getDestAddr () const |
virtual void | setDestAddr (const IPv6Address &destAddr) |
virtual IPv6Address & | getSrcAddr () |
virtual const IPv6Address & | getSrcAddr () const |
virtual void | setSrcAddr (const IPv6Address &srcAddr) |
virtual unsigned char | getTrafficClass () const |
virtual void | setTrafficClass (unsigned char trafficClass) |
virtual int | getDiffServCodePoint () const =0 |
virtual void | setDiffServCodePoint (int diffServCodePoint)=0 |
virtual int | getExplicitCongestionNotification () const =0 |
virtual void | setExplicitCongestionNotification (int explicitCongestionNotification)=0 |
virtual short | getHopLimit () const |
virtual void | setHopLimit (short hopLimit) |
virtual int | getInterfaceId () const |
virtual void | setInterfaceId (int interfaceId) |
virtual bool | getMulticastLoop () const |
virtual void | setMulticastLoop (bool multicastLoop) |
virtual void | setExtensionHeaderArraySize (unsigned int size)=0 |
virtual unsigned int | getExtensionHeaderArraySize () const =0 |
virtual IPv6ExtensionHeaderPtr & | getExtensionHeader (unsigned int k)=0 |
virtual const IPv6ExtensionHeaderPtr & | getExtensionHeader (unsigned int k) const |
virtual void | setExtensionHeader (unsigned int k, const IPv6ExtensionHeaderPtr &extensionHeader)=0 |
Protected Member Functions | |
bool | operator== (const IPv6ControlInfo_Base &) |
IPv6ControlInfo_Base () | |
IPv6ControlInfo_Base (const IPv6ControlInfo_Base &other) | |
IPv6ControlInfo_Base & | operator= (const IPv6ControlInfo_Base &other) |
Protected Attributes | |
short | protocol |
IPv6Address | destAddr |
IPv6Address | srcAddr |
unsigned char | trafficClass |
short | hopLimit |
int | interfaceId |
bool | multicastLoop |
Private Member Functions | |
void | copy (const IPv6ControlInfo_Base &other) |
Class generated from inet/networklayer/contract/ipv6/IPv6ControlInfo.msg:68
by nedtool.
// // 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); short protocol @enum(IPProtocolId); // transport layer protocol IPv6Address destAddr; // destination IPv6 address IPv6Address srcAddr; // source IPv6 address unsigned char trafficClass; // Traffic Class byte (low 6 bits: DSCP; highest 2 bits: ECN) abstract int diffServCodePoint; // maps to bits 0-5 of trafficClass abstract int explicitCongestionNotification; // maps to bits 6-7 of trafficClass short hopLimit; // hop limit int interfaceId = -1; // interface on which the datagram was received, or // should be sent (see ~InterfaceTable) bool multicastLoop; // if true, sent multicast datagrams will be looped back abstract IPv6ExtensionHeaderPtr extensionHeader[]; // array of extension headers, subclassed from ~IPv6ExtensionHeader }
IPv6ControlInfo_Base is only useful if it gets subclassed, and IPv6ControlInfo is derived from it. The minimum code to be written for IPv6ControlInfo is the following:
class INET_API IPv6ControlInfo : public IPv6ControlInfo_Base { private: void copy(const IPv6ControlInfo& other) { ... }
public: IPv6ControlInfo() : IPv6ControlInfo_Base() {} IPv6ControlInfo(const IPv6ControlInfo& other) : IPv6ControlInfo_Base(other) {copy(other);} IPv6ControlInfo& operator=(const IPv6ControlInfo& other) {if (this==&other) return *this; IPv6ControlInfo_Base::operator=(other); copy(other); return *this;} virtual IPv6ControlInfo *dup() const override {return new IPv6ControlInfo(*this);} // ADD CODE HERE to redefine and implement pure virtual functions from IPv6ControlInfo_Base };
The following should go into a .cc (.cpp) file:
Register_Class(IPv6ControlInfo)
|
protected |
|
protected |
|
virtual |
|
private |
|
inlineoverridevirtual |
Reimplemented in inet::IPv6ControlInfo.
|
virtual |
Referenced by inet::IPv6::encapsulate(), inet::xMIPv6::processBRRMessage(), inet::xMIPv6::processBUMessage(), inet::xMIPv6::processCoTIMessage(), inet::ICMPv6::processEchoRequest(), inet::xMIPv6::processHoTIMessage(), inet::UDP::processUDPPacket(), inet::xMIPv6::sendMobilityMessageToIPv6Module(), inet::xMIPv6::validateBUMessage(), inet::xMIPv6::validateCoTMessage(), inet::xMIPv6::validateHoTMessage(), inet::IPv6NeighbourDiscovery::validateNAPacket(), and inet::IPv6NeighbourDiscovery::validateNSPacket().
|
inlinevirtual |
Referenced by getDestAddr().
|
pure virtual |
Implemented in inet::IPv6ControlInfo.
|
pure virtual |
Implemented in inet::IPv6ControlInfo.
|
pure virtual |
Implemented in inet::IPv6ControlInfo.
|
inlinevirtual |
Referenced by getExtensionHeader().
|
pure virtual |
Implemented in inet::IPv6ControlInfo.
|
virtual |
Reimplemented in inet::IPv6ControlInfo.
Referenced by inet::IPv6ControlInfo::getHopLimit().
|
virtual |
Reimplemented in inet::IPv6ControlInfo.
Referenced by inet::IPv6ControlInfo::getInterfaceId().
|
virtual |
|
virtual |
|
virtual |
Referenced by inet::IPv6Tunneling::decapsulateDatagram(), inet::IPv6::encapsulate(), inet::xMIPv6::processBAMessage(), inet::xMIPv6::processBRRMessage(), inet::xMIPv6::processBUMessage(), inet::xMIPv6::processCoTIMessage(), inet::xMIPv6::processCoTMessage(), inet::ICMPv6::processEchoRequest(), inet::xMIPv6::processHoTIMessage(), inet::xMIPv6::processHoTMessage(), inet::IPv6NeighbourDiscovery::processNSForNonTentativeAddress(), inet::IPv6NeighbourDiscovery::processNSForTentativeAddress(), inet::IPv6NeighbourDiscovery::processNSWithSpecifiedSrcAddr(), inet::IPv6NeighbourDiscovery::processRAForRouterUpdates(), inet::IPv6NeighbourDiscovery::processRAPacket(), inet::UDP::processUDPPacket(), inet::xMIPv6::sendMobilityMessageToIPv6Module(), inet::IPv6NeighbourDiscovery::sendSolicitedNA(), inet::xMIPv6::validateBAck(), inet::xMIPv6::validateBUMessage(), inet::xMIPv6::validateCoTMessage(), inet::xMIPv6::validateHoTMessage(), inet::IPv6NeighbourDiscovery::validateNSPacket(), inet::IPv6NeighbourDiscovery::validateRAPacket(), and inet::IPv6NeighbourDiscovery::validateRSPacket().
|
inlinevirtual |
Referenced by getSrcAddr().
|
virtual |
Referenced by inet::IPv6::encapsulate(), and inet::UDP::processUDPPacket().
|
protected |
Referenced by inet::IPv6ControlInfo::operator=().
|
protected |
|
overridevirtual |
|
overridevirtual |
|
virtual |
|
pure virtual |
Implemented in inet::IPv6ControlInfo.
|
pure virtual |
Implemented in inet::IPv6ControlInfo.
|
pure virtual |
Implemented in inet::IPv6ControlInfo.
|
pure virtual |
Implemented in inet::IPv6ControlInfo.
|
virtual |
Reimplemented in inet::IPv6ControlInfo.
Referenced by inet::IPv6ControlInfo::setHopLimit().
|
virtual |
Reimplemented in inet::IPv6ControlInfo.
Referenced by inet::IPv6ControlInfo::setInterfaceId().
|
virtual |
Referenced by inet::UDP::sendDown().
|
virtual |
Referenced by inet::IPv6::decapsulate(), inet::IPv6Tunneling::encapsulateDatagram(), inet::UDP::sendDown(), inet::ICMPv6::sendEchoRequest(), inet::ICMPv6::sendErrorMessage(), inet::xMIPv6::sendMobilityMessageToIPv6Module(), inet::IPv6NeighbourDiscovery::sendPacketToIPv6Module(), inet::ICMPv6::sendToIP(), and inet::IPv6ControlInfo::setTransportProtocol().
|
virtual |
|
virtual |
Referenced by inet::IPv6::decapsulate(), and inet::UDP::sendDown().
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |