|
INET Framework for OMNeT++/OMNEST
|
#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).
typedef std::vector<IPv6ExtensionHeader*> IPv6Datagram::ExtensionHeaders [protected] |
| IPv6Datagram::IPv6Datagram | ( | const char * | name = NULL, |
| int | kind = 0 |
||
| ) | [inline] |
: IPv6Datagram_Base(name,kind) {}
| IPv6Datagram::IPv6Datagram | ( | const IPv6Datagram & | other | ) | [inline] |
: 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.
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.
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] |
Referenced by IPv6::routeMulticastPacket().
{return new IPv6Datagram(*this);}
| IPv6ExtensionHeaderPtr & IPv6Datagram::getExtensionHeader | ( | unsigned int | k | ) | [virtual] |
Returns the kth extension header in this datagram
{
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
{
return extensionHeaders.size();
}
| IPv6Datagram & IPv6Datagram::operator= | ( | const IPv6Datagram & | other | ) |
{
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.
{
throw cRuntimeError(this, "setExtensionHeader() not supported, use addExtensionHeader()");
}
| void IPv6Datagram::setExtensionHeaderArraySize | ( | unsigned int | size | ) | [virtual] |
Generated but unused method, should not be called.
{
throw cRuntimeError(this, "setExtensionHeaderArraySize() not supported, use addExtensionHeader()");
}
ExtensionHeaders IPv6Datagram::extensionHeaders [protected] |
Referenced by addExtensionHeader(), calculateHeaderByteLength(), getExtensionHeader(), getExtensionHeaderArraySize(), and operator=().