#include <IPv6Datagram.h>
Public Member Functions | |
IPv6Datagram (const char *name=NULL, int kind=0) | |
IPv6Datagram (const IPv6Datagram &other) | |
IPv6Datagram & | operator= (const IPv6Datagram &other) |
virtual IPv6Datagram * | dup () const |
virtual void | setExtensionHeaderArraySize (unsigned int size) |
virtual void | setExtensionHeader (unsigned int k, const IPv6ExtensionHeaderPtr &extensionHeader_var) |
virtual unsigned int | getExtensionHeaderArraySize () const |
virtual IPv6ExtensionHeaderPtr & | getExtensionHeader (unsigned int k) |
virtual void | addExtensionHeader (IPv6ExtensionHeader *eh, int atPos=-1) |
virtual int | calculateHeaderByteLength () const |
Protected Types | |
typedef std::vector < IPv6ExtensionHeader * > | ExtensionHeaders |
Protected Attributes | |
ExtensionHeaders | extensionHeaders |
Represents an IPv6 datagram. More info in the IPv6Datagram.msg file (and the documentation generated from it).
Definition at line 30 of file IPv6Datagram.h.
typedef std::vector<IPv6ExtensionHeader*> IPv6Datagram::ExtensionHeaders [protected] |
Definition at line 33 of file IPv6Datagram.h.
IPv6Datagram::IPv6Datagram | ( | const char * | name = NULL , |
|
int | kind = 0 | |||
) | [inline] |
Definition at line 37 of file IPv6Datagram.h.
: IPv6Datagram_Base(name,kind) {}
IPv6Datagram::IPv6Datagram | ( | const IPv6Datagram & | other | ) | [inline] |
Definition at line 38 of file IPv6Datagram.h.
: IPv6Datagram_Base(other.getName()) {operator=(other);}
void IPv6Datagram::addExtensionHeader | ( | IPv6ExtensionHeader * | eh, | |
int | atPos = -1 | |||
) | [virtual] |
Adds an extension header to the datagram, at the given position. The default (atPos==-1) is to add the header at the end.
Definition at line 64 of file IPv6Datagram.cc.
Referenced by operator=().
{ if (atPos<0 || atPos>=(int)extensionHeaders.size()) { extensionHeaders.push_back(eh); return; } // insert at position atPos, shift up the rest of the array extensionHeaders.insert(extensionHeaders.begin()+atPos, eh); }
int IPv6Datagram::calculateHeaderByteLength | ( | ) | const [virtual] |
Calculates the length of the IPv6 header plus the extension headers.
Definition at line 76 of file IPv6Datagram.cc.
Referenced by IPv6FragBuf::addFragment().
{ int len = 40; for (unsigned int i=0; i<extensionHeaders.size(); i++) len += extensionHeaders[i]->getByteLength(); return len; }
virtual IPv6Datagram* IPv6Datagram::dup | ( | ) | const [inline, virtual] |
Definition at line 40 of file IPv6Datagram.h.
Referenced by IPv6::routeMulticastPacket().
{return new IPv6Datagram(*this);}
IPv6ExtensionHeaderPtr & IPv6Datagram::getExtensionHeader | ( | unsigned int | k | ) | [virtual] |
Returns the kth extension header in this datagram
Definition at line 51 of file IPv6Datagram.cc.
{ static IPv6ExtensionHeaderPtr null; if (k>=extensionHeaders.size()) return (null=NULL); return extensionHeaders[k]; }
unsigned int IPv6Datagram::getExtensionHeaderArraySize | ( | ) | const [virtual] |
Returns the number of extension headers in this datagram
Definition at line 46 of file IPv6Datagram.cc.
{ return extensionHeaders.size(); }
IPv6Datagram & IPv6Datagram::operator= | ( | const IPv6Datagram & | other | ) |
Definition at line 31 of file IPv6Datagram.cc.
{ IPv6Datagram_Base::operator=(other); for (ExtensionHeaders::const_iterator i=other.extensionHeaders.begin(); i!=other.extensionHeaders.end(); ++i) addExtensionHeader((*i)->dup()); return *this; }
void IPv6Datagram::setExtensionHeader | ( | unsigned int | k, | |
const IPv6ExtensionHeaderPtr & | extensionHeader_var | |||
) | [virtual] |
Generated but unused method, should not be called.
Definition at line 59 of file IPv6Datagram.cc.
{ throw cRuntimeError(this, "setExtensionHeader() not supported, use addExtensionHeader()"); }
void IPv6Datagram::setExtensionHeaderArraySize | ( | unsigned int | size | ) | [virtual] |
Generated but unused method, should not be called.
Definition at line 41 of file IPv6Datagram.cc.
{ throw cRuntimeError(this, "setExtensionHeaderArraySize() not supported, use addExtensionHeader()"); }
ExtensionHeaders IPv6Datagram::extensionHeaders [protected] |
Definition at line 34 of file IPv6Datagram.h.
Referenced by addExtensionHeader(), calculateHeaderByteLength(), getExtensionHeader(), getExtensionHeaderArraySize(), and operator=().