ArpQueueDiscItem is a subclass of QueueDiscItem which stores ARP packets. More...
#include "arp-queue-disc-item.h"
Public Member Functions | |
ArpQueueDiscItem ()=delete | |
ArpQueueDiscItem (const ArpQueueDiscItem &)=delete | |
ArpQueueDiscItem (Ptr< Packet > p, const Address &addr, uint16_t protocol, const ArpHeader &header) | |
Create an ARP queue disc item containing an ARP packet. More... | |
~ArpQueueDiscItem () override | |
Destructor. More... | |
void | AddHeader () override |
Add the header to the packet. More... | |
const ArpHeader & | GetHeader () const |
uint32_t | GetSize () const override |
uint32_t | Hash (uint32_t perturbation) const override |
Computes the hash of the packet's 5-tuple. More... | |
bool | Mark () override |
Inherited from the base class, but we cannot mark ARP packets. More... | |
ArpQueueDiscItem & | operator= (const ArpQueueDiscItem &)=delete |
void | Print (std::ostream &os) const override |
Print the item contents. More... | |
![]() | |
QueueDiscItem ()=delete | |
QueueDiscItem (const QueueDiscItem &)=delete | |
QueueDiscItem (Ptr< Packet > p, const Address &addr, uint16_t protocol) | |
Create a queue disc item. More... | |
~QueueDiscItem () override | |
virtual void | AddHeader ()=0 |
Add the header to the packet. More... | |
Address | GetAddress () const |
Get the MAC address included in this item. More... | |
uint16_t | GetProtocol () const |
Get the L3 protocol included in this item. More... | |
Time | GetTimeStamp () const |
Get the timestamp included in this item. More... | |
uint8_t | GetTxQueueIndex () const |
Get the transmission queue index included in this item. More... | |
virtual uint32_t | Hash (uint32_t perturbation=0) const |
Computes the hash of various fields of the packet header. More... | |
virtual bool | Mark ()=0 |
Marks the packet as a substitute for dropping it, such as for Explicit Congestion Notification. More... | |
QueueDiscItem & | operator= (const QueueDiscItem &)=delete |
void | Print (std::ostream &os) const override |
Print the item contents. More... | |
void | SetTimeStamp (Time t) |
Set the timestamp included in this item. More... | |
void | SetTxQueueIndex (uint8_t txq) |
Set the transmission queue index to store in this item. More... | |
![]() | |
QueueItem ()=delete | |
QueueItem (const QueueItem &)=delete | |
QueueItem (Ptr< Packet > p) | |
Create a queue item containing a packet. More... | |
virtual | ~QueueItem () |
Ptr< Packet > | GetPacket () const |
virtual uint32_t | GetSize () const |
Use this method (instead of GetPacket ()->GetSize ()) to get the packet size. More... | |
virtual bool | GetUint8Value (Uint8Values field, uint8_t &value) const |
Retrieve the value of a given field from the packet, if present. More... | |
QueueItem & | operator= (const QueueItem &)=delete |
virtual void | Print (std::ostream &os) const |
Print the item contents. More... | |
![]() | |
SimpleRefCount () | |
Default constructor. More... | |
SimpleRefCount (const SimpleRefCount &o) | |
Copy constructor. More... | |
uint32_t | GetReferenceCount () const |
Get the reference count of the object. More... | |
SimpleRefCount & | operator= (const SimpleRefCount &o) |
Assignment operator. More... | |
void | Ref () const |
Increment the reference count. More... | |
void | Unref () const |
Decrement the reference count. More... | |
Private Attributes | |
ArpHeader | m_header |
The ARP header. More... | |
bool | m_headerAdded |
True if the header has already been added to the packet. More... | |
Additional Inherited Members | |
![]() | |
typedef void(* | TracedCallback) (Ptr< const QueueItem > item) |
TracedCallback signature for Ptr<QueueItem> More... | |
enum | Uint8Values { IP_DSFIELD } |
1-byte fields of the packet whose value can be retrieved, if present More... | |
ArpQueueDiscItem is a subclass of QueueDiscItem which stores ARP packets.
Header and payload are kept separate to allow the queue disc to hash the fields of the header, which is added to the packet when the packet is dequeued.
Definition at line 37 of file arp-queue-disc-item.h.
ns3::ArpQueueDiscItem::ArpQueueDiscItem | ( | Ptr< Packet > | p, |
const Address & | addr, | ||
uint16_t | protocol, | ||
const ArpHeader & | header | ||
) |
Create an ARP queue disc item containing an ARP packet.
p | the packet included in the created item. |
addr | the destination MAC address |
protocol | the protocol number |
header | the ARP header |
Definition at line 27 of file arp-queue-disc-item.cc.
|
override |
|
delete |
|
delete |
|
overridevirtual |
Add the header to the packet.
Implements ns3::QueueDiscItem.
Definition at line 63 of file arp-queue-disc-item.cc.
References ns3::Packet::AddHeader(), ns3::QueueItem::GetPacket(), m_header, m_headerAdded, NS_ASSERT, NS_ASSERT_MSG, and NS_LOG_FUNCTION.
const ArpHeader & ns3::ArpQueueDiscItem::GetHeader | ( | ) | const |
Definition at line 57 of file arp-queue-disc-item.cc.
References m_header.
|
overridevirtual |
Reimplemented from ns3::QueueItem.
Definition at line 43 of file arp-queue-disc-item.cc.
References ns3::QueueItem::GetPacket(), ns3::ArpHeader::GetSerializedSize(), ns3::Packet::GetSize(), m_header, m_headerAdded, NS_ASSERT, and NS_LOG_FUNCTION.
Computes the hash of the packet's 5-tuple.
perturbation | hash perturbation value |
Reimplemented from ns3::QueueDiscItem.
Definition at line 95 of file arp-queue-disc-item.cc.
References ns3::ArpHeader::ARP_TYPE_REPLY, ns3::ArpHeader::ARP_TYPE_REQUEST, ns3::Address::CopyTo(), ns3::ArpHeader::GetDestinationHardwareAddress(), ns3::ArpHeader::GetDestinationIpv4Address(), ns3::Address::GetLength(), ns3::ArpHeader::GetSourceHardwareAddress(), ns3::ArpHeader::GetSourceIpv4Address(), ns3::Hash32(), ns3::ArpHeader::IsRequest(), m_header, NS_LOG_DEBUG, NS_LOG_FUNCTION, ns3::Ipv4Address::Serialize(), and check-style-clang-format::type.
|
overridevirtual |
Inherited from the base class, but we cannot mark ARP packets.
Implements ns3::QueueDiscItem.
Definition at line 88 of file arp-queue-disc-item.cc.
References NS_LOG_FUNCTION.
|
delete |
|
overridevirtual |
Print the item contents.
os | output stream in which the data should be printed. |
Reimplemented from ns3::QueueItem.
Definition at line 75 of file arp-queue-disc-item.cc.
References ns3::QueueDiscItem::GetAddress(), ns3::QueueItem::GetPacket(), ns3::QueueDiscItem::GetProtocol(), ns3::QueueDiscItem::GetTxQueueIndex(), m_header, and m_headerAdded.
|
private |
The ARP header.
Definition at line 96 of file arp-queue-disc-item.h.
Referenced by AddHeader(), GetHeader(), GetSize(), Hash(), and Print().
|
private |
True if the header has already been added to the packet.
Definition at line 97 of file arp-queue-disc-item.h.
Referenced by AddHeader(), GetSize(), and Print().