#include <IPv6Datagram.h>
Public Member Functions | |
IPv6ExtensionHeader () | |
IPv6ExtensionHeader (const IPv6ExtensionHeader &other) | |
IPv6ExtensionHeader & | operator= (const IPv6ExtensionHeader &other) |
virtual IPv6ExtensionHeader * | dup () const |
virtual IPProtocolId | getExtensionType () const |
virtual int | getByteLength () const |
Represents an IPv6 extension header. More info in the IPv6Datagram.msg file (and the documentation generated from it).
Definition at line 74 of file IPv6Datagram.h.
IPv6ExtensionHeader::IPv6ExtensionHeader | ( | ) | [inline] |
Definition at line 77 of file IPv6Datagram.h.
: IPv6ExtensionHeader_Base() {}
IPv6ExtensionHeader::IPv6ExtensionHeader | ( | const IPv6ExtensionHeader & | other | ) | [inline] |
Definition at line 78 of file IPv6Datagram.h.
: IPv6ExtensionHeader_Base() {operator=(other);}
virtual IPv6ExtensionHeader* IPv6ExtensionHeader::dup | ( | ) | const [inline, virtual] |
Definition at line 80 of file IPv6Datagram.h.
{throw cRuntimeError(this, "dup() should be redefined");}
int IPv6ExtensionHeader::getByteLength | ( | ) | const [virtual] |
Definition at line 111 of file IPv6Datagram.cc.
{ // FIXME msg files don't yet support readonly attrs that can be // redefined in subclasses, so for now we resort to the following // unsafe and unextensible nasty solution if (dynamic_cast<const IPv6HopByHopOptionsHeader*>(this)) { return 8; // FIXME verify } else if (dynamic_cast<const IPv6RoutingHeader*>(this)) { return 8; // FIXME verify } else if (dynamic_cast<const IPv6FragmentHeader*>(this)) { return 8; } else if (dynamic_cast<const IPv6DestinationOptionsHeader*>(this)) { return 8; // FIXME verify } else if (dynamic_cast<const IPv6AuthenticationHeader*>(this)) { return 8; // FIXME verify } else if (dynamic_cast<const IPv6EncapsulatingSecurityPayloadHeader*>(this)) { return 8; // FIXME verify } else { throw cRuntimeError("unrecognised HeaderExtension subclass %s in IPv6ExtensionHeader::getExtensionType()", getClassName()); } }
IPProtocolId IPv6ExtensionHeader::getExtensionType | ( | ) | const [virtual] |
Definition at line 89 of file IPv6Datagram.cc.
{ // FIXME msg files don't yet support readonly attrs that can be // redefined in subclasses, so for now we resort to the following // unsafe and unextensible nasty solution if (dynamic_cast<const IPv6HopByHopOptionsHeader*>(this)) { return IP_PROT_IPv6EXT_HOP; } else if (dynamic_cast<const IPv6RoutingHeader*>(this)) { return IP_PROT_IPv6EXT_ROUTING; } else if (dynamic_cast<const IPv6FragmentHeader*>(this)) { return IP_PROT_IPv6EXT_FRAGMENT; } else if (dynamic_cast<const IPv6DestinationOptionsHeader*>(this)) { return IP_PROT_IPv6EXT_DEST; } else if (dynamic_cast<const IPv6AuthenticationHeader*>(this)) { return IP_PROT_IPv6EXT_AUTH; } else if (dynamic_cast<const IPv6EncapsulatingSecurityPayloadHeader*>(this)) { return IP_PROT_IPv6EXT_ESP; } else { throw cRuntimeError("unrecognised HeaderExtension subclass %s in IPv6ExtensionHeader::getExtensionType()", getClassName()); } }
IPv6ExtensionHeader& IPv6ExtensionHeader::operator= | ( | const IPv6ExtensionHeader & | other | ) | [inline] |
Definition at line 79 of file IPv6Datagram.h.
{IPv6ExtensionHeader_Base::operator=(other); return *this;}