IPv6ExtensionHeader Class Reference

#include <IPv6Datagram.h>

List of all members.


Detailed Description

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

Public Member Functions

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

Constructor & Destructor Documentation

IPv6ExtensionHeader::IPv6ExtensionHeader (  )  [inline]

00077 : IPv6ExtensionHeader_Base() {}

IPv6ExtensionHeader::IPv6ExtensionHeader ( const IPv6ExtensionHeader other  )  [inline]

00078 : IPv6ExtensionHeader_Base() {operator=(other);}


Member Function Documentation

IPv6ExtensionHeader& IPv6ExtensionHeader::operator= ( const IPv6ExtensionHeader other  )  [inline]

00079 {IPv6ExtensionHeader_Base::operator=(other); return *this;}

IPProtocolId IPv6ExtensionHeader::getExtensionType (  )  const [virtual]

00117 {
00118     // FIXME msg files don't yet support readonly attrs that can be
00119     // redefined in subclasses, so for now we resort to the following
00120     // unsafe and unextensible nasty solution
00121     if (dynamic_cast<const IPv6HopByHopOptionsHeader*>(this)) {
00122         return IP_PROT_IPv6EXT_HOP;
00123     } else if (dynamic_cast<const IPv6RoutingHeader*>(this)) {
00124         return IP_PROT_IPv6EXT_ROUTING;
00125     } else if (dynamic_cast<const IPv6FragmentHeader*>(this)) {
00126         return IP_PROT_IPv6EXT_FRAGMENT;
00127     } else if (dynamic_cast<const IPv6DestinationOptionsHeader*>(this)) {
00128         return IP_PROT_IPv6EXT_DEST;
00129     } else if (dynamic_cast<const IPv6AuthenticationHeader*>(this)) {
00130         return IP_PROT_IPv6EXT_AUTH;
00131     } else if (dynamic_cast<const IPv6EncapsulatingSecurityPayloadHeader*>(this)) {
00132         return IP_PROT_IPv6EXT_ESP;
00133     } else {
00134         throw cRuntimeError("unrecognised HeaderExtension subclass %s in IPv6ExtensionHeader::getExtensionType()", getClassName());
00135     }
00136 }

int IPv6ExtensionHeader::getByteLength (  )  const [virtual]

00139 {
00140     // FIXME msg files don't yet support readonly attrs that can be
00141     // redefined in subclasses, so for now we resort to the following
00142     // unsafe and unextensible nasty solution
00143     if (dynamic_cast<const IPv6HopByHopOptionsHeader*>(this)) {
00144         return 8; // FIXME verify
00145     } else if (dynamic_cast<const IPv6RoutingHeader*>(this)) {
00146         return 8; // FIXME verify
00147     } else if (dynamic_cast<const IPv6FragmentHeader*>(this)) {
00148         return 8;
00149     } else if (dynamic_cast<const IPv6DestinationOptionsHeader*>(this)) {
00150         return 8; // FIXME verify
00151     } else if (dynamic_cast<const IPv6AuthenticationHeader*>(this)) {
00152         return 8; // FIXME verify
00153     } else if (dynamic_cast<const IPv6EncapsulatingSecurityPayloadHeader*>(this)) {
00154         return 8; // FIXME verify
00155     } else {
00156         throw cRuntimeError("unrecognised HeaderExtension subclass %s in IPv6ExtensionHeader::getExtensionType()", getClassName());
00157     }
00158 }


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

Generated on Fri Mar 20 18:51:19 2009 for INET Framework for OMNeT++/OMNEST by  doxygen 1.5.5