Wi-Fi AP state machineHandle association, dis-association and authentication, of STAs within an infrastructure BSS. More...
#include <ap-wifi-mac.h>
Public Member Functions | |
ApWifiMac () | |
virtual | ~ApWifiMac () |
int64_t | AssignStreams (int64_t stream) |
virtual void | Enqueue (Ptr< const Packet > packet, Mac48Address to) |
virtual void | Enqueue (Ptr< const Packet > packet, Mac48Address to, Mac48Address from) |
Time | GetBeaconInterval (void) const |
virtual void | SetAddress (Mac48Address address) |
void | SetBeaconInterval (Time interval) |
virtual void | SetLinkUpCallback (Callback< void > linkUp) |
virtual void | SetWifiRemoteStationManager (Ptr< WifiRemoteStationManager > stationManager) |
void | StartBeaconing (void) |
virtual bool | SupportsSendFrom (void) const |
![]() | |
RegularWifiMac () | |
virtual | ~RegularWifiMac () |
Time | GetAckTimeout (void) const |
virtual Mac48Address | GetAddress (void) const |
virtual Time | GetBasicBlockAckTimeout (void) const |
virtual Mac48Address | GetBssid (void) const |
virtual Time | GetCompressedBlockAckTimeout (void) const |
Time | GetCtsTimeout (void) const |
bool | GetCtsToSelfSupported () const |
Time | GetEifsNoDifs (void) const |
Time | GetPifs (void) const |
Time | GetRifs (void) const |
Time | GetSifs (void) const |
Time | GetSlot (void) const |
virtual Ssid | GetSsid (void) const |
virtual Ptr< WifiPhy > | GetWifiPhy () const |
virtual Ptr < WifiRemoteStationManager > | GetWifiRemoteStationManager () const |
void | SetAckTimeout (Time ackTimeout) |
virtual void | SetBasicBlockAckTimeout (Time blockAckTimeout) |
virtual void | SetBssid (Mac48Address bssid) |
virtual void | SetCompressedBlockAckTimeout (Time blockAckTimeout) |
void | SetCtsTimeout (Time ctsTimeout) |
void | SetCtsToSelfSupported (bool enable) |
void | SetEifsNoDifs (Time eifsNoDifs) |
virtual void | SetForwardUpCallback (ForwardUpCallback upCallback) |
virtual void | SetLinkDownCallback (Callback< void > linkDown) |
void | SetPifs (Time pifs) |
virtual void | SetPromisc (void) |
Sets the interface in promiscuous mode. More... | |
void | SetRifs (Time rifs) |
void | SetSifs (Time sifs) |
void | SetSlot (Time slotTime) |
virtual void | SetSsid (Ssid ssid) |
virtual void | SetWifiPhy (Ptr< WifiPhy > phy) |
![]() | |
void | ConfigureStandard (enum WifiPhyStandard standard) |
Time | GetMaxPropagationDelay (void) const |
Time | GetMsduLifetime (void) const |
void | NotifyPromiscRx (Ptr< const Packet > packet) |
void | NotifyRx (Ptr< const Packet > packet) |
void | NotifyRxDrop (Ptr< const Packet > packet) |
void | NotifyTx (Ptr< const Packet > packet) |
void | NotifyTxDrop (Ptr< const Packet > packet) |
virtual void | SetForwardUpCallback (Callback< void, Ptr< Packet >, Mac48Address, Mac48Address > upCallback)=0 |
void | SetMaxPropagationDelay (Time delay) |
![]() | |
Object () | |
virtual | ~Object () |
void | AggregateObject (Ptr< Object > other) |
void | Dispose (void) |
AggregateIterator | GetAggregateIterator (void) const |
virtual TypeId | GetInstanceTypeId (void) const |
template<typename T > | |
Ptr< T > | GetObject (void) const |
template<typename T > | |
Ptr< T > | GetObject (TypeId tid) const |
void | Initialize (void) |
![]() | |
SimpleRefCount () | |
SimpleRefCount (const SimpleRefCount &o) | |
uint32_t | GetReferenceCount (void) const |
SimpleRefCount & | operator= (const SimpleRefCount &o) |
void | Ref (void) const |
void | Unref (void) const |
![]() | |
virtual | ~ObjectBase () |
void | GetAttribute (std::string name, AttributeValue &value) const |
bool | GetAttributeFailSafe (std::string name, AttributeValue &attribute) const |
void | SetAttribute (std::string name, const AttributeValue &value) |
bool | SetAttributeFailSafe (std::string name, const AttributeValue &value) |
bool | TraceConnect (std::string name, std::string context, const CallbackBase &cb) |
bool | TraceConnectWithoutContext (std::string name, const CallbackBase &cb) |
bool | TraceDisconnect (std::string name, std::string context, const CallbackBase &cb) |
bool | TraceDisconnectWithoutContext (std::string name, const CallbackBase &cb) |
Static Public Member Functions | |
static TypeId | GetTypeId (void) |
![]() | |
static TypeId | GetTypeId (void) |
![]() | |
static TypeId | GetTypeId (void) |
![]() | |
static TypeId | GetTypeId (void) |
![]() | |
static void | Cleanup (void) |
![]() | |
static TypeId | GetTypeId (void) |
Private Member Functions | |
virtual void | DeaggregateAmsduAndForward (Ptr< Packet > aggregatedPacket, const WifiMacHeader *hdr) |
virtual void | DoDispose (void) |
virtual void | DoInitialize (void) |
void | ForwardDown (Ptr< const Packet > packet, Mac48Address from, Mac48Address to) |
void | ForwardDown (Ptr< const Packet > packet, Mac48Address from, Mac48Address to, uint8_t tid) |
bool | GetBeaconGeneration (void) const |
HtCapabilities | GetHtCapabilities (void) const |
SupportedRates | GetSupportedRates (void) const |
virtual void | Receive (Ptr< Packet > packet, const WifiMacHeader *hdr) |
void | SendAssocResp (Mac48Address to, bool success) |
void | SendOneBeacon (void) |
void | SendProbeResp (Mac48Address to) |
void | SetBeaconGeneration (bool enable) |
virtual void | TxFailed (const WifiMacHeader &hdr) |
virtual void | TxOk (const WifiMacHeader &hdr) |
Private Attributes | |
Ptr< DcaTxop > | m_beaconDca |
EventId | m_beaconEvent |
Time | m_beaconInterval |
Ptr< UniformRandomVariable > | m_beaconJitter |
bool | m_enableBeaconGeneration |
bool | m_enableBeaconJitter |
Wi-Fi AP state machine
Handle association, dis-association and authentication, of STAs within an infrastructure BSS.
ns3::ApWifiMac is accessible through the following paths with Config::Set and Config::Connect:
No TraceSources are defined for this type.
Definition at line 40 of file ap-wifi-mac.h.
ns3::ApWifiMac::ApWifiMac | ( | ) |
Definition at line 75 of file ap-wifi-mac.cc.
References ns3::AP, m_beaconDca, ns3::RegularWifiMac::m_dcfManager, m_enableBeaconGeneration, ns3::RegularWifiMac::m_low, NS_LOG_FUNCTION, and ns3::RegularWifiMac::SetTypeOfStation().
|
virtual |
Definition at line 91 of file ap-wifi-mac.cc.
References NS_LOG_FUNCTION.
int64_t ns3::ApWifiMac::AssignStreams | ( | int64_t | stream | ) |
Assign a fixed random variable stream number to the random variables used by this model. Return the number of streams (possibly zero) that have been assigned.
stream | first stream index to use |
Definition at line 184 of file ap-wifi-mac.cc.
References m_beaconJitter, NS_LOG_FUNCTION, and ns3::RandomVariableStream::SetStream().
|
privatevirtual |
This method is called to de-aggregate an A-MSDU and forward the constituent packets up the stack. We override the WifiMac version here because, as an AP, we also need to think about redistributing to other associated STAs.
aggregatedPacket | the Packet containing the A-MSDU. |
hdr | a pointer to the MAC header for aggregatedPacket . |
Reimplemented from ns3::RegularWifiMac.
Definition at line 634 of file ap-wifi-mac.cc.
References ns3::MsduAggregator::Deaggregate(), ForwardDown(), ns3::RegularWifiMac::ForwardUp(), ns3::RegularWifiMac::GetAddress(), ns3::WifiMacHeader::GetQosTid(), NS_LOG_DEBUG, and NS_LOG_FUNCTION.
Referenced by Receive().
|
privatevirtual |
This method is called by Object::Dispose or by the object's destructor, whichever comes first.
Subclasses are expected to implement their real destruction code in an overriden version of this method and chain up to their parent's implementation once they are done. i.e., for simplicity, the destructor of every subclass should be empty and its content should be moved to the associated DoDispose method.
It is safe to call GetObject from within this method.
Reimplemented from ns3::RegularWifiMac.
Definition at line 97 of file ap-wifi-mac.cc.
References ns3::EventId::Cancel(), ns3::RegularWifiMac::DoDispose(), m_beaconDca, m_beaconEvent, m_enableBeaconGeneration, and NS_LOG_FUNCTION.
|
privatevirtual |
This method is called only once by Object::Initialize. If the user calls Object::Initialize multiple times, DoInitialize is called only the first time.
Subclasses are expected to override this method and chain up to their parent's implementation once they are done. It is safe to call GetObject and AggregateObject from within this method.
Reimplemented from ns3::RegularWifiMac.
Definition at line 660 of file ap-wifi-mac.cc.
References ns3::EventId::Cancel(), ns3::RegularWifiMac::DoInitialize(), ns3::RegularWifiMac::GetAddress(), ns3::Time::GetMicroSeconds(), ns3::UniformRandomVariable::GetValue(), m_beaconDca, m_beaconEvent, m_beaconInterval, m_beaconJitter, m_enableBeaconGeneration, m_enableBeaconJitter, NS_LOG_DEBUG, NS_LOG_FUNCTION, ns3::Simulator::Schedule(), ns3::Simulator::ScheduleNow(), and SendOneBeacon().
|
virtual |
packet | the packet to send. |
to | the address to which the packet should be sent. |
The packet should be enqueued in a tx queue, and should be dequeued as soon as the channel access function determines that access is granted to this MAC.
Implements ns3::RegularWifiMac.
Definition at line 277 of file ap-wifi-mac.cc.
References ns3::RegularWifiMac::m_low, and NS_LOG_FUNCTION.
|
virtual |
packet | the packet to send. |
to | the address to which the packet should be sent. |
from | the address from which the packet should be sent. |
The packet should be enqueued in a tx queue, and should be dequeued as soon as the channel access function determines that access is granted to this MAC. The extra parameter "from" allows this device to operate in a bridged mode, forwarding received frames without altering the source address.
Reimplemented from ns3::RegularWifiMac.
Definition at line 267 of file ap-wifi-mac.cc.
References ForwardDown(), ns3::Mac48Address::IsBroadcast(), ns3::RegularWifiMac::m_stationManager, and NS_LOG_FUNCTION.
|
private |
Definition at line 192 of file ap-wifi-mac.cc.
References ns3::RegularWifiMac::m_qosSupported, NS_LOG_FUNCTION, and ns3::QosUtilsGetTidForPacket().
Referenced by DeaggregateAmsduAndForward(), Enqueue(), and Receive().
|
private |
Definition at line 218 of file ap-wifi-mac.cc.
References ns3::RegularWifiMac::GetAddress(), ns3::RegularWifiMac::m_dca, ns3::RegularWifiMac::m_edca, ns3::RegularWifiMac::m_htSupported, ns3::RegularWifiMac::m_qosSupported, ns3::WifiMacHeader::NORMAL_ACK, NS_ASSERT, NS_LOG_FUNCTION, ns3::QosUtilsMapTidToAc(), ns3::WifiMacHeader::SetAddr1(), ns3::WifiMacHeader::SetAddr2(), ns3::WifiMacHeader::SetAddr3(), ns3::WifiMacHeader::SetDsFrom(), ns3::WifiMacHeader::SetDsNotTo(), ns3::WifiMacHeader::SetNoOrder(), ns3::WifiMacHeader::SetQosAckPolicy(), ns3::WifiMacHeader::SetQosNoAmsdu(), ns3::WifiMacHeader::SetQosNoEosp(), ns3::WifiMacHeader::SetQosTid(), ns3::WifiMacHeader::SetQosTxopLimit(), ns3::WifiMacHeader::SetType(), ns3::WifiMacHeader::SetTypeData(), and ns3::WIFI_MAC_QOSDATA.
|
private |
Definition at line 132 of file ap-wifi-mac.cc.
References m_enableBeaconGeneration, and NS_LOG_FUNCTION.
Referenced by GetTypeId().
Time ns3::ApWifiMac::GetBeaconInterval | ( | void | ) | const |
Definition at line 139 of file ap-wifi-mac.cc.
References m_beaconInterval, and NS_LOG_FUNCTION.
Referenced by GetTypeId().
|
private |
Definition at line 326 of file ap-wifi-mac.cc.
References ns3::WifiPhy::GetGreenfield(), ns3::WifiPhy::GetGuardInterval(), ns3::WifiPhy::GetLdpc(), ns3::WifiPhy::GetMcs(), ns3::WifiPhy::GetNMcs(), ns3::RegularWifiMac::m_phy, ns3::HtCapabilities::SetGreenfield(), ns3::HtCapabilities::SetHtSupported(), ns3::HtCapabilities::SetLdpc(), ns3::HtCapabilities::SetRxMcsBitmask(), and ns3::HtCapabilities::SetShortGuardInterval20().
Referenced by SendAssocResp(), SendOneBeacon(), and SendProbeResp().
|
private |
Definition at line 294 of file ap-wifi-mac.cc.
References ns3::SupportedRates::AddSupportedRate(), ns3::WifiPhy::GetBssMembershipSelector(), ns3::WifiMode::GetDataRate(), ns3::WifiPhy::GetMode(), ns3::WifiPhy::GetNBssMembershipSelectors(), ns3::WifiPhy::GetNModes(), ns3::RegularWifiMac::m_htSupported, ns3::RegularWifiMac::m_phy, ns3::RegularWifiMac::m_stationManager, NS_LOG_FUNCTION, and ns3::SupportedRates::SetBasicRate().
Referenced by SendAssocResp(), SendOneBeacon(), and SendProbeResp().
|
static |
Definition at line 48 of file ap-wifi-mac.cc.
References GetBeaconGeneration(), GetBeaconInterval(), m_beaconJitter, m_enableBeaconJitter, ns3::MakeTimeChecker(), SetBeaconGeneration(), SetBeaconInterval(), and ns3::TypeId::SetParent().
|
privatevirtual |
This method acts as the MacRxMiddle receive callback and is invoked to notify us that a frame has been received. The implementation is intended to capture logic that is going to be common to all (or most) derived classes. Specifically, handling of Block Ack managment frames is dealt with here.
This method will need, however, to be overriden by derived classes so that they can perform their data handling before invoking the base version.
packet | the packet that has been received. |
hdr | a pointer to the MAC header of the received frame. |
Reimplemented from ns3::RegularWifiMac.
Definition at line 465 of file ap-wifi-mac.cc.
References ns3::Packet::Copy(), DeaggregateAmsduAndForward(), ForwardDown(), ns3::RegularWifiMac::ForwardUp(), ns3::WifiMacHeader::GetAddr1(), ns3::WifiMacHeader::GetAddr2(), ns3::WifiMacHeader::GetAddr3(), ns3::RegularWifiMac::GetAddress(), ns3::WifiMode::GetDataRate(), ns3::MgtAssocRequestHeader::GetHtCapabilities(), ns3::WifiPhy::GetMcs(), ns3::WifiPhy::GetMode(), ns3::WifiPhy::GetNMcs(), ns3::WifiPhy::GetNModes(), ns3::WifiMacHeader::GetQosTid(), ns3::Packet::GetSize(), ns3::MgtAssocRequestHeader::GetSupportedRates(), ns3::WifiMacHeader::IsAssocReq(), ns3::Mac48Address::IsBroadcast(), ns3::WifiMacHeader::IsData(), ns3::WifiMacHeader::IsDisassociation(), ns3::WifiMacHeader::IsFromDs(), ns3::Mac48Address::IsGroup(), ns3::WifiMacHeader::IsMgt(), ns3::WifiMacHeader::IsProbeReq(), ns3::WifiMacHeader::IsQosAmsdu(), ns3::WifiMacHeader::IsQosData(), ns3::HtCapabilities::IsSupportedMcs(), ns3::SupportedRates::IsSupportedRate(), ns3::WifiMacHeader::IsToDs(), ns3::RegularWifiMac::m_htSupported, ns3::RegularWifiMac::m_phy, ns3::RegularWifiMac::m_stationManager, ns3::WifiMac::NotifyRxDrop(), NS_ASSERT, NS_LOG_DEBUG, NS_LOG_FUNCTION, ns3::RegularWifiMac::Receive(), ns3::Packet::RemoveHeader(), SendAssocResp(), and SendProbeResp().
|
private |
Definition at line 370 of file ap-wifi-mac.cc.
References ns3::Packet::AddHeader(), ns3::RegularWifiMac::GetAddress(), GetHtCapabilities(), GetSupportedRates(), ns3::RegularWifiMac::m_dca, ns3::RegularWifiMac::m_htSupported, NS_LOG_FUNCTION, ns3::WifiMacHeader::SetAddr1(), ns3::WifiMacHeader::SetAddr2(), ns3::WifiMacHeader::SetAddr3(), ns3::WifiMacHeader::SetAssocResp(), ns3::WifiMacHeader::SetDsNotFrom(), ns3::WifiMacHeader::SetDsNotTo(), ns3::StatusCode::SetFailure(), ns3::WifiMacHeader::SetNoOrder(), and ns3::StatusCode::SetSuccess().
Referenced by Receive().
|
private |
Definition at line 409 of file ap-wifi-mac.cc.
References ns3::Packet::AddHeader(), ns3::RegularWifiMac::GetAddress(), ns3::Mac48Address::GetBroadcast(), GetHtCapabilities(), ns3::Time::GetMicroSeconds(), ns3::RegularWifiMac::GetSsid(), GetSupportedRates(), m_beaconDca, m_beaconEvent, m_beaconInterval, ns3::RegularWifiMac::m_htSupported, NS_LOG_FUNCTION, ns3::Simulator::Schedule(), ns3::WifiMacHeader::SetAddr1(), ns3::WifiMacHeader::SetAddr2(), ns3::WifiMacHeader::SetAddr3(), ns3::WifiMacHeader::SetBeacon(), ns3::WifiMacHeader::SetDsNotFrom(), ns3::WifiMacHeader::SetDsNotTo(), ns3::WifiMacHeader::SetNoOrder(), and ns3::MgtProbeResponseHeader::SetSsid().
Referenced by DoInitialize(), SetBeaconGeneration(), and StartBeaconing().
|
private |
Definition at line 340 of file ap-wifi-mac.cc.
References ns3::Packet::AddHeader(), ns3::RegularWifiMac::GetAddress(), GetHtCapabilities(), ns3::Time::GetMicroSeconds(), ns3::RegularWifiMac::GetSsid(), GetSupportedRates(), m_beaconInterval, ns3::RegularWifiMac::m_dca, ns3::RegularWifiMac::m_htSupported, NS_LOG_FUNCTION, ns3::WifiMacHeader::SetAddr1(), ns3::WifiMacHeader::SetAddr2(), ns3::WifiMacHeader::SetAddr3(), ns3::WifiMacHeader::SetDsNotFrom(), ns3::WifiMacHeader::SetDsNotTo(), ns3::WifiMacHeader::SetNoOrder(), ns3::WifiMacHeader::SetProbeResp(), and ns3::MgtProbeResponseHeader::SetSsid().
Referenced by Receive().
|
virtual |
address | the current address of this MAC layer. |
Reimplemented from ns3::RegularWifiMac.
Definition at line 107 of file ap-wifi-mac.cc.
References NS_LOG_FUNCTION, ns3::RegularWifiMac::SetAddress(), and ns3::RegularWifiMac::SetBssid().
|
private |
Definition at line 117 of file ap-wifi-mac.cc.
References ns3::EventId::Cancel(), m_beaconEvent, m_enableBeaconGeneration, NS_LOG_FUNCTION, ns3::Simulator::ScheduleNow(), and SendOneBeacon().
Referenced by GetTypeId().
void ns3::ApWifiMac::SetBeaconInterval | ( | Time | interval | ) |
interval | the interval between two beacon transmissions. |
Definition at line 166 of file ap-wifi-mac.cc.
References ns3::Time::GetMicroSeconds(), m_beaconInterval, NS_LOG_FUNCTION, and NS_LOG_WARN.
Referenced by GetTypeId().
|
virtual |
linkUp | the callback to invoke when the link becomes up. |
Reimplemented from ns3::RegularWifiMac.
Definition at line 154 of file ap-wifi-mac.cc.
References NS_LOG_FUNCTION, and ns3::RegularWifiMac::SetLinkUpCallback().
|
virtual |
stationManager | the station manager attached to this MAC. |
Reimplemented from ns3::RegularWifiMac.
Definition at line 146 of file ap-wifi-mac.cc.
References m_beaconDca, NS_LOG_FUNCTION, and ns3::RegularWifiMac::SetWifiRemoteStationManager().
void ns3::ApWifiMac::StartBeaconing | ( | void | ) |
Start beacon transmission immediately.
Definition at line 177 of file ap-wifi-mac.cc.
References NS_LOG_FUNCTION, and SendOneBeacon().
|
virtual |
Reimplemented from ns3::RegularWifiMac.
Definition at line 287 of file ap-wifi-mac.cc.
References NS_LOG_FUNCTION.
|
privatevirtual |
Reimplemented from ns3::RegularWifiMac.
Definition at line 451 of file ap-wifi-mac.cc.
References ns3::WifiMacHeader::GetAddr1(), ns3::WifiMacHeader::IsAssocResp(), ns3::RegularWifiMac::m_stationManager, NS_LOG_DEBUG, NS_LOG_FUNCTION, and ns3::RegularWifiMac::TxFailed().
|
privatevirtual |
Reimplemented from ns3::RegularWifiMac.
Definition at line 437 of file ap-wifi-mac.cc.
References ns3::WifiMacHeader::GetAddr1(), ns3::WifiMacHeader::IsAssocResp(), ns3::RegularWifiMac::m_stationManager, NS_LOG_DEBUG, NS_LOG_FUNCTION, and ns3::RegularWifiMac::TxOk().
Definition at line 138 of file ap-wifi-mac.h.
Referenced by ApWifiMac(), DoDispose(), DoInitialize(), SendOneBeacon(), and SetWifiRemoteStationManager().
|
private |
Definition at line 141 of file ap-wifi-mac.h.
Referenced by DoDispose(), DoInitialize(), SendOneBeacon(), and SetBeaconGeneration().
|
private |
Definition at line 139 of file ap-wifi-mac.h.
Referenced by DoInitialize(), GetBeaconInterval(), SendOneBeacon(), SendProbeResp(), and SetBeaconInterval().
|
private |
Definition at line 142 of file ap-wifi-mac.h.
Referenced by AssignStreams(), DoInitialize(), and GetTypeId().
|
private |
Definition at line 140 of file ap-wifi-mac.h.
Referenced by ApWifiMac(), DoDispose(), DoInitialize(), GetBeaconGeneration(), and SetBeaconGeneration().
|
private |
Definition at line 143 of file ap-wifi-mac.h.
Referenced by DoInitialize(), and GetTypeId().