INET Framework for OMNeT++/OMNEST
IPv6ExtensionHeader Class Reference

#include <IPv6Datagram.h>

List of all members.

Public Member Functions

 IPv6ExtensionHeader ()
 IPv6ExtensionHeader (const IPv6ExtensionHeader &other)
IPv6ExtensionHeaderoperator= (const IPv6ExtensionHeader &other)
virtual IPv6ExtensionHeaderdup () const
virtual IPProtocolId getExtensionType () const
virtual int getByteLength () const

Detailed Description

Represents an IPv6 extension header. More info in the IPv6Datagram.msg file (and the documentation generated from it).


Constructor & Destructor Documentation

IPv6ExtensionHeader::IPv6ExtensionHeader ( ) [inline]
: IPv6ExtensionHeader_Base() {}
IPv6ExtensionHeader::IPv6ExtensionHeader ( const IPv6ExtensionHeader other) [inline]
: IPv6ExtensionHeader_Base() {operator=(other);}

Member Function Documentation

virtual IPv6ExtensionHeader* IPv6ExtensionHeader::dup ( ) const [inline, virtual]
{throw cRuntimeError(this, "dup() should be redefined");}
int IPv6ExtensionHeader::getByteLength ( ) const [virtual]
{
    // 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]
{
    // 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]
{IPv6ExtensionHeader_Base::operator=(other); return *this;}

The documentation for this class was generated from the following files: