#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=().
1.7.1