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

Loopback interface implementation. More...

#include <Loopback.h>

Inheritance diagram for inet::Loopback:
inet::MacProtocolBase inet::LayeredProtocolBase inet::OperationalBase inet::OperationalMixin< cSimpleModule > inet::ILifecycle

Public Member Functions

 Loopback ()
 
virtual ~Loopback ()
 
- Public Member Functions inherited from inet::OperationalMixin< cSimpleModule >
virtual ~OperationalMixin ()
 }@ More...
 
- Public Member Functions inherited from inet::ILifecycle
virtual ~ILifecycle ()
 

Protected Member Functions

virtual void configureNetworkInterface () override
 
virtual int numInitStages () const override
 
virtual void initialize (int stage) override
 
virtual void handleUpperPacket (Packet *packet) override
 
virtual void refreshDisplay () const override
 
- Protected Member Functions inherited from inet::MacProtocolBase
 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...
 
virtual void receiveSignal (cComponent *source, simsignal_t signalID, cObject *obj, cObject *details) override
 
virtual void handleStartOperation (LifecycleOperation *operation) override
 
virtual void handleStopOperation (LifecycleOperation *operation) override
 
virtual void handleCrashOperation (LifecycleOperation *operation) override
 
queueing::IPacketQueuegetQueue (cGate *gate) const
 
virtual bool canDequeuePacket () const
 
virtual PacketdequeuePacket ()
 
- Protected Member Functions inherited from inet::LayeredProtocolBase
virtual void handleMessageWhenUp (cMessage *message) override
 
virtual void handleSelfMessage (cMessage *message)
 
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)
 
- 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 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

long numSent = 0
 
long numRcvdOK = 0
 
- Protected Attributes inherited from inet::MacProtocolBase
int upperLayerInGateId = -1
 Gate ids. More...
 
int upperLayerOutGateId = -1
 
int lowerLayerInGateId = -1
 
int lowerLayerOutGateId = -1
 
opp_component_ptr< NetworkInterfacenetworkInterface
 
opp_component_ptr< cModule > hostModule
 
PacketcurrentTxFrame = nullptr
 Currently transmitted frame if any. More...
 
opp_component_ptr< queueing::IPacketQueuetxQueue
 Messages received from upper layer and to be transmitted later. More...
 
- Protected Attributes inherited from inet::OperationalMixin< cSimpleModule >
State operationalState
 
simtime_t lastChange
 
Operation activeOperation
 
cMessage * activeOperationTimeout
 
cMessage * activeOperationExtraTimer
 

Additional Inherited Members

- Protected Types inherited from inet::OperationalMixin< cSimpleModule >
enum  State
 

Detailed Description

Loopback interface implementation.

Constructor & Destructor Documentation

◆ Loopback()

inet::Loopback::Loopback ( )
inline
31 {}

◆ ~Loopback()

inet::Loopback::~Loopback ( )
virtual
26 {
27 }

Member Function Documentation

◆ configureNetworkInterface()

void inet::Loopback::configureNetworkInterface ( )
overrideprotectedvirtual

Implements inet::MacProtocolBase.

42 {
43  // generate a link-layer address to be used as interface token for IPv6
44 // InterfaceToken token(0, getSimulation()->getUniqueNumber(), 64);
45 // ie->setInterfaceToken(token);
46 
47  // capabilities
48  networkInterface->setMtu(par("mtu"));
49  networkInterface->setLoopback(true);
50 }

◆ handleUpperPacket()

void inet::Loopback::handleUpperPacket ( Packet packet)
overrideprotectedvirtual

Reimplemented from inet::LayeredProtocolBase.

53 {
54  EV << "Received " << packet << " for transmission\n";
55  ASSERT(packet->hasBitError() == false);
56 
57  // pass up payload
58  numRcvdOK++;
59  numSent++;
60  auto protocol = packet->getTag<PacketProtocolTag>()->getProtocol();
61  packet->clearTags();
62  packet->addTag<DispatchProtocolReq>()->setProtocol(protocol);
63  packet->addTag<PacketProtocolTag>()->setProtocol(protocol);
64  packet->addTag<InterfaceInd>()->setInterfaceId(networkInterface->getInterfaceId());
65  emit(packetSentToUpperSignal, packet);
66  send(packet, upperLayerOutGateId);
67 }

◆ initialize()

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

Reimplemented from inet::MacProtocolBase.

30 {
32  if (stage == INITSTAGE_LOCAL) {
33  lowerLayerInGateId = -1;
35  numSent = numRcvdOK = 0;
36  WATCH(numSent);
37  WATCH(numRcvdOK);
38  }
39 }

◆ numInitStages()

virtual int inet::Loopback::numInitStages ( ) const
inlineoverrideprotectedvirtual
35 { return NUM_INIT_STAGES; }

◆ refreshDisplay()

void inet::Loopback::refreshDisplay ( ) const
overrideprotectedvirtual
70 {
72 
73  /* TODO find solution for displaying IPv4 address without dependence on IPv4 or IPv6
74  Ipv4Address addr = networkInterface->getProtocolData<Ipv4InterfaceData>()->getIPAddress();
75  sprintf(buf, "%s / %s\nrcv:%ld snt:%ld", addr.isUnspecified()?"-":addr.str().c_str(), datarateText, numRcvdOK, numSent);
76  */
77  char buf[80];
78  sprintf(buf, "rcv:%ld snt:%ld", numRcvdOK, numSent);
79 
80  getDisplayString().setTagArg("t", 0, buf);
81 }

Member Data Documentation

◆ numRcvdOK

long inet::Loopback::numRcvdOK = 0
protected

◆ numSent

long inet::Loopback::numSent = 0
protected

The documentation for this class was generated from the following files:
inet::MacProtocolBase::networkInterface
opp_component_ptr< NetworkInterface > networkInterface
Definition: MacProtocolBase.h:30
protocol
removed DscpReq Ipv4ControlInfo Ipv6ControlInfo up L3AddressInd DispatchProtocolReq L4PortInd Ipv4ControlInfo Ipv6ControlInfo down protocol
Definition: IUdp-gates.txt:25
inet::MacProtocolBase::upperLayerOutGateId
int upperLayerOutGateId
Definition: MacProtocolBase.h:25
DispatchProtocolReq
removed DscpReq Ipv4ControlInfo Ipv6ControlInfo up L3AddressInd DispatchProtocolReq L4PortInd Ipv4ControlInfo Ipv6ControlInfo down DispatchProtocolReq
Definition: IUdp-gates.txt:25
PacketProtocolTag
removed DscpReq Ipv4ControlInfo Ipv6ControlInfo up L3AddressInd DispatchProtocolReq L4PortInd Ipv4ControlInfo Ipv6ControlInfo down PacketProtocolTag
Definition: IUdp-gates.txt:25
inet::MacProtocolBase::lowerLayerInGateId
int lowerLayerInGateId
Definition: MacProtocolBase.h:26
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::Loopback::numSent
long numSent
Definition: Loopback.h:24
inet::MacProtocolBase::initialize
virtual void initialize(int stage) override
Definition: MacProtocolBase.cc:37
inet::MacProtocolBase::lowerLayerOutGateId
int lowerLayerOutGateId
Definition: MacProtocolBase.h:27
inet::packetSentToUpperSignal
simsignal_t packetSentToUpperSignal
Definition: Simsignals.cc:87
inet::OperationalMixin< cSimpleModule >::refreshDisplay
virtual void refreshDisplay() const override
Definition: OperationalMixinImpl.h:200
inet::Loopback::numRcvdOK
long numRcvdOK
Definition: Loopback.h:25