A Discrete-Event Network Simulator
API
olsr-routing-protocol.h
Go to the documentation of this file.
1/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
2/*
3 * Copyright (c) 2004 Francisco J. Ros
4 * Copyright (c) 2007 INESC Porto
5 *
6 * This program is free software; you can redistribute it and/or modify
7 * it under the terms of the GNU General Public License version 2 as
8 * published by the Free Software Foundation;
9 *
10 * This program is distributed in the hope that it will be useful,
11 * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 * GNU General Public License for more details.
14 *
15 * You should have received a copy of the GNU General Public License
16 * along with this program; if not, write to the Free Software
17 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
18 *
19 * Authors: Francisco J. Ros <fjrm@dif.um.es>
20 * Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
21 */
22
23#ifndef OLSR_AGENT_IMPL_H
24#define OLSR_AGENT_IMPL_H
25
26#include "olsr-header.h"
27#include "ns3/test.h"
28#include "olsr-state.h"
29#include "olsr-repositories.h"
30
31#include "ns3/object.h"
32#include "ns3/packet.h"
33#include "ns3/node.h"
34#include "ns3/socket.h"
35#include "ns3/event-garbage-collector.h"
36#include "ns3/random-variable-stream.h"
37#include "ns3/timer.h"
38#include "ns3/traced-callback.h"
39#include "ns3/ipv4.h"
40#include "ns3/ipv4-routing-protocol.h"
41#include "ns3/ipv4-static-routing.h"
42
43#include <vector>
44#include <map>
45
47class OlsrMprTestCase;
48
49namespace ns3 {
50namespace olsr {
51
56
60{
65
66 RoutingTableEntry (void) : // default values
67 destAddr (), nextAddr (),
68 interface (0), distance (0)
69 {
70 }
71};
72
73class RoutingProtocol;
74
81{
82public:
86 friend class ::OlsrMprTestCase;
87
88 static const uint16_t OLSR_PORT_NUMBER;
89
94 static TypeId GetTypeId (void);
95
96 RoutingProtocol (void);
97 virtual ~RoutingProtocol (void);
98
104 void SetMainInterface (uint32_t interface);
105
111 void Dump (void);
112
117 std::vector<RoutingTableEntry> GetRoutingTableEntries (void) const;
118
123 MprSet GetMprSet (void) const;
124
129 const MprSelectorSet & GetMprSelectors (void) const;
130
135 const NeighborSet & GetNeighbors (void) const;
136
141 const TwoHopNeighborSet & GetTwoHopNeighbors (void) const;
142
147 const TopologySet & GetTopologySet (void) const;
148
153 const OlsrState & GetOlsrState (void) const;
154
163 int64_t AssignStreams (int64_t stream);
164
171 typedef void (* PacketTxRxTracedCallback)(const PacketHeader & header, const MessageList & messages);
172
178 typedef void (* TableChangeTracedCallback) (uint32_t size);
179
180private:
181 std::set<uint32_t> m_interfaceExclusions;
183
184public:
189 std::set<uint32_t> GetInterfaceExclusions (void) const
190 {
192 }
193
198 void SetInterfaceExclusions (std::set<uint32_t> exceptions);
199
208 void AddHostNetworkAssociation (Ipv4Address networkAddr, Ipv4Mask netmask);
209
218 void RemoveHostNetworkAssociation (Ipv4Address networkAddr, Ipv4Mask netmask);
219
231
237
238protected:
239 virtual void DoInitialize (void);
240 virtual void DoDispose (void);
241
242private:
243 std::map<Ipv4Address, RoutingTableEntry> m_table;
244
246
248
251 uint16_t m_ansn;
252
258
261
265 void Clear (void);
266
271 uint32_t GetSize (void) const
272 {
273 return m_table.size ();
274 }
275
280 void RemoveEntry (const Ipv4Address &dest);
291 void AddEntry (const Ipv4Address &dest,
292 const Ipv4Address &next,
293 uint32_t interface,
294 uint32_t distance);
305 void AddEntry (const Ipv4Address &dest,
306 const Ipv4Address &next,
307 const Ipv4Address &interfaceAddress,
308 uint32_t distance);
309
316 bool Lookup (const Ipv4Address &dest,
317 RoutingTableEntry &outEntry) const;
318
337 bool FindSendEntry (const RoutingTableEntry &entry,
338 RoutingTableEntry &outEntry) const;
339
340public:
341 // From Ipv4RoutingProtocol
343 const Ipv4Header &header,
344 Ptr<NetDevice> oif,
345 Socket::SocketErrno &sockerr);
346 virtual bool RouteInput (Ptr<const Packet> p,
347 const Ipv4Header &header,
352 ErrorCallback ecb);
353 virtual void SetIpv4 (Ptr<Ipv4> ipv4);
354
359 virtual Ptr<Ipv4> GetIpv4 (void) const;
360 virtual void PrintRoutingTable (Ptr<OutputStreamWrapper> stream, Time::Unit unit = Time::S) const;
361
362
363private:
364 virtual void NotifyInterfaceUp (uint32_t interface);
365 virtual void NotifyInterfaceDown (uint32_t interface);
366 virtual void NotifyAddAddress (uint32_t interface, Ipv4InterfaceAddress address);
368
374 void SendPacket (Ptr<Packet> packet, const MessageList &containedMessages);
375
380 inline uint16_t GetPacketSequenceNumber (void);
381
386 inline uint16_t GetMessageSequenceNumber (void);
387
392 void RecvOlsr (Ptr<Socket> socket);
393
397 void MprComputation (void);
398
402 void RoutingTableComputation (void);
403
404public:
410 Ipv4Address GetMainAddress (Ipv4Address iface_addr) const;
411
412private:
419
420 // Timer handlers
425 void HelloTimerExpire (void);
426
431 void TcTimerExpire (void);
432
437 void MidTimerExpire (void);
438
443 void HnaTimerExpire (void);
444
453 void DupTupleTimerExpire (Ipv4Address address, uint16_t sequenceNumber);
454
467 void LinkTupleTimerExpire (Ipv4Address neighborIfaceAddr);
468
477 void Nb2hopTupleTimerExpire (Ipv4Address neighborMainAddr, Ipv4Address twoHopNeighborAddr);
478
486 void MprSelTupleTimerExpire (Ipv4Address mainAddr);
487
496 void TopologyTupleTimerExpire (Ipv4Address destAddr, Ipv4Address lastAddr);
497
504
512 void AssociationTupleTimerExpire (Ipv4Address gatewayAddr, Ipv4Address networkAddr, Ipv4Mask netmask);
513
517 void IncrementAnsn (void);
518
522
533 void ForwardDefault (olsr::MessageHeader olsrMessage,
534 DuplicateTuple *duplicated,
535 const Ipv4Address &localIface,
536 const Ipv4Address &senderAddress);
537
547 void QueueMessage (const olsr::MessageHeader &message, Time delay);
548
556 void SendQueuedMessages (void);
557
561 void SendHello (void);
562
566 void SendTc (void);
567
571 void SendMid (void);
572
576 void SendHna (void);
577
585 void NeighborLoss (const LinkTuple &tuple);
586
592 void AddDuplicateTuple (const DuplicateTuple &tuple);
593
599 void RemoveDuplicateTuple (const DuplicateTuple &tuple);
600
606 void LinkTupleAdded (const LinkTuple &tuple, uint8_t willingness);
607
613 void RemoveLinkTuple (const LinkTuple &tuple);
614
622 void LinkTupleUpdated (const LinkTuple &tuple, uint8_t willingness);
623
629 void AddNeighborTuple (const NeighborTuple &tuple);
630
636 void RemoveNeighborTuple (const NeighborTuple &tuple);
637
644
651
658 void AddMprSelectorTuple (const MprSelectorTuple &tuple);
659
666 void RemoveMprSelectorTuple (const MprSelectorTuple &tuple);
667
673 void AddTopologyTuple (const TopologyTuple &tuple);
674
680 void RemoveTopologyTuple (const TopologyTuple &tuple);
681
687 void AddIfaceAssocTuple (const IfaceAssocTuple &tuple);
688
694 void RemoveIfaceAssocTuple (const IfaceAssocTuple &tuple);
695
701 void AddAssociationTuple (const AssociationTuple &tuple);
702
708 void RemoveAssociationTuple (const AssociationTuple &tuple);
709
720 void ProcessHello (const olsr::MessageHeader &msg,
721 const Ipv4Address &receiverIface,
722 const Ipv4Address &senderIface);
723
734 void ProcessTc (const olsr::MessageHeader &msg,
735 const Ipv4Address &senderIface);
736
746 void ProcessMid (const olsr::MessageHeader &msg,
747 const Ipv4Address &senderIface);
748
760 void ProcessHna (const olsr::MessageHeader &msg,
761 const Ipv4Address &senderIface);
762
771 void LinkSensing (const olsr::MessageHeader &msg,
772 const olsr::MessageHeader::Hello &hello,
773 const Ipv4Address &receiverIface,
774 const Ipv4Address &senderIface);
775
783 const olsr::MessageHeader::Hello &hello);
784
792 const olsr::MessageHeader::Hello &hello);
793
801 const olsr::MessageHeader::Hello &hello);
802
803 int Degree (NeighborTuple const &tuple);
804
810 bool IsMyOwnAddress (const Ipv4Address & a) const;
811
813
814 // One socket per interface, each bound to that interface's address
815 // (reason: for OLSR Link Sensing we need to know on which interface
816 // HELLO messages arrive)
817 std::map< Ptr<Socket>, Ipv4InterfaceAddress > m_sendSockets;
819
820
823
826
829
832
833};
834
835}
836} // namespace ns3
837
838#endif /* OLSR_AGENT_IMPL_H */
Testcase for MPR computation mechanism.
An object that tracks scheduled events and automatically cancels them when it is destroyed.
Ipv4 addresses are stored in host order in this class.
Definition: ipv4-address.h:41
Packet header for IPv4.
Definition: ipv4-header.h:34
a class to store IPv4 address information on an interface
a class to represent an Ipv4 address mask
Definition: ipv4-address.h:256
Abstract base class for IPv4 routing protocols.
Callback< void, Ptr< const Packet >, const Ipv4Header &, Socket::SocketErrno > ErrorCallback
Callback for routing errors (e.g., no route found)
Callback< void, Ptr< Ipv4MulticastRoute >, Ptr< const Packet >, const Ipv4Header & > MulticastForwardCallback
Callback for multicast packets to be forwarded.
Callback< void, Ptr< Ipv4Route >, Ptr< const Packet >, const Ipv4Header & > UnicastForwardCallback
Callback for unicast packets to be forwarded.
Callback< void, Ptr< const Packet >, const Ipv4Header &, uint32_t > LocalDeliverCallback
Callback for packets to be locally delivered.
A record of an IPv4 routing table entry for Ipv4GlobalRouting and Ipv4StaticRouting.
Smart pointer class similar to boost::intrusive_ptr.
Definition: ptr.h:74
SocketErrno
Enumeration of the possible errors returned by a socket.
Definition: socket.h:82
Simulation virtual time values and global simulation resolution.
Definition: nstime.h:103
Unit
The unit to use to interpret a number representing time.
Definition: nstime.h:109
@ S
second
Definition: nstime.h:114
A simple virtual Timer class.
Definition: timer.h:74
Forward calls to a chain of Callback.
a unique identifier for an interface.
Definition: type-id.h:59
This header can store HELP, TC, MID and HNA messages.
Definition: olsr-header.h:158
This class encapsulates all data structures needed for maintaining internal state of an OLSR node.
Definition: olsr-state.h:35
The basic layout of any packet in OLSR is as follows (omitting IP and UDP headers):
Definition: olsr-header.h:76
OLSR routing protocol for IPv4.
void LinkTupleUpdated(const LinkTuple &tuple, uint8_t willingness)
This function is invoked when a link tuple is updated.
MprSet GetMprSet(void) const
Gets the MPR set.
void SendQueuedMessages(void)
Creates as many OLSR packets as needed in order to send all buffered OLSR messages.
virtual void NotifyAddAddress(uint32_t interface, Ipv4InterfaceAddress address)
void RemoveHostNetworkAssociation(Ipv4Address networkAddr, Ipv4Mask netmask)
Removes the specified (networkAddr, netmask) tuple from the list of local HNA associations to be sent...
OlsrState m_state
Internal state with all needed data structs.
void AddTwoHopNeighborTuple(const TwoHopNeighborTuple &tuple)
Adds a 2-hop neighbor tuple to the 2-hop Neighbor Set.
Time m_hnaInterval
HNA messages' emission interval.
uint16_t m_messageSequenceNumber
Messages sequence number counter.
olsr::MessageList m_queuedMessages
A list of pending messages which are buffered awaiting for being sent.
void RemoveLinkTuple(const LinkTuple &tuple)
Removes a link tuple from the Link Set.
const TopologySet & GetTopologySet(void) const
Gets the topology set.
TracedCallback< uint32_t > m_routingTableChanged
Routing table chanes challback.
std::set< uint32_t > GetInterfaceExclusions(void) const
Get the excluded interfaces.
void QueueMessage(const olsr::MessageHeader &message, Time delay)
Enques an OLSR message which will be sent with a delay of (0, delay].
void AddNeighborTuple(const NeighborTuple &tuple)
Adds a neighbor tuple to the Neighbor Set.
void LinkSensing(const olsr::MessageHeader &msg, const olsr::MessageHeader::Hello &hello, const Ipv4Address &receiverIface, const Ipv4Address &senderIface)
Updates Link Set according to a new received HELLO message (following RFC 3626 specification).
uint8_t m_willingness
Willingness for forwarding packets on behalf of other nodes.
void SendHna(void)
Creates a new OLSR HNA message which is buffered for being sent later on.
void SendPacket(Ptr< Packet > packet, const MessageList &containedMessages)
Send an OLSR message.
Timer m_tcTimer
Timer for the TC message.
void HelloTimerExpire(void)
Sends a HELLO message and reschedules the HELLO timer.
void AddHostNetworkAssociation(Ipv4Address networkAddr, Ipv4Mask netmask)
Injects the specified (networkAddr, netmask) tuple in the list of local HNA associations to be sent b...
void HnaTimerExpire(void)
Sends an HNA message (if the node has associated hosts/networks) and reschedules the HNA timer.
virtual void NotifyInterfaceUp(uint32_t interface)
uint32_t GetSize(void) const
Returns the routing table size.
Ptr< Ipv4StaticRouting > m_hnaRoutingTable
Routing table for HNA routes.
void MidTimerExpire(void)
Sends a MID message (if the node has more than one interface) and resets the MID timer.
bool IsMyOwnAddress(const Ipv4Address &a) const
Check that address is one of my interfaces.
bool FindSendEntry(const RoutingTableEntry &entry, RoutingTableEntry &outEntry) const
Finds the appropriate entry which must be used in order to forward a data packet to a next hop (given...
void LinkTupleTimerExpire(Ipv4Address neighborIfaceAddr)
Removes tuple_ if expired.
const NeighborSet & GetNeighbors(void) const
Get the one hop neighbors.
void MprSelTupleTimerExpire(Ipv4Address mainAddr)
Removes MPR selector tuple_ if expired.
void RemoveTopologyTuple(const TopologyTuple &tuple)
Removes a topology tuple to the Topology Set.
void LinkTupleAdded(const LinkTuple &tuple, uint8_t willingness)
Adds a link tuple.
void PopulateTwoHopNeighborSet(const olsr::MessageHeader &msg, const olsr::MessageHeader::Hello &hello)
Updates the 2-hop Neighbor Set according to the information contained in a new received HELLO message...
virtual Ptr< Ipv4Route > RouteOutput(Ptr< Packet > p, const Ipv4Header &header, Ptr< NetDevice > oif, Socket::SocketErrno &sockerr)
Query routing cache for an existing route, for an outbound packet.
void AddTopologyTuple(const TopologyTuple &tuple)
Adds a topology tuple to the Topology Set.
void ProcessTc(const olsr::MessageHeader &msg, const Ipv4Address &senderIface)
Processes a TC message following RFC 3626 specification.
void SendHello(void)
Creates a new OLSR HELLO message which is buffered for being sent later on.
void SetRoutingTableAssociation(Ptr< Ipv4StaticRouting > routingTable)
Associates the specified Ipv4StaticRouting routing table to the OLSR routing protocol.
void PopulateMprSelectorSet(const olsr::MessageHeader &msg, const olsr::MessageHeader::Hello &hello)
Updates the MPR Selector Set according to the information contained in a new received HELLO message (...
Ipv4Address m_mainAddress
the node main address.
Ptr< UniformRandomVariable > m_uniformRandomVariable
Provides uniform random variables.
void Nb2hopTupleTimerExpire(Ipv4Address neighborMainAddr, Ipv4Address twoHopNeighborAddr)
Removes 2_hop neighbor tuple_ if expired.
uint16_t GetPacketSequenceNumber(void)
Increments packet sequence number and returns the new value.
void AssociationTupleTimerExpire(Ipv4Address gatewayAddr, Ipv4Address networkAddr, Ipv4Mask netmask)
Removes association tuple_ if expired.
static const uint16_t OLSR_PORT_NUMBER
port number (698)
void SetMainInterface(uint32_t interface)
Set the OLSR main address to the first address on the indicated interface.
void TcTimerExpire(void)
Sends a TC message (if there exists any MPR selector) and reschedules the TC timer.
void AddEntry(const Ipv4Address &dest, const Ipv4Address &next, uint32_t interface, uint32_t distance)
Adds a new entry into the routing table.
void AddIfaceAssocTuple(const IfaceAssocTuple &tuple)
Adds an interface association tuple to the Interface Association Set.
void RemoveDuplicateTuple(const DuplicateTuple &tuple)
Removes a duplicate tuple from the Duplicate Set.
void DupTupleTimerExpire(Ipv4Address address, uint16_t sequenceNumber)
Removes tuple if expired.
std::vector< RoutingTableEntry > GetRoutingTableEntries(void) const
Get the routing table entries.
Ipv4Address GetMainAddress(Ipv4Address iface_addr) const
Gets the main address associated with a given interface address.
Timer m_midTimer
Timer for the MID message.
void SendMid(void)
Creates a new OLSR MID message which is buffered for being sent later on.
EventGarbageCollector m_events
Running events.
void RoutingTableComputation(void)
Creates the routing table of the node following RFC 3626 hints.
virtual NS_DEPRECATED_3_34 Ptr< Ipv4 > GetIpv4(void) const
bool Lookup(const Ipv4Address &dest, RoutingTableEntry &outEntry) const
Looks up an entry for the specified destination address.
TracedCallback< const PacketHeader &, const MessageList & > m_rxPacketTrace
Rx packet trace.
void ProcessMid(const olsr::MessageHeader &msg, const Ipv4Address &senderIface)
Processes a MID message following RFC 3626 specification.
Timer m_queuedMessagesTimer
timer for throttling outgoing messages
static TypeId GetTypeId(void)
Get the type ID.
uint16_t m_ansn
Advertised Neighbor Set sequence number.
void RemoveIfaceAssocTuple(const IfaceAssocTuple &tuple)
Removed an interface association tuple to the Interface Association Set.
virtual void NotifyInterfaceDown(uint32_t interface)
Time m_midInterval
MID messages' emission interval.
std::map< Ptr< Socket >, Ipv4InterfaceAddress > m_sendSockets
Container of sockets and the interfaces they are opened onto.
void TopologyTupleTimerExpire(Ipv4Address destAddr, Ipv4Address lastAddr)
Removes topology tuple_ if expired.
void ProcessHello(const olsr::MessageHeader &msg, const Ipv4Address &receiverIface, const Ipv4Address &senderIface)
Processes a HELLO message following RFC 3626 specification.
const OlsrState & GetOlsrState(void) const
Gets the underlying OLSR state object.
std::map< Ipv4Address, RoutingTableEntry > m_table
Data structure for the routing table.
void RemoveEntry(const Ipv4Address &dest)
Deletes the entry whose destination address is given.
void PopulateNeighborSet(const olsr::MessageHeader &msg, const olsr::MessageHeader::Hello &hello)
Updates the Neighbor Set according to the information contained in a new received HELLO message (foll...
void MprComputation(void)
Computates MPR set of a node following RFC 3626 hints.
virtual bool RouteInput(Ptr< const Packet > p, const Ipv4Header &header, Ptr< const NetDevice > idev, UnicastForwardCallback ucb, MulticastForwardCallback mcb, LocalDeliverCallback lcb, ErrorCallback ecb)
Route an input packet (to be forwarded or locally delivered)
uint16_t GetMessageSequenceNumber(void)
Increments message sequence number and returns the new value.
int64_t AssignStreams(int64_t stream)
Assign a fixed random variable stream number to the random variables used by this model.
uint16_t m_packetSequenceNumber
Packets sequence number counter.
Timer m_helloTimer
Timer for the HELLO message.
void(* PacketTxRxTracedCallback)(const PacketHeader &header, const MessageList &messages)
TracedCallback signature for Packet transmit and receive events.
TracedCallback< const PacketHeader &, const MessageList & > m_txPacketTrace
Tx packet trace.
virtual void SetIpv4(Ptr< Ipv4 > ipv4)
virtual void NotifyRemoveAddress(uint32_t interface, Ipv4InterfaceAddress address)
void RemoveMprSelectorTuple(const MprSelectorTuple &tuple)
Removes an MPR selector tuple from the MPR Selector Set.
void ProcessHna(const olsr::MessageHeader &msg, const Ipv4Address &senderIface)
Processes a HNA message following RFC 3626 specification.
const MprSelectorSet & GetMprSelectors(void) const
Gets the MPR selectors.
Ptr< Socket > m_recvSocket
Receiving socket.
void Dump(void)
Dump the neighbor table, two-hop neighbor table, and routing table to logging output (NS_LOG_DEBUG lo...
void IncrementAnsn(void)
Increments the ANSN counter.
virtual void PrintRoutingTable(Ptr< OutputStreamWrapper > stream, Time::Unit unit=Time::S) const
Print the Routing Table entries.
void SetInterfaceExclusions(std::set< uint32_t > exceptions)
Set the interfaces to be excluded.
void ForwardDefault(olsr::MessageHeader olsrMessage, DuplicateTuple *duplicated, const Ipv4Address &localIface, const Ipv4Address &senderAddress)
OLSR's default forwarding algorithm.
Time m_helloInterval
HELLO messages' emission interval.
Timer m_hnaTimer
Timer for the HNA message.
void SendTc(void)
Creates a new OLSR TC message which is buffered for being sent later on.
void AddAssociationTuple(const AssociationTuple &tuple)
Adds a host network association tuple to the Association Set.
void AddDuplicateTuple(const DuplicateTuple &tuple)
Adds a duplicate tuple to the Duplicate Set.
void RemoveTwoHopNeighborTuple(const TwoHopNeighborTuple &tuple)
Removes a 2-hop neighbor tuple from the 2-hop Neighbor Set.
void RemoveAssociationTuple(const AssociationTuple &tuple)
Removes a host network association tuple to the Association Set.
void(* TableChangeTracedCallback)(uint32_t size)
TracedCallback signature for routing table computation.
Time m_tcInterval
TC messages' emission interval.
bool UsesNonOlsrOutgoingInterface(const Ipv4RoutingTableEntry &route)
Tests whether or not the specified route uses a non-OLSR outgoing interface.
void Clear(void)
Clears the routing table and frees the memory assigned to each one of its entries.
Ptr< Ipv4StaticRouting > m_routingTableAssociation
Associations from an Ipv4StaticRouting instance.
bool m_linkTupleTimerFirstTime
Flag to indicate if it is the first time the LinkTupleTimer fires.
virtual void DoDispose(void)
Destructor implementation.
Ptr< const Ipv4StaticRouting > GetRoutingTableAssociation(void) const
Returns the internal HNA table.
int Degree(NeighborTuple const &tuple)
This auxiliary function (defined in RFC 3626) is used for calculating the MPR Set.
const TwoHopNeighborSet & GetTwoHopNeighbors(void) const
Get the two hop neighbors.
void RemoveNeighborTuple(const NeighborTuple &tuple)
Removes a neighbor tuple from the Neighbor Set.
void IfaceAssocTupleTimerExpire(Ipv4Address ifaceAddr)
Removes interface association tuple_ if expired.
void RecvOlsr(Ptr< Socket > socket)
Receive an OLSR message.
std::set< uint32_t > m_interfaceExclusions
Set of interfaces excluded by OSLR.
void NeighborLoss(const LinkTuple &tuple)
Performs all actions needed when a neighbor loss occurs.
virtual void DoInitialize(void)
Initialize() implementation.
Ptr< Ipv4 > m_ipv4
IPv4 object the routing is linked to.
void AddMprSelectorTuple(const MprSelectorTuple &tuple)
Adds an MPR selector tuple to the MPR Selector Set.
#define NS_DEPRECATED_3_34
Tag for things deprecated in version ns-3.34.
Definition: deprecated.h:88
address
Definition: first.py:44
std::vector< MprSelectorTuple > MprSelectorSet
MPR Selector Set type.
std::vector< TwoHopNeighborTuple > TwoHopNeighborSet
2-hop Neighbor Set type.
std::vector< TopologyTuple > TopologySet
Topology Set type.
std::set< Ipv4Address > MprSet
MPR Set type.
std::vector< NeighborTuple > NeighborSet
Neighbor Set type.
std::vector< MessageHeader > MessageList
Definition: olsr-header.h:695
Every class exported by the ns3 library is enclosed in the ns3 namespace.
Definition: olsr.py:1
An Interface Association Tuple.
HELLO Message Format.
Definition: olsr-header.h:377
An MPR-Selector Tuple.
An OLSR's routing table entry.
RoutingTableEntry(void)
uint32_t distance
Distance in hops to the destination.
Ipv4Address nextAddr
Address of the next hop.
uint32_t interface
Interface index.
Ipv4Address destAddr
Address of the destination node.