Ipv6QueueDiscItem is a subclass of QueueDiscItem which stores IPv6 packets. More...
#include "ipv6-queue-disc-item.h"
Public Member Functions | |
Ipv6QueueDiscItem ()=delete | |
Ipv6QueueDiscItem (const Ipv6QueueDiscItem &)=delete | |
Ipv6QueueDiscItem (Ptr< Packet > p, const Address &addr, uint16_t protocol, const Ipv6Header &header) | |
Create an IPv6 queue disc item containing an IPv6 packet. | |
~Ipv6QueueDiscItem () override | |
void | AddHeader () override |
Add the header to the packet. | |
const Ipv6Header & | GetHeader () const |
uint32_t | GetSize () const override |
bool | GetUint8Value (Uint8Values field, uint8_t &value) const override |
Retrieve the value of a given field from the packet, if present. | |
uint32_t | Hash (uint32_t perturbation) const override |
Computes the hash of the packet's 5-tuple. | |
bool | Mark () override |
Marks the packet by setting ECN_CE bits if the packet has ECN_ECT0 or ECN_ECT1 set. | |
Ipv6QueueDiscItem & | operator= (const Ipv6QueueDiscItem &)=delete |
void | Print (std::ostream &os) const override |
Print the item contents. | |
Public Member Functions inherited from ns3::QueueDiscItem | |
QueueDiscItem ()=delete | |
QueueDiscItem (const QueueDiscItem &)=delete | |
QueueDiscItem (Ptr< Packet > p, const Address &addr, uint16_t protocol) | |
Create a queue disc item. | |
~QueueDiscItem () override | |
virtual void | AddHeader ()=0 |
Add the header to the packet. | |
Address | GetAddress () const |
Get the MAC address included in this item. | |
uint16_t | GetProtocol () const |
Get the L3 protocol included in this item. | |
Time | GetTimeStamp () const |
Get the timestamp included in this item. | |
uint8_t | GetTxQueueIndex () const |
Get the transmission queue index included in this item. | |
virtual uint32_t | Hash (uint32_t perturbation=0) const |
Computes the hash of various fields of the packet header. | |
virtual bool | Mark ()=0 |
Marks the packet as a substitute for dropping it, such as for Explicit Congestion Notification. | |
QueueDiscItem & | operator= (const QueueDiscItem &)=delete |
void | Print (std::ostream &os) const override |
Print the item contents. | |
void | SetTimeStamp (Time t) |
Set the timestamp included in this item. | |
void | SetTxQueueIndex (uint8_t txq) |
Set the transmission queue index to store in this item. | |
Public Member Functions inherited from ns3::QueueItem | |
QueueItem ()=delete | |
QueueItem (const QueueItem &)=delete | |
QueueItem (Ptr< Packet > p) | |
Create a queue item containing a packet. | |
virtual | ~QueueItem () |
Ptr< Packet > | GetPacket () const |
virtual uint32_t | GetSize () const |
Use this method (instead of GetPacket ()->GetSize ()) to get the packet size. | |
virtual bool | GetUint8Value (Uint8Values field, uint8_t &value) const |
Retrieve the value of a given field from the packet, if present. | |
QueueItem & | operator= (const QueueItem &)=delete |
virtual void | Print (std::ostream &os) const |
Print the item contents. | |
Public Member Functions inherited from ns3::SimpleRefCount< QueueItem > | |
SimpleRefCount () | |
Default constructor. | |
SimpleRefCount (const SimpleRefCount &o) | |
Copy constructor. | |
uint32_t | GetReferenceCount () const |
Get the reference count of the object. | |
SimpleRefCount & | operator= (const SimpleRefCount &o) |
Assignment operator. | |
void | Ref () const |
Increment the reference count. | |
void | Unref () const |
Decrement the reference count. | |
Private Attributes | |
Ipv6Header | m_header |
The IPv6 header. | |
bool | m_headerAdded |
True if the header has already been added to the packet. | |
Additional Inherited Members | |
Public Types inherited from ns3::QueueItem | |
typedef void(* | TracedCallback) (Ptr< const QueueItem > item) |
TracedCallback signature for Ptr<QueueItem> | |
enum | Uint8Values { IP_DSFIELD } |
1-byte fields of the packet whose value can be retrieved, if present More... | |
Ipv6QueueDiscItem is a subclass of QueueDiscItem which stores IPv6 packets.
Header and payload are kept separate to allow the queue disc to manipulate the header, which is added to the packet when the packet is dequeued.
Definition at line 37 of file ipv6-queue-disc-item.h.
ns3::Ipv6QueueDiscItem::Ipv6QueueDiscItem | ( | Ptr< Packet > | p, |
const Address & | addr, | ||
uint16_t | protocol, | ||
const Ipv6Header & | header | ||
) |
Create an IPv6 queue disc item containing an IPv6 packet.
p | the packet included in the created item. |
addr | the destination MAC address |
protocol | the protocol number |
header | the IPv6 header |
Definition at line 30 of file ipv6-queue-disc-item.cc.
|
override |
Definition at line 40 of file ipv6-queue-disc-item.cc.
References NS_LOG_FUNCTION.
|
delete |
|
delete |
|
overridevirtual |
Add the header to the packet.
Implements ns3::QueueDiscItem.
Definition at line 66 of file ipv6-queue-disc-item.cc.
References ns3::QueueItem::GetPacket(), m_header, m_headerAdded, NS_ASSERT, NS_ASSERT_MSG, and NS_LOG_FUNCTION.
const Ipv6Header & ns3::Ipv6QueueDiscItem::GetHeader | ( | ) | const |
Definition at line 60 of file ipv6-queue-disc-item.cc.
References m_header.
|
overridevirtual |
Reimplemented from ns3::QueueItem.
Definition at line 46 of file ipv6-queue-disc-item.cc.
References ns3::QueueItem::GetPacket(), ns3::Ipv6Header::GetSerializedSize(), m_header, m_headerAdded, NS_ASSERT, and NS_LOG_FUNCTION.
|
overridevirtual |
Retrieve the value of a given field from the packet, if present.
field | the field whose value has to be retrieved |
value | the output parameter to store the retrieved value |
Reimplemented from ns3::QueueItem.
Definition at line 103 of file ipv6-queue-disc-item.cc.
References ns3::Ipv6Header::GetTrafficClass(), ns3::QueueItem::IP_DSFIELD, and m_header.
Computes the hash of the packet's 5-tuple.
Computes the hash of the source and destination IP addresses, protocol number and, if the transport protocol is either UDP or TCP, the source and destination port
perturbation | hash perturbation value |
Reimplemented from ns3::QueueDiscItem.
Definition at line 119 of file ipv6-queue-disc-item.cc.
References ns3::Ipv6Header::GetDestination(), ns3::TcpHeader::GetDestinationPort(), ns3::UdpHeader::GetDestinationPort(), ns3::Ipv6Header::GetNextHeader(), ns3::QueueItem::GetPacket(), ns3::Ipv6Header::GetSource(), ns3::TcpHeader::GetSourcePort(), ns3::UdpHeader::GetSourcePort(), ns3::Hash32(), m_header, NS_LOG_DEBUG, NS_LOG_FUNCTION, NS_LOG_WARN, ns3::Packet::PeekHeader(), and ns3::Ipv6Address::Serialize().
Referenced by operator=().
|
overridevirtual |
Marks the packet by setting ECN_CE bits if the packet has ECN_ECT0 or ECN_ECT1 set.
If ECN_CE is already set, returns true.
Implements ns3::QueueDiscItem.
Definition at line 91 of file ipv6-queue-disc-item.cc.
References ns3::Ipv6Header::ECN_CE, ns3::Ipv6Header::ECN_NotECT, ns3::Ipv6Header::GetEcn(), m_header, m_headerAdded, NS_LOG_FUNCTION, and ns3::Ipv6Header::SetEcn().
|
delete |
|
overridevirtual |
Print the item contents.
os | output stream in which the data should be printed. |
Reimplemented from ns3::QueueItem.
Definition at line 78 of file ipv6-queue-disc-item.cc.
References ns3::QueueDiscItem::GetAddress(), ns3::QueueItem::GetPacket(), ns3::QueueDiscItem::GetProtocol(), ns3::QueueDiscItem::GetTxQueueIndex(), m_header, and m_headerAdded.
|
private |
The IPv6 header.
Definition at line 109 of file ipv6-queue-disc-item.h.
Referenced by AddHeader(), GetHeader(), GetSize(), GetUint8Value(), Hash(), Mark(), and Print().
|
private |
True if the header has already been added to the packet.
Definition at line 110 of file ipv6-queue-disc-item.h.
Referenced by AddHeader(), GetSize(), Mark(), and Print().