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

#include <UdpProtocolDissector.h>

Inheritance diagram for inet::UdpProtocolDissector:
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::UdpProtocolDissector::dissect ( Packet packet,
const Protocol protocol,
ICallback callback 
) const
overridevirtual

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

Implements inet::ProtocolDissector.

20 {
21  auto originalTrailerPopOffset = packet->getBackOffset();
22  auto udpHeaderOffset = packet->getFrontOffset();
23  auto header = packet->popAtFront<UdpHeader>();
24  callback.startProtocolDataUnit(&Protocol::udp);
25  bool isCorrectPacket = Udp::isCorrectPacket(packet, header);
26  if (!isCorrectPacket)
27  callback.markIncorrect();
28  callback.visitChunk(header, &Protocol::udp);
29  auto udpPayloadEndOffset = udpHeaderOffset + B(header->getTotalLengthField());
30  packet->setBackOffset(udpPayloadEndOffset);
31  auto dataProtocol = ProtocolGroup::udpprotocol.findProtocol(header->getDestPort());
32  if (dataProtocol == nullptr)
33  dataProtocol = ProtocolGroup::udpprotocol.findProtocol(header->getSrcPort());
34  callback.dissectPacket(packet, dataProtocol);
35  ASSERT(packet->getDataLength() == B(0));
36  packet->setFrontOffset(udpPayloadEndOffset);
37  packet->setBackOffset(originalTrailerPopOffset);
38  callback.endProtocolDataUnit(&Protocol::udp);
39 }

The documentation for this class was generated from the following files:
inet::ProtocolGroup::udpprotocol
static ProtocolGroup udpprotocol
Definition: ProtocolGroup.h:46
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::udp
static const Protocol udp
Definition: Protocol.h:117
inet::Udp::isCorrectPacket
static bool isCorrectPacket(Packet *packet, const Ptr< const UdpHeader > &udpHeader)
Definition: Udp.cc:1352