|
INET Framework for OMNeT++/OMNEST
|
#include <Ieee80211MgmtAPBase.h>
Protected Member Functions | |
| virtual int | numInitStages () const |
| virtual void | initialize (int) |
| virtual void | distributeReceivedDataFrame (Ieee80211DataFrame *frame) |
| virtual Ieee80211DataFrame * | convertFromEtherFrame (EtherFrame *ethframe) |
| virtual EtherFrame * | convertToEtherFrame (Ieee80211DataFrame *frame) |
Protected Attributes | |
| bool | hasRelayUnit |
Used in 802.11 infrastructure mode: abstract base class for management frame handling for access points (APs). This class extends Ieee80211MgmtBase with utility functions that are useful for implementing AP functionality.
Definition at line 34 of file Ieee80211MgmtAPBase.h.
| Ieee80211DataFrame * Ieee80211MgmtAPBase::convertFromEtherFrame | ( | EtherFrame * | ethframe | ) | [protected, virtual] |
Utility function: converts EtherFrame to Ieee80211Frame. This is needed because MACRelayUnit which we use for LAN bridging functionality deals with EtherFrames.
Definition at line 69 of file Ieee80211MgmtAPBase.cc.
Referenced by Ieee80211MgmtAPSimplified::handleUpperMessage(), and Ieee80211MgmtAP::handleUpperMessage().
{
// create new frame
Ieee80211DataFrame *frame = new Ieee80211DataFrame(ethframe->getName());
frame->setFromDS(true);
// copy addresses from ethernet frame (transmitter addr will be set to our addr by MAC)
frame->setReceiverAddress(ethframe->getDest());
frame->setAddress3(ethframe->getSrc());
// encapsulate payload
cPacket *payload = ethframe->decapsulate();
if (!payload)
error("received empty EtherFrame from upper layer");
frame->encapsulate(payload);
delete ethframe;
// done
return frame;
}
| EtherFrame * Ieee80211MgmtAPBase::convertToEtherFrame | ( | Ieee80211DataFrame * | frame | ) | [protected, virtual] |
Utility function: converts the given frame to EtherFrame, deleting the original frame. This function is needed for LAN bridging functionality: MACRelayUnit deals with EtherFrames.
Definition at line 51 of file Ieee80211MgmtAPBase.cc.
Referenced by Ieee80211MgmtAPSimplified::handleDataFrame(), and Ieee80211MgmtAP::handleDataFrame().
{
// create a matching ethernet frame
EtherFrame *ethframe = new EthernetIIFrame(frame->getName()); //TODO option to use EtherFrameWithSNAP instead
ethframe->setDest(frame->getAddress3());
ethframe->setSrc(frame->getTransmitterAddress());
//XXX set ethertype
// encapsulate the payload in there
cPacket *payload = frame->decapsulate();
delete frame;
ASSERT(payload!=NULL);
ethframe->encapsulate(payload);
// done
return ethframe;
}
| void Ieee80211MgmtAPBase::distributeReceivedDataFrame | ( | Ieee80211DataFrame * | frame | ) | [protected, virtual] |
Utility function for APs: sends back a data frame we received from a STA to the wireless LAN, after tweaking fromDS/toDS bits and shuffling addresses as needed.
Definition at line 35 of file Ieee80211MgmtAPBase.cc.
Referenced by Ieee80211MgmtAPSimplified::handleDataFrame(), and Ieee80211MgmtAP::handleDataFrame().
{
// adjust toDS/fromDS bits, and shuffle addresses
frame->setToDS(false);
frame->setFromDS(true);
// move destination address to address1 (receiver address),
// and fill address3 with original source address;
// sender address (address2) will be filled in by MAC
ASSERT(!frame->getAddress3().isUnspecified());
frame->setReceiverAddress(frame->getAddress3());
frame->setAddress3(frame->getTransmitterAddress());
sendOrEnqueue(frame);
}
| void Ieee80211MgmtAPBase::initialize | ( | int | stage | ) | [protected, virtual] |
Reimplemented from Ieee80211MgmtBase.
Reimplemented in Ieee80211MgmtAP, and Ieee80211MgmtAPSimplified.
Definition at line 24 of file Ieee80211MgmtAPBase.cc.
{
Ieee80211MgmtBase::initialize(stage);
if (stage==0)
{
hasRelayUnit = gate("uppergateOut")->getPathEndGate()->isConnected();
WATCH(hasRelayUnit);
}
}
| virtual int Ieee80211MgmtAPBase::numInitStages | ( | ) | const [inline, protected, virtual] |
Reimplemented from Ieee80211MgmtBase.
Reimplemented in Ieee80211MgmtAP, and Ieee80211MgmtAPSimplified.
Definition at line 40 of file Ieee80211MgmtAPBase.h.
{return 2;}
bool Ieee80211MgmtAPBase::hasRelayUnit [protected] |
Definition at line 37 of file Ieee80211MgmtAPBase.h.
Referenced by Ieee80211MgmtAPSimplified::handleDataFrame(), Ieee80211MgmtAP::handleDataFrame(), and initialize().