INET Framework for OMNeT++/OMNEST
inet::eigrp::EigrpSplitter Class Reference

#include <EigrpSplitter.h>

Inheritance diagram for inet::eigrp::EigrpSplitter:

Public Member Functions

 EigrpSplitter ()
 
virtual ~EigrpSplitter ()
 

Protected Member Functions

virtual void initialize (int stage) override
 
virtual void handleMessage (cMessage *msg) override
 
virtual int numInitStages () const override
 

Constructor & Destructor Documentation

◆ EigrpSplitter()

inet::eigrp::EigrpSplitter::EigrpSplitter ( )
24  {
25 }

◆ ~EigrpSplitter()

inet::eigrp::EigrpSplitter::~EigrpSplitter ( )
virtual
27  {
28 }

Member Function Documentation

◆ handleMessage()

void inet::eigrp::EigrpSplitter::handleMessage ( cMessage *  msg)
overrideprotectedvirtual
42 {
43  if (msg->isSelfMessage()) {
44  EV_DEBUG << "Self message received by EigrpSplitter" << endl;
45  delete msg;
46  }
47  else {
48  if (strcmp(msg->getArrivalGate()->getBaseName(), "splitterIn") == 0 || strcmp(msg->getArrivalGate()->getBaseName(), "splitter6In") == 0) {
49  this->send(msg, "ipOut"); // A message from ipv6pdm or ipv4pdm to outside
50  }
51  else if (strcmp(msg->getArrivalGate()->getBaseName(), "ipIn") == 0) {
52 
53  Packet *packet = check_and_cast<Packet *>(msg); // A message to ipv6pdm or ipv4pdm
54 
55  auto protocol = packet->getTag<PacketProtocolTag>()->getProtocol();
56  if (protocol != &Protocol::eigrp) { // non eigrp message
57  delete msg;
58  return;
59  }
60 
61  auto ipversion = packet->getTag<L3AddressInd>()->getSrcAddress().getType();
62  if (ipversion == inet::L3Address::IPv4) {
63  this->send(msg, "splitterOut");
64  }
65  else if (ipversion == inet::L3Address::IPv6) {
66  this->send(msg, "splitter6Out");
67  }
68  else {
69  delete msg;
70  }
71  }
72  }
73 }

◆ initialize()

void inet::eigrp::EigrpSplitter::initialize ( int  stage)
overrideprotectedvirtual
31 {
32  cSimpleModule::initialize(stage);
33 
34  if (stage == INITSTAGE_ROUTING_PROTOCOLS) {
35  registerService(Protocol::eigrp, gate("splitterIn"), gate("splitterOut"));
36  registerService(Protocol::eigrp, gate("splitter6In"), gate("splitter6Out"));
37  registerProtocol(Protocol::eigrp, gate("ipOut"), gate("ipIn"));
38  }
39 }

◆ numInitStages()

virtual int inet::eigrp::EigrpSplitter::numInitStages ( ) const
inlineoverrideprotectedvirtual
41 { return NUM_INIT_STAGES; }

The documentation for this class was generated from the following files:
protocol
removed DscpReq Ipv4ControlInfo Ipv6ControlInfo up L3AddressInd DispatchProtocolReq L4PortInd Ipv4ControlInfo Ipv6ControlInfo down protocol
Definition: IUdp-gates.txt:25
L3AddressInd
removed DscpReq Ipv4ControlInfo Ipv6ControlInfo up L3AddressInd L3AddressInd
Definition: IUdp-gates.txt:20
inet::Protocol::eigrp
static const Protocol eigrp
Definition: Protocol.h:63
inet::L3Address::IPv4
@ IPv4
Definition: L3Address.h:35
inet::registerService
void registerService(const Protocol &protocol, cGate *gate, ServicePrimitive servicePrimitive)
Registers a service primitive (SDU processing) at the given gate.
Definition: IProtocolRegistrationListener.cc:14
PacketProtocolTag
removed DscpReq Ipv4ControlInfo Ipv6ControlInfo up L3AddressInd DispatchProtocolReq L4PortInd Ipv4ControlInfo Ipv6ControlInfo down PacketProtocolTag
Definition: IUdp-gates.txt:25
NUM_INIT_STAGES
#define NUM_INIT_STAGES
Definition: InitStageRegistry.h:73
inet::L3Address::IPv6
@ IPv6
Definition: L3Address.h:36
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
inet::INITSTAGE_ROUTING_PROTOCOLS
INET_API InitStage INITSTAGE_ROUTING_PROTOCOLS
Initialization of routing protocols.