|
INET Framework for OMNeT++/OMNEST
|
A simplified version of EthernetCsmaMac.
More...
#include <EthernetMac.h>
|
| virtual int | numInitStages () const override |
| |
| virtual void | initialize (int stage) override |
| |
| virtual void | initializeStatistics () override |
| |
| virtual void | initializeFlags () override |
| |
| virtual void | handleMessageWhenUp (cMessage *msg) override |
| |
| virtual void | finish () override |
| |
| virtual void | handleEndIFGPeriod () |
| |
| virtual void | handleEndTxPeriod () |
| |
| virtual void | handleEndPausePeriod () |
| |
| virtual void | handleSelfMessage (cMessage *msg) override |
| |
| virtual void | startFrameTransmission () |
| |
| virtual void | handleUpperPacket (Packet *pk) override |
| |
| virtual void | processMsgFromNetwork (EthernetSignalBase *signal) |
| |
| virtual void | processReceivedDataFrame (Packet *packet, const Ptr< const EthernetMacHeader > &frame) |
| |
| virtual void | processPauseCommand (int pauseUnits) |
| |
| virtual void | scheduleEndIFGPeriod () |
| |
| virtual void | scheduleEndPausePeriod (int pauseUnits) |
| |
| virtual void | beginSendFrames () |
| |
| virtual bool | dropFrameNotForUs (Packet *packet, const Ptr< const EthernetMacHeader > &frame) |
| | Checks destination address and drops the frame when frame is not for us; returns true if frame is dropped. More...
|
| |
| virtual void | readChannelParameters (bool errorWhenAsymmetric) |
| | Calculates datarates, etc. More...
|
| |
| virtual void | printParameters () |
| |
| virtual void | processConnectDisconnect () |
| |
| virtual void | encapsulate (Packet *packet) |
| |
| virtual void | decapsulate (Packet *packet) |
| |
| bool | verifyCrcAndLength (Packet *packet) |
| | Verify ethernet packet: check FCS and payload length. More...
|
| |
| virtual void | configureNetworkInterface () override |
| |
| virtual void | refreshDisplay () const override |
| |
| virtual void | receiveSignal (cComponent *src, simsignal_t signalId, cObject *obj, cObject *details) override |
| |
| virtual void | refreshConnection () |
| |
| void | changeTransmissionState (MacTransmitState newState) |
| |
| void | changeReceptionState (MacReceiveState newState) |
| |
| virtual void | cutEthernetSignalEnd (EthernetSignalBase *signal, simtime_t duration) |
| |
| virtual void | txFinished () |
| |
| | MacProtocolBase () |
| |
| virtual | ~MacProtocolBase () |
| |
| virtual void | registerInterface () |
| |
| virtual MacAddress | parseMacAddressParameter (const char *addrstr) |
| |
| virtual void | deleteCurrentTxFrame () |
| |
| virtual void | dropCurrentTxFrame (PacketDropDetails &details) |
| |
| virtual void | handleMessageWhenDown (cMessage *msg) override |
| |
| virtual void | sendUp (cMessage *message) |
| |
| virtual void | sendDown (cMessage *message) |
| |
| virtual bool | isUpperMessage (cMessage *message) const override |
| |
| virtual bool | isLowerMessage (cMessage *message) const override |
| |
| virtual bool | isInitializeStage (int stage) const override |
| |
| virtual bool | isModuleStartStage (int stage) const override |
| |
| virtual bool | isModuleStopStage (int stage) const override |
| |
| virtual void | flushQueue (PacketDropDetails &details) |
| | should clear queue and emit signal "packetDropped" with entire packets More...
|
| |
| virtual void | clearQueue () |
| | should clear queue silently More...
|
| |
| queueing::IPacketQueue * | getQueue (cGate *gate) const |
| |
| virtual bool | canDequeuePacket () const |
| |
| virtual Packet * | dequeuePacket () |
| |
| virtual void | handleUpperMessage (cMessage *message) |
| |
| virtual void | handleLowerMessage (cMessage *message) |
| |
| virtual void | handleUpperCommand (cMessage *message) |
| |
| virtual void | handleLowerCommand (cMessage *message) |
| |
| virtual void | handleLowerPacket (Packet *packet) |
| |
| virtual int | numInitStages () const override |
| |
| virtual void | refreshDisplay () const override |
| |
| virtual void | handleMessage (cMessage *msg) override |
| |
| 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 () |
| |
|
| enum | MacTransmitState {
TX_IDLE_STATE = 1,
WAIT_IFG_STATE,
SEND_IFG_STATE,
TRANSMITTING_STATE,
JAMMING_STATE,
BACKOFF_STATE,
PAUSE_STATE
} |
| |
| enum | MacReceiveState { RX_IDLE_STATE = 1,
RECEIVING_STATE,
RX_COLLISION_STATE,
RX_RECONNECT_STATE
} |
| |
| static const double | SPEED_OF_LIGHT_IN_CABLE = 200000000.0 |
| |
| enum | SelfMsgKindValues {
ENDIFG = 100,
ENDRECEPTION,
ENDBACKOFF,
ENDTRANSMISSION,
ENDJAMMING,
ENDPAUSE
} |
| |
| enum | { NUM_OF_ETHERDESCRS = 11
} |
| |
| enum | State |
| |
| static const EtherDescr | etherDescrs [NUM_OF_ETHERDESCRS] |
| |
| static const EtherDescr | nullEtherDescr |
| |
| static simsignal_t | rxPkOkSignal = registerSignal("rxPkOk") |
| |
| static simsignal_t | txPausePkUnitsSignal = registerSignal("txPausePkUnits") |
| |
| static simsignal_t | rxPausePkUnitsSignal = registerSignal("rxPausePkUnits") |
| |
| static simsignal_t | transmissionStateChangedSignal = registerSignal("transmissionStateChanged") |
| |
| static simsignal_t | receptionStateChangedSignal = registerSignal("receptionStateChanged") |
| |
A simplified version of EthernetCsmaMac.
Since modern Ethernets typically operate over duplex links where's no contention, the original CSMA/CD algorithm is no longer needed. This simplified implementation doesn't contain CSMA/CD, frames are just simply queued up and sent out one by one.
◆ EthernetMac()
| inet::EthernetMac::EthernetMac |
( |
| ) |
|
◆ beginSendFrames()
| void inet::EthernetMac::beginSendFrames |
( |
| ) |
|
|
protectedvirtual |
403 EV_DETAIL <<
"Transmit next frame in output queue\n";
409 EV_DETAIL <<
"No more frames to send, transmitter set to idle\n";
Referenced by initialize().
◆ finish()
| void inet::EthernetMac::finish |
( |
| ) |
|
|
overrideprotectedvirtual |
Reimplemented from inet::EthernetMacBase.
315 simtime_t t = simTime();
317 recordScalar(
"rx channel idle (%)", 100 * (totalRxChannelIdleTime / t));
◆ handleCanPullPacketChanged()
| void inet::EthernetMac::handleCanPullPacketChanged |
( |
cGate * |
gate | ) |
|
|
overridevirtual |
Notifies about a change in the possibility of pulling some packet from the passive packet source at the given gate.
This method is called, for example, when a new packet is inserted into a queue. It allows the sink to pull a new packet from the queue.
The gate parameter must be a valid gate of this module.
Implements inet::queueing::IActivePacketSink.
◆ handleEndIFGPeriod()
| void inet::EthernetMac::handleEndIFGPeriod |
( |
| ) |
|
|
protectedvirtual |
256 throw cRuntimeError(
"Not in WAIT_IFG_STATE at the end of IFG period");
259 EV_DETAIL <<
"IFG elapsed" << endl;
Referenced by handleSelfMessage().
◆ handleEndPausePeriod()
| void inet::EthernetMac::handleEndPausePeriod |
( |
| ) |
|
|
protectedvirtual |
325 throw cRuntimeError(
"End of PAUSE event occurred when not in PAUSE_STATE!");
327 EV_DETAIL <<
"Pause finished, resuming transmissions\n";
Referenced by handleSelfMessage().
◆ handleEndTxPeriod()
| void inet::EthernetMac::handleEndTxPeriod |
( |
| ) |
|
|
protectedvirtual |
272 throw cRuntimeError(
"Model error: End of transmission, and incorrect state detected");
275 throw cRuntimeError(
"Model error: Frame under transmission cannot be found");
288 const auto& pauseFrame =
CHK(dynamicPtrCast<const EthernetPauseFrame>(controlFrame));
294 EV_INFO <<
"Transmission of " <<
currentTxFrame <<
" successfully completed.\n";
306 EV_DETAIL <<
"Start IFG period\n";
Referenced by handleSelfMessage().
◆ handleMessageWhenUp()
| void inet::EthernetMac::handleMessageWhenUp |
( |
cMessage * |
msg | ) |
|
|
overrideprotectedvirtual |
Reimplemented from inet::LayeredProtocolBase.
65 if (msg->isSelfMessage())
72 throw cRuntimeError(
"Message received from unknown gate!");
◆ handleSelfMessage()
| void inet::EthernetMac::handleSelfMessage |
( |
cMessage * |
msg | ) |
|
|
overrideprotectedvirtual |
◆ handleUpperPacket()
| void inet::EthernetMac::handleUpperPacket |
( |
Packet * |
pk | ) |
|
|
overrideprotectedvirtual |
Reimplemented from inet::LayeredProtocolBase.
130 EV_INFO <<
"Received " << packet <<
" from upper layer." << endl;
135 auto frame = packet->peekAtFront<EthernetMacHeader>();
137 throw cRuntimeError(
"logic error: frame %s from higher layer has local MAC address as dest (%s)",
138 packet->getFullName(), frame->getDest().str().c_str());
142 throw cRuntimeError(
"packet from higher layer (%s) exceeds maximum Ethernet frame size (%s)",
147 EV_WARN <<
"Interface is not connected -- dropping packet " << packet << endl;
148 PacketDropDetails details;
158 if (frame->getSrc().isUnspecified()) {
160 auto newFrame = packet->removeAtFront<EthernetMacHeader>();
162 packet->insertAtFront(newFrame);
167 throw cRuntimeError(
"EthernetMac not in TX_IDLE_STATE when packet arrived from upper layer");
169 throw cRuntimeError(
"EthernetMac already has a transmit packet when packet arrived from upper layer");
Referenced by handleCanPullPacketChanged(), handleEndIFGPeriod(), handleEndPausePeriod(), and handleMessageWhenUp().
◆ initialize()
| void inet::EthernetMac::initialize |
( |
int |
stage | ) |
|
|
overrideprotectedvirtual |
Reimplemented from inet::EthernetMacBase.
36 if (!par(
"duplexMode"))
37 throw cRuntimeError(
"Half duplex operation is not supported by EthernetMac, use the EthernetCsmaMac module for that! (Please enable csmacdSupport on EthernetInterface)");
◆ initializeFlags()
| void inet::EthernetMac::initializeFlags |
( |
| ) |
|
|
overrideprotectedvirtual |
◆ initializeStatistics()
| void inet::EthernetMac::initializeStatistics |
( |
| ) |
|
|
overrideprotectedvirtual |
◆ numInitStages()
| virtual int inet::EthernetMac::numInitStages |
( |
| ) |
const |
|
inlineoverrideprotectedvirtual |
◆ processMsgFromNetwork()
177 EV_INFO << signal <<
" received." << endl;
180 EV_WARN <<
"Interface is not connected -- dropping signal " << signal << endl;
181 if (
dynamic_cast<EthernetSignal *
>(signal)) {
182 auto packet = check_and_cast<Packet *>(signal->decapsulate());
185 PacketDropDetails details;
201 if (signal->getSrcMacFullDuplex() !=
duplexMode)
202 throw cRuntimeError(
"Ethernet misconfiguration: MACs on the same link must be all in full duplex mode, or all in half-duplex mode");
204 if (
dynamic_cast<EthernetFilledIfgSignal *
>(signal))
205 throw cRuntimeError(
"There is no burst mode in full-duplex operation: EtherFilledIfg is unexpected");
207 if (
dynamic_cast<EthernetJamSignal *
>(signal))
208 throw cRuntimeError(
"There is no JAM signal in full-duplex operation: EthernetJamSignal is unexpected");
210 bool hasBitError = signal->hasBitError();
211 auto packet = check_and_cast<Packet *>(signal->decapsulate());
217 EV_WARN <<
"Bit error/CRC error in incoming packet -- dropping packet " <<
EV_FIELD(packet) <<
EV_ENDL;
219 PacketDropDetails details;
226 const auto& frame = packet->peekAtFront<EthernetMacHeader>();
233 auto pauseFrame = check_and_cast<const EthernetPauseFrame *>(controlFrame.get());
234 int pauseUnits = pauseFrame->getPauseTime();
235 EV_INFO <<
"Reception of PAUSE frame " << packet <<
" successfully completed." << endl;
242 EV_INFO <<
"Received unknown ethernet flow control frame " <<
EV_FIELD(packet) <<
", dropped." << endl;
247 EV_INFO <<
"Reception of " <<
EV_FIELD(packet) <<
" successfully completed." << endl;
Referenced by handleMessageWhenUp().
◆ processPauseCommand()
| void inet::EthernetMac::processPauseCommand |
( |
int |
pauseUnits | ) |
|
|
protectedvirtual |
362 EV_DETAIL <<
"PAUSE frame received, pausing for " <<
pauseUnitsRequested <<
" time units\n";
368 <<
" more time units from now\n";
377 EV_DETAIL <<
"PAUSE frame received, storing pause request\n";
Referenced by processMsgFromNetwork().
◆ processReceivedDataFrame()
339 unsigned long curBytes = packet->getByteLength();
344 const auto macAddressInd = packet->addTagIfAbsent<MacAddressInd>();
345 macAddressInd->setSrcAddress(frame->getSrc());
346 macAddressInd->setDestAddress(frame->getDest());
350 packet->addTagIfAbsent<InterfaceInd>()->setInterfaceId(
networkInterface->getInterfaceId());
355 EV_INFO <<
"Sending " << packet <<
" to upper layer.\n";
Referenced by processMsgFromNetwork().
◆ scheduleEndIFGPeriod()
| void inet::EthernetMac::scheduleEndIFGPeriod |
( |
| ) |
|
|
protectedvirtual |
◆ scheduleEndPausePeriod()
| void inet::EthernetMac::scheduleEndPausePeriod |
( |
int |
pauseUnits | ) |
|
|
protectedvirtual |
◆ startFrameTransmission()
| void inet::EthernetMac::startFrameTransmission |
( |
| ) |
|
|
protectedvirtual |
93 EV_DETAIL <<
"Transmitting a copy of frame " <<
currentTxFrame << endl;
96 const auto& hdr = frame->
peekAtFront<EthernetMacHeader>();
98 ASSERT(!hdr->getSrc().isUnspecified());
107 *newPacketProtocolTag = *oldPacketProtocolTag;
108 EV_INFO <<
"Transmission of " << frame <<
" started.\n";
109 auto signal =
new EthernetSignal(frame->getName());
113 auto bytes = frame->peekDataAsBytes();
115 frame->insertAtFront(bytes);
117 signal->encapsulate(frame);
Referenced by beginSendFrames(), and handleUpperPacket().
◆ totalSuccessfulRxTime
| simtime_t inet::EthernetMac::totalSuccessfulRxTime |
|
protected |
The documentation for this class was generated from the following files:
opp_component_ptr< NetworkInterface > networkInterface
Definition: MacProtocolBase.h:30
#define CHK(x)
Definition: INETDefs.h:87
virtual void processPauseCommand(int pauseUnits)
Definition: EthernetMac.cc:359
unsigned long numFramesSent
Definition: EthernetMacBase.h:115
virtual void initialize(int stage) override
Definition: EthernetMacBase.cc:188
virtual void txFinished()
Definition: EthernetMacBase.cc:720
std::string str() const
Definition: Units.h:101
unsigned long numDroppedPkFromHLIfaceDown
Definition: EthernetMacBase.h:120
const B MIN_ETHERNET_FRAME_BYTES
Definition: Ethernet.h:22
virtual void beginSendFrames()
Definition: EthernetMac.cc:399
int upperLayerOutGateId
Definition: MacProtocolBase.h:25
static simsignal_t rxPausePkUnitsSignal
Definition: EthernetMacBase.h:130
unsigned long numBytesSent
Definition: EthernetMacBase.h:117
virtual void encapsulate(Packet *packet)
Definition: EthernetMacBase.cc:380
@ INCORRECTLY_RECEIVED
Definition: Simsignals_m.h:71
unsigned long numDroppedIfaceDown
Definition: EthernetMacBase.h:121
cChannel * transmissionChannel
Definition: EthernetMacBase.h:95
simsignal_t packetReceivedFromUpperSignal
Definition: Simsignals.cc:88
const Ptr< const Chunk > peekAtFront(b length=b(-1), int flags=0) const
Returns the designated part from the beginning of the data part of the packet as an immutable chunk i...
Definition: Packet.h:245
virtual EthernetSignalBase * dup() const override
Definition: EthernetSignal_m.h:85
#define PAUSE_UNIT_BITS
Definition: Ethernet.h:44
virtual void scheduleEndIFGPeriod()
Definition: EthernetMac.cc:382
static simsignal_t txPausePkUnitsSignal
Definition: EthernetMacBase.h:129
virtual void handleEndPausePeriod()
Definition: EthernetMac.cc:321
const b INTERFRAME_GAP_BITS
Definition: Ethernet.h:24
removed DscpReq Ipv4ControlInfo Ipv6ControlInfo up L3AddressInd DispatchProtocolReq L4PortInd Ipv4ControlInfo Ipv6ControlInfo down DispatchProtocolReq
Definition: IUdp-gates.txt:25
bool verifyCrcAndLength(Packet *packet)
Verify ethernet packet: check FCS and payload length.
Definition: EthernetMacBase.cc:395
unsigned long numFramesFromHL
Definition: EthernetMacBase.h:119
cGate * physOutGate
Definition: EthernetMacBase.h:97
@ ETHERTYPE_FLOW_CONTROL
Definition: EtherType_m.h:92
@ WAIT_IFG_STATE
Definition: EthernetMacBase.h:36
const Ptr< const Chunk > peekDataAt(b offset, b length=b(-1), int flags=0) const
Returns the designated data part as an immutable chunk in the current representation.
Definition: Packet.h:332
virtual void handleSelfMessage(cMessage *msg) override
Definition: EthernetMac.cc:76
simsignal_t packetDroppedSignal
Definition: Simsignals.cc:85
unsigned long numBytesReceivedOK
Definition: EthernetMacBase.h:118
unsigned long numPauseFramesSent
Definition: EthernetMacBase.h:126
double txrate
Definition: EthernetMacBase.h:69
removed DscpReq Ipv4ControlInfo Ipv6ControlInfo up L3AddressInd DispatchProtocolReq L4PortInd Ipv4ControlInfo Ipv6ControlInfo down PacketProtocolTag
Definition: IUdp-gates.txt:25
simtime_t lastTxFinishTime
Definition: EthernetMacBase.h:103
virtual void processMsgFromNetwork(EthernetSignalBase *signal)
Definition: EthernetMac.cc:175
@ PAUSE_STATE
Definition: EthernetMacBase.h:41
virtual bool dropFrameNotForUs(Packet *packet, const Ptr< const EthernetMacHeader > &frame)
Checks destination address and drops the frame when frame is not for us; returns true if frame is dro...
Definition: EthernetMacBase.cc:446
simsignal_t transmissionEndedSignal
Definition: Simsignals.cc:117
intscale< b, 1, 8 > B
Definition: Units.h:1168
virtual Packet * dup() const override
Definition: Packet.h:171
simsignal_t receptionEndedSignal
Definition: Simsignals.cc:119
virtual void processReceivedDataFrame(Packet *packet, const Ptr< const EthernetMacHeader > &frame)
Definition: EthernetMac.cc:336
#define EV_FIELD(...)
Definition: INETDefs.h:112
@ ETHERNET_CONTROL_PAUSE
Definition: EthernetControlFrame_m.h:55
simsignal_t transmissionStartedSignal
Definition: Simsignals.cc:116
virtual MacAddress getMacAddress()
Definition: EthernetMacBase.h:142
Packet * currentTxFrame
Currently transmitted frame if any.
Definition: MacProtocolBase.h:35
virtual void handleEndIFGPeriod()
Definition: EthernetMac.cc:252
virtual void readChannelParameters(bool errorWhenAsymmetric)
Calculates datarates, etc.
Definition: EthernetMacBase.cc:485
cMessage * endPauseTimer
Definition: EthernetMacBase.h:109
static const Protocol ethernetMac
Definition: Protocol.h:65
bool sendRawBytes
Definition: EthernetMacBase.h:86
virtual void scheduleEndPausePeriod(int pauseUnits)
Definition: EthernetMac.cc:390
static simsignal_t rxPkOkSignal
Definition: EthernetMacBase.h:128
int upperLayerInGateId
Gate ids.
Definition: MacProtocolBase.h:24
cMessage * endTxTimer
Definition: EthernetMacBase.h:107
INET_API InitStage INITSTAGE_LOCAL
Initialization of local state that don't use or affect other modules includes:
virtual void finish() override
Definition: EthernetMacBase.cc:566
bool connected
Definition: EthernetMacBase.h:89
void addPaddingAndSetFcs(Packet *packet, B requiredMinByteLength=MIN_ETHERNET_FRAME_BYTES) const
Inserts padding in front of FCS and calculate FCS.
Definition: EthernetMacBase.cc:661
value< int64_t, units::b > b
Definition: Units.h:1241
#define NUM_INIT_STAGES
Definition: InitStageRegistry.h:73
simsignal_t packetReceivedFromLowerSignal
Definition: Simsignals.cc:91
virtual void processAtHandleMessageFinished()
Definition: EthernetMacBase.cc:310
cGate * physInGate
Definition: EthernetMacBase.h:96
virtual void handleUpperPacket(Packet *pk) override
Definition: EthernetMac.cc:127
const B MAX_ETHERNET_FRAME_BYTES
Definition: Ethernet.h:21
unsigned long numDroppedBitError
Definition: EthernetMacBase.h:122
virtual void deleteCurrentTxFrame()
Definition: MacProtocolBase.cc:93
cMessage * endIfgTimer
Definition: EthernetMacBase.h:108
bool duplexMode
Definition: EthernetMacBase.h:91
@ INTERFACE_DOWN
Definition: Simsignals_m.h:72
virtual void initializeStatistics()
Definition: EthernetMacBase.cc:247
#define Enter_Method(...)
Definition: SelfDoc.h:71
bool channelsDiffer
Definition: EthernetMacBase.h:100
virtual Packet * dequeuePacket()
Definition: MacProtocolBase.cc:175
EthernetSignalBase * curTxSignal
Definition: EthernetMacBase.h:112
simsignal_t packetSentToUpperSignal
Definition: Simsignals.cc:87
virtual void handleEndTxPeriod()
Definition: EthernetMac.cc:268
unsigned long numPauseFramesRcvd
Definition: EthernetMacBase.h:125
virtual void startFrameTransmission()
Definition: EthernetMac.cc:90
simtime_t totalSuccessfulRxTime
Definition: EthernetMac.h:56
#define EV_ENDL
Definition: INETDefs.h:114
int pauseUnitsRequested
Definition: EthernetMacBase.h:104
virtual bool canDequeuePacket() const
Definition: MacProtocolBase.cc:170
MacTransmitState transmitState
Definition: EthernetMacBase.h:101
@ TRANSMITTING_STATE
Definition: EthernetMacBase.h:38
unsigned long numFramesReceivedOK
Definition: EthernetMacBase.h:116
unsigned long numFramesPassedToHL
Definition: EthernetMacBase.h:124
@ TX_IDLE_STATE
Definition: EthernetMacBase.h:35
INET_API InitStage INITSTAGE_LINK_LAYER
Initialization of link-layer protocols.
virtual void initializeFlags()
Definition: EthernetMacBase.cc:229
const EtherDescr * curEtherDescr
Definition: EthernetMacBase.h:88
virtual void decapsulate(Packet *packet)
Definition: EthernetMacBase.cc:387
void changeTransmissionState(MacTransmitState newState)
Definition: EthernetMacBase.cc:649
simsignal_t packetSentToLowerSignal
Definition: Simsignals.cc:90