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