INET Framework for OMNeT++/OMNEST
inet::IPv4Datagram Class Reference

Represents an IPv4 datagram. More...

#include <IPv4Datagram.h>

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

Public Member Functions

 IPv4Datagram (const char *name=nullptr, int kind=0)
 
 IPv4Datagram (const IPv4Datagram &other)
 
IPv4Datagramoperator= (const IPv4Datagram &other)
 
virtual IPv4Datagramdup () const override
 
int getTotalLengthField () const override
 getter/setter for totalLength field in datagram if set to -1, then getter returns getByteLength() More...
 
virtual int getDiffServCodePoint () const override
 Returns bits 0-5 of the Type of Service field, a value in the 0..63 range. More...
 
virtual void setDiffServCodePoint (int dscp) override
 Sets bits 0-5 of the Type of Service field; expects a value in the 0..63 range. More...
 
virtual int getExplicitCongestionNotification () const override
 Returns bits 6-7 of the Type of Service field, a value in the range 0..3. More...
 
virtual void setExplicitCongestionNotification (int ecn) override
 Sets bits 6-7 of the Type of Service; expects a value in the 0..3 range. More...
 
virtual unsigned int getOptionArraySize () const
 Returns the number of extension headers in this datagram. More...
 
virtual TLVOptionBasegetOption (unsigned int k)
 Returns the kth extension header in this datagram. More...
 
virtual const TLVOptionBasegetOption (unsigned int k) const
 
virtual TLVOptionBasefindOptionByType (short int optionType, int index=0)
 Returns the TLVOptionBase of the specified type, or nullptr. More...
 
virtual void addOption (TLVOptionBase *opt, int atPos=-1)
 Adds an TLVOptionBase to the datagram. More...
 
virtual int calculateHeaderByteLength () const
 Calculates the length of the IPv6 header plus the extension headers. More...
 
virtual L3Address getSourceAddress () const override
 
virtual void setSourceAddress (const L3Address &address) override
 
virtual L3Address getDestinationAddress () const override
 
virtual void setDestinationAddress (const L3Address &address) override
 
virtual int getTransportProtocol () const override
 
virtual void setTransportProtocol (int protocol) override
 
- Public Member Functions inherited from inet::IPv4Datagram_Base
virtual ~IPv4Datagram_Base ()
 
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 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 void setTotalLengthField (int totalLengthField)
 
virtual unsigned char getTypeOfService () const
 
virtual void setTypeOfService (unsigned char typeOfService)
 
virtual TLVOptionsgetOptions ()
 
virtual const TLVOptionsgetOptions () const
 
virtual void setOptions (const TLVOptions &options)
 
- Public Member Functions inherited from inet::INetworkDatagram
virtual ~INetworkDatagram ()
 

Private Member Functions

void copy (const IPv4Datagram &other)
 
void clean ()
 

Additional Inherited Members

- Protected Member Functions inherited from inet::IPv4Datagram_Base
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 inherited from inet::IPv4Datagram_Base
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
 

Detailed Description

Represents an IPv4 datagram.

More info in the IPv4Datagram.msg file (and the documentation generated from it).

Constructor & Destructor Documentation

inet::IPv4Datagram::IPv4Datagram ( const char *  name = nullptr,
int  kind = 0 
)
inline
38 : IPv4Datagram_Base(name, kind) {}
IPv4Datagram_Base(const char *name=nullptr, short kind=0)
inet::IPv4Datagram::IPv4Datagram ( const IPv4Datagram other)
inline
39 : IPv4Datagram_Base(other) {}
IPv4Datagram_Base(const char *name=nullptr, short kind=0)

Member Function Documentation

void inet::IPv4Datagram::addOption ( TLVOptionBase opt,
int  atPos = -1 
)
virtual

Adds an TLVOptionBase to the datagram.

default atPos means add to the end.

Referenced by inet::serializer::IPv4Serializer::deserializeOptions(), and inet::GPSR::setGpsrOptionOnNetworkDatagram().

38 {
39  options.add(opt, atPos);
40 }
void add(TLVOptionBase *option, int atPos=-1)
Definition: TLVOption.cc:41
TLVOptions options
Definition: IPv4Datagram_m.h:533
int inet::IPv4Datagram::calculateHeaderByteLength ( ) const
virtual

Calculates the length of the IPv6 header plus the extension headers.

Referenced by inet::GPSR::setGpsrOptionOnNetworkDatagram().

43 {
44  int length = utils::roundUp(20 + options.getLength(), 4);
45  ASSERT(length >= 20 && length <= 60 && (length % 4 == 0));
46 
47  return length;
48 }
int roundUp(int numToRound, int multiple)
Rounding up to the nearest multiple of a number.
Definition: INETUtils.h:69
TLVOptions options
Definition: IPv4Datagram_m.h:533
virtual int getLength() const
Definition: TLVOption.cc:33
void inet::IPv4Datagram::clean ( )
private
void inet::IPv4Datagram::copy ( const IPv4Datagram other)
private
TLVOptionBase * inet::IPv4Datagram::findOptionByType ( short int  optionType,
int  index = 0 
)
virtual

Returns the TLVOptionBase of the specified type, or nullptr.

If index is 0, then the first, if 1 then the second option is returned.

Referenced by inet::GPSR::findGpsrOptionInNetworkDatagram().

32 {
33  int i = options.findByType(optionType, index);
34  return i >= 0 ? &getOption(i) : nullptr;
35 }
virtual TLVOptionBase & getOption(unsigned int k)
Returns the kth extension header in this datagram.
Definition: IPv4Datagram.h:78
int findByType(short int type, int firstPos=0) const
Definition: TLVOption.cc:82
TLVOptions options
Definition: IPv4Datagram_m.h:533
virtual L3Address inet::IPv4Datagram::getDestinationAddress ( ) const
inlineoverridevirtual

Implements inet::INetworkDatagram.

103 { return L3Address(getDestAddress()); }
virtual IPv4Address & getDestAddress()
virtual int inet::IPv4Datagram::getDiffServCodePoint ( ) const
inlineoverridevirtual

Returns bits 0-5 of the Type of Service field, a value in the 0..63 range.

Implements inet::IPv4Datagram_Base.

Referenced by inet::BehaviorAggregateClassifier::getDscpFromPacket().

53 { return getTypeOfService() & 0x3f; }
virtual unsigned char getTypeOfService() const
virtual int inet::IPv4Datagram::getExplicitCongestionNotification ( ) const
inlineoverridevirtual

Returns bits 6-7 of the Type of Service field, a value in the range 0..3.

Implements inet::IPv4Datagram_Base.

63 { return (getTypeOfService() >> 6) & 0x03; }
virtual unsigned char getTypeOfService() const
virtual TLVOptionBase& inet::IPv4Datagram::getOption ( unsigned int  k)
inlinevirtual

Returns the kth extension header in this datagram.

Referenced by findOptionByType(), and inet::serializer::IPv4Serializer::serializeOptions().

78 { return *check_and_cast<TLVOptionBase *>(&(options.at(k))); }
TLVOptionBase & at(int m)
Definition: TLVOption.h:69
TLVOptions options
Definition: IPv4Datagram_m.h:533
const double k
Definition: QAM16Modulation.cc:24
virtual const TLVOptionBase& inet::IPv4Datagram::getOption ( unsigned int  k) const
inlinevirtual

Referenced by getOption().

79 { return const_cast<IPv4Datagram*>(this)->getOption(k); }
IPv4Datagram(const char *name=nullptr, int kind=0)
Definition: IPv4Datagram.h:38
virtual TLVOptionBase & getOption(unsigned int k)
Returns the kth extension header in this datagram.
Definition: IPv4Datagram.h:78
const double k
Definition: QAM16Modulation.cc:24
virtual unsigned int inet::IPv4Datagram::getOptionArraySize ( ) const
inlinevirtual

Returns the number of extension headers in this datagram.

Referenced by inet::serializer::IPv4Serializer::serializeOptions().

73 { return options.size(); }
int size() const
Definition: TLVOption.h:44
TLVOptions options
Definition: IPv4Datagram_m.h:533
virtual L3Address inet::IPv4Datagram::getSourceAddress ( ) const
inlineoverridevirtual

Implements inet::INetworkDatagram.

101 { return L3Address(getSrcAddress()); }
virtual IPv4Address & getSrcAddress()
int inet::IPv4Datagram::getTotalLengthField ( ) const
overridevirtual

getter/setter for totalLength field in datagram if set to -1, then getter returns getByteLength()

Reimplemented from inet::IPv4Datagram_Base.

Referenced by inet::serializer::IPv4Serializer::serialize(), and inet::GPSR::setGpsrOptionOnNetworkDatagram().

27 {
28  return totalLengthField == -1 ? getByteLength() : totalLengthField;
29 }
int totalLengthField
Definition: IPv4Datagram_m.h:531
IPv4Datagram& inet::IPv4Datagram::operator= ( const IPv4Datagram other)
inline
40 { IPv4Datagram_Base::operator=(other); return *this; }
IPv4Datagram_Base & operator=(const IPv4Datagram_Base &other)
virtual void inet::IPv4Datagram::setDestinationAddress ( const L3Address address)
inlineoverridevirtual

Implements inet::INetworkDatagram.

104 { setDestAddress(address.toIPv4()); }
virtual void setDestAddress(const IPv4Address &destAddress)
virtual void inet::IPv4Datagram::setDiffServCodePoint ( int  dscp)
inlineoverridevirtual

Sets bits 0-5 of the Type of Service field; expects a value in the 0..63 range.

Implements inet::IPv4Datagram_Base.

Referenced by inet::DSCPMarker::markPacket().

58 { setTypeOfService((getTypeOfService() & 0xc0) | (dscp & 0x3f)); }
virtual unsigned char getTypeOfService() const
virtual void setTypeOfService(unsigned char typeOfService)
virtual void inet::IPv4Datagram::setExplicitCongestionNotification ( int  ecn)
inlineoverridevirtual

Sets bits 6-7 of the Type of Service; expects a value in the 0..3 range.

Implements inet::IPv4Datagram_Base.

68 { setTypeOfService((getTypeOfService() & 0x3f) | ((ecn & 0x3) << 6)); }
virtual unsigned char getTypeOfService() const
virtual void setTypeOfService(unsigned char typeOfService)
virtual void inet::IPv4Datagram::setSourceAddress ( const L3Address address)
inlineoverridevirtual

Implements inet::INetworkDatagram.

102 { setSrcAddress(address.toIPv4()); }
virtual void setSrcAddress(const IPv4Address &srcAddress)
virtual void inet::IPv4Datagram::setTransportProtocol ( int  protocol)
inlineoverridevirtual

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