|
INET Framework for OMNeT++/OMNEST
|
Wiseroute is a simple loop-free routing algorithm that builds a routing tree from a central network point.
More...
#include <WiseRoute.h>
|
| | WiseRoute () |
| |
| virtual int | numInitStages () const override |
| | Initialization of the module and some variables. More...
|
| |
| virtual void | initialize (int) override |
| |
| virtual void | finish () override |
| |
| virtual | ~WiseRoute () |
| |
| const Protocol & | getProtocol () const override |
| |
| virtual void | handleStartOperation (LifecycleOperation *operation) override |
| |
| virtual void | handleStopOperation (LifecycleOperation *operation) override |
| |
| virtual void | handleCrashOperation (LifecycleOperation *operation) override |
| |
| virtual void | handleRegisterService (const Protocol &protocol, cGate *gate, ServicePrimitive servicePrimitive) override |
| |
| virtual void | handleRegisterProtocol (const Protocol &protocol, cGate *gate, ServicePrimitive servicePrimitive) override |
| |
| virtual | ~OperationalMixin () |
| | }@ More...
|
| |
| virtual | ~ILifecycle () |
| |
| virtual void | handleRegisterServiceGroup (const ProtocolGroup &protocolGroup, cGate *gate, ServicePrimitive servicePrimitive) override |
| |
| virtual void | handleRegisterProtocolGroup (const ProtocolGroup &protocolGroup, cGate *gate, ServicePrimitive servicePrimitive) override |
| |
| virtual void | handleRegisterAnyService (cGate *gate, ServicePrimitive servicePrimitive) override |
| |
| virtual void | handleRegisterAnyProtocol (cGate *gate, ServicePrimitive servicePrimitive) override |
| |
| virtual | ~INetworkProtocol () |
| |
|
|
Functions to redefine by the programmer
These are the functions provided to add own functionality to your modules. These functions are called whenever a self message or a data message from the upper or lower layer arrives respectively.
|
| virtual void | handleUpperPacket (Packet *packet) override |
| | Handle messages from upper layer. More...
|
| |
| virtual void | handleLowerPacket (Packet *packet) override |
| | Handle messages from lower layer. More...
|
| |
| virtual void | handleSelfMessage (cMessage *msg) override |
| | Handle self messages. More...
|
| |
| virtual void | updateRouteTable (const tRouteTable::key_type &origin, const L3Address &lastHop, double rssi, double ber) |
| | Update routing table. More...
|
| |
| void | decapsulate (Packet *packet) |
| | Decapsulate a message and delete original msg. More...
|
| |
| floodTypes | updateFloodTable (bool isFlood, const tFloodTable::key_type &srcAddr, const tFloodTable::key_type &destAddr, unsigned long seqNum) |
| | update flood table. More...
|
| |
| tFloodTable::key_type | getRoute (const tFloodTable::key_type &destAddr, bool iAmOrigin=false) const |
| | find a route to destination address. More...
|
| |
| virtual void | setDownControlInfo (Packet *const pMsg, const MacAddress &pDestAddr) |
| | Attaches a "control info" (NetwToMac) structure (object) to the message pMsg. More...
|
| |
| | NetworkProtocolBase () |
| |
| virtual | ~NetworkProtocolBase () |
| |
| virtual void | sendUp (cMessage *message) |
| |
| virtual void | sendDown (cMessage *message, int interfaceId=-1) |
| |
| 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 | handleUpperCommand (cMessage *msg) override |
| |
| virtual void | handleMessageWhenUp (cMessage *message) override |
| |
| virtual void | handleUpperMessage (cMessage *message) |
| |
| virtual void | handleLowerMessage (cMessage *message) |
| |
| virtual void | handleLowerCommand (cMessage *message) |
| |
| 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 () |
| |
Wiseroute is a simple loop-free routing algorithm that builds a routing tree from a central network point.
It is especially useful for wireless sensor networks and convergecast traffic, hence its name (Wireless Sensors Routing). The sink (the device at the center of the network) broadcasts a route building message. Each network node that receives it selects the sink as parent in the routing tree, and rebroadcasts the route building message. This procedure maximizes the probability that all network nodes can join the network, and avoids loops.
- Author
- Jerome Rousselot
◆ floodTypes
◆ tFloodTable
◆ tRouteTable
◆ tRouteTableEntry
◆ floodTypes
| Enumerator |
|---|
| NOTAFLOOD | |
| FORWARD | |
| FORME | |
| DUPLICATE | |
◆ messageKinds
| Enumerator |
|---|
| SEND_ROUTE_FLOOD_TIMER | |
◆ WiseRoute() [1/2]
| inet::WiseRoute::WiseRoute |
( |
const WiseRoute & |
| ) |
|
|
private |
Copy constructor is not allowed.
◆ WiseRoute() [2/2]
| inet::WiseRoute::WiseRoute |
( |
| ) |
|
|
inline |
◆ ~WiseRoute()
| inet::WiseRoute::~WiseRoute |
( |
| ) |
|
|
virtual |
◆ decapsulate()
| void inet::WiseRoute::decapsulate |
( |
Packet * |
packet | ) |
|
|
protected |
Decapsulate a message and delete original msg.
377 auto posEnd =
floodTable.upper_bound(srcAddr);
379 while (pos != posEnd) {
380 if (seqNum == pos->second)
384 floodTable.insert(make_pair(srcAddr, seqNum));
◆ finish()
| void inet::WiseRoute::finish |
( |
| ) |
|
|
overridevirtual |
331 newEntry.rssi = rssi;
◆ getProtocol()
| const Protocol& inet::WiseRoute::getProtocol |
( |
| ) |
const |
|
inlineoverridevirtual |
◆ getRoute()
| WiseRoute::tFloodTable::key_type inet::WiseRoute::getRoute |
( |
const tFloodTable::key_type & |
destAddr, |
|
|
bool |
iAmOrigin = false |
|
) |
| const |
|
protected |
find a route to destination address.
◆ handleCrashOperation()
◆ handleLowerPacket()
| void inet::WiseRoute::handleLowerPacket |
( |
Packet * |
packet | ) |
|
|
overrideprotectedvirtual |
Handle messages from lower layer.
Reimplemented from inet::LayeredProtocolBase.
156 const cObject *pCtrlInfo =
nullptr;
158 if (wiseRouteHeader->getHeaderKind() ==
ROUTE_FLOOD)
169 packetCopy = packet->dup();
170 wiseRouteHeader->setSourceAddress(
myNetwAddr);
171 pCtrlInfo = packet->removeControlInfo();
172 wiseRouteHeader->setNbHops(wiseRouteHeader->getNbHops() + 1);
173 auto p =
new Packet(packet->getName());
174 packet->popAtFront<WiseRouteHeader>();
175 p->insertAtBack(packet->peekDataAt(
b(0), packet->getDataLength()));
176 wiseRouteHeader->setPayloadLengthField(p->getDataLength());
177 p->insertAtFront(wiseRouteHeader);
186 if (wiseRouteHeader->getHeaderKind() ==
DATA) {
199 wiseRouteHeader->setSourceAddress(
myNetwAddr);
200 pCtrlInfo = packet->removeControlInfo();
201 wiseRouteHeader->setNbHops(wiseRouteHeader->getNbHops() + 1);
202 auto p =
new Packet(packet->getName());
203 packet->popAtFront<WiseRouteHeader>();
204 p->insertAtBack(packet->peekDataAt(
b(0), packet->getDataLength()));
205 wiseRouteHeader->setPayloadLengthField(p->getDataLength());
206 p->insertAtFront(wiseRouteHeader);
213 L3Address nextHop =
getRoute(finalDestAddr);
214 if (nextHop.isBroadcast()) {
216 nextHop = finalDestAddr;
219 wiseRouteHeader->setSourceAddress(
myNetwAddr);
220 wiseRouteHeader->setDestinationAddress(nextHop);
221 pCtrlInfo = packet->removeControlInfo();
222 MacAddress nextHopMacAddr =
arp->resolveL3Address(nextHop,
nullptr);
223 if (nextHopMacAddr.isUnspecified())
224 throw cRuntimeError(
"Cannot immediately resolve MAC address. Please configure a GlobalArp module.");
225 wiseRouteHeader->setNbHops(wiseRouteHeader->getNbHops() + 1);
226 auto p =
new Packet(packet->getName());
227 packet->popAtFront<WiseRouteHeader>();
228 p->insertAtBack(packet->peekDataAt(
b(0), packet->getDataLength()));
229 wiseRouteHeader->setPayloadLengthField(p->getDataLength());
230 p->insertAtFront(wiseRouteHeader);
238 if (pCtrlInfo !=
nullptr)
245 L3Address finalDestAddr;
246 L3Address nextHopAddr;
247 MacAddress nextHopMacAddr;
248 auto pkt = makeShared<WiseRouteHeader>();
252 const auto& addrTag = packet->findTag<L3AddressReq>();
253 if (addrTag ==
nullptr) {
254 EV <<
"WiseRoute warning: Application layer did not specifiy a destination L3 address\n"
255 <<
"\tusing broadcast address instead\n";
◆ handleSelfMessage()
| void inet::WiseRoute::handleSelfMessage |
( |
cMessage * |
msg | ) |
|
|
overrideprotectedvirtual |
Handle self messages.
Reimplemented from inet::LayeredProtocolBase.
131 EV <<
"WiseRoute - handleSelfMessage: got unexpected message of kind " << msg->getKind() << endl;
138 auto wiseRouteHeader = staticPtrCast<WiseRouteHeader>(packet->peekAtFront<WiseRouteHeader>()->dupShared());
139 const L3Address& finalDestAddr = wiseRouteHeader->getFinalDestAddr();
140 const L3Address& initialSrcAddr = wiseRouteHeader->getInitialSrcAddr();
141 const L3Address& srcAddr = wiseRouteHeader->getSourceAddress();
143 EV_ERROR <<
"Getting RSSI and BER from the received frame is not yet implemented. Using default values.\n";
148 wiseRouteHeader->getSeqNum());
◆ handleStartOperation()
◆ handleStopOperation()
◆ handleUpperPacket()
| void inet::WiseRoute::handleUpperPacket |
( |
Packet * |
packet | ) |
|
|
overrideprotectedvirtual |
Handle messages from upper layer.
Reimplemented from inet::LayeredProtocolBase.
260 : CInfo removed, netw addr=
" << destAddr << endl;
261 finalDestAddr = destAddr;
264 pkt->setFinalDestAddr(finalDestAddr);
265 pkt->setInitialSrcAddr(myNetwAddr);
266 pkt->setSourceAddress(myNetwAddr);
268 pkt->setProtocolId(static_cast<IpProtocolId>(ProtocolGroup::ipprotocol.getProtocolNumber(packet->getTag<PacketProtocolTag>()->getProtocol())));
270 if (finalDestAddr.isBroadcast())
271 nextHopAddr = myNetwAddr.getAddressType()->getBroadcastAddress();
273 nextHopAddr = getRoute(finalDestAddr, true);
274 pkt->setDestinationAddress(nextHopAddr);
275 if (nextHopAddr.isBroadcast()) {
277 nextHopMacAddr = MacAddress::BROADCAST_ADDRESS;
280 // record flood in flood table
281 floodTable.insert(make_pair(myNetwAddr, floodSeqNumber));
282 pkt->setSeqNum(floodSeqNumber);
284 nbGetRouteFailures++;
289 nextHopMacAddr = arp->resolveL3Address(nextHopAddr, nullptr); // FIXME interface entry pointer needed
290 if (nextHopMacAddr.isUnspecified())
291 throw cRuntimeError("Cannot immediately resolve MAC address. Please configure a GlobalArp module.
");
293 pkt->setPayloadLengthField(packet->getDataLength());
294 pkt->setHeaderKind(DATA);
295 packet->insertAtFront(pkt);
296 setDownControlInfo(packet, nextHopMacAddr);
301 void WiseRoute::finish()
303 recordScalar("nbDataPacketsForwarded
", nbDataPacketsForwarded);
315 recordScalar("meanNbHops
", (double)nbHops / (double)nbDataPacketsReceived);
◆ initialize()
| void inet::WiseRoute::initialize |
( |
int |
stage | ) |
|
|
overridevirtual |
Reimplemented from inet::NetworkProtocolBase.
85 L3AddressResolver addressResolver;
86 sinkAddress = addressResolver.resolve(par(
"sinkAddress"));
88 IInterfaceTable *
interfaceTable = getModuleFromPar<IInterfaceTable>(par(
"interfaceTableModule"),
this);
92 throw cRuntimeError(
"No non-loopback interface found!");
109 auto pkt = makeShared<WiseRouteHeader>();
113 pkt->setFinalDestAddr(broadcastAddress);
115 pkt->setDestinationAddress(broadcastAddress);
◆ numInitStages()
| virtual int inet::WiseRoute::numInitStages |
( |
| ) |
const |
|
inlineoverridevirtual |
Initialization of the module and some variables.
◆ operator=()
Assignment operator is not allowed.
◆ setDownControlInfo()
| void inet::WiseRoute::setDownControlInfo |
( |
Packet *const |
pMsg, |
|
|
const MacAddress & |
pDestAddr |
|
) |
| |
|
protectedvirtual |
Attaches a "control info" (NetwToMac) structure (object) to the message pMsg.
Attaches a "control info" structure (object) to the down message pMsg.
This is most useful when passing packets between protocol layers of a protocol stack, the control info will contain the destination MAC address.
The "control info" object will be deleted when the message is deleted. Only one "control info" structure can be attached (the second setL3ToL2ControlInfo() call throws an error).
- Parameters
-
| pMsg | The message where the "control info" shall be attached. |
| pDestAddr | The MAC address of the message receiver. |
◆ updateFloodTable()
| WiseRoute::floodTypes inet::WiseRoute::updateFloodTable |
( |
bool |
isFlood, |
|
|
const tFloodTable::key_type & |
srcAddr, |
|
|
const tFloodTable::key_type & |
destAddr, |
|
|
unsigned long |
seqNum |
|
) |
| |
|
protected |
update flood table.
returns detected flood type (general or unicast flood to forward, duplicate flood to delete, unicast flood to me
400 tRouteTable::const_iterator pos =
routeTable.find(destAddr);
409 pMsg->addTagIfAbsent<MacAddressReq>()->setDestAddress(pDestAddr);
◆ updateRouteTable()
| void inet::WiseRoute::updateRouteTable |
( |
const tRouteTable::key_type & |
origin, |
|
|
const L3Address & |
lastHop, |
|
|
double |
rssi, |
|
|
double |
ber |
|
) |
| |
|
protectedvirtual |
Update routing table.
The tuple provided in argument gives the next hop address to the origin. The table is updated only if the RSSI value is above the threshold.
357 auto wiseRouteHeader = packet->popAtFront<WiseRouteHeader>();
358 auto payloadLength = wiseRouteHeader->getPayloadLengthField();
359 if (packet->getDataLength() < payloadLength) {
360 throw cRuntimeError(
"Data error: illegal payload length");
362 if (packet->getDataLength() > payloadLength)
363 packet->setBackOffset(packet->getFrontOffset() + payloadLength);
364 auto payloadProtocol = wiseRouteHeader->getProtocol();
365 packet->addTagIfAbsent<NetworkProtocolInd>()->setProtocol(&
getProtocol());
366 packet->addTagIfAbsent<NetworkProtocolInd>()->setNetworkProtocolHeader(wiseRouteHeader);
369 packet->addTagIfAbsent<
L3AddressInd>()->setSrcAddress(wiseRouteHeader->getInitialSrcAddr());
◆ allReceivedBER
| cOutVector inet::WiseRoute::allReceivedBER |
|
protected |
◆ allReceivedRSSI
| cOutVector inet::WiseRoute::allReceivedRSSI |
|
protected |
◆ arp
◆ floodSeqNumber
| unsigned long inet::WiseRoute::floodSeqNumber = 0 |
|
protected |
◆ floodTable
◆ headerLength
| int inet::WiseRoute::headerLength = 0 |
|
protected |
Length of the NetwPkt header Read from omnetpp.ini.
◆ myNetwAddr
◆ nbDataPacketsForwarded
| long inet::WiseRoute::nbDataPacketsForwarded = 0 |
|
protected |
◆ nbDataPacketsReceived
| long inet::WiseRoute::nbDataPacketsReceived = 0 |
|
protected |
◆ nbDataPacketsSent
| long inet::WiseRoute::nbDataPacketsSent = 0 |
|
protected |
◆ nbDuplicatedFloodsReceived
| long inet::WiseRoute::nbDuplicatedFloodsReceived = 0 |
|
protected |
◆ nbFloodsSent
| long inet::WiseRoute::nbFloodsSent = 0 |
|
protected |
◆ nbGetRouteFailures
| long inet::WiseRoute::nbGetRouteFailures = 0 |
|
protected |
◆ nbHops
| long inet::WiseRoute::nbHops = 0 |
|
protected |
◆ nbPureUnicastForwarded
| long inet::WiseRoute::nbPureUnicastForwarded = 0 |
|
protected |
◆ nbPureUnicastSent
| long inet::WiseRoute::nbPureUnicastSent = 0 |
|
protected |
◆ nbRouteFloodsReceived
| long inet::WiseRoute::nbRouteFloodsReceived = 0 |
|
protected |
◆ nbRouteFloodsSent
| long inet::WiseRoute::nbRouteFloodsSent = 0 |
|
protected |
◆ nbRoutesRecorded
| long inet::WiseRoute::nbRoutesRecorded = 0 |
|
protected |
◆ nbUnicastFloodForwarded
| long inet::WiseRoute::nbUnicastFloodForwarded = 0 |
|
protected |
◆ nextHopSelectionForSink
| cOutVector inet::WiseRoute::nextHopSelectionForSink |
|
protected |
◆ receivedBER
| cOutVector inet::WiseRoute::receivedBER |
|
protected |
◆ receivedRSSI
| cOutVector inet::WiseRoute::receivedRSSI |
|
protected |
◆ routeBER
| cOutVector inet::WiseRoute::routeBER |
|
protected |
◆ routeFloodsInterval
| double inet::WiseRoute::routeFloodsInterval = 0.0 |
|
protected |
Interval [seconds] between two route floods.
A route flood is a simple flood from which other nodes can extract routing (next hop) information.
◆ routeFloodTimer
| cMessage* inet::WiseRoute::routeFloodTimer = nullptr |
|
protected |
◆ routeRSSI
| cOutVector inet::WiseRoute::routeRSSI |
|
protected |
◆ routeTable
◆ rssiThreshold
| double inet::WiseRoute::rssiThreshold = 0.0 |
|
protected |
Minimal received RSSI necessary for adding source to routing table.
Referenced by finish().
◆ sinkAddress
◆ trace
| bool inet::WiseRoute::trace = false |
|
protected |
The documentation for this class was generated from the following files:
@ ROUTE_FLOOD
Definition: WiseRouteHeader_m.h:62
L3Address nextHop
Definition: WiseRoute.h:122
@ FORWARD
Definition: WiseRoute.h:116
long nbHops
Definition: WiseRoute.h:168
void decapsulate(Packet *packet)
Decapsulate a message and delete original msg.
Definition: WiseRoute.cc:372
long nbPureUnicastForwarded
Definition: WiseRoute.h:165
cOutVector allReceivedRSSI
Definition: WiseRoute.h:172
long nbDuplicatedFloodsReceived
Definition: WiseRoute.h:159
virtual void updateRouteTable(const tRouteTable::key_type &origin, const L3Address &lastHop, double rssi, double ber)
Update routing table.
Definition: WiseRoute.cc:335
long nbDataPacketsReceived
Definition: WiseRoute.h:157
double routeFloodsInterval
Interval [seconds] between two route floods.
Definition: WiseRoute.h:149
cOutVector routeRSSI
Definition: WiseRoute.h:171
ModuleRefByPar< IArp > arp
Definition: WiseRoute.h:132
long nbRouteFloodsSent
Definition: WiseRoute.h:162
long nbPureUnicastSent
Definition: WiseRoute.h:161
@ FORME
Definition: WiseRoute.h:117
long nbUnicastFloodForwarded
Definition: WiseRoute.h:164
tFloodTable floodTable
Definition: WiseRoute.h:130
removed DscpReq Ipv4ControlInfo Ipv6ControlInfo up L3AddressInd DispatchProtocolReq L4PortInd Ipv4ControlInfo Ipv6ControlInfo down DispatchProtocolReq
Definition: IUdp-gates.txt:25
INET_API InitStage INITSTAGE_NETWORK_LAYER
Initialization of network layer protocols.
removed DscpReq Ipv4ControlInfo Ipv6ControlInfo up L3AddressInd L3AddressInd
Definition: IUdp-gates.txt:20
cOutVector receivedRSSI
Definition: WiseRoute.h:170
tFloodTable::key_type getRoute(const tFloodTable::key_type &destAddr, bool iAmOrigin=false) const
find a route to destination address.
Definition: WiseRoute.cc:411
virtual L3Address getBroadcastAddress() const =0
double rssiThreshold
Minimal received RSSI necessary for adding source to routing table.
Definition: WiseRoute.h:144
tRouteTable routeTable
Definition: WiseRoute.h:129
removed DscpReq Ipv4ControlInfo Ipv6ControlInfo up L3AddressInd DispatchProtocolReq L4PortInd Ipv4ControlInfo Ipv6ControlInfo down PacketProtocolTag
Definition: IUdp-gates.txt:25
intscale< b, 1, 8 > B
Definition: Units.h:1168
long nbGetRouteFailures
Definition: WiseRoute.h:166
long nbRouteFloodsReceived
Definition: WiseRoute.h:163
const Protocol & getProtocol() const override
Definition: WiseRoute.h:102
virtual void sendUp(cMessage *message)
Definition: NetworkProtocolBase.cc:51
int headerLength
Length of the NetwPkt header Read from omnetpp.ini.
Definition: WiseRoute.h:138
@ DATA
Definition: WiseRouteHeader_m.h:61
cMessage * routeFloodTimer
Definition: WiseRoute.h:154
@ DUPLICATE
Definition: WiseRoute.h:118
virtual void handleSelfMessage(cMessage *msg) override
Handle self messages.
Definition: WiseRoute.cc:122
long nbDataPacketsForwarded
Definition: WiseRoute.h:156
floodTypes
Definition: WiseRoute.h:114
virtual void handleUpperPacket(Packet *packet) override
Handle messages from upper layer.
Definition: WiseRoute.cc:260
ModuleRefByPar< IInterfaceTable > interfaceTable
Definition: NetworkProtocolBase.h:35
bool isBroadcast() const
Definition: L3Address.cc:216
value< int64_t, units::b > b
Definition: Units.h:1241
long nbRoutesRecorded
Definition: WiseRoute.h:167
long nbFloodsSent
Definition: WiseRoute.h:160
@ SEND_ROUTE_FLOOD_TIMER
Definition: WiseRoute.h:111
L3Address sinkAddress
Definition: WiseRoute.h:141
long nbDataPacketsSent
Definition: WiseRoute.h:158
cOutVector receivedBER
Definition: WiseRoute.h:175
floodTypes updateFloodTable(bool isFlood, const tFloodTable::key_type &srcAddr, const tFloodTable::key_type &destAddr, unsigned long seqNum)
update flood table.
Definition: WiseRoute.cc:390
static const MacAddress BROADCAST_ADDRESS
The broadcast MAC address, ff:ff:ff:ff:ff:ff.
Definition: MacAddress.h:34
IL3AddressType * getAddressType() const
Definition: L3Address.cc:59
cOutVector routeBER
Definition: WiseRoute.h:174
cOutVector allReceivedBER
Definition: WiseRoute.h:173
virtual void sendDown(cMessage *message, int interfaceId=-1)
Definition: NetworkProtocolBase.cc:91
struct inet::WiseRoute::tRouteTableEntry tRouteTableEntry
L3Address myNetwAddr
Definition: WiseRoute.h:140
virtual void setDownControlInfo(Packet *const pMsg, const MacAddress &pDestAddr)
Attaches a "control info" (NetwToMac) structure (object) to the message pMsg.
Definition: WiseRoute.cc:424
virtual ~WiseRoute()
Definition: WiseRoute.cc:117
virtual void handleLowerPacket(Packet *packet) override
Handle messages from lower layer.
Definition: WiseRoute.cc:153