INET Framework for OMNeT++/OMNEST
inet::ieee80211::Ieee80211MgmtBase Class Referenceabstract

Abstract base class for 802.11 infrastructure mode management components. More...

#include <Ieee80211MgmtBase.h>

Inheritance diagram for inet::ieee80211::Ieee80211MgmtBase:
inet::OperationalBase inet::OperationalMixin< cSimpleModule > inet::ILifecycle inet::ieee80211::Ieee80211MgmtAdhoc inet::ieee80211::Ieee80211MgmtApBase inet::ieee80211::Ieee80211MgmtSta inet::ieee80211::Ieee80211MgmtStaSimplified inet::ieee80211::Ieee80211MgmtAp inet::ieee80211::Ieee80211MgmtApSimplified

Protected Member Functions

virtual int numInitStages () const override
 
virtual void initialize (int) override
 
virtual void handleMessageWhenUp (cMessage *msg) override
 Dispatches incoming messages to handleTimer(), handleUpperMessage() or processFrame(). More...
 
virtual void handleTimer (cMessage *frame)=0
 Should be redefined to deal with self-messages. More...
 
virtual void handleCommand (int msgkind, cObject *ctrl)=0
 Should be redefined to handle commands from the "agent" (if present) More...
 
virtual void sendDown (Packet *frame)
 Utility method for implementing handleUpperMessage(): send message to MAC. More...
 
virtual void dropManagementFrame (Packet *frame)
 Utility method to dispose of an unhandled frame. More...
 
virtual void processFrame (Packet *packet, const Ptr< const Ieee80211DataOrMgmtHeader > &header)
 Dispatch to frame processing methods according to frame type. More...
 
Processing of different frame types
virtual void handleAuthenticationFrame (Packet *packet, const Ptr< const Ieee80211MgmtHeader > &header)=0
 
virtual void handleDeauthenticationFrame (Packet *packet, const Ptr< const Ieee80211MgmtHeader > &header)=0
 
virtual void handleAssociationRequestFrame (Packet *packet, const Ptr< const Ieee80211MgmtHeader > &header)=0
 
virtual void handleAssociationResponseFrame (Packet *packet, const Ptr< const Ieee80211MgmtHeader > &header)=0
 
virtual void handleReassociationRequestFrame (Packet *packet, const Ptr< const Ieee80211MgmtHeader > &header)=0
 
virtual void handleReassociationResponseFrame (Packet *packet, const Ptr< const Ieee80211MgmtHeader > &header)=0
 
virtual void handleDisassociationFrame (Packet *packet, const Ptr< const Ieee80211MgmtHeader > &header)=0
 
virtual void handleBeaconFrame (Packet *packet, const Ptr< const Ieee80211MgmtHeader > &header)=0
 
virtual void handleProbeRequestFrame (Packet *packet, const Ptr< const Ieee80211MgmtHeader > &header)=0
 
virtual void handleProbeResponseFrame (Packet *packet, const Ptr< const Ieee80211MgmtHeader > &header)=0
 
virtual bool isInitializeStage (int stage) const override
 lifecycle support More...
 
virtual bool isModuleStartStage (int stage) const override
 
virtual bool isModuleStopStage (int stage) const override
 
virtual void handleStartOperation (LifecycleOperation *operation) override
 
virtual void handleStopOperation (LifecycleOperation *operation) override
 
virtual void handleCrashOperation (LifecycleOperation *operation) override
 
virtual void start ()
 
virtual void stop ()
 
- Protected Member Functions inherited from inet::OperationalMixin< cSimpleModule >
virtual int numInitStages () const override
 
virtual void refreshDisplay () const override
 
virtual void handleMessage (cMessage *msg) override
 
virtual void handleMessageWhenDown (cMessage *msg)
 
virtual bool handleOperationStage (LifecycleOperation *operation, IDoneCallback *doneCallback) override
 Perform one stage of a lifecycle operation. More...
 
virtual State getInitialOperationalState () const
 Returns initial operational state: OPERATING or NOT_OPERATING. More...
 
virtual void handleActiveOperationTimeout (cMessage *message)
 
virtual bool isUp () const
 utility functions More...
 
virtual bool isDown () const
 
virtual void setOperationalState (State newState)
 
virtual void scheduleOperationTimeout (simtime_t timeout)
 
virtual void setupActiveOperation (LifecycleOperation *operation, IDoneCallback *doneCallback, State)
 
virtual void delayActiveOperationFinish (simtime_t timeout)
 
virtual void startActiveOperationExtraTime (simtime_t delay=SIMTIME_ZERO)
 
virtual void startActiveOperationExtraTimeOrFinish (simtime_t extraTime)
 
virtual void finishActiveOperation ()
 

Protected Attributes

ModuleRefByPar< Ieee80211Mibmib
 
ModuleRefByPar< IInterfaceTableinterfaceTable
 
NetworkInterfacemyIface = nullptr
 
long numMgmtFramesReceived
 
long numMgmtFramesDropped
 
- Protected Attributes inherited from inet::OperationalMixin< cSimpleModule >
State operationalState
 
simtime_t lastChange
 
Operation activeOperation
 
cMessage * activeOperationTimeout
 
cMessage * activeOperationExtraTimer
 

Additional Inherited Members

- Public Member Functions inherited from inet::OperationalMixin< cSimpleModule >
virtual ~OperationalMixin ()
 }@ More...
 
- Public Member Functions inherited from inet::ILifecycle
virtual ~ILifecycle ()
 
- Protected Types inherited from inet::OperationalMixin< cSimpleModule >
enum  State
 

Detailed Description

Abstract base class for 802.11 infrastructure mode management components.

Member Function Documentation

◆ dropManagementFrame()

void inet::ieee80211::Ieee80211MgmtBase::dropManagementFrame ( Packet frame)
protectedvirtual

Utility method to dispose of an unhandled frame.

76 {
77  EV << "ignoring management frame: " << (cMessage *)frame << "\n";
78  delete frame;
80 }

Referenced by inet::ieee80211::Ieee80211MgmtAdhoc::handleAssociationRequestFrame(), inet::ieee80211::Ieee80211MgmtApSimplified::handleAssociationRequestFrame(), inet::ieee80211::Ieee80211MgmtStaSimplified::handleAssociationRequestFrame(), inet::ieee80211::Ieee80211MgmtAdhoc::handleAssociationResponseFrame(), inet::ieee80211::Ieee80211MgmtApSimplified::handleAssociationResponseFrame(), inet::ieee80211::Ieee80211MgmtStaSimplified::handleAssociationResponseFrame(), inet::ieee80211::Ieee80211MgmtApSimplified::handleAuthenticationFrame(), inet::ieee80211::Ieee80211MgmtAdhoc::handleAuthenticationFrame(), inet::ieee80211::Ieee80211MgmtStaSimplified::handleAuthenticationFrame(), inet::ieee80211::Ieee80211MgmtAdhoc::handleBeaconFrame(), inet::ieee80211::Ieee80211MgmtApSimplified::handleBeaconFrame(), inet::ieee80211::Ieee80211MgmtStaSimplified::handleBeaconFrame(), inet::ieee80211::Ieee80211MgmtAdhoc::handleDeauthenticationFrame(), inet::ieee80211::Ieee80211MgmtApSimplified::handleDeauthenticationFrame(), inet::ieee80211::Ieee80211MgmtStaSimplified::handleDeauthenticationFrame(), inet::ieee80211::Ieee80211MgmtApSimplified::handleDisassociationFrame(), inet::ieee80211::Ieee80211MgmtAdhoc::handleDisassociationFrame(), inet::ieee80211::Ieee80211MgmtStaSimplified::handleDisassociationFrame(), inet::ieee80211::Ieee80211MgmtAdhoc::handleProbeRequestFrame(), inet::ieee80211::Ieee80211MgmtApSimplified::handleProbeRequestFrame(), inet::ieee80211::Ieee80211MgmtStaSimplified::handleProbeRequestFrame(), inet::ieee80211::Ieee80211MgmtAdhoc::handleProbeResponseFrame(), inet::ieee80211::Ieee80211MgmtApSimplified::handleProbeResponseFrame(), inet::ieee80211::Ieee80211MgmtStaSimplified::handleProbeResponseFrame(), inet::ieee80211::Ieee80211MgmtApSimplified::handleReassociationRequestFrame(), inet::ieee80211::Ieee80211MgmtAdhoc::handleReassociationRequestFrame(), inet::ieee80211::Ieee80211MgmtStaSimplified::handleReassociationRequestFrame(), inet::ieee80211::Ieee80211MgmtApSimplified::handleReassociationResponseFrame(), inet::ieee80211::Ieee80211MgmtAdhoc::handleReassociationResponseFrame(), and inet::ieee80211::Ieee80211MgmtStaSimplified::handleReassociationResponseFrame().

◆ handleAssociationRequestFrame()

virtual void inet::ieee80211::Ieee80211MgmtBase::handleAssociationRequestFrame ( Packet packet,
const Ptr< const Ieee80211MgmtHeader > &  header 
)
protectedpure virtual

◆ handleAssociationResponseFrame()

virtual void inet::ieee80211::Ieee80211MgmtBase::handleAssociationResponseFrame ( Packet packet,
const Ptr< const Ieee80211MgmtHeader > &  header 
)
protectedpure virtual

◆ handleAuthenticationFrame()

virtual void inet::ieee80211::Ieee80211MgmtBase::handleAuthenticationFrame ( Packet packet,
const Ptr< const Ieee80211MgmtHeader > &  header 
)
protectedpure virtual

◆ handleBeaconFrame()

virtual void inet::ieee80211::Ieee80211MgmtBase::handleBeaconFrame ( Packet packet,
const Ptr< const Ieee80211MgmtHeader > &  header 
)
protectedpure virtual

◆ handleCommand()

virtual void inet::ieee80211::Ieee80211MgmtBase::handleCommand ( int  msgkind,
cObject *  ctrl 
)
protectedpure virtual

◆ handleCrashOperation()

virtual void inet::ieee80211::Ieee80211MgmtBase::handleCrashOperation ( LifecycleOperation operation)
inlineoverrideprotectedvirtual

◆ handleDeauthenticationFrame()

virtual void inet::ieee80211::Ieee80211MgmtBase::handleDeauthenticationFrame ( Packet packet,
const Ptr< const Ieee80211MgmtHeader > &  header 
)
protectedpure virtual

◆ handleDisassociationFrame()

virtual void inet::ieee80211::Ieee80211MgmtBase::handleDisassociationFrame ( Packet packet,
const Ptr< const Ieee80211MgmtHeader > &  header 
)
protectedpure virtual

◆ handleMessageWhenUp()

void inet::ieee80211::Ieee80211MgmtBase::handleMessageWhenUp ( cMessage *  msg)
overrideprotectedvirtual

Dispatches incoming messages to handleTimer(), handleUpperMessage() or processFrame().

Implements inet::OperationalMixin< cSimpleModule >.

42 {
43  if (msg->isSelfMessage()) {
44  // process timers
45  EV << "Timer expired: " << msg << "\n";
46  handleTimer(msg);
47  }
48  else if (msg->arrivedOn("macIn")) {
49  // process incoming frame
50  EV << "Frame arrived from MAC: " << msg << "\n";
51  auto packet = check_and_cast<Packet *>(msg);
52  const Ptr<const Ieee80211DataOrMgmtHeader>& header = packet->peekAt<Ieee80211DataOrMgmtHeader>(packet->getFrontOffset() - B(24));
53  processFrame(packet, header);
54  }
55  else if (msg->arrivedOn("agentIn")) {
56  // process command from agent
57  EV << "Command arrived from agent: " << msg << "\n";
58  int msgkind = msg->getKind();
59  cObject *ctrl = msg->removeControlInfo();
60  delete msg;
61 
62  handleCommand(msgkind, ctrl);
63  }
64  else
65  throw cRuntimeError("Unknown message");
66 }

◆ handleProbeRequestFrame()

virtual void inet::ieee80211::Ieee80211MgmtBase::handleProbeRequestFrame ( Packet packet,
const Ptr< const Ieee80211MgmtHeader > &  header 
)
protectedpure virtual

◆ handleProbeResponseFrame()

virtual void inet::ieee80211::Ieee80211MgmtBase::handleProbeResponseFrame ( Packet packet,
const Ptr< const Ieee80211MgmtHeader > &  header 
)
protectedpure virtual

◆ handleReassociationRequestFrame()

virtual void inet::ieee80211::Ieee80211MgmtBase::handleReassociationRequestFrame ( Packet packet,
const Ptr< const Ieee80211MgmtHeader > &  header 
)
protectedpure virtual

◆ handleReassociationResponseFrame()

virtual void inet::ieee80211::Ieee80211MgmtBase::handleReassociationResponseFrame ( Packet packet,
const Ptr< const Ieee80211MgmtHeader > &  header 
)
protectedpure virtual

◆ handleStartOperation()

virtual void inet::ieee80211::Ieee80211MgmtBase::handleStartOperation ( LifecycleOperation operation)
inlineoverrideprotectedvirtual

◆ handleStopOperation()

virtual void inet::ieee80211::Ieee80211MgmtBase::handleStopOperation ( LifecycleOperation operation)
inlineoverrideprotectedvirtual

◆ handleTimer()

virtual void inet::ieee80211::Ieee80211MgmtBase::handleTimer ( cMessage *  frame)
protectedpure virtual

◆ initialize()

◆ isInitializeStage()

virtual bool inet::ieee80211::Ieee80211MgmtBase::isInitializeStage ( int  stage) const
inlineoverrideprotectedvirtual

lifecycle support

Implements inet::OperationalMixin< cSimpleModule >.

79 { return stage == INITSTAGE_NETWORK_INTERFACE_CONFIGURATION; } // TODO INITSTAGE

◆ isModuleStartStage()

virtual bool inet::ieee80211::Ieee80211MgmtBase::isModuleStartStage ( int  stage) const
inlineoverrideprotectedvirtual

◆ isModuleStopStage()

virtual bool inet::ieee80211::Ieee80211MgmtBase::isModuleStopStage ( int  stage) const
inlineoverrideprotectedvirtual

◆ numInitStages()

◆ processFrame()

void inet::ieee80211::Ieee80211MgmtBase::processFrame ( Packet packet,
const Ptr< const Ieee80211DataOrMgmtHeader > &  header 
)
protectedvirtual

Dispatch to frame processing methods according to frame type.

83 {
84  switch (header->getType()) {
85  case ST_AUTHENTICATION:
87  handleAuthenticationFrame(packet, dynamicPtrCast<const Ieee80211MgmtHeader>(header));
88  break;
89 
92  handleDeauthenticationFrame(packet, dynamicPtrCast<const Ieee80211MgmtHeader>(header));
93  break;
94 
97  handleAssociationRequestFrame(packet, dynamicPtrCast<const Ieee80211MgmtHeader>(header));
98  break;
99 
102  handleAssociationResponseFrame(packet, dynamicPtrCast<const Ieee80211MgmtHeader>(header));
103  break;
104 
107  handleReassociationRequestFrame(packet, dynamicPtrCast<const Ieee80211MgmtHeader>(header));
108  break;
109 
112  handleReassociationResponseFrame(packet, dynamicPtrCast<const Ieee80211MgmtHeader>(header));
113  break;
114 
115  case ST_DISASSOCIATION:
117  handleDisassociationFrame(packet, dynamicPtrCast<const Ieee80211MgmtHeader>(header));
118  break;
119 
120  case ST_BEACON:
122  handleBeaconFrame(packet, dynamicPtrCast<const Ieee80211MgmtHeader>(header));
123  break;
124 
125  case ST_PROBEREQUEST:
127  handleProbeRequestFrame(packet, dynamicPtrCast<const Ieee80211MgmtHeader>(header));
128  break;
129 
130  case ST_PROBERESPONSE:
132  handleProbeResponseFrame(packet, dynamicPtrCast<const Ieee80211MgmtHeader>(header));
133  break;
134 
135  default:
136  throw cRuntimeError("Unexpected frame type (%s)%s", packet->getClassName(), packet->getName());
137  }
138 }

◆ sendDown()

void inet::ieee80211::Ieee80211MgmtBase::sendDown ( Packet frame)
protectedvirtual

Utility method for implementing handleUpperMessage(): send message to MAC.

69 {
70  ASSERT(isUp());
71  frame->addTagIfAbsent<PacketProtocolTag>()->setProtocol(&Protocol::ieee80211Mgmt);
72  send(frame, "macOut");
73 }

◆ start()

void inet::ieee80211::Ieee80211MgmtBase::start ( )
protectedvirtual

Reimplemented in inet::ieee80211::Ieee80211MgmtAp.

141 {
142 }

Referenced by inet::ieee80211::Ieee80211MgmtAp::start().

◆ stop()

void inet::ieee80211::Ieee80211MgmtBase::stop ( )
protectedvirtual

Reimplemented in inet::ieee80211::Ieee80211MgmtAp.

145 {
146 }

Referenced by inet::ieee80211::Ieee80211MgmtAp::stop().

Member Data Documentation

◆ interfaceTable

ModuleRefByPar<IInterfaceTable> inet::ieee80211::Ieee80211MgmtBase::interfaceTable
protected

◆ mib

◆ myIface

NetworkInterface* inet::ieee80211::Ieee80211MgmtBase::myIface = nullptr
protected

◆ numMgmtFramesDropped

long inet::ieee80211::Ieee80211MgmtBase::numMgmtFramesDropped
protected

◆ numMgmtFramesReceived

long inet::ieee80211::Ieee80211MgmtBase::numMgmtFramesReceived
protected

The documentation for this class was generated from the following files:
inet::ieee80211::Ieee80211MgmtBase::processFrame
virtual void processFrame(Packet *packet, const Ptr< const Ieee80211DataOrMgmtHeader > &header)
Dispatch to frame processing methods according to frame type.
Definition: Ieee80211MgmtBase.cc:82
inet::ieee80211::Ieee80211MgmtBase::handleCommand
virtual void handleCommand(int msgkind, cObject *ctrl)=0
Should be redefined to handle commands from the "agent" (if present)
inet::ieee80211::Ieee80211MgmtBase::handleProbeRequestFrame
virtual void handleProbeRequestFrame(Packet *packet, const Ptr< const Ieee80211MgmtHeader > &header)=0
inet::OperationalMixin< cSimpleModule >::isUp
virtual bool isUp() const
utility functions
Definition: OperationalMixin.h:66
inet::ieee80211::ST_PROBEREQUEST
@ ST_PROBEREQUEST
Definition: Ieee80211Frame_m.h:153
inet::Protocol::ieee80211Mgmt
static const Protocol ieee80211Mgmt
Definition: Protocol.h:80
inet::ieee80211::Ieee80211MgmtBase::handleReassociationRequestFrame
virtual void handleReassociationRequestFrame(Packet *packet, const Ptr< const Ieee80211MgmtHeader > &header)=0
inet::ieee80211::Ieee80211MgmtBase::mib
ModuleRefByPar< Ieee80211Mib > mib
Definition: Ieee80211MgmtBase.h:33
inet::OperationalMixin< cSimpleModule >::initialize
virtual void initialize(int stage) override
Definition: OperationalMixinImpl.h:26
inet::ieee80211::Ieee80211MgmtBase::handleReassociationResponseFrame
virtual void handleReassociationResponseFrame(Packet *packet, const Ptr< const Ieee80211MgmtHeader > &header)=0
inet::ieee80211::Ieee80211MgmtBase::handleAssociationRequestFrame
virtual void handleAssociationRequestFrame(Packet *packet, const Ptr< const Ieee80211MgmtHeader > &header)=0
inet::getContainingNicModule
NetworkInterface * getContainingNicModule(const cModule *from)
Find the nic module (inside the networkNode) containing the given module.
Definition: NetworkInterface.cc:691
inet::ieee80211::Ieee80211MgmtBase::handleDeauthenticationFrame
virtual void handleDeauthenticationFrame(Packet *packet, const Ptr< const Ieee80211MgmtHeader > &header)=0
inet::ieee80211::Ieee80211MgmtBase::myIface
NetworkInterface * myIface
Definition: Ieee80211MgmtBase.h:35
PacketProtocolTag
removed DscpReq Ipv4ControlInfo Ipv6ControlInfo up L3AddressInd DispatchProtocolReq L4PortInd Ipv4ControlInfo Ipv6ControlInfo down PacketProtocolTag
Definition: IUdp-gates.txt:25
ctrl
removed ctrl
Definition: IUdp-gates.txt:7
inet::INITSTAGE_NETWORK_INTERFACE_CONFIGURATION
INET_API InitStage INITSTAGE_NETWORK_INTERFACE_CONFIGURATION
Initialization of network interfaces includes:
inet::ieee80211::Ieee80211MgmtBase::handleAssociationResponseFrame
virtual void handleAssociationResponseFrame(Packet *packet, const Ptr< const Ieee80211MgmtHeader > &header)=0
inet::ieee80211::ST_REASSOCIATIONRESPONSE
@ ST_REASSOCIATIONRESPONSE
Definition: Ieee80211Frame_m.h:152
inet::ieee80211::ST_ASSOCIATIONREQUEST
@ ST_ASSOCIATIONREQUEST
Definition: Ieee80211Frame_m.h:149
inet::units::units::B
intscale< b, 1, 8 > B
Definition: Units.h:1168
inet::ieee80211::ST_AUTHENTICATION
@ ST_AUTHENTICATION
Definition: Ieee80211Frame_m.h:158
inet::ModuleStartOperation::STAGE_PHYSICAL_LAYER
@ STAGE_PHYSICAL_LAYER
Definition: ModuleOperations.h:27
inet::ieee80211::Ieee80211MgmtBase::handleTimer
virtual void handleTimer(cMessage *frame)=0
Should be redefined to deal with self-messages.
inet::ModuleStopOperation::STAGE_PHYSICAL_LAYER
@ STAGE_PHYSICAL_LAYER
Definition: ModuleOperations.h:55
inet::ieee80211::Ieee80211MgmtBase::numMgmtFramesReceived
long numMgmtFramesReceived
Definition: Ieee80211MgmtBase.h:38
inet::ieee80211::ST_DEAUTHENTICATION
@ ST_DEAUTHENTICATION
Definition: Ieee80211Frame_m.h:159
inet::ieee80211::Ieee80211MgmtBase::handleDisassociationFrame
virtual void handleDisassociationFrame(Packet *packet, const Ptr< const Ieee80211MgmtHeader > &header)=0
inet::INITSTAGE_LOCAL
INET_API InitStage INITSTAGE_LOCAL
Initialization of local state that don't use or affect other modules includes:
inet::ieee80211::ST_BEACON
@ ST_BEACON
Definition: Ieee80211Frame_m.h:155
inet::ieee80211::ST_PROBERESPONSE
@ ST_PROBERESPONSE
Definition: Ieee80211Frame_m.h:154
NUM_INIT_STAGES
#define NUM_INIT_STAGES
Definition: InitStageRegistry.h:73
inet::ieee80211::ST_DISASSOCIATION
@ ST_DISASSOCIATION
Definition: Ieee80211Frame_m.h:157
inet::ieee80211::ST_REASSOCIATIONREQUEST
@ ST_REASSOCIATIONREQUEST
Definition: Ieee80211Frame_m.h:151
inet::ieee80211::ST_ASSOCIATIONRESPONSE
@ ST_ASSOCIATIONRESPONSE
Definition: Ieee80211Frame_m.h:150
inet::ieee80211::Ieee80211MgmtBase::stop
virtual void stop()
Definition: Ieee80211MgmtBase.cc:144
inet::ieee80211::Ieee80211MgmtBase::numMgmtFramesDropped
long numMgmtFramesDropped
Definition: Ieee80211MgmtBase.h:39
inet::ieee80211::Ieee80211MgmtBase::handleBeaconFrame
virtual void handleBeaconFrame(Packet *packet, const Ptr< const Ieee80211MgmtHeader > &header)=0
inet::ieee80211::Ieee80211MgmtBase::start
virtual void start()
Definition: Ieee80211MgmtBase.cc:140
inet::ieee80211::Ieee80211MgmtBase::handleProbeResponseFrame
virtual void handleProbeResponseFrame(Packet *packet, const Ptr< const Ieee80211MgmtHeader > &header)=0
inet::ieee80211::Ieee80211MgmtBase::handleAuthenticationFrame
virtual void handleAuthenticationFrame(Packet *packet, const Ptr< const Ieee80211MgmtHeader > &header)=0
inet::ieee80211::Ieee80211MgmtBase::interfaceTable
ModuleRefByPar< IInterfaceTable > interfaceTable
Definition: Ieee80211MgmtBase.h:34