INET Framework for OMNeT++/OMNEST
inet::CsmaCaMacProtocolDissector Class Reference

#include <CsmaCaMacProtocolDissector.h>

Inheritance diagram for inet::CsmaCaMacProtocolDissector:
inet::ProtocolDissector

Public Member Functions

virtual void dissect (Packet *packet, const Protocol *protocol, ICallback &callback) const override
 Dissects the packet according to the protocol implemented by this ProtocolDissector. More...
 

Member Function Documentation

◆ dissect()

void inet::CsmaCaMacProtocolDissector::dissect ( Packet packet,
const Protocol protocol,
ICallback callback 
) const
overridevirtual

Dissects the packet according to the protocol implemented by this ProtocolDissector.

Implements inet::ProtocolDissector.

19 {
20  auto header = packet->popAtFront<CsmaCaMacHeader>();
21  auto trailer = packet->popAtBack<CsmaCaMacTrailer>(B(4));
22  callback.startProtocolDataUnit(&Protocol::csmaCaMac);
23  callback.visitChunk(header, &Protocol::csmaCaMac);
24  if (auto dataHeader = dynamicPtrCast<const CsmaCaMacDataHeader>(header)) {
25  auto payloadProtocol = ProtocolGroup::ethertype.findProtocol(dataHeader->getNetworkProtocol());
26  callback.dissectPacket(packet, payloadProtocol);
27  }
28  ASSERT(packet->getDataLength() == B(0));
29  callback.visitChunk(trailer, &Protocol::csmaCaMac);
30  callback.endProtocolDataUnit(&Protocol::csmaCaMac);
31 }

The documentation for this class was generated from the following files:
inet::ProtocolGroup::findProtocol
const Protocol * findProtocol(int protocolNumber) const
Definition: ProtocolGroup.cc:25
inet::units::units::B
intscale< b, 1, 8 > B
Definition: Units.h:1168
inet::Protocol::csmaCaMac
static const Protocol csmaCaMac
Definition: Protocol.h:124
inet::ProtocolGroup::ethertype
static ProtocolGroup ethertype
Definition: ProtocolGroup.h:40