INET Framework for OMNeT++/OMNEST
inet::NetfilterInfoHook Class Reference
Inheritance diagram for inet::NetfilterInfoHook:
inet::NetfilterBase::HookBase inet::INetfilter::IHook

Public Member Functions

virtual Result datagramPreRoutingHook (Packet *datagram) override
 called before a packet arriving from the network is routed More...
 
virtual Result datagramForwardHook (Packet *datagram) override
 called before a packet arriving from the network is delivered via the network More...
 
virtual Result datagramPostRoutingHook (Packet *datagram) override
 called before a packet is delivered via the network More...
 
virtual Result datagramLocalInHook (Packet *datagram) override
 called before a packet arriving from the network is delivered locally More...
 
virtual Result datagramLocalOutHook (Packet *datagram) override
 called before a packet arriving locally is delivered More...
 
- Public Member Functions inherited from inet::NetfilterBase::HookBase
virtual ~HookBase ()
 
void registeredTo (INetfilter *nf)
 
void unregisteredFrom (INetfilter *nf)
 
bool isRegisteredHook (INetfilter *nf)
 
- Public Member Functions inherited from inet::INetfilter::IHook
virtual ~IHook ()
 

Protected Member Functions

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

Protected Attributes

ModuleRefByPar< INetfilternetfilter
 
- Protected Attributes inherited from inet::NetfilterBase::HookBase
std::vector< INetfilter * > netfilters
 

Additional Inherited Members

- Public Types inherited from inet::INetfilter::IHook
enum  Type {
  PREROUTING, LOCALIN, FORWARD, POSTROUTING,
  LOCALOUT
}
 
enum  Result { ACCEPT, DROP, QUEUE, STOLEN }
 

Member Function Documentation

◆ datagramForwardHook()

INetfilter::IHook::Result inet::NetfilterInfoHook::datagramForwardHook ( Packet datagram)
overridevirtual

called before a packet arriving from the network is delivered via the network

Implements inet::INetfilter::IHook.

85 {
86  Enter_Method("datagramForwardHook");
87 
88  EV_INFO << "HOOK " << getFullPath() << ": FORWARD: packet=" << datagram->getName()
89  << " inIE=" << std::to_string(datagram->getTag<InterfaceInd>()->getInterfaceId())
90  << " outIE=" << std::to_string(datagram->getTag<InterfaceReq>()->getInterfaceId())
91  << " nextHop=" << datagram->getTag<NextHopAddressReq>()->getNextHopAddress()
92  << endl;
94 }

◆ datagramLocalInHook()

INetfilter::IHook::Result inet::NetfilterInfoHook::datagramLocalInHook ( Packet datagram)
overridevirtual

called before a packet arriving from the network is delivered locally

Implements inet::INetfilter::IHook.

110 {
111  Enter_Method("datagramLocalInHook");
112 
113  EV_INFO << "HOOK " << getFullPath() << ": LOCAL IN: packet=" << datagram->getName()
114  << " inIE=" << datagram->getTag<InterfaceInd>()->getInterfaceId()
115  << endl;
117 }

◆ datagramLocalOutHook()

INetfilter::IHook::Result inet::NetfilterInfoHook::datagramLocalOutHook ( Packet datagram)
overridevirtual

called before a packet arriving locally is delivered

Implements inet::INetfilter::IHook.

120 {
121  Enter_Method("datagramLocalOutHook");
122 
123  const auto& interfaceReq = datagram->findTag<InterfaceReq>();
124  EV_INFO << "HOOK " << getFullPath() << ": LOCAL OUT: packet=" << datagram->getName()
125  << " outIE=" << (interfaceReq ? std::to_string(interfaceReq->getInterfaceId()) : "undefined")
126  << endl;
128 }

◆ datagramPostRoutingHook()

INetfilter::IHook::Result inet::NetfilterInfoHook::datagramPostRoutingHook ( Packet datagram)
overridevirtual

called before a packet is delivered via the network

Implements inet::INetfilter::IHook.

97 {
98  Enter_Method("datagramPostRoutingHook");
99 
100  const auto& interfaceInd = datagram->findTag<InterfaceInd>();
101  EV_INFO << "HOOK " << getFullPath() << ": POSTROUTING packet=" << datagram->getName()
102  << " inIE=" << (interfaceInd ? std::to_string(interfaceInd->getInterfaceId()) : "undefined")
103  << " outIE=" << std::to_string(datagram->getTag<InterfaceReq>()->getInterfaceId())
104  << " nextHop=" << datagram->getTag<NextHopAddressReq>()->getNextHopAddress()
105  << endl;
107 }

◆ datagramPreRoutingHook()

INetfilter::IHook::Result inet::NetfilterInfoHook::datagramPreRoutingHook ( Packet datagram)
overridevirtual

called before a packet arriving from the network is routed

Implements inet::INetfilter::IHook.

74 {
75  Enter_Method("datagramPreRoutingHook");
76 
77  EV_INFO << "HOOK " << getFullPath() << ": PREROUTING packet=" << datagram->getName()
78  // TODO find out interface name
79  << " inIE=" << std::to_string(datagram->getTag<InterfaceInd>()->getInterfaceId())
80  << endl;
82 }

◆ finish()

void inet::NetfilterInfoHook::finish ( )
overrideprotectedvirtual
131 {
133  netfilter->unregisterHook(this);
134 }

◆ handleMessage()

void inet::NetfilterInfoHook::handleMessage ( cMessage *  msg)
overrideprotectedvirtual
69 {
70  throw cRuntimeError("This module can not receive messages");
71 }

◆ initialize()

void inet::NetfilterInfoHook::initialize ( int  stage)
overrideprotectedvirtual
59 {
60  cSimpleModule::initialize(stage);
61 
62  if (stage == INITSTAGE_NETWORK_LAYER) {
63  netfilter.reference(this, "networkProtocolModule", true);
64  netfilter->registerHook(0, this);
65  }
66 }

◆ numInitStages()

virtual int inet::NetfilterInfoHook::numInitStages ( ) const
inlineoverrideprotectedvirtual
25 { return NUM_INIT_STAGES; }

Member Data Documentation

◆ netfilter

ModuleRefByPar<INetfilter> inet::NetfilterInfoHook::netfilter
protected

Referenced by finish(), and initialize().


The documentation for this class was generated from the following file:
InterfaceReq
removed InterfaceReq
Definition: IUdp-gates.txt:11
inet::INITSTAGE_NETWORK_LAYER
INET_API InitStage INITSTAGE_NETWORK_LAYER
Initialization of network layer protocols.
inet::NetfilterBase::HookBase::isRegisteredHook
bool isRegisteredHook(INetfilter *nf)
Definition: INetfilter.h:125
inet::NetfilterInfoHook::netfilter
ModuleRefByPar< INetfilter > netfilter
Definition: NetfilterInfoHook.cc:21
NUM_INIT_STAGES
#define NUM_INIT_STAGES
Definition: InitStageRegistry.h:73
Enter_Method
#define Enter_Method(...)
Definition: SelfDoc.h:71
inet::INetfilter::IHook::ACCEPT
@ ACCEPT
allows the datagram to pass to the next hook
Definition: INetfilter.h:40