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

Consumes and prints packets received from the IP module. More...

#include <IpvxTrafSink.h>

Inheritance diagram for inet::IpvxTrafSink:
inet::ApplicationBase inet::OperationalBase inet::OperationalMixin< cSimpleModule > inet::ILifecycle

Protected Member Functions

virtual void printPacket (Packet *msg)
 
virtual void processPacket (Packet *msg)
 
virtual void initialize (int stage) override
 
virtual int numInitStages () const override
 
virtual void handleMessageWhenUp (cMessage *msg) override
 
virtual void refreshDisplay () const override
 
virtual void handleStartOperation (LifecycleOperation *operation) override
 
virtual void handleStopOperation (LifecycleOperation *operation) override
 
virtual void handleCrashOperation (LifecycleOperation *operation) override
 
- Protected Member Functions inherited from inet::ApplicationBase
virtual bool isInitializeStage (int stage) const override
 
virtual bool isModuleStartStage (int stage) const override
 
virtual bool isModuleStopStage (int stage) const override
 
- 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

int numReceived
 
- 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::ApplicationBase
 ApplicationBase ()
 
- 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

Consumes and prints packets received from the IP module.

See NED for more info.

Member Function Documentation

◆ handleCrashOperation()

virtual void inet::IpvxTrafSink::handleCrashOperation ( LifecycleOperation operation)
inlineoverrideprotectedvirtual

◆ handleMessageWhenUp()

void inet::IpvxTrafSink::handleMessageWhenUp ( cMessage *  msg)
overrideprotectedvirtual

Implements inet::OperationalMixin< cSimpleModule >.

46 {
47  processPacket(check_and_cast<Packet *>(msg));
48 }

◆ handleStartOperation()

virtual void inet::IpvxTrafSink::handleStartOperation ( LifecycleOperation operation)
inlineoverrideprotectedvirtual

◆ handleStopOperation()

virtual void inet::IpvxTrafSink::handleStopOperation ( LifecycleOperation operation)
inlineoverrideprotectedvirtual

◆ initialize()

void inet::IpvxTrafSink::initialize ( int  stage)
overrideprotectedvirtual

Reimplemented from inet::OperationalMixin< cSimpleModule >.

23 {
25 
26  if (stage == INITSTAGE_LOCAL) {
27  numReceived = 0;
28  WATCH(numReceived);
29  }
30  else if (stage == INITSTAGE_APPLICATION_LAYER) {
31  int protocolId = par("protocol");
32  if (protocolId < 143 || protocolId > 254)
33  throw cRuntimeError("invalid protocol id %d, accepts only between 143 and 254", protocolId);
35  if (!protocol) {
36  char *buff = new char[40];
37  sprintf(buff, "prot_%d", protocolId);
38  protocol = new Protocol(buff, buff);
40  }
41  registerProtocol(*protocol, gate("ipOut"), gate("ipIn"));
42  }
43 }

◆ numInitStages()

virtual int inet::IpvxTrafSink::numInitStages ( ) const
inlineoverrideprotectedvirtual
32 { return NUM_INIT_STAGES; }

◆ printPacket()

void inet::IpvxTrafSink::printPacket ( Packet msg)
protectedvirtual
60 {
61  L3Address src, dest;
62  int protocol = -1;
63  auto ctrl = msg->getControlInfo();
64  if (ctrl != nullptr) {
66  }
67  Ptr<const L3AddressTagBase> addresses = msg->findTag<L3AddressReq>();
68  if (addresses == nullptr)
69  addresses = msg->findTag<L3AddressInd>();
70  if (addresses != nullptr) {
71  src = addresses->getSrcAddress();
72  dest = addresses->getDestAddress();
73  }
74 
75  EV_INFO << msg << endl;
76  EV_INFO << "Payload length: " << msg->getByteLength() << " bytes" << endl;
77 
78  if (ctrl != nullptr)
79  EV_INFO << "src: " << src << " dest: " << dest << " protocol=" << protocol << endl;
80 }

Referenced by processPacket().

◆ processPacket()

void inet::IpvxTrafSink::processPacket ( Packet msg)
protectedvirtual
83 {
84  emit(packetReceivedSignal, msg);
85  EV_INFO << "Received packet: ";
86  printPacket(msg);
87  delete msg;
88  numReceived++;
89 }

Referenced by handleMessageWhenUp().

◆ refreshDisplay()

void inet::IpvxTrafSink::refreshDisplay ( ) const
overrideprotectedvirtual
51 {
53 
54  char buf[32];
55  sprintf(buf, "rcvd: %d pks", numReceived);
56  getDisplayString().setTagArg("t", 0, buf);
57 }

Member Data Documentation

◆ numReceived

int inet::IpvxTrafSink::numReceived
protected

The documentation for this class was generated from the following files:
inet::ProtocolGroup::getProtocolNumber
int getProtocolNumber(const Protocol *protocol) const
Definition: ProtocolGroup.cc:46
protocol
removed DscpReq Ipv4ControlInfo Ipv6ControlInfo up L3AddressInd DispatchProtocolReq L4PortInd Ipv4ControlInfo Ipv6ControlInfo down protocol
Definition: IUdp-gates.txt:25
inet::OperationalMixin< cSimpleModule >::initialize
virtual void initialize(int stage) override
Definition: OperationalMixinImpl.h:26
inet::ProtocolGroup::findProtocol
const Protocol * findProtocol(int protocolNumber) const
Definition: ProtocolGroup.cc:25
L3AddressInd
removed DscpReq Ipv4ControlInfo Ipv6ControlInfo up L3AddressInd L3AddressInd
Definition: IUdp-gates.txt:20
inet::ProtocolGroup::addProtocol
void addProtocol(int protocolId, const Protocol *protocol)
Definition: ProtocolGroup.cc:55
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::packetReceivedSignal
simsignal_t packetReceivedSignal
Definition: Simsignals.cc:97
inet::IpvxTrafSink::processPacket
virtual void processPacket(Packet *msg)
Definition: IpvxTrafSink.cc:82
inet::INITSTAGE_LOCAL
INET_API InitStage INITSTAGE_LOCAL
Initialization of local state that don't use or affect other modules includes:
NUM_INIT_STAGES
#define NUM_INIT_STAGES
Definition: InitStageRegistry.h:73
inet::IpvxTrafSink::printPacket
virtual void printPacket(Packet *msg)
Definition: IpvxTrafSink.cc:59
inet::IpvxTrafSink::numReceived
int numReceived
Definition: IpvxTrafSink.h:25
inet::INITSTAGE_APPLICATION_LAYER
INET_API InitStage INITSTAGE_APPLICATION_LAYER
Initialization of applications.
inet::ProtocolGroup::ipprotocol
static ProtocolGroup ipprotocol
Definition: ProtocolGroup.h:42
inet::OperationalMixin< cSimpleModule >::refreshDisplay
virtual void refreshDisplay() const override
Definition: OperationalMixinImpl.h:200
inet::registerProtocol
void registerProtocol(const Protocol &protocol, cGate *gate, ServicePrimitive servicePrimitive)
Registers a protocol primitive (PDU processing) at the given gate.
Definition: IProtocolRegistrationListener.cc:83