A Discrete-Event Network Simulator
API
ns3::WifiMacHeader Class Reference

Implements the IEEE 802.11 MAC header. More...

#include "wifi-mac-header.h"

+ Inheritance diagram for ns3::WifiMacHeader:
+ Collaboration diagram for ns3::WifiMacHeader:

Public Types

enum  AddressType { ADDR1, ADDR2, ADDR3, ADDR4 }
 Address types. More...
 
enum  QosAckPolicy { NORMAL_ACK = 0, NO_ACK = 1, NO_EXPLICIT_ACK = 2, BLOCK_ACK = 3 }
 ACK policy for QoS frames. More...
 
typedef void(* TracedCallback) (const WifiMacHeader &header)
 TracedCallback signature for WifiMacHeader. More...
 

Public Member Functions

 WifiMacHeader ()
 
virtual ~WifiMacHeader ()
 
uint32_t Deserialize (Buffer::Iterator start)
 
Mac48Address GetAddr1 (void) const
 Return the address in the Address 1 field. More...
 
Mac48Address GetAddr2 (void) const
 Return the address in the Address 2 field. More...
 
Mac48Address GetAddr3 (void) const
 Return the address in the Address 3 field. More...
 
Mac48Address GetAddr4 (void) const
 Return the address in the Address 4 field. More...
 
Time GetDuration (void) const
 Return the duration from the Duration/ID field (Time object). More...
 
uint8_t GetFragmentNumber (void) const
 Return the fragment number of the header. More...
 
TypeId GetInstanceTypeId (void) const
 Get the most derived TypeId for this Object. More...
 
QosAckPolicy GetQosAckPolicy (void) const
 Return the QoS ACK policy in the QoS control field. More...
 
uint8_t GetQosTid (void) const
 Return the Traffic ID of a QoS header. More...
 
uint16_t GetRawDuration (void) const
 Return the raw duration from the Duration/ID field. More...
 
uint16_t GetSequenceControl (void) const
 Return the raw Sequence Control field. More...
 
uint16_t GetSequenceNumber (void) const
 Return the sequence number of the header. More...
 
uint32_t GetSerializedSize (void) const
 
uint32_t GetSize (void) const
 Return the size of the WifiMacHeader in octets. More...
 
WifiMacType GetType (void) const
 Return the type (enum WifiMacType) More...
 
const char * GetTypeString (void) const
 Return a string corresponds to the header type. More...
 
bool HasData (void) const
 Return true if the header type is DATA and is not DATA_NULL. More...
 
bool IsAck (void) const
 Return true if the header is an ACK header. More...
 
bool IsAction () const
 Return true if the header is an Action header. More...
 
bool IsAssocReq (void) const
 Return true if the header is an Association Request header. More...
 
bool IsAssocResp (void) const
 Return true if the header is an Association Response header. More...
 
bool IsAuthentication (void) const
 Return true if the header is an Authentication header. More...
 
bool IsBeacon (void) const
 Return true if the header is a Beacon header. More...
 
bool IsBlockAck (void) const
 Return true if the header is a Block ACK header. More...
 
bool IsBlockAckReq (void) const
 Return true if the header is a Block ACK Request header. More...
 
bool IsCfAck (void) const
 Return true if the header is a CF-ACK header. More...
 
bool IsCfEnd (void) const
 Return true if the header is a CF-END header. More...
 
bool IsCfPoll (void) const
 Return true if the Type/Subtype is one of the possible CF-Poll headers. More...
 
bool IsCtl (void) const
 Return true if the Type is Control. More...
 
bool IsCts (void) const
 Return true if the header is a CTS header. More...
 
bool IsData (void) const
 Return true if the Type is DATA. More...
 
bool IsDeauthentication (void) const
 Return true if the header is a Deauthentication header. More...
 
bool IsDisassociation (void) const
 Return true if the header is a Disassociation header. More...
 
bool IsFromDs (void) const
 
bool IsMgt (void) const
 Return true if the Type is Management. More...
 
bool IsMoreFragments (void) const
 Return if the More Fragment bit is set. More...
 
bool IsMultihopAction () const
 Check if the header is a Multihop action header. More...
 
bool IsProbeReq (void) const
 Return true if the header is a Probe Request header. More...
 
bool IsProbeResp (void) const
 Return true if the header is a Probe Response header. More...
 
bool IsQosAck (void) const
 Return if the QoS ACK policy is Normal ACK. More...
 
bool IsQosAmsdu (void) const
 Check if the A-MSDU present bit is set in the QoS control field. More...
 
bool IsQosBlockAck (void) const
 Return if the QoS ACK policy is Block ACK. More...
 
bool IsQosData (void) const
 Return true if the Type is DATA and Subtype is one of the possible values for QoS DATA. More...
 
bool IsQosEosp (void) const
 Return if the end of service period (EOSP) is set. More...
 
bool IsQosNoAck (void) const
 Return if the QoS ACK policy is No ACK. More...
 
bool IsReassocReq (void) const
 Return true if the header is a Reassociation Request header. More...
 
bool IsReassocResp (void) const
 Return true if the header is a Reassociation Response header. More...
 
bool IsRetry (void) const
 Return if the Retry bit is set. More...
 
bool IsRts (void) const
 Return true if the header is a RTS header. More...
 
bool IsToDs (void) const
 
void Print (std::ostream &os) const
 
void Serialize (Buffer::Iterator start) const
 
void SetAddr1 (Mac48Address address)
 Fill the Address 1 field with the given address. More...
 
void SetAddr2 (Mac48Address address)
 Fill the Address 2 field with the given address. More...
 
void SetAddr3 (Mac48Address address)
 Fill the Address 3 field with the given address. More...
 
void SetAddr4 (Mac48Address address)
 Fill the Address 4 field with the given address. More...
 
void SetDsFrom (void)
 Set the From DS bit in the Frame Control field. More...
 
void SetDsNotFrom (void)
 Un-set the From DS bit in the Frame Control field. More...
 
void SetDsNotTo (void)
 Un-set the To DS bit in the Frame Control field. More...
 
void SetDsTo (void)
 Set the To DS bit in the Frame Control field. More...
 
void SetDuration (Time duration)
 Set the Duration/ID field with the given duration (Time object). More...
 
void SetFragmentNumber (uint8_t frag)
 Set the fragment number of the header. More...
 
void SetId (uint16_t id)
 Set the Duration/ID field with the given ID. More...
 
void SetMoreFragments (void)
 Set the More Fragment bit in the Frame Control field. More...
 
void SetNoMoreFragments (void)
 Un-set the More Fragment bit in the Frame Control Field. More...
 
void SetNoOrder (void)
 Unset order bit in the frame control field. More...
 
void SetNoRetry (void)
 Un-set the Retry bit in the Frame Control field. More...
 
void SetOrder (void)
 Set order bit in the frame control field. More...
 
void SetQosAckPolicy (QosAckPolicy policy)
 Set the QoS ACK policy in the QoS control field. More...
 
void SetQosAmsdu (void)
 Set that A-MSDU is present. More...
 
void SetQosEosp ()
 Set the end of service period (EOSP) bit in the QoS control field. More...
 
void SetQosMeshControlPresent ()
 Set the Mesh Control Present flag for the QoS header. More...
 
void SetQosNoAmsdu (void)
 Set that A-MSDU is not present. More...
 
void SetQosNoEosp ()
 Un-set the end of service period (EOSP) bit in the QoS control field. More...
 
void SetQosNoMeshControlPresent ()
 Clear the Mesh Control Present flag for the QoS header. More...
 
void SetQosTid (uint8_t tid)
 Set the TID for the QoS header. More...
 
void SetQosTxopLimit (uint8_t txop)
 Set TXOP limit in the QoS control field. More...
 
void SetRawDuration (uint16_t duration)
 Set the Duration/ID field with the given raw uint16_t value. More...
 
void SetRetry (void)
 Set the Retry bit in the Frame Control field. More...
 
void SetSequenceNumber (uint16_t seq)
 Set the sequence number of the header. More...
 
void SetType (WifiMacType type, bool resetToDsFromDs=true)
 Set Type/Subtype values with the correct values depending on the given type. More...
 
- Public Member Functions inherited from ns3::Header
virtual ~Header ()
 
virtual uint32_t Deserialize (Buffer::Iterator start, Buffer::Iterator end)
 Deserialize the object from a buffer iterator. More...
 
virtual uint32_t Deserialize (Buffer::Iterator start)=0
 Deserialize the object from a buffer iterator. More...
 
- Public Member Functions inherited from ns3::Chunk
virtual uint32_t Deserialize (Buffer::Iterator start, Buffer::Iterator end)
 Deserialize the object from a buffer iterator. More...
 
- Public Member Functions inherited from ns3::ObjectBase
virtual ~ObjectBase ()
 Virtual destructor. More...
 
void GetAttribute (std::string name, AttributeValue &value) const
 Get the value of an attribute, raising fatal errors if unsuccessful. More...
 
bool GetAttributeFailSafe (std::string name, AttributeValue &value) const
 Get the value of an attribute without raising erros. More...
 
void SetAttribute (std::string name, const AttributeValue &value)
 Set a single attribute, raising fatal errors if unsuccessful. More...
 
bool SetAttributeFailSafe (std::string name, const AttributeValue &value)
 Set a single attribute without raising errors. More...
 
bool TraceConnect (std::string name, std::string context, const CallbackBase &cb)
 Connect a TraceSource to a Callback with a context. More...
 
bool TraceConnectWithoutContext (std::string name, const CallbackBase &cb)
 Connect a TraceSource to a Callback without a context. More...
 
bool TraceDisconnect (std::string name, std::string context, const CallbackBase &cb)
 Disconnect from a TraceSource a Callback previously connected with a context. More...
 
bool TraceDisconnectWithoutContext (std::string name, const CallbackBase &cb)
 Disconnect from a TraceSource a Callback previously connected without a context. More...
 

Static Public Member Functions

static TypeId GetTypeId (void)
 Get the type ID. More...
 
- Static Public Member Functions inherited from ns3::Header
static TypeId GetTypeId (void)
 Get the type ID. More...
 
- Static Public Member Functions inherited from ns3::Chunk
static TypeId GetTypeId (void)
 Get the type ID. More...
 
- Static Public Member Functions inherited from ns3::ObjectBase
static TypeId GetTypeId (void)
 Get the type ID. More...
 

Private Member Functions

uint16_t GetFrameControl (void) const
 Return the raw Frame Control field. More...
 
uint16_t GetQosControl (void) const
 Return the raw QoS Control field. More...
 
void PrintFrameControl (std::ostream &os) const
 Print the Frame Control field to the output stream. More...
 
void SetFrameControl (uint16_t control)
 Set the Frame Control field with the given raw value. More...
 
void SetQosControl (uint16_t qos)
 Set the QoS Control field with the given raw value. More...
 
void SetSequenceControl (uint16_t seq)
 Set the Sequence Control field with the given raw value. More...
 

Private Attributes

Mac48Address m_addr1
 address 1 More...
 
Mac48Address m_addr2
 address 2 More...
 
Mac48Address m_addr3
 address 3 More...
 
Mac48Address m_addr4
 address 4 More...
 
uint8_t m_amsduPresent
 AMSDU present. More...
 
uint8_t m_ctrlFromDs
 control from DS More...
 
uint8_t m_ctrlMoreData
 control more data More...
 
uint8_t m_ctrlMoreFrag
 control more fragments More...
 
uint8_t m_ctrlOrder
 control order (set to 1 for QoS Data and Management frames to signify that HT/VHT/HE control field is present, knowing that the latter are not implemented yet) More...
 
uint8_t m_ctrlRetry
 control retry More...
 
uint8_t m_ctrlSubtype
 control subtype More...
 
uint8_t m_ctrlToDs
 control to DS More...
 
uint8_t m_ctrlType
 control type More...
 
uint8_t m_ctrlWep
 control WEP More...
 
uint16_t m_duration
 duration More...
 
uint8_t m_qosAckPolicy
 QOS ack policy. More...
 
uint8_t m_qosEosp
 QOS EOSP. More...
 
uint8_t m_qosStuff
 QOS stuff. More...
 
uint8_t m_qosTid
 QOS TID. More...
 
uint8_t m_seqFrag
 sequence fragment More...
 
uint16_t m_seqSeq
 sequence sequence More...
 

Additional Inherited Members

- Protected Member Functions inherited from ns3::ObjectBase
void ConstructSelf (const AttributeConstructionList &attributes)
 Complete construction of ObjectBase; invoked by derived classes. More...
 
virtual void NotifyConstructionCompleted (void)
 Notifier called once the ObjectBase is fully constructed. More...
 

Detailed Description

Implements the IEEE 802.11 MAC header.


Introspection did not find any typical Config paths.


No Attributes are defined for this type.
No TraceSources are defined for this type.
Size of this type is 56 bytes (on a 64-bit architecture).

Definition at line 83 of file wifi-mac-header.h.

Member Typedef Documentation

◆ TracedCallback

typedef void(* ns3::WifiMacHeader::TracedCallback) (const WifiMacHeader &header)

TracedCallback signature for WifiMacHeader.

Parameters
[in]headerThe header

Definition at line 566 of file wifi-mac-header.h.

Member Enumeration Documentation

◆ AddressType

Address types.

Enumerator
ADDR1 
ADDR2 
ADDR3 
ADDR4 

Definition at line 100 of file wifi-mac-header.h.

◆ QosAckPolicy

ACK policy for QoS frames.

Enumerator
NORMAL_ACK 
NO_ACK 
NO_EXPLICIT_ACK 
BLOCK_ACK 

Definition at line 89 of file wifi-mac-header.h.

Constructor & Destructor Documentation

◆ WifiMacHeader()

ns3::WifiMacHeader::WifiMacHeader ( )

Definition at line 53 of file wifi-mac-header.cc.

◆ ~WifiMacHeader()

ns3::WifiMacHeader::~WifiMacHeader ( )
virtual

Definition at line 61 of file wifi-mac-header.cc.

Member Function Documentation

◆ Deserialize()

uint32_t ns3::WifiMacHeader::Deserialize ( Buffer::Iterator  start)
virtual
Parameters
startan iterator which points to where the header should read from.
Returns
the number of bytes read.

This method is used by Packet::RemoveHeader to re-create a header from the byte buffer of a packet. The data read is expected to match bit-for-bit the representation of this header in real networks.

Note that data is not actually removed from the buffer to which the iterator points. Both Packet::RemoveHeader() and Packet::PeekHeader() call Deserialize(), but only the RemoveHeader() has additional statements to remove the header bytes from the underlying buffer and associated metadata.

Implements ns3::Header.

Definition at line 1167 of file wifi-mac-header.cc.

References ns3::Buffer::Iterator::GetDistanceFrom(), m_addr1, m_addr2, m_addr3, m_addr4, m_ctrlFromDs, m_ctrlSubtype, m_ctrlToDs, m_ctrlType, m_duration, ns3::ReadFrom(), ns3::Buffer::Iterator::ReadLsbtohU16(), SetFrameControl(), SetQosControl(), SetSequenceControl(), visualizer.core::start(), ns3::SUBTYPE_CTL_ACK, ns3::SUBTYPE_CTL_BACKREQ, ns3::SUBTYPE_CTL_BACKRESP, ns3::SUBTYPE_CTL_CTS, ns3::SUBTYPE_CTL_END, ns3::SUBTYPE_CTL_END_ACK, ns3::SUBTYPE_CTL_RTS, ns3::TYPE_CTL, ns3::TYPE_DATA, and ns3::TYPE_MGT.

+ Here is the call graph for this function:

◆ GetAddr1()

Mac48Address ns3::WifiMacHeader::GetAddr1 ( void  ) const

Return the address in the Address 1 field.

Returns
the address in the Address 1 field

Definition at line 395 of file wifi-mac-header.cc.

References m_addr1.

Referenced by ns3::WifiMacQueueItem::Aggregate(), ns3::MeshWifiInterfaceMac::ForwardDown(), ns3::WifiMacQueueItem::GetDestinationAddress(), ns3::Txop::GetFragmentOffset(), ns3::QosTxop::GetFragmentOffset(), ns3::Txop::GetFragmentSize(), ns3::QosTxop::GetFragmentSize(), ns3::Txop::GetNextFragmentSize(), ns3::QosTxop::GetNextFragmentSize(), ns3::MacTxMiddle::GetNextSequenceNumberFor(), ns3::QosTxop::GotAck(), ns3::QosTxop::GotAddBaResponse(), ns3::Txop::IsLastFragment(), ns3::QosTxop::IsLastFragment(), ns3::QosTxop::IsTxopFragmentation(), ns3::QosTxop::MapDestAddressForAggregation(), ns3::QosTxop::MissedAck(), ns3::Txop::MissedAck(), ns3::QosTxop::MissedBlockAck(), ns3::Txop::MissedCfPollResponse(), ns3::Txop::MissedCts(), ns3::QosTxop::NeedBarRetransmission(), ns3::Txop::NeedDataRetransmission(), ns3::QosTxop::NeedFragmentation(), ns3::Txop::NeedFragmentation(), ns3::Txop::NeedRtsRetransmission(), ns3::QosTxop::NotifyAccessGranted(), ns3::Txop::NotifyAccessGranted(), ns3::QosTxop::NotifyInternalCollision(), ns3::QosTxop::NotifyMissedCts(), ns3::MacLow::NotifyNav(), ns3::MacTxMiddle::PeekNextSequenceNumberFor(), NodeStatistics::PhyCallback(), ns3::WifiMacQueueItem::Print(), ns3::aodv::Neighbors::ProcessTxError(), ns3::dsr::DsrRouteCache::ProcessTxError(), ns3::QosTxop::PushFront(), ns3::Txop::Queue(), ns3::flame::FlameProtocolMac::Receive(), ns3::AdhocWifiMac::Receive(), ns3::MacRxMiddle::Receive(), ns3::ApWifiMac::Receive(), ns3::OcbWifiMac::Receive(), ns3::MeshWifiInterfaceMac::Receive(), ns3::StaWifiMac::Receive(), ns3::RegularWifiMac::Receive(), ns3::MacLow::ReceiveOk(), ns3::QosTxop::RestartAccessIfNeeded(), ns3::Txop::SendCfFrame(), ns3::MeshWifiInterfaceMac::SendManagementFrame(), ns3::QosTxop::SetupBlockAckIfNeeded(), ns3::QosTxop::StartAccessIfNeeded(), ns3::QosTxop::StartNextPacket(), ns3::dot11s::PeerManagementProtocolMac::TxError(), ns3::ApWifiMac::TxFailed(), ns3::dot11s::PeerManagementProtocolMac::TxOk(), ns3::ApWifiMac::TxOk(), and ns3::dot11s::PeerManagementProtocolMac::UpdateOutcomingFrame().

◆ GetAddr2()

◆ GetAddr3()

◆ GetAddr4()

Mac48Address ns3::WifiMacHeader::GetAddr4 ( void  ) const

Return the address in the Address 4 field.

Returns
the address in the Address 4 field

Definition at line 413 of file wifi-mac-header.cc.

References m_addr4.

Referenced by ns3::MeshWifiInterfaceMac::Receive(), and ns3::dot11s::HwmpProtocolMac::ReceiveData().

+ Here is the caller graph for this function:

◆ GetDuration()

Time ns3::WifiMacHeader::GetDuration ( void  ) const

Return the duration from the Duration/ID field (Time object).

Returns
the duration from the Duration/ID field (Time object)

Definition at line 728 of file wifi-mac-header.cc.

References m_duration, and ns3::MicroSeconds().

Referenced by ns3::MacLow::NotifyNav(), and ns3::MacLow::ReceiveOk().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ GetFragmentNumber()

uint8_t ns3::WifiMacHeader::GetFragmentNumber ( void  ) const

Return the fragment number of the header.

Returns
the fragment number of the header

Definition at line 746 of file wifi-mac-header.cc.

References m_seqFrag.

Referenced by ns3::MacRxMiddle::HandleFragments(), ns3::MacRxMiddle::Receive(), and ns3::BlockAckCache::UpdateWithMpdu().

+ Here is the caller graph for this function:

◆ GetFrameControl()

uint16_t ns3::WifiMacHeader::GetFrameControl ( void  ) const
private

Return the raw Frame Control field.

Returns
the raw Frame Control field

Definition at line 832 of file wifi-mac-header.cc.

References m_ctrlFromDs, m_ctrlMoreData, m_ctrlMoreFrag, m_ctrlOrder, m_ctrlRetry, m_ctrlSubtype, m_ctrlToDs, m_ctrlType, and m_ctrlWep.

Referenced by Serialize().

+ Here is the caller graph for this function:

◆ GetInstanceTypeId()

TypeId ns3::WifiMacHeader::GetInstanceTypeId ( void  ) const
virtual

Get the most derived TypeId for this Object.

This method is typically implemented by ns3::Object::GetInstanceTypeId but some classes which derive from ns3::ObjectBase directly have to implement it themselves.

Returns
The TypeId associated to the most-derived type of this instance.

Implements ns3::ObjectBase.

Definition at line 1000 of file wifi-mac-header.cc.

References GetTypeId().

+ Here is the call graph for this function:

◆ GetQosAckPolicy()

WifiMacHeader::QosAckPolicy ns3::WifiMacHeader::GetQosAckPolicy ( void  ) const

Return the QoS ACK policy in the QoS control field.

Returns
the QoS ACK policy in the QoS control field

Definition at line 792 of file wifi-mac-header.cc.

References BLOCK_ACK, IsQosData(), m_qosAckPolicy, NO_ACK, NO_EXPLICIT_ACK, NORMAL_ACK, NS_ABORT_MSG, and NS_ASSERT.

+ Here is the call graph for this function:

◆ GetQosControl()

uint16_t ns3::WifiMacHeader::GetQosControl ( void  ) const
private

Return the raw QoS Control field.

Returns
the raw QoS Control field

Definition at line 848 of file wifi-mac-header.cc.

References m_amsduPresent, m_qosAckPolicy, m_qosEosp, m_qosStuff, and m_qosTid.

Referenced by Serialize().

+ Here is the caller graph for this function:

◆ GetQosTid()

◆ GetRawDuration()

uint16_t ns3::WifiMacHeader::GetRawDuration ( void  ) const

Return the raw duration from the Duration/ID field.

Returns
the raw duration from the Duration/ID field

Definition at line 722 of file wifi-mac-header.cc.

References m_duration.

Referenced by ns3::MacLow::NotifyNav().

+ Here is the caller graph for this function:

◆ GetSequenceControl()

uint16_t ns3::WifiMacHeader::GetSequenceControl ( void  ) const

Return the raw Sequence Control field.

Returns
the raw Sequence Control field

Definition at line 734 of file wifi-mac-header.cc.

References m_seqFrag, and m_seqSeq.

Referenced by ns3::MacRxMiddle::HandleFragments(), ns3::MacRxMiddle::IsDuplicate(), ns3::Txop::NotifyAccessGranted(), ns3::MacRxMiddle::Receive(), Serialize(), and ns3::MacLow::StoreMpduIfNeeded().

+ Here is the caller graph for this function:

◆ GetSequenceNumber()

uint16_t ns3::WifiMacHeader::GetSequenceNumber ( void  ) const

Return the sequence number of the header.

Returns
the sequence number of the header

Definition at line 740 of file wifi-mac-header.cc.

References m_seqSeq.

Referenced by AmpduAggregationTest::DoRun(), ns3::MacRxMiddle::HandleFragments(), ns3::WifiMacQueueItem::Print(), ns3::MacRxMiddle::Receive(), ns3::MacLow::ReceiveMpdu(), and ns3::BlockAckCache::UpdateWithMpdu().

+ Here is the caller graph for this function:

◆ GetSerializedSize()

uint32_t ns3::WifiMacHeader::GetSerializedSize ( void  ) const
virtual
Returns
the expected size of the header.

This method is used by Packet::AddHeader to store a header into the byte buffer of a packet. This method should return the number of bytes which are needed to store the full header data by Serialize.

Implements ns3::Header.

Definition at line 1108 of file wifi-mac-header.cc.

References GetSize().

Referenced by ns3::MacLow::CanTransmitNextCfFrame(), ns3::WifiMacQueueItem::GetSize(), ns3::MacLow::NotifyNav(), InterferenceExperiment::SendA(), InterferenceExperiment::SendB(), and ns3::WifiPsdu::WifiPsdu().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ GetSize()

◆ GetType()

WifiMacType ns3::WifiMacHeader::GetType ( void  ) const

Return the type (enum WifiMacType)

Returns
the type (enum WifiMacType)

Definition at line 419 of file wifi-mac-header.cc.

References m_ctrlSubtype, m_ctrlType, NS_ASSERT, ns3::SUBTYPE_CTL_ACK, ns3::SUBTYPE_CTL_BACKREQ, ns3::SUBTYPE_CTL_BACKRESP, ns3::SUBTYPE_CTL_CTS, ns3::SUBTYPE_CTL_END, ns3::SUBTYPE_CTL_END_ACK, ns3::SUBTYPE_CTL_RTS, ns3::TYPE_CTL, ns3::TYPE_DATA, ns3::TYPE_MGT, ns3::WIFI_MAC_CTL_ACK, ns3::WIFI_MAC_CTL_BACKREQ, ns3::WIFI_MAC_CTL_BACKRESP, ns3::WIFI_MAC_CTL_CTS, ns3::WIFI_MAC_CTL_END, ns3::WIFI_MAC_CTL_END_ACK, ns3::WIFI_MAC_CTL_RTS, ns3::WIFI_MAC_DATA, ns3::WIFI_MAC_DATA_CFACK, ns3::WIFI_MAC_DATA_CFACK_CFPOLL, ns3::WIFI_MAC_DATA_CFPOLL, ns3::WIFI_MAC_DATA_NULL, ns3::WIFI_MAC_DATA_NULL_CFACK, ns3::WIFI_MAC_DATA_NULL_CFACK_CFPOLL, ns3::WIFI_MAC_DATA_NULL_CFPOLL, ns3::WIFI_MAC_MGT_ACTION, ns3::WIFI_MAC_MGT_ACTION_NO_ACK, ns3::WIFI_MAC_MGT_ASSOCIATION_REQUEST, ns3::WIFI_MAC_MGT_ASSOCIATION_RESPONSE, ns3::WIFI_MAC_MGT_AUTHENTICATION, ns3::WIFI_MAC_MGT_BEACON, ns3::WIFI_MAC_MGT_DEAUTHENTICATION, ns3::WIFI_MAC_MGT_DISASSOCIATION, ns3::WIFI_MAC_MGT_MULTIHOP_ACTION, ns3::WIFI_MAC_MGT_PROBE_REQUEST, ns3::WIFI_MAC_MGT_PROBE_RESPONSE, ns3::WIFI_MAC_MGT_REASSOCIATION_REQUEST, ns3::WIFI_MAC_MGT_REASSOCIATION_RESPONSE, ns3::WIFI_MAC_QOSDATA, ns3::WIFI_MAC_QOSDATA_CFACK, ns3::WIFI_MAC_QOSDATA_CFACK_CFPOLL, ns3::WIFI_MAC_QOSDATA_CFPOLL, ns3::WIFI_MAC_QOSDATA_NULL, ns3::WIFI_MAC_QOSDATA_NULL_CFACK_CFPOLL, and ns3::WIFI_MAC_QOSDATA_NULL_CFPOLL.

Referenced by GetTypeString(), HasData(), IsAck(), IsAction(), IsAssocReq(), IsAssocResp(), IsAuthentication(), IsBeacon(), IsBlockAck(), IsBlockAckReq(), IsCfAck(), IsCfEnd(), IsCfPoll(), IsCts(), IsDeauthentication(), IsDisassociation(), IsMultihopAction(), IsProbeReq(), IsProbeResp(), IsReassocReq(), IsReassocResp(), IsRts(), NodeStatistics::PhyCallback(), Print(), and ns3::RegularWifiMac::Receive().

+ Here is the caller graph for this function:

◆ GetTypeId()

TypeId ns3::WifiMacHeader::GetTypeId ( void  )
static

Get the type ID.

Returns
the object TypeId

Definition at line 989 of file wifi-mac-header.cc.

References ns3::TypeId::SetParent().

Referenced by GetInstanceTypeId().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ GetTypeString()

const char * ns3::WifiMacHeader::GetTypeString ( void  ) const

Return a string corresponds to the header type.

Returns
a string corresponds to the header type.

Definition at line 932 of file wifi-mac-header.cc.

References ns3::DATA, FOO, and GetType().

Referenced by Print(), and ns3::MacLow::ReceiveOk().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ HasData()

bool ns3::WifiMacHeader::HasData ( void  ) const

Return true if the header type is DATA and is not DATA_NULL.

Returns
true if the header type is DATA and is not DATA_NULL, false otherwise

Definition at line 601 of file wifi-mac-header.cc.

References GetType(), ns3::WIFI_MAC_DATA, ns3::WIFI_MAC_DATA_CFACK, ns3::WIFI_MAC_DATA_CFACK_CFPOLL, ns3::WIFI_MAC_DATA_CFPOLL, ns3::WIFI_MAC_QOSDATA, ns3::WIFI_MAC_QOSDATA_CFACK, ns3::WIFI_MAC_QOSDATA_CFACK_CFPOLL, and ns3::WIFI_MAC_QOSDATA_CFPOLL.

Referenced by ns3::ApWifiMac::Receive(), ns3::StaWifiMac::Receive(), ns3::MacLow::ReceiveOk(), and TxCallback().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ IsAck()

bool ns3::WifiMacHeader::IsAck ( void  ) const

Return true if the header is an ACK header.

Returns
true if the header is an ACK header, false otherwise

Definition at line 632 of file wifi-mac-header.cc.

References GetType(), and ns3::WIFI_MAC_CTL_ACK.

Referenced by ns3::MacLow::ReceiveOk().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ IsAction()

bool ns3::WifiMacHeader::IsAction ( void  ) const

Return true if the header is an Action header.

Returns
true if the header is an Action header, false otherwise

Definition at line 698 of file wifi-mac-header.cc.

References GetType(), and ns3::WIFI_MAC_MGT_ACTION.

Referenced by ns3::GetTid(), ns3::QosTxop::GotAck(), ns3::QosTxop::MissedAck(), ns3::QosTxop::MissedBlockAck(), ns3::dot11s::HwmpProtocolMac::Receive(), ns3::dot11s::PeerManagementProtocolMac::Receive(), ns3::OcbWifiMac::Receive(), ns3::RegularWifiMac::Receive(), Bug2470TestCase::RxDropCallback(), and ns3::dot11s::PeerManagementProtocolMac::UpdateOutcomingFrame().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ IsAssocReq()

bool ns3::WifiMacHeader::IsAssocReq ( void  ) const

Return true if the header is an Association Request header.

Returns
true if the header is an Association Request header, false otherwise

Definition at line 638 of file wifi-mac-header.cc.

References GetType(), and ns3::WIFI_MAC_MGT_ASSOCIATION_REQUEST.

Referenced by ns3::ApWifiMac::Receive(), and ns3::StaWifiMac::Receive().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ IsAssocResp()

bool ns3::WifiMacHeader::IsAssocResp ( void  ) const

Return true if the header is an Association Response header.

Returns
true if the header is an Association Response header, false otherwise

Definition at line 644 of file wifi-mac-header.cc.

References GetType(), and ns3::WIFI_MAC_MGT_ASSOCIATION_RESPONSE.

Referenced by ns3::StaWifiMac::Receive(), ns3::ApWifiMac::TxFailed(), and ns3::ApWifiMac::TxOk().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ IsAuthentication()

bool ns3::WifiMacHeader::IsAuthentication ( void  ) const

Return true if the header is an Authentication header.

Returns
true if the header is an Authentication header, false otherwise

Definition at line 686 of file wifi-mac-header.cc.

References GetType(), and ns3::WIFI_MAC_MGT_AUTHENTICATION.

+ Here is the call graph for this function:

◆ IsBeacon()

bool ns3::WifiMacHeader::IsBeacon ( void  ) const

Return true if the header is a Beacon header.

Returns
true if the header is a Beacon header, false otherwise

Definition at line 674 of file wifi-mac-header.cc.

References GetType(), and ns3::WIFI_MAC_MGT_BEACON.

Referenced by ns3::dot11s::PeerManagementProtocolMac::Receive(), ns3::MeshWifiInterfaceMac::Receive(), ns3::StaWifiMac::Receive(), ns3::MacLow::ReceiveOk(), Bug2831TestCase::RxCallback(), TxCallback(), and ns3::ApWifiMac::TxOk().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ IsBlockAck()

bool ns3::WifiMacHeader::IsBlockAck ( void  ) const

Return true if the header is a Block ACK header.

Returns
true if the header is a Block ACK header, false otherwise

Definition at line 716 of file wifi-mac-header.cc.

References GetType(), and ns3::WIFI_MAC_CTL_BACKRESP.

Referenced by ns3::GetTid(), ns3::QosTxop::NeedBarRetransmission(), BlockAckAggregationDisabledTest::Receive(), and ns3::MacLow::ReceiveOk().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ IsBlockAckReq()

bool ns3::WifiMacHeader::IsBlockAckReq ( void  ) const

Return true if the header is a Block ACK Request header.

Returns
true if the header is a Block ACK Request header, false otherwise

Definition at line 710 of file wifi-mac-header.cc.

References GetType(), and ns3::WIFI_MAC_CTL_BACKREQ.

Referenced by ns3::GetTid(), ns3::QosTxop::MissedBlockAck(), ns3::QosTxop::NeedBarRetransmission(), ns3::MacLow::ReceiveOk(), and BlockAckAggregationDisabledTest::Transmit().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ IsCfAck()

bool ns3::WifiMacHeader::IsCfAck ( void  ) const

Return true if the header is a CF-ACK header.

Returns
true if the header is a CF_ACK header, false otherwise

Definition at line 584 of file wifi-mac-header.cc.

References GetType(), ns3::WIFI_MAC_CTL_END_ACK, ns3::WIFI_MAC_DATA_CFACK, ns3::WIFI_MAC_DATA_CFACK_CFPOLL, ns3::WIFI_MAC_DATA_NULL_CFACK, and ns3::WIFI_MAC_DATA_NULL_CFACK_CFPOLL.

Referenced by ns3::MacLow::ReceiveOk(), and TxCallback().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ IsCfEnd()

bool ns3::WifiMacHeader::IsCfEnd ( void  ) const

Return true if the header is a CF-END header.

Returns
true if the header is a CF_END header, false otherwise

Definition at line 571 of file wifi-mac-header.cc.

References GetType(), ns3::WIFI_MAC_CTL_END, and ns3::WIFI_MAC_CTL_END_ACK.

Referenced by ns3::MacLow::NotifyNav(), ns3::MacLow::ReceiveOk(), and TxCallback().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ IsCfPoll()

bool ns3::WifiMacHeader::IsCfPoll ( void  ) const

Return true if the Type/Subtype is one of the possible CF-Poll headers.

Returns
true if the Type/Subtype is one of the possible CF-Poll headers, false otherwise

Definition at line 552 of file wifi-mac-header.cc.

References GetType(), ns3::WIFI_MAC_DATA_CFACK_CFPOLL, ns3::WIFI_MAC_DATA_CFPOLL, ns3::WIFI_MAC_DATA_NULL_CFACK_CFPOLL, ns3::WIFI_MAC_DATA_NULL_CFPOLL, ns3::WIFI_MAC_QOSDATA_CFACK_CFPOLL, ns3::WIFI_MAC_QOSDATA_CFPOLL, ns3::WIFI_MAC_QOSDATA_NULL_CFACK_CFPOLL, and ns3::WIFI_MAC_QOSDATA_NULL_CFPOLL.

Referenced by ns3::StaWifiMac::Receive(), ns3::MacLow::ReceiveOk(), TxCallback(), ns3::ApWifiMac::TxFailed(), and ns3::ApWifiMac::TxOk().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ IsCtl()

bool ns3::WifiMacHeader::IsCtl ( void  ) const

Return true if the Type is Control.

Returns
true if Type is Control, false otherwise

Definition at line 540 of file wifi-mac-header.cc.

References m_ctrlType, and ns3::TYPE_CTL.

Referenced by ns3::AdhocWifiMac::Receive(), ns3::OcbWifiMac::Receive(), ns3::StaWifiMac::Receive(), and ns3::MacLow::ReceiveOk().

+ Here is the caller graph for this function:

◆ IsCts()

bool ns3::WifiMacHeader::IsCts ( void  ) const

Return true if the header is a CTS header.

Returns
true if the header is a CTS header, false otherwise

Definition at line 626 of file wifi-mac-header.cc.

References GetType(), and ns3::WIFI_MAC_CTL_CTS.

Referenced by ns3::MacLow::ReceiveOk().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ IsData()

◆ IsDeauthentication()

bool ns3::WifiMacHeader::IsDeauthentication ( void  ) const

Return true if the header is a Deauthentication header.

Returns
true if the header is a Deauthentication header, false otherwise

Definition at line 692 of file wifi-mac-header.cc.

References GetType(), and ns3::WIFI_MAC_MGT_DEAUTHENTICATION.

+ Here is the call graph for this function:

◆ IsDisassociation()

bool ns3::WifiMacHeader::IsDisassociation ( void  ) const

Return true if the header is a Disassociation header.

Returns
true if the header is a Disassociation header, false otherwise

Definition at line 680 of file wifi-mac-header.cc.

References GetType(), and ns3::WIFI_MAC_MGT_DISASSOCIATION.

Referenced by ns3::ApWifiMac::Receive().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ IsFromDs()

bool ns3::WifiMacHeader::IsFromDs ( void  ) const
Returns
true if From DS bit is set, false otherwise

Definition at line 515 of file wifi-mac-header.cc.

References m_ctrlFromDs.

Referenced by ns3::WifiMacQueueItem::Aggregate(), ns3::ApWifiMac::Receive(), and ns3::StaWifiMac::Receive().

+ Here is the caller graph for this function:

◆ IsMgt()

bool ns3::WifiMacHeader::IsMgt ( void  ) const

Return true if the Type is Management.

Returns
true if Type is Management, false otherwise

Definition at line 546 of file wifi-mac-header.cc.

References m_ctrlType, and ns3::TYPE_MGT.

Referenced by ns3::WifiRemoteStationManager::GetDataTxVector(), ns3::GetTid(), ns3::MacRxMiddle::Receive(), ns3::ApWifiMac::Receive(), ns3::OcbWifiMac::Receive(), ns3::RegularWifiMac::Receive(), and ns3::MacLow::ReceiveOk().

+ Here is the caller graph for this function:

◆ IsMoreFragments()

bool ns3::WifiMacHeader::IsMoreFragments ( void  ) const

Return if the More Fragment bit is set.

Returns
true if the More Fragment bit is set, false otherwise

Definition at line 758 of file wifi-mac-header.cc.

References m_ctrlMoreFrag.

Referenced by ns3::MacRxMiddle::HandleFragments().

+ Here is the caller graph for this function:

◆ IsMultihopAction()

bool ns3::WifiMacHeader::IsMultihopAction ( void  ) const

Check if the header is a Multihop action header.

Returns
true if the header is a Multihop action header, false otherwise

Definition at line 704 of file wifi-mac-header.cc.

References GetType(), and ns3::WIFI_MAC_MGT_MULTIHOP_ACTION.

+ Here is the call graph for this function:

◆ IsProbeReq()

bool ns3::WifiMacHeader::IsProbeReq ( void  ) const

Return true if the header is a Probe Request header.

Returns
true if the header is a Probe Request header, false otherwise

Definition at line 662 of file wifi-mac-header.cc.

References GetType(), and ns3::WIFI_MAC_MGT_PROBE_REQUEST.

Referenced by ns3::ApWifiMac::Receive(), and ns3::StaWifiMac::Receive().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ IsProbeResp()

bool ns3::WifiMacHeader::IsProbeResp ( void  ) const

Return true if the header is a Probe Response header.

Returns
true if the header is a Probe Response header, false otherwise

Definition at line 668 of file wifi-mac-header.cc.

References GetType(), and ns3::WIFI_MAC_MGT_PROBE_RESPONSE.

Referenced by ns3::StaWifiMac::Receive(), and ns3::MacLow::ReceiveOk().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ IsQosAck()

bool ns3::WifiMacHeader::IsQosAck ( void  ) const

Return if the QoS ACK policy is Normal ACK.

Returns
true if the QoS ACK policy is No ACK, false otherwise

Definition at line 778 of file wifi-mac-header.cc.

References IsQosData(), m_qosAckPolicy, and NS_ASSERT.

Referenced by ns3::WifiMacQueueItem::Print(), and ns3::MacLow::ReceiveOk().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ IsQosAmsdu()

bool ns3::WifiMacHeader::IsQosAmsdu ( void  ) const

Check if the A-MSDU present bit is set in the QoS control field.

Returns
true if the A-MSDU present bit is set, false otherwise

Definition at line 818 of file wifi-mac-header.cc.

References IsQosData(), m_amsduPresent, and NS_ASSERT.

Referenced by ns3::QosTxop::GotAck(), ns3::QosTxop::NotifyAccessGranted(), ns3::AdhocWifiMac::Receive(), ns3::ApWifiMac::Receive(), ns3::OcbWifiMac::Receive(), ns3::StaWifiMac::Receive(), and ns3::WifiMacQueueItem::WifiMacQueueItem().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ IsQosBlockAck()

bool ns3::WifiMacHeader::IsQosBlockAck ( void  ) const

Return if the QoS ACK policy is Block ACK.

Returns
true if the QoS ACK policy is Block ACK, false otherwise

Definition at line 764 of file wifi-mac-header.cc.

References IsQosData(), m_qosAckPolicy, and NS_ASSERT.

Referenced by ns3::WifiMacQueueItem::Print(), ns3::MacLow::ReceiveOk(), and BlockAckAggregationDisabledTest::Transmit().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ IsQosData()

◆ IsQosEosp()

bool ns3::WifiMacHeader::IsQosEosp ( void  ) const

Return if the end of service period (EOSP) is set.

Returns
true if the end of service period (EOSP) is set, false otherwise

Definition at line 785 of file wifi-mac-header.cc.

References IsQosData(), m_qosEosp, and NS_ASSERT.

+ Here is the call graph for this function:

◆ IsQosNoAck()

bool ns3::WifiMacHeader::IsQosNoAck ( void  ) const

Return if the QoS ACK policy is No ACK.

Returns
true if the QoS ACK policy is No ACK, false otherwise

Definition at line 771 of file wifi-mac-header.cc.

References IsQosData(), m_qosAckPolicy, and NS_ASSERT.

Referenced by ns3::WifiMacQueueItem::Print(), and ns3::MacLow::ReceiveOk().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ IsReassocReq()

bool ns3::WifiMacHeader::IsReassocReq ( void  ) const

Return true if the header is a Reassociation Request header.

Returns
true if the header is a Reassociation Request header, false otherwise

Definition at line 650 of file wifi-mac-header.cc.

References GetType(), and ns3::WIFI_MAC_MGT_REASSOCIATION_REQUEST.

Referenced by ns3::ApWifiMac::Receive(), ns3::StaWifiMac::Receive(), and Bug2831TestCase::RxCallback().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ IsReassocResp()

bool ns3::WifiMacHeader::IsReassocResp ( void  ) const

Return true if the header is a Reassociation Response header.

Returns
true if the header is a Reassociation Response header, false otherwise

Definition at line 656 of file wifi-mac-header.cc.

References GetType(), and ns3::WIFI_MAC_MGT_REASSOCIATION_RESPONSE.

Referenced by ns3::StaWifiMac::Receive(), Bug2831TestCase::RxCallback(), ns3::ApWifiMac::TxFailed(), and ns3::ApWifiMac::TxOk().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ IsRetry()

bool ns3::WifiMacHeader::IsRetry ( void  ) const

Return if the Retry bit is set.

Returns
true if the Retry bit is set, false otherwise

Definition at line 752 of file wifi-mac-header.cc.

References m_ctrlRetry.

Referenced by ns3::MacRxMiddle::IsDuplicate().

+ Here is the caller graph for this function:

◆ IsRts()

bool ns3::WifiMacHeader::IsRts ( void  ) const

Return true if the header is a RTS header.

Returns
true if the header is a RTS header, false otherwise

Definition at line 620 of file wifi-mac-header.cc.

References GetType(), and ns3::WIFI_MAC_CTL_RTS.

Referenced by ns3::MacLow::NotifyNav(), and ns3::MacLow::ReceiveOk().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ IsToDs()

bool ns3::WifiMacHeader::IsToDs ( void  ) const
Returns
true if To DS bit is set, false otherwise

Definition at line 521 of file wifi-mac-header.cc.

References m_ctrlToDs.

Referenced by ns3::WifiMacQueueItem::Aggregate(), ns3::ApWifiMac::Receive(), and ns3::StaWifiMac::Receive().

+ Here is the caller graph for this function:

◆ Print()

void ns3::WifiMacHeader::Print ( std::ostream &  os) const
virtual
Parameters
osoutput stream This method is used by Packet::Print to print the content of a header as ascii data to a c++ output stream. Although the header is free to format its output as it wishes, it is recommended to follow a few rules to integrate with the packet pretty printer: start with flags, small field values located between a pair of parens. Values should be separated by whitespace. Follow the parens with the important fields, separated by whitespace. i.e.: (field1 val1 field2 val2 field3 val3) field4 val4 field5 val5

Implements ns3::Header.

Definition at line 1015 of file wifi-mac-header.cc.

References GetType(), GetTypeString(), m_addr1, m_addr2, m_addr3, m_addr4, m_ctrlFromDs, m_ctrlToDs, m_duration, m_seqFrag, m_seqSeq, NS_FATAL_ERROR, PrintFrameControl(), ns3::WIFI_MAC_CTL_ACK, ns3::WIFI_MAC_CTL_BACKREQ, ns3::WIFI_MAC_CTL_BACKRESP, ns3::WIFI_MAC_CTL_CTLWRAPPER, ns3::WIFI_MAC_CTL_CTS, ns3::WIFI_MAC_CTL_END, ns3::WIFI_MAC_CTL_END_ACK, ns3::WIFI_MAC_CTL_RTS, ns3::WIFI_MAC_DATA, ns3::WIFI_MAC_DATA_CFACK, ns3::WIFI_MAC_DATA_CFACK_CFPOLL, ns3::WIFI_MAC_DATA_CFPOLL, ns3::WIFI_MAC_DATA_NULL, ns3::WIFI_MAC_DATA_NULL_CFACK, ns3::WIFI_MAC_DATA_NULL_CFACK_CFPOLL, ns3::WIFI_MAC_DATA_NULL_CFPOLL, ns3::WIFI_MAC_MGT_ACTION, ns3::WIFI_MAC_MGT_ACTION_NO_ACK, ns3::WIFI_MAC_MGT_ASSOCIATION_REQUEST, ns3::WIFI_MAC_MGT_ASSOCIATION_RESPONSE, ns3::WIFI_MAC_MGT_AUTHENTICATION, ns3::WIFI_MAC_MGT_BEACON, ns3::WIFI_MAC_MGT_DEAUTHENTICATION, ns3::WIFI_MAC_MGT_DISASSOCIATION, ns3::WIFI_MAC_MGT_MULTIHOP_ACTION, ns3::WIFI_MAC_MGT_PROBE_REQUEST, ns3::WIFI_MAC_MGT_PROBE_RESPONSE, ns3::WIFI_MAC_MGT_REASSOCIATION_REQUEST, ns3::WIFI_MAC_MGT_REASSOCIATION_RESPONSE, ns3::WIFI_MAC_QOSDATA, ns3::WIFI_MAC_QOSDATA_CFACK, ns3::WIFI_MAC_QOSDATA_CFACK_CFPOLL, ns3::WIFI_MAC_QOSDATA_CFPOLL, ns3::WIFI_MAC_QOSDATA_NULL, ns3::WIFI_MAC_QOSDATA_NULL_CFACK_CFPOLL, and ns3::WIFI_MAC_QOSDATA_NULL_CFPOLL.

+ Here is the call graph for this function:

◆ PrintFrameControl()

void ns3::WifiMacHeader::PrintFrameControl ( std::ostream &  os) const
private

Print the Frame Control field to the output stream.

Parameters
osthe output stream to print to

Definition at line 1006 of file wifi-mac-header.cc.

References m_ctrlFromDs, m_ctrlMoreData, m_ctrlMoreFrag, m_ctrlRetry, and m_ctrlToDs.

Referenced by Print().

+ Here is the caller graph for this function:

◆ Serialize()

void ns3::WifiMacHeader::Serialize ( Buffer::Iterator  start) const
virtual
Parameters
startan iterator which points to where the header should be written.

This method is used by Packet::AddHeader to store a header into the byte buffer of a packet. The data written is expected to match bit-for-bit the representation of this header in a real network.

Implements ns3::Header.

Definition at line 1114 of file wifi-mac-header.cc.

References GetFrameControl(), GetQosControl(), GetSequenceControl(), m_addr1, m_addr2, m_addr3, m_addr4, m_ctrlFromDs, m_ctrlSubtype, m_ctrlToDs, m_ctrlType, m_duration, NS_ASSERT, ns3::SUBTYPE_CTL_ACK, ns3::SUBTYPE_CTL_BACKREQ, ns3::SUBTYPE_CTL_BACKRESP, ns3::SUBTYPE_CTL_CTS, ns3::SUBTYPE_CTL_END, ns3::SUBTYPE_CTL_END_ACK, ns3::SUBTYPE_CTL_RTS, ns3::TYPE_CTL, ns3::TYPE_DATA, ns3::TYPE_MGT, ns3::Buffer::Iterator::WriteHtolsbU16(), and ns3::WriteTo().

+ Here is the call graph for this function:

◆ SetAddr1()

void ns3::WifiMacHeader::SetAddr1 ( Mac48Address  address)

◆ SetAddr2()

◆ SetAddr3()

◆ SetAddr4()

void ns3::WifiMacHeader::SetAddr4 ( Mac48Address  address)

Fill the Address 4 field with the given address.

Parameters
addressthe address to be used in the Address 4 field

Definition at line 108 of file wifi-mac-header.cc.

References first::address, and m_addr4.

Referenced by ns3::MeshWifiInterfaceMac::ForwardDown().

+ Here is the caller graph for this function:

◆ SetDsFrom()

void ns3::WifiMacHeader::SetDsFrom ( void  )

Set the From DS bit in the Frame Control field.

Definition at line 66 of file wifi-mac-header.cc.

References m_ctrlFromDs.

Referenced by ns3::MeshWifiInterfaceMac::ForwardDown(), ns3::ApWifiMac::ForwardDown(), ns3::Txop::SendCfFrame(), and ns3::dot11s::AirtimeLinkMetricCalculator::SetHeaderTid().

+ Here is the caller graph for this function:

◆ SetDsNotFrom()

◆ SetDsNotTo()

◆ SetDsTo()

void ns3::WifiMacHeader::SetDsTo ( void  )

Set the To DS bit in the Frame Control field.

Definition at line 78 of file wifi-mac-header.cc.

References m_ctrlToDs.

Referenced by ns3::StaWifiMac::Enqueue(), ns3::MeshWifiInterfaceMac::ForwardDown(), ns3::Txop::SendCfFrame(), and ns3::dot11s::AirtimeLinkMetricCalculator::SetHeaderTid().

+ Here is the caller graph for this function:

◆ SetDuration()

void ns3::WifiMacHeader::SetDuration ( Time  duration)

Set the Duration/ID field with the given duration (Time object).

The method converts the given time to microseconds.

Parameters
durationthe duration (Time object)

Definition at line 278 of file wifi-mac-header.cc.

References ns3::Time::GetNanoSeconds(), m_duration, and NS_ASSERT.

Referenced by ns3::MacLow::SendAckAfterData(), ns3::MacLow::SendBlockAckResponse(), ns3::MacLow::SendCtsToSelf(), and ns3::MacLow::SendRtsForPacket().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ SetFragmentNumber()

void ns3::WifiMacHeader::SetFragmentNumber ( uint8_t  frag)

Set the fragment number of the header.

Parameters
fragthe given fragment number

Definition at line 295 of file wifi-mac-header.cc.

References m_seqFrag.

Referenced by ns3::QosTxop::GetFragmentPacket(), ns3::Txop::GetFragmentPacket(), ns3::Txop::NotifyAccessGranted(), ns3::QosTxop::PeekNextFrame(), ns3::QosTxop::SendAddBaRequest(), and ns3::Txop::SendCfFrame().

+ Here is the caller graph for this function:

◆ SetFrameControl()

void ns3::WifiMacHeader::SetFrameControl ( uint16_t  control)
private

Set the Frame Control field with the given raw value.

Parameters
controlthe raw Frame Control field value

Definition at line 860 of file wifi-mac-header.cc.

References m_ctrlFromDs, m_ctrlMoreData, m_ctrlMoreFrag, m_ctrlOrder, m_ctrlRetry, m_ctrlSubtype, m_ctrlToDs, m_ctrlType, and m_ctrlWep.

Referenced by Deserialize().

+ Here is the caller graph for this function:

◆ SetId()

void ns3::WifiMacHeader::SetId ( uint16_t  id)

Set the Duration/ID field with the given ID.

Parameters
idthe ID

Definition at line 285 of file wifi-mac-header.cc.

References m_duration.

◆ SetMoreFragments()

void ns3::WifiMacHeader::SetMoreFragments ( void  )

Set the More Fragment bit in the Frame Control field.

Definition at line 305 of file wifi-mac-header.cc.

References m_ctrlMoreFrag.

Referenced by ns3::QosTxop::GetFragmentPacket(), and ns3::Txop::GetFragmentPacket().

+ Here is the caller graph for this function:

◆ SetNoMoreFragments()

◆ SetNoOrder()

void ns3::WifiMacHeader::SetNoOrder ( void  )

Unset order bit in the frame control field.

Definition at line 315 of file wifi-mac-header.cc.

References m_ctrlOrder.

Referenced by ns3::AdhocWifiMac::Enqueue(), ns3::OcbWifiMac::Enqueue(), ns3::StaWifiMac::Enqueue(), and ns3::ApWifiMac::ForwardDown().

+ Here is the caller graph for this function:

◆ SetNoRetry()

◆ SetOrder()

void ns3::WifiMacHeader::SetOrder ( void  )

Set order bit in the frame control field.

Definition at line 310 of file wifi-mac-header.cc.

References m_ctrlOrder.

◆ SetQosAckPolicy()

void ns3::WifiMacHeader::SetQosAckPolicy ( QosAckPolicy  policy)

Set the QoS ACK policy in the QoS control field.

Parameters
policy

Definition at line 345 of file wifi-mac-header.cc.

References BLOCK_ACK, m_qosAckPolicy, NO_ACK, NO_EXPLICIT_ACK, and NORMAL_ACK.

Referenced by ns3::AdhocWifiMac::Enqueue(), ns3::OcbWifiMac::Enqueue(), ns3::StaWifiMac::Enqueue(), ns3::MeshWifiInterfaceMac::ForwardDown(), and ns3::ApWifiMac::ForwardDown().

+ Here is the caller graph for this function:

◆ SetQosAmsdu()

void ns3::WifiMacHeader::SetQosAmsdu ( void  )

Set that A-MSDU is present.

Definition at line 364 of file wifi-mac-header.cc.

References m_amsduPresent.

Referenced by ns3::WifiMacQueueItem::Aggregate().

+ Here is the caller graph for this function:

◆ SetQosControl()

void ns3::WifiMacHeader::SetQosControl ( uint16_t  qos)
private

Set the QoS Control field with the given raw value.

Parameters
qosthe raw QoS Control field value

Definition at line 879 of file wifi-mac-header.cc.

References m_amsduPresent, m_qosAckPolicy, m_qosEosp, m_qosStuff, and m_qosTid.

Referenced by Deserialize().

+ Here is the caller graph for this function:

◆ SetQosEosp()

void ns3::WifiMacHeader::SetQosEosp ( )

Set the end of service period (EOSP) bit in the QoS control field.

Definition at line 335 of file wifi-mac-header.cc.

References m_qosEosp.

◆ SetQosMeshControlPresent()

void ns3::WifiMacHeader::SetQosMeshControlPresent ( void  )

Set the Mesh Control Present flag for the QoS header.

Definition at line 379 of file wifi-mac-header.cc.

References m_qosStuff.

Referenced by ns3::dot11s::HwmpProtocolMac::UpdateOutcomingFrame().

+ Here is the caller graph for this function:

◆ SetQosNoAmsdu()

void ns3::WifiMacHeader::SetQosNoAmsdu ( void  )

Set that A-MSDU is not present.

Definition at line 369 of file wifi-mac-header.cc.

References m_amsduPresent.

Referenced by ns3::AdhocWifiMac::Enqueue(), ns3::OcbWifiMac::Enqueue(), ns3::StaWifiMac::Enqueue(), ns3::MeshWifiInterfaceMac::ForwardDown(), and ns3::ApWifiMac::ForwardDown().

+ Here is the caller graph for this function:

◆ SetQosNoEosp()

void ns3::WifiMacHeader::SetQosNoEosp ( )

Un-set the end of service period (EOSP) bit in the QoS control field.

Definition at line 340 of file wifi-mac-header.cc.

References m_qosEosp.

Referenced by ns3::AdhocWifiMac::Enqueue(), ns3::OcbWifiMac::Enqueue(), ns3::StaWifiMac::Enqueue(), ns3::MeshWifiInterfaceMac::ForwardDown(), and ns3::ApWifiMac::ForwardDown().

+ Here is the caller graph for this function:

◆ SetQosNoMeshControlPresent()

void ns3::WifiMacHeader::SetQosNoMeshControlPresent ( )

Clear the Mesh Control Present flag for the QoS header.

Definition at line 386 of file wifi-mac-header.cc.

References m_qosStuff.

◆ SetQosTid()

◆ SetQosTxopLimit()

void ns3::WifiMacHeader::SetQosTxopLimit ( uint8_t  txop)

Set TXOP limit in the QoS control field.

Parameters
txop

Definition at line 374 of file wifi-mac-header.cc.

References m_qosStuff.

Referenced by ns3::AdhocWifiMac::Enqueue(), ns3::OcbWifiMac::Enqueue(), ns3::StaWifiMac::Enqueue(), ns3::MeshWifiInterfaceMac::ForwardDown(), and ns3::ApWifiMac::ForwardDown().

+ Here is the caller graph for this function:

◆ SetRawDuration()

void ns3::WifiMacHeader::SetRawDuration ( uint16_t  duration)

Set the Duration/ID field with the given raw uint16_t value.

Parameters
durationthe raw duration in uint16_t

Definition at line 271 of file wifi-mac-header.cc.

References m_duration, and NS_ASSERT.

◆ SetRetry()

void ns3::WifiMacHeader::SetRetry ( void  )

Set the Retry bit in the Frame Control field.

Definition at line 320 of file wifi-mac-header.cc.

References m_ctrlRetry.

Referenced by ns3::QosTxop::MissedAck(), ns3::Txop::MissedAck(), ns3::QosTxop::MissedBlockAck(), ns3::Txop::MissedCfPollResponse(), and ns3::Txop::SendCfFrame().

+ Here is the caller graph for this function:

◆ SetSequenceControl()

void ns3::WifiMacHeader::SetSequenceControl ( uint16_t  seq)
private

Set the Sequence Control field with the given raw value.

Parameters
seqthe raw Sequence Control field value

Definition at line 873 of file wifi-mac-header.cc.

References m_seqFrag, and m_seqSeq.

Referenced by Deserialize().

+ Here is the caller graph for this function:

◆ SetSequenceNumber()

void ns3::WifiMacHeader::SetSequenceNumber ( uint16_t  seq)

Set the sequence number of the header.

Parameters
seqthe given sequence number

Definition at line 290 of file wifi-mac-header.cc.

References m_seqSeq.

Referenced by AmpduAggregationTest::DoRun(), OriginatorBlockAckWindowTest::DoRun(), ns3::Txop::NotifyAccessGranted(), ns3::QosTxop::PeekNextFrame(), ns3::QosTxop::SendAddBaRequest(), and ns3::Txop::SendCfFrame().

+ Here is the caller graph for this function:

◆ SetType()

void ns3::WifiMacHeader::SetType ( WifiMacType  type,
bool  resetToDsFromDs = true 
)

Set Type/Subtype values with the correct values depending on the given type.

Parameters
typethe WifiMacType for the header
resetToDsFromDswhether the ToDs and FromDs flags should be reset.

Definition at line 114 of file wifi-mac-header.cc.

References m_ctrlFromDs, m_ctrlSubtype, m_ctrlToDs, m_ctrlType, ns3::SUBTYPE_CTL_ACK, ns3::SUBTYPE_CTL_BACKREQ, ns3::SUBTYPE_CTL_BACKRESP, ns3::SUBTYPE_CTL_CTLWRAPPER, ns3::SUBTYPE_CTL_CTS, ns3::SUBTYPE_CTL_END, ns3::SUBTYPE_CTL_END_ACK, ns3::SUBTYPE_CTL_RTS, ns3::TYPE_CTL, ns3::TYPE_DATA, ns3::TYPE_MGT, ns3::WIFI_MAC_CTL_ACK, ns3::WIFI_MAC_CTL_BACKREQ, ns3::WIFI_MAC_CTL_BACKRESP, ns3::WIFI_MAC_CTL_CTLWRAPPER, ns3::WIFI_MAC_CTL_CTS, ns3::WIFI_MAC_CTL_END, ns3::WIFI_MAC_CTL_END_ACK, ns3::WIFI_MAC_CTL_RTS, ns3::WIFI_MAC_DATA, ns3::WIFI_MAC_DATA_CFACK, ns3::WIFI_MAC_DATA_CFACK_CFPOLL, ns3::WIFI_MAC_DATA_CFPOLL, ns3::WIFI_MAC_DATA_NULL, ns3::WIFI_MAC_DATA_NULL_CFACK, ns3::WIFI_MAC_DATA_NULL_CFACK_CFPOLL, ns3::WIFI_MAC_DATA_NULL_CFPOLL, ns3::WIFI_MAC_MGT_ACTION, ns3::WIFI_MAC_MGT_ACTION_NO_ACK, ns3::WIFI_MAC_MGT_ASSOCIATION_REQUEST, ns3::WIFI_MAC_MGT_ASSOCIATION_RESPONSE, ns3::WIFI_MAC_MGT_AUTHENTICATION, ns3::WIFI_MAC_MGT_BEACON, ns3::WIFI_MAC_MGT_DEAUTHENTICATION, ns3::WIFI_MAC_MGT_DISASSOCIATION, ns3::WIFI_MAC_MGT_MULTIHOP_ACTION, ns3::WIFI_MAC_MGT_PROBE_REQUEST, ns3::WIFI_MAC_MGT_PROBE_RESPONSE, ns3::WIFI_MAC_MGT_REASSOCIATION_REQUEST, ns3::WIFI_MAC_MGT_REASSOCIATION_RESPONSE, ns3::WIFI_MAC_QOSDATA, ns3::WIFI_MAC_QOSDATA_CFACK, ns3::WIFI_MAC_QOSDATA_CFACK_CFPOLL, ns3::WIFI_MAC_QOSDATA_CFPOLL, ns3::WIFI_MAC_QOSDATA_NULL, ns3::WIFI_MAC_QOSDATA_NULL_CFACK_CFPOLL, and ns3::WIFI_MAC_QOSDATA_NULL_CFPOLL.

Referenced by ns3::InterferenceHelper::AddForeignSignal(), ns3::MacLow::CanTransmitNextCfFrame(), ns3::MeshWifiBeacon::CreateHeader(), OriginatorBlockAckWindowTest::DoRun(), ns3::AdhocWifiMac::Enqueue(), ns3::OcbWifiMac::Enqueue(), ns3::StaWifiMac::Enqueue(), ns3::MeshWifiInterfaceMac::ForwardDown(), ns3::ApWifiMac::ForwardDown(), ns3::dot11s::HwmpProtocolMac::ForwardPerr(), ns3::GetAckSize(), ns3::GetBlockAckRequestSize(), ns3::GetBlockAckSize(), ns3::MacLow::GetCfEndSize(), ns3::GetCtsSize(), ns3::GetRtsSize(), SpectrumWifiPhyBasicTest::MakeSignal(), WifiPhyThresholdsTest::MakeWifiSignal(), ns3::BlockAckManager::NotifyDiscardedMpdu(), ns3::MacLow::NotifyNav(), ns3::QosTxop::PrepareBlockAckRequest(), InterferenceExperiment::SendA(), ns3::MacLow::SendAckAfterData(), ns3::QosTxop::SendAddBaRequest(), ns3::RegularWifiMac::SendAddBaResponse(), TestAmpduReception::SendAmpduWithThreeMpdus(), ns3::StaWifiMac::SendAssociationRequest(), ns3::ApWifiMac::SendAssocResp(), InterferenceExperiment::SendB(), ns3::MacLow::SendBlockAckResponse(), ns3::Txop::SendCfFrame(), ns3::MacLow::SendCtsAfterRts(), ns3::MacLow::SendCtsToSelf(), ns3::QosTxop::SendDelbaFrame(), ns3::ApWifiMac::SendOneBeacon(), TestThresholdPreambleDetectionWithoutFrameCapture::SendPacket(), TestThresholdPreambleDetectionWithFrameCapture::SendPacket(), TestSimpleFrameCaptureModel::SendPacket(), TestPhyHeadersReception::SendPacket(), ns3::dot11s::PeerManagementProtocolMac::SendPeerLinkManagementFrame(), ns3::dot11s::HwmpProtocolMac::SendPrep(), ns3::dot11s::HwmpProtocolMac::SendPreq(), ns3::StaWifiMac::SendProbeRequest(), ns3::ApWifiMac::SendProbeResp(), ns3::MacLow::SendRtsForPacket(), ns3::OcbWifiMac::SendVsc(), ns3::dot11s::AirtimeLinkMetricCalculator::SetHeaderTid(), PowerRateAdaptationTest::TestAparf(), PowerRateAdaptationTest::TestParf(), and PowerRateAdaptationTest::TestRrpaa().

Member Data Documentation

◆ m_addr1

Mac48Address ns3::WifiMacHeader::m_addr1
private

address 1

Definition at line 617 of file wifi-mac-header.h.

Referenced by Deserialize(), GetAddr1(), Print(), Serialize(), and SetAddr1().

◆ m_addr2

Mac48Address ns3::WifiMacHeader::m_addr2
private

address 2

Definition at line 618 of file wifi-mac-header.h.

Referenced by Deserialize(), GetAddr2(), Print(), Serialize(), and SetAddr2().

◆ m_addr3

Mac48Address ns3::WifiMacHeader::m_addr3
private

address 3

Definition at line 619 of file wifi-mac-header.h.

Referenced by Deserialize(), GetAddr3(), Print(), Serialize(), and SetAddr3().

◆ m_addr4

Mac48Address ns3::WifiMacHeader::m_addr4
private

address 4

Definition at line 622 of file wifi-mac-header.h.

Referenced by Deserialize(), GetAddr4(), Print(), Serialize(), and SetAddr4().

◆ m_amsduPresent

uint8_t ns3::WifiMacHeader::m_amsduPresent
private

AMSDU present.

Definition at line 626 of file wifi-mac-header.h.

Referenced by GetQosControl(), IsQosAmsdu(), SetQosAmsdu(), SetQosControl(), and SetQosNoAmsdu().

◆ m_ctrlFromDs

uint8_t ns3::WifiMacHeader::m_ctrlFromDs
private

◆ m_ctrlMoreData

uint8_t ns3::WifiMacHeader::m_ctrlMoreData
private

control more data

Definition at line 613 of file wifi-mac-header.h.

Referenced by GetFrameControl(), PrintFrameControl(), and SetFrameControl().

◆ m_ctrlMoreFrag

uint8_t ns3::WifiMacHeader::m_ctrlMoreFrag
private

◆ m_ctrlOrder

uint8_t ns3::WifiMacHeader::m_ctrlOrder
private

control order (set to 1 for QoS Data and Management frames to signify that HT/VHT/HE control field is present, knowing that the latter are not implemented yet)

Definition at line 615 of file wifi-mac-header.h.

Referenced by GetFrameControl(), SetFrameControl(), SetNoOrder(), and SetOrder().

◆ m_ctrlRetry

uint8_t ns3::WifiMacHeader::m_ctrlRetry
private

control retry

Definition at line 612 of file wifi-mac-header.h.

Referenced by GetFrameControl(), IsRetry(), PrintFrameControl(), SetFrameControl(), SetNoRetry(), and SetRetry().

◆ m_ctrlSubtype

uint8_t ns3::WifiMacHeader::m_ctrlSubtype
private

control subtype

Definition at line 608 of file wifi-mac-header.h.

Referenced by Deserialize(), GetFrameControl(), GetSize(), GetType(), IsQosData(), Serialize(), SetFrameControl(), and SetType().

◆ m_ctrlToDs

uint8_t ns3::WifiMacHeader::m_ctrlToDs
private

◆ m_ctrlType

uint8_t ns3::WifiMacHeader::m_ctrlType
private

◆ m_ctrlWep

uint8_t ns3::WifiMacHeader::m_ctrlWep
private

control WEP

Definition at line 614 of file wifi-mac-header.h.

Referenced by GetFrameControl(), and SetFrameControl().

◆ m_duration

uint16_t ns3::WifiMacHeader::m_duration
private

◆ m_qosAckPolicy

uint8_t ns3::WifiMacHeader::m_qosAckPolicy
private

◆ m_qosEosp

uint8_t ns3::WifiMacHeader::m_qosEosp
private

QOS EOSP.

Definition at line 624 of file wifi-mac-header.h.

Referenced by GetQosControl(), IsQosEosp(), SetQosControl(), SetQosEosp(), and SetQosNoEosp().

◆ m_qosStuff

uint8_t ns3::WifiMacHeader::m_qosStuff
private

◆ m_qosTid

uint8_t ns3::WifiMacHeader::m_qosTid
private

QOS TID.

Definition at line 623 of file wifi-mac-header.h.

Referenced by GetQosControl(), GetQosTid(), SetQosControl(), and SetQosTid().

◆ m_seqFrag

uint8_t ns3::WifiMacHeader::m_seqFrag
private

sequence fragment

Definition at line 620 of file wifi-mac-header.h.

Referenced by GetFragmentNumber(), GetSequenceControl(), Print(), SetFragmentNumber(), and SetSequenceControl().

◆ m_seqSeq

uint16_t ns3::WifiMacHeader::m_seqSeq
private

sequence sequence

Definition at line 621 of file wifi-mac-header.h.

Referenced by GetSequenceControl(), GetSequenceNumber(), Print(), SetSequenceControl(), and SetSequenceNumber().


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