A Discrete-Event Network Simulator
API
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
ns3::MacRxMiddle Class Reference

#include <mac-rx-middle.h>

+ Collaboration diagram for ns3::MacRxMiddle:

Public Types

typedef Callback< void, Ptr
< Packet >, const
WifiMacHeader * > 
ForwardUpCallback

Public Member Functions

 MacRxMiddle ()
 ~MacRxMiddle ()
void Receive (Ptr< Packet > packet, const WifiMacHeader *hdr)
void SetForwardCallback (ForwardUpCallback callback)

Private Types

typedef std::map< Mac48Address,
OriginatorRxStatus
*, std::less< Mac48Address > > 
Originators
typedef std::map< Mac48Address,
OriginatorRxStatus
*, std::less< Mac48Address >
>::iterator 
OriginatorsI
typedef std::map< std::pair
< Mac48Address, uint8_t >
, OriginatorRxStatus
*, std::less< std::pair
< Mac48Address, uint8_t > > > 
QosOriginators
typedef std::map< std::pair
< Mac48Address, uint8_t >
, OriginatorRxStatus
*, std::less< std::pair
< Mac48Address, uint8_t >
> >::iterator 
QosOriginatorsI

Private Member Functions

Ptr< PacketHandleFragments (Ptr< Packet > packet, const WifiMacHeader *hdr, OriginatorRxStatus *originator)
bool IsDuplicate (const WifiMacHeader *hdr, OriginatorRxStatus *originator) const
OriginatorRxStatusLookup (const WifiMacHeader *hdr)

Private Attributes

ForwardUpCallback m_callback
Originators m_originatorStatus
QosOriginators m_qosOriginatorStatus

Friends

class MacRxMiddleTest

Detailed Description

This class handles duplicate detection and recomposition of fragments.

Definition at line 40 of file mac-rx-middle.h.

Member Typedef Documentation

Definition at line 43 of file mac-rx-middle.h.

Definition at line 58 of file mac-rx-middle.h.

typedef std::map<Mac48Address, OriginatorRxStatus *, std::less<Mac48Address> >::iterator ns3::MacRxMiddle::OriginatorsI
private

Definition at line 60 of file mac-rx-middle.h.

typedef std::map<std::pair<Mac48Address, uint8_t>, OriginatorRxStatus *, std::less<std::pair<Mac48Address,uint8_t> > > ns3::MacRxMiddle::QosOriginators
private

Definition at line 59 of file mac-rx-middle.h.

typedef std::map<std::pair<Mac48Address, uint8_t>, OriginatorRxStatus *, std::less<std::pair<Mac48Address,uint8_t> > >::iterator ns3::MacRxMiddle::QosOriginatorsI
private

Definition at line 61 of file mac-rx-middle.h.

Constructor & Destructor Documentation

ns3::MacRxMiddle::MacRxMiddle ( )

Definition at line 108 of file mac-rx-middle.cc.

References NS_LOG_FUNCTION_NOARGS.

ns3::MacRxMiddle::~MacRxMiddle ( )

Member Function Documentation

bool ns3::MacRxMiddle::IsDuplicate ( const WifiMacHeader hdr,
OriginatorRxStatus originator 
) const
private

Definition at line 174 of file mac-rx-middle.cc.

References ns3::OriginatorRxStatus::GetLastSequenceControl(), ns3::WifiMacHeader::GetSequenceControl(), ns3::WifiMacHeader::IsRetry(), and NS_LOG_FUNCTION.

Referenced by Receive().

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

OriginatorRxStatus * ns3::MacRxMiddle::Lookup ( const WifiMacHeader hdr)
private

Definition at line 140 of file mac-rx-middle.cc.

References ns3::WifiMacHeader::GetAddr2(), ns3::WifiMacHeader::GetQosTid(), ns3::Mac48Address::IsGroup(), ns3::WifiMacHeader::IsQosData(), m_originatorStatus, m_qosOriginatorStatus, and NS_LOG_FUNCTION.

Referenced by Receive().

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

void ns3::MacRxMiddle::Receive ( Ptr< Packet packet,
const WifiMacHeader hdr 
)

The check below is really uneeded because it can fail in a lot of normal cases. Specifically, it is possible for sequence numbers to loop back to zero once they reach 0xfff0 and to go up to 0xf7f0 in which case the check below will report the two sequence numbers to not have the correct order relationship. So, this check cannot be used to discard old duplicate frames. It is thus here only for documentation purposes.

Definition at line 246 of file mac-rx-middle.cc.

References ns3::WifiMacHeader::GetAddr1(), ns3::WifiMacHeader::GetAddr2(), ns3::WifiMacHeader::GetFragmentNumber(), ns3::WifiMacHeader::GetSequenceControl(), ns3::WifiMacHeader::GetSequenceNumber(), HandleFragments(), ns3::WifiMacHeader::IsData(), IsDuplicate(), ns3::Mac48Address::IsGroup(), ns3::WifiMacHeader::IsMgt(), Lookup(), m_callback, NS_ASSERT, NS_LOG_DEBUG, and NS_LOG_FUNCTION.

Referenced by ns3::RegularWifiMac::RegularWifiMac().

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

void ns3::MacRxMiddle::SetForwardCallback ( ForwardUpCallback  callback)

Definition at line 133 of file mac-rx-middle.cc.

References m_callback, and NS_LOG_FUNCTION_NOARGS.

Referenced by ns3::RegularWifiMac::RegularWifiMac().

+ Here is the caller graph for this function:

Friends And Related Function Documentation

friend class MacRxMiddleTest
friend

Definition at line 52 of file mac-rx-middle.h.

Member Data Documentation

ForwardUpCallback ns3::MacRxMiddle::m_callback
private

Definition at line 64 of file mac-rx-middle.h.

Referenced by Receive(), and SetForwardCallback().

Originators ns3::MacRxMiddle::m_originatorStatus
private

Definition at line 62 of file mac-rx-middle.h.

Referenced by Lookup(), and ~MacRxMiddle().

QosOriginators ns3::MacRxMiddle::m_qosOriginatorStatus
private

Definition at line 63 of file mac-rx-middle.h.

Referenced by Lookup(), and ~MacRxMiddle().


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