INET Framework for OMNeT++/OMNEST
|
Represents an IPv6 datagram. More...
#include <IPv6Datagram.h>
Public Member Functions | |
IPv6Datagram (const char *name=nullptr, int kind=0) | |
IPv6Datagram (const IPv6Datagram &other) | |
IPv6Datagram & | operator= (const IPv6Datagram &other) |
~IPv6Datagram () | |
virtual IPv6Datagram * | dup () const override |
virtual int | getDiffServCodePoint () const override |
Returns bits 0-5 of the Traffic Class field, a value in the 0..63 range. More... | |
virtual void | setDiffServCodePoint (int dscp) override |
Sets bits 0-5 of the Traffic Class field; expects a value in the 0..63 range. More... | |
virtual int | getExplicitCongestionNotification () const override |
Returns bits 6-7 of the Traffic Class field, a value in the range 0..3. More... | |
virtual void | setExplicitCongestionNotification (int ecn) override |
Sets bits 6-7 of the Traffic Class field; expects a value in the 0..3 range. More... | |
virtual void | setExtensionHeaderArraySize (unsigned int size) override |
Generated but unused method, should not be called. More... | |
virtual void | setExtensionHeader (unsigned int k, const IPv6ExtensionHeaderPtr &extensionHeader_var) override |
Generated but unused method, should not be called. More... | |
virtual unsigned int | getExtensionHeaderArraySize () const override |
Returns the number of extension headers in this datagram. More... | |
virtual IPv6ExtensionHeaderPtr & | getExtensionHeader (unsigned int k) override |
Returns the kth extension header in this datagram. More... | |
virtual const IPv6ExtensionHeaderPtr & | getExtensionHeader (unsigned int k) const override |
virtual IPv6ExtensionHeader * | findExtensionHeaderByType (IPProtocolId extensionType, int index=0) const |
Returns the extension header of the specified type, or nullptr. More... | |
virtual void | addExtensionHeader (IPv6ExtensionHeader *eh, int atPos=-1) |
Adds an extension header to the datagram. More... | |
virtual int | calculateHeaderByteLength () const |
Calculates the length of the IPv6 header plus the extension headers. More... | |
virtual int | calculateUnfragmentableHeaderByteLength () const |
Calculates the length of the unfragmentable part of IPv6 header plus the extension headers. More... | |
virtual int | calculateFragmentLength () const |
Calculates the length of the payload and extension headers after the Fragment Header. More... | |
virtual IPv6ExtensionHeader * | removeFirstExtensionHeader () |
Removes and returns the first extension header of this datagram. More... | |
virtual IPv6ExtensionHeader * | removeExtensionHeader (IPProtocolId extensionType) |
Removes and returns the first extension header with the given type. 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::IPv6Datagram_Base | |
virtual | ~IPv6Datagram_Base () |
virtual void | parsimPack (omnetpp::cCommBuffer *b) const override |
virtual void | parsimUnpack (omnetpp::cCommBuffer *b) override |
virtual IPv6Address & | getSrcAddress () |
virtual const IPv6Address & | getSrcAddress () const |
virtual void | setSrcAddress (const IPv6Address &srcAddress) |
virtual IPv6Address & | getDestAddress () |
virtual const IPv6Address & | getDestAddress () const |
virtual void | setDestAddress (const IPv6Address &destAddress) |
virtual unsigned char | getTrafficClass () const |
virtual void | setTrafficClass (unsigned char trafficClass) |
virtual unsigned int | getFlowLabel () const |
virtual void | setFlowLabel (unsigned int flowLabel) |
virtual short | getHopLimit () const |
virtual void | setHopLimit (short hopLimit) |
Public Member Functions inherited from inet::INetworkDatagram | |
virtual | ~INetworkDatagram () |
Protected Types | |
typedef std::vector< IPv6ExtensionHeader * > | ExtensionHeaders |
Protected Attributes | |
ExtensionHeaders | extensionHeaders |
Protected Attributes inherited from inet::IPv6Datagram_Base | |
IPv6Address | srcAddress |
IPv6Address | destAddress |
unsigned char | trafficClass |
unsigned int | flowLabel |
short | hopLimit |
int | transportProtocol |
Private Member Functions | |
void | copy (const IPv6Datagram &other) |
void | clean () |
int | getExtensionHeaderOrder (IPv6ExtensionHeader *eh) |
Additional Inherited Members | |
Protected Member Functions inherited from inet::IPv6Datagram_Base | |
bool | operator== (const IPv6Datagram_Base &) |
IPv6Datagram_Base (const char *name=nullptr, short kind=0) | |
IPv6Datagram_Base (const IPv6Datagram_Base &other) | |
IPv6Datagram_Base & | operator= (const IPv6Datagram_Base &other) |
Represents an IPv6 datagram.
More info in the IPv6Datagram.msg file (and the documentation generated from it).
|
protected |
|
inline |
|
inline |
inet::IPv6Datagram::~IPv6Datagram | ( | ) |
|
virtual |
Adds an extension header to the datagram.
The atPos parameter should not be used, the extension headers are stored in the order specified in RFC 2460 4.1.
Referenced by copy(), inet::IPv6::encapsulate(), inet::IPv6::fragmentAndSend(), and inet::GPSR::setGpsrOptionOnNetworkDatagram().
|
virtual |
Calculates the length of the payload and extension headers after the Fragment Header.
Note: it is assumed that headers are ordered as described in RFC 2460 4.1.
Referenced by inet::IPv6FragBuf::addFragment().
|
virtual |
Calculates the length of the IPv6 header plus the extension headers.
Referenced by inet::IPv6::encapsulate(), and inet::GPSR::setGpsrOptionOnNetworkDatagram().
|
virtual |
Calculates the length of the unfragmentable part of IPv6 header plus the extension headers.
Note: it is assumed that headers are ordered as described in RFC 2460 4.1.
Referenced by inet::IPv6FragBuf::addFragment(), and inet::IPv6::fragmentAndSend().
|
private |
Referenced by operator=(), and ~IPv6Datagram().
|
private |
Referenced by operator=().
|
inlineoverridevirtual |
Reimplemented from inet::IPv6Datagram_Base.
Referenced by copy(), inet::IPv6ControlInfo::copy(), inet::IPv6::fragmentAndSend(), and inet::IPv6::routeMulticastPacket().
|
virtual |
Returns the extension header of the specified type, or nullptr.
If index is 0, then the first, if 1 then the second extension is returned. (The datagram might contain two Destination Options extension.)
Referenced by inet::GPSR::findGpsrOptionInNetworkDatagram(), inet::IPv6::localDeliver(), inet::UDP::processICMPError(), and inet::GPSR::setGpsrOptionOnNetworkDatagram().
|
inlineoverridevirtual |
Implements inet::INetworkDatagram.
|
inlineoverridevirtual |
Returns bits 0-5 of the Traffic Class field, a value in the 0..63 range.
Implements inet::IPv6Datagram_Base.
Referenced by inet::BehaviorAggregateClassifier::getDscpFromPacket().
|
inlineoverridevirtual |
Returns bits 6-7 of the Traffic Class field, a value in the range 0..3.
Implements inet::IPv6Datagram_Base.
|
overridevirtual |
Returns the kth extension header in this datagram.
Implements inet::IPv6Datagram_Base.
Referenced by inet::serializer::IPv6Serializer::serialize().
|
inlineoverridevirtual |
Reimplemented from inet::IPv6Datagram_Base.
Referenced by getExtensionHeader().
|
overridevirtual |
Returns the number of extension headers in this datagram.
Implements inet::IPv6Datagram_Base.
Referenced by inet::IPv6::processExtensionHeaders(), inet::IPv6::routePacket(), and inet::serializer::IPv6Serializer::serialize().
|
private |
Referenced by addExtensionHeader().
|
inlineoverridevirtual |
Implements inet::INetworkDatagram.
|
inlineoverridevirtual |
Implements inet::INetworkDatagram.
Referenced by inet::IPv6::decapsulate(), inet::IPv6Tunneling::decapsulateDatagram(), inet::IPv6Tunneling::encapsulateDatagram(), inet::IPv6::handleReceivedICMP(), inet::IPv6::localDeliver(), inet::MultiFieldClassifier::Filter::matches(), inet::IPv6::routePacket(), inet::serializer::IPv6Serializer::serialize(), and inet::ICMPv6::validateDatagramPromptingError().
IPv6Datagram & inet::IPv6Datagram::operator= | ( | const IPv6Datagram & | other | ) |
|
virtual |
Removes and returns the first extension header with the given type.
Referenced by inet::IPv6FragBuf::addFragment().
|
virtual |
Removes and returns the first extension header of this datagram.
Referenced by inet::IPv6::processExtensionHeaders().
|
inlineoverridevirtual |
Implements inet::INetworkDatagram.
|
inlineoverridevirtual |
Sets bits 0-5 of the Traffic Class field; expects a value in the 0..63 range.
Implements inet::IPv6Datagram_Base.
Referenced by inet::DSCPMarker::markPacket().
|
inlineoverridevirtual |
Sets bits 6-7 of the Traffic Class field; expects a value in the 0..3 range.
Implements inet::IPv6Datagram_Base.
|
overridevirtual |
Generated but unused method, should not be called.
Implements inet::IPv6Datagram_Base.
|
overridevirtual |
Generated but unused method, should not be called.
Implements inet::IPv6Datagram_Base.
|
inlineoverridevirtual |
Implements inet::INetworkDatagram.
|
inlineoverridevirtual |
Implements inet::INetworkDatagram.
Referenced by inet::IPv6::encapsulate().
|
protected |