Public Member Functions | Protected Types | Protected Attributes

IPv6Datagram Class Reference

#include <IPv6Datagram.h>

List of all members.

Public Member Functions

 IPv6Datagram (const char *name=NULL, int kind=0)
 IPv6Datagram (const IPv6Datagram &other)
IPv6Datagramoperator= (const IPv6Datagram &other)
virtual IPv6Datagramdup () 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

Detailed Description

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.


Member Typedef Documentation

typedef std::vector<IPv6ExtensionHeader*> IPv6Datagram::ExtensionHeaders [protected]

Definition at line 33 of file IPv6Datagram.h.


Constructor & Destructor Documentation

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);}


Member Function Documentation

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()");
}


Member Data Documentation


The documentation for this class was generated from the following files: