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

Class generated from inet/networklayer/ipv4/IPv4Datagram.msg:174 by nedtool. More...

#include <IPv4Datagram_m.h>

Inheritance diagram for inet::IPv4Datagram_Base:
inet::IPv4Datagram

Public Member Functions

virtual ~IPv4Datagram_Base ()
 
virtual IPv4Datagram_Basedup () const override
 
virtual void parsimPack (omnetpp::cCommBuffer *b) const override
 
virtual void parsimUnpack (omnetpp::cCommBuffer *b) override
 
virtual short getVersion () const
 
virtual void setVersion (short version)
 
virtual short getHeaderLength () const
 
virtual void setHeaderLength (short headerLength)
 
virtual IPv4AddressgetSrcAddress ()
 
virtual const IPv4AddressgetSrcAddress () const
 
virtual void setSrcAddress (const IPv4Address &srcAddress)
 
virtual IPv4AddressgetDestAddress ()
 
virtual const IPv4AddressgetDestAddress () const
 
virtual void setDestAddress (const IPv4Address &destAddress)
 
virtual int getTransportProtocol () const
 
virtual void setTransportProtocol (int transportProtocol)
 
virtual short getTimeToLive () const
 
virtual void setTimeToLive (short timeToLive)
 
virtual int getIdentification () const
 
virtual void setIdentification (int identification)
 
virtual bool getMoreFragments () const
 
virtual void setMoreFragments (bool moreFragments)
 
virtual bool getDontFragment () const
 
virtual void setDontFragment (bool dontFragment)
 
virtual int getFragmentOffset () const
 
virtual void setFragmentOffset (int fragmentOffset)
 
virtual int getTotalLengthField () const
 
virtual void setTotalLengthField (int totalLengthField)
 
virtual unsigned char getTypeOfService () const
 
virtual void setTypeOfService (unsigned char typeOfService)
 
virtual int getDiffServCodePoint () const =0
 
virtual void setDiffServCodePoint (int diffServCodePoint)=0
 
virtual int getExplicitCongestionNotification () const =0
 
virtual void setExplicitCongestionNotification (int explicitCongestionNotification)=0
 
virtual TLVOptionsgetOptions ()
 
virtual const TLVOptionsgetOptions () const
 
virtual void setOptions (const TLVOptions &options)
 

Protected Member Functions

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

Protected Attributes

short version
 
short headerLength
 
IPv4Address srcAddress
 
IPv4Address destAddress
 
int transportProtocol
 
short timeToLive
 
int identification
 
bool moreFragments
 
bool dontFragment
 
int fragmentOffset
 
int totalLengthField
 
unsigned char typeOfService
 
TLVOptions options
 

Private Member Functions

void copy (const IPv4Datagram_Base &other)
 

Detailed Description

Class generated from inet/networklayer/ipv4/IPv4Datagram.msg:174 by nedtool.

//
// Represents an IPv4 datagram.
//
// Uses the following cPacket fields:
//    - getByteLength() / setByteLength() to represent total datagram length
//    - hasBitError() / setBitError() to represent datagram correctness
//    - getTimestamp() / setTimestamp (simtime) used in timestamp option
//
// Additional length fields defined in this class are in bytes.
//
// Only one of the option fields can exist at a time.
//
packet IPv4Datagram
{
    @customize(true);
    short version = 4;
    short headerLength = IP_HEADER_BYTES;
    IPv4Address srcAddress;
    IPv4Address destAddress;
    int transportProtocol @enum(IPProtocolId) = IP_PROT_NONE;
    short timeToLive;
    int identification;
    bool moreFragments;
    bool dontFragment;
    int fragmentOffset;         // bytes, must be multiple of 8
    int totalLengthField = -1;       // -1 means: getTotalLengthField() uses getByteLength()
    unsigned char typeOfService;  // ToS byte
    abstract int diffServCodePoint;  // maps to bits 0-5 of ToS
    abstract int explicitCongestionNotification;  // maps to bits 6-7 of ToS
    TLVOptions options; // array of option pointers, option pointers owned by datagram
}

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

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

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

Register_Class(IPv4Datagram)

Constructor & Destructor Documentation

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

Member Function Documentation

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

Reimplemented in inet::IPv4Datagram.

549 {throw omnetpp::cRuntimeError("You forgot to manually add a dup() function to class IPv4Datagram");}
virtual const IPv4Address& inet::IPv4Datagram_Base::getDestAddress ( ) const
inlinevirtual

Referenced by getDestAddress().

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

Implemented in inet::IPv4Datagram.

virtual bool inet::IPv4Datagram_Base::getDontFragment ( ) const
virtual
virtual int inet::IPv4Datagram_Base::getExplicitCongestionNotification ( ) const
pure virtual

Implemented in inet::IPv4Datagram.

virtual int inet::IPv4Datagram_Base::getIdentification ( ) const
virtual
virtual TLVOptions& inet::IPv4Datagram_Base::getOptions ( )
virtual
virtual const TLVOptions& inet::IPv4Datagram_Base::getOptions ( ) const
inlinevirtual

Referenced by getOptions().

585 {return const_cast<IPv4Datagram_Base*>(this)->getOptions();}
IPv4Datagram_Base(const char *name=nullptr, short kind=0)
virtual TLVOptions & getOptions()
virtual const IPv4Address& inet::IPv4Datagram_Base::getSrcAddress ( ) const
inlinevirtual

Referenced by getSrcAddress().

559 {return const_cast<IPv4Datagram_Base*>(this)->getSrcAddress();}
virtual IPv4Address & getSrcAddress()
IPv4Datagram_Base(const char *name=nullptr, short kind=0)
virtual int inet::IPv4Datagram_Base::getTotalLengthField ( ) const
virtual

Reimplemented in inet::IPv4Datagram.

virtual int inet::IPv4Datagram_Base::getTransportProtocol ( ) const
virtual
virtual unsigned char inet::IPv4Datagram_Base::getTypeOfService ( ) const
virtual
virtual short inet::IPv4Datagram_Base::getVersion ( ) const
virtual
IPv4Datagram_Base& inet::IPv4Datagram_Base::operator= ( const IPv4Datagram_Base other)
protected
bool inet::IPv4Datagram_Base::operator== ( const IPv4Datagram_Base )
protected
virtual void inet::IPv4Datagram_Base::parsimPack ( omnetpp::cCommBuffer *  b) const
overridevirtual
virtual void inet::IPv4Datagram_Base::parsimUnpack ( omnetpp::cCommBuffer *  b)
overridevirtual
virtual void inet::IPv4Datagram_Base::setDiffServCodePoint ( int  diffServCodePoint)
pure virtual

Implemented in inet::IPv4Datagram.

virtual void inet::IPv4Datagram_Base::setDontFragment ( bool  dontFragment)
virtual
virtual void inet::IPv4Datagram_Base::setExplicitCongestionNotification ( int  explicitCongestionNotification)
pure virtual

Implemented in inet::IPv4Datagram.

virtual void inet::IPv4Datagram_Base::setFragmentOffset ( int  fragmentOffset)
virtual
virtual void inet::IPv4Datagram_Base::setHeaderLength ( short  headerLength)
virtual
virtual void inet::IPv4Datagram_Base::setIdentification ( int  identification)
virtual
virtual void inet::IPv4Datagram_Base::setMoreFragments ( bool  moreFragments)
virtual
virtual void inet::IPv4Datagram_Base::setOptions ( const TLVOptions options)
virtual
virtual void inet::IPv4Datagram_Base::setTimeToLive ( short  timeToLive)
virtual
virtual void inet::IPv4Datagram_Base::setTotalLengthField ( int  totalLengthField)
virtual
virtual void inet::IPv4Datagram_Base::setTransportProtocol ( int  transportProtocol)
virtual
virtual void inet::IPv4Datagram_Base::setTypeOfService ( unsigned char  typeOfService)
virtual
virtual void inet::IPv4Datagram_Base::setVersion ( short  version)
virtual

Member Data Documentation

IPv4Address inet::IPv4Datagram_Base::destAddress
protected
bool inet::IPv4Datagram_Base::dontFragment
protected
int inet::IPv4Datagram_Base::fragmentOffset
protected
short inet::IPv4Datagram_Base::headerLength
protected
int inet::IPv4Datagram_Base::identification
protected
bool inet::IPv4Datagram_Base::moreFragments
protected
IPv4Address inet::IPv4Datagram_Base::srcAddress
protected
short inet::IPv4Datagram_Base::timeToLive
protected
int inet::IPv4Datagram_Base::totalLengthField
protected
int inet::IPv4Datagram_Base::transportProtocol
protected
unsigned char inet::IPv4Datagram_Base::typeOfService
protected
short inet::IPv4Datagram_Base::version
protected

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