INET Framework for OMNeT++/OMNEST
inet::IPv6Datagram_Base Class Referenceabstract

Class generated from inet/networklayer/ipv6/IPv6Datagram.msg:52 by nedtool. More...

#include <IPv6Datagram_m.h>

Inheritance diagram for inet::IPv6Datagram_Base:
inet::IPv6Datagram

Public Member Functions

virtual ~IPv6Datagram_Base ()
 
virtual IPv6Datagram_Basedup () const override
 
virtual void parsimPack (omnetpp::cCommBuffer *b) const override
 
virtual void parsimUnpack (omnetpp::cCommBuffer *b) override
 
virtual IPv6AddressgetSrcAddress ()
 
virtual const IPv6AddressgetSrcAddress () const
 
virtual void setSrcAddress (const IPv6Address &srcAddress)
 
virtual IPv6AddressgetDestAddress ()
 
virtual const IPv6AddressgetDestAddress () const
 
virtual void setDestAddress (const IPv6Address &destAddress)
 
virtual unsigned char getTrafficClass () const
 
virtual void setTrafficClass (unsigned char trafficClass)
 
virtual int getDiffServCodePoint () const =0
 
virtual void setDiffServCodePoint (int diffServCodePoint)=0
 
virtual int getExplicitCongestionNotification () const =0
 
virtual void setExplicitCongestionNotification (int explicitCongestionNotification)=0
 
virtual unsigned int getFlowLabel () const
 
virtual void setFlowLabel (unsigned int flowLabel)
 
virtual short getHopLimit () const
 
virtual void setHopLimit (short hopLimit)
 
virtual int getTransportProtocol () const
 
virtual void setTransportProtocol (int transportProtocol)
 
virtual void setExtensionHeaderArraySize (unsigned int size)=0
 
virtual unsigned int getExtensionHeaderArraySize () const =0
 
virtual IPv6ExtensionHeaderPtrgetExtensionHeader (unsigned int k)=0
 
virtual const IPv6ExtensionHeaderPtrgetExtensionHeader (unsigned int k) const
 
virtual void setExtensionHeader (unsigned int k, const IPv6ExtensionHeaderPtr &extensionHeader)=0
 

Protected Member Functions

bool operator== (const IPv6Datagram_Base &)
 
 IPv6Datagram_Base (const char *name=nullptr, short kind=0)
 
 IPv6Datagram_Base (const IPv6Datagram_Base &other)
 
IPv6Datagram_Baseoperator= (const IPv6Datagram_Base &other)
 

Protected Attributes

IPv6Address srcAddress
 
IPv6Address destAddress
 
unsigned char trafficClass
 
unsigned int flowLabel
 
short hopLimit
 
int transportProtocol
 

Private Member Functions

void copy (const IPv6Datagram_Base &other)
 

Detailed Description

Class generated from inet/networklayer/ipv6/IPv6Datagram.msg:52 by nedtool.

//
// IPv6 datagram. RFC 2460 Section 3.
//
// Header fields not explicitly modelled:
//    - version (=6): represented by the class name itself
//    - payload length: will be calculated from encapsulated message length
//      and extension headers' length
//
packet IPv6Datagram
{
    @customize(true);
    IPv6Address srcAddress;
    IPv6Address destAddress;
    unsigned char trafficClass;
    abstract int diffServCodePoint;  // maps to bits 0-5 of trafficClass
    abstract int explicitCongestionNotification;  // maps to bits 6-7 of trafficClass
    unsigned int flowLabel;
    short hopLimit = 0;
    int transportProtocol @enum(IPProtocolId);
    abstract IPv6ExtensionHeaderPtr extensionHeader[]; // array of extension headers, subclassed from ~IPv6ExtensionHeader
}

IPv6Datagram_Base is only useful if it gets subclassed, and IPv6Datagram is derived from it. The minimum code to be written for IPv6Datagram is the following:

class INET_API IPv6Datagram : public IPv6Datagram_Base
{
  private:
    void copy(const IPv6Datagram& other) { ... }
  public:
    IPv6Datagram(const char *name=nullptr, short kind=0) : IPv6Datagram_Base(name,kind) {}
    IPv6Datagram(const IPv6Datagram& other) : IPv6Datagram_Base(other) {copy(other);}
    IPv6Datagram& operator=(const IPv6Datagram& other) {if (this==&other) return *this; IPv6Datagram_Base::operator=(other); copy(other); return *this;}
    virtual IPv6Datagram *dup() const override {return new IPv6Datagram(*this);}
    // ADD CODE HERE to redefine and implement pure virtual functions from IPv6Datagram_Base
};

The following should go into a .cc (.cpp) file:

Register_Class(IPv6Datagram)

Constructor & Destructor Documentation

inet::IPv6Datagram_Base::IPv6Datagram_Base ( const char *  name = nullptr,
short  kind = 0 
)
protected
inet::IPv6Datagram_Base::IPv6Datagram_Base ( const IPv6Datagram_Base other)
protected
virtual inet::IPv6Datagram_Base::~IPv6Datagram_Base ( )
virtual

Member Function Documentation

void inet::IPv6Datagram_Base::copy ( const IPv6Datagram_Base other)
private
virtual IPv6Datagram_Base* inet::IPv6Datagram_Base::dup ( ) const
inlineoverridevirtual

Reimplemented in inet::IPv6Datagram.

122 {throw omnetpp::cRuntimeError("You forgot to manually add a dup() function to class IPv6Datagram");}
virtual const IPv6Address& inet::IPv6Datagram_Base::getDestAddress ( ) const
inlinevirtual

Referenced by getDestAddress().

131 {return const_cast<IPv6Datagram_Base*>(this)->getDestAddress();}
IPv6Datagram_Base(const char *name=nullptr, short kind=0)
virtual IPv6Address & getDestAddress()
virtual int inet::IPv6Datagram_Base::getDiffServCodePoint ( ) const
pure virtual

Implemented in inet::IPv6Datagram.

virtual int inet::IPv6Datagram_Base::getExplicitCongestionNotification ( ) const
pure virtual

Implemented in inet::IPv6Datagram.

virtual IPv6ExtensionHeaderPtr& inet::IPv6Datagram_Base::getExtensionHeader ( unsigned int  k)
pure virtual

Implemented in inet::IPv6Datagram.

virtual const IPv6ExtensionHeaderPtr& inet::IPv6Datagram_Base::getExtensionHeader ( unsigned int  k) const
inlinevirtual

Reimplemented in inet::IPv6Datagram.

Referenced by getExtensionHeader().

148 {return const_cast<IPv6Datagram_Base*>(this)->getExtensionHeader(k);}
virtual IPv6ExtensionHeaderPtr & getExtensionHeader(unsigned int k)=0
IPv6Datagram_Base(const char *name=nullptr, short kind=0)
const double k
Definition: QAM16Modulation.cc:24
virtual unsigned int inet::IPv6Datagram_Base::getExtensionHeaderArraySize ( ) const
pure virtual

Implemented in inet::IPv6Datagram.

virtual unsigned int inet::IPv6Datagram_Base::getFlowLabel ( ) const
virtual
virtual const IPv6Address& inet::IPv6Datagram_Base::getSrcAddress ( ) const
inlinevirtual

Referenced by getSrcAddress().

128 {return const_cast<IPv6Datagram_Base*>(this)->getSrcAddress();}
IPv6Datagram_Base(const char *name=nullptr, short kind=0)
virtual IPv6Address & getSrcAddress()
virtual unsigned char inet::IPv6Datagram_Base::getTrafficClass ( ) const
virtual
virtual int inet::IPv6Datagram_Base::getTransportProtocol ( ) const
virtual
IPv6Datagram_Base& inet::IPv6Datagram_Base::operator= ( const IPv6Datagram_Base other)
protected
bool inet::IPv6Datagram_Base::operator== ( const IPv6Datagram_Base )
protected
virtual void inet::IPv6Datagram_Base::parsimPack ( omnetpp::cCommBuffer *  b) const
overridevirtual
virtual void inet::IPv6Datagram_Base::parsimUnpack ( omnetpp::cCommBuffer *  b)
overridevirtual
virtual void inet::IPv6Datagram_Base::setDestAddress ( const IPv6Address destAddress)
virtual
virtual void inet::IPv6Datagram_Base::setDiffServCodePoint ( int  diffServCodePoint)
pure virtual

Implemented in inet::IPv6Datagram.

virtual void inet::IPv6Datagram_Base::setExplicitCongestionNotification ( int  explicitCongestionNotification)
pure virtual

Implemented in inet::IPv6Datagram.

virtual void inet::IPv6Datagram_Base::setExtensionHeader ( unsigned int  k,
const IPv6ExtensionHeaderPtr extensionHeader 
)
pure virtual

Implemented in inet::IPv6Datagram.

virtual void inet::IPv6Datagram_Base::setExtensionHeaderArraySize ( unsigned int  size)
pure virtual

Implemented in inet::IPv6Datagram.

virtual void inet::IPv6Datagram_Base::setFlowLabel ( unsigned int  flowLabel)
virtual
virtual void inet::IPv6Datagram_Base::setHopLimit ( short  hopLimit)
virtual
virtual void inet::IPv6Datagram_Base::setSrcAddress ( const IPv6Address srcAddress)
virtual
virtual void inet::IPv6Datagram_Base::setTrafficClass ( unsigned char  trafficClass)
virtual

Referenced by inet::IPv6::encapsulate().

virtual void inet::IPv6Datagram_Base::setTransportProtocol ( int  transportProtocol)
virtual

Member Data Documentation

IPv6Address inet::IPv6Datagram_Base::destAddress
protected
unsigned int inet::IPv6Datagram_Base::flowLabel
protected
short inet::IPv6Datagram_Base::hopLimit
protected
IPv6Address inet::IPv6Datagram_Base::srcAddress
protected
unsigned char inet::IPv6Datagram_Base::trafficClass
protected
int inet::IPv6Datagram_Base::transportProtocol
protected

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