#include <IPv6Datagram.h>
Inheritance diagram for IPv6ExtensionHeader:
Public Member Functions | |
IPv6ExtensionHeader () | |
IPv6ExtensionHeader (const IPv6ExtensionHeader &other) | |
IPv6ExtensionHeader & | operator= (const IPv6ExtensionHeader &other) |
virtual IPProtocolId | extensionType () const |
virtual int | byteLength () const |
IPv6ExtensionHeader::IPv6ExtensionHeader | ( | ) | [inline] |
IPv6ExtensionHeader::IPv6ExtensionHeader | ( | const IPv6ExtensionHeader & | other | ) | [inline] |
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] |