Main Page | Namespace List | Class Hierarchy | Class List | Directories | File List | Namespace Members | Class Members | File Members | Related Pages

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 extensionType () const
virtual int byteLength () const


Constructor & Destructor Documentation

IPv6ExtensionHeader::IPv6ExtensionHeader  )  [inline]
 

00078 : IPv6ExtensionHeader_Base() {}

IPv6ExtensionHeader::IPv6ExtensionHeader const IPv6ExtensionHeader other  )  [inline]
 

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


Member Function Documentation

int IPv6ExtensionHeader::byteLength  )  const [virtual]
 

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

IPProtocolId IPv6ExtensionHeader::extensionType  )  const [virtual]
 

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

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

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


The documentation for this class was generated from the following files:
Generated on Sat Apr 1 20:52:22 2006 for INET Framework for OMNeT++/OMNEST by  doxygen 1.4.1