A Discrete-Event Network Simulator
API
olsr-routing-protocol.cc File Reference
#include <iomanip>
#include "olsr-routing-protocol.h"
#include "ns3/socket-factory.h"
#include "ns3/udp-socket-factory.h"
#include "ns3/simulator.h"
#include "ns3/log.h"
#include "ns3/names.h"
#include "ns3/inet-socket-address.h"
#include "ns3/ipv4-routing-protocol.h"
#include "ns3/ipv4-routing-table-entry.h"
#include "ns3/ipv4-route.h"
#include "ns3/boolean.h"
#include "ns3/uinteger.h"
#include "ns3/enum.h"
#include "ns3/trace-source-accessor.h"
#include "ns3/ipv4-header.h"
#include "ns3/ipv4-packet-info-tag.h"
+ Include dependency graph for olsr-routing-protocol.cc:

Go to the source code of this file.

Namespaces

 ns3
 Every class exported by the ns3 library is enclosed in the ns3 namespace.
 
 ns3::olsr
 
 ns3::olsr::anonymous_namespace{olsr-routing-protocol.cc}
 

Macros

#define DELAY(time)
 Gets the delay between a given time and the current time. More...
 
#define JITTER   (Seconds (m_uniformRandomVariable->GetValue (0, OLSR_MAXJITTER)))
 Random number between [0-OLSR_MAXJITTER] used to jitter OLSR packet transmission. More...
 
#define NS_LOG_APPEND_CONTEXT    if (GetObject<Node> ()) { std::clog << "[node " << GetObject<Node> ()->GetId () << "] "; }
 Implementation of OLSR agent and related classes. More...
 
#define OLSR_ASYM_LINK   1
 Asymmetric link type. More...
 
#define OLSR_DUP_HOLD_TIME   Seconds (30)
 Dup holding time. More...
 
#define OLSR_HNA_HOLD_TIME   Time (3 * m_hnaInterval)
 HNA holding time. More...
 
#define OLSR_LOST_LINK   3
 Lost link type. More...
 
#define OLSR_MAX_ADDRS   64
 Maximum number of addresses advertised on a message. More...
 
#define OLSR_MAX_HELLOS   12
 Maximum number of hellos per message (4 possible link types * 3 possible nb types). More...
 
#define OLSR_MAX_MSGS   64
 Maximum number of messages per packet. More...
 
#define OLSR_MAX_SEQ_NUM   65535
 Maximum allowed sequence number. More...
 
#define OLSR_MAXJITTER   (m_helloInterval.GetSeconds () / 4)
 Maximum allowed jitter. More...
 
#define OLSR_MID_HOLD_TIME   Time (3 * m_midInterval)
 MID holding time. More...
 
#define OLSR_MPR_NEIGH   2
 Asymmetric neighbor type. More...
 
#define OLSR_NEIGHB_HOLD_TIME   Time (3 * OLSR_REFRESH_INTERVAL)
 Neighbor holding time. More...
 
#define OLSR_NOT_NEIGH   0
 Not neighbor type. More...
 
#define OLSR_REFRESH_INTERVAL   m_helloInterval
 Period at which a node must cite every link and every neighbor. More...
 
#define OLSR_SYM_LINK   2
 Symmetric link type. More...
 
#define OLSR_SYM_NEIGH   1
 Symmetric neighbor type. More...
 
#define OLSR_TOP_HOLD_TIME   Time (3 * m_tcInterval)
 Top holding time. More...
 
#define OLSR_UNSPEC_LINK   0
 Unspecified link type. More...
 
#define OLSR_WILL_ALWAYS   7
 Willingness for forwarding packets from other nodes: always. More...
 
#define OLSR_WILL_DEFAULT   3
 Willingness for forwarding packets from other nodes: medium. More...
 
#define OLSR_WILL_HIGH   6
 Willingness for forwarding packets from other nodes: high. More...
 
#define OLSR_WILL_LOW   1
 Willingness for forwarding packets from other nodes: low. More...
 
#define OLSR_WILL_NEVER   0
 Willingness for forwarding packets from other nodes: never. More...
 

Functions

void ns3::olsr::anonymous_namespace{olsr-routing-protocol.cc}::CoverTwoHopNeighbors (Ipv4Address neighborMainAddr, TwoHopNeighborSet &N2)
 Remove all covered 2-hop neighbors from N2 set. More...
 

Macro Definition Documentation

◆ DELAY

#define DELAY (   time)
Value:
(((time) < (Simulator::Now ())) ? Seconds (0.000001) : \
(time - Simulator::Now () + Seconds (0.000001)))
Time Now(void)
create an ns3::Time instance which contains the current simulation time.
Definition: simulator.cc:287
Time Seconds(double value)
Construct a Time in the indicated unit.
Definition: nstime.h:1244

Gets the delay between a given time and the current time.

If given time is previous to the current one, then this macro returns a number close to 0. This is used for scheduling events at a certain moment.

Definition at line 61 of file olsr-routing-protocol.cc.

◆ JITTER

#define JITTER   (Seconds (m_uniformRandomVariable->GetValue (0, OLSR_MAXJITTER)))

Random number between [0-OLSR_MAXJITTER] used to jitter OLSR packet transmission.

Definition at line 129 of file olsr-routing-protocol.cc.

◆ NS_LOG_APPEND_CONTEXT

#define NS_LOG_APPEND_CONTEXT    if (GetObject<Node> ()) { std::clog << "[node " << GetObject<Node> ()->GetId () << "] "; }

Implementation of OLSR agent and related classes.

This is the main file of this software because OLSR's behaviour is implemented here.

Definition at line 31 of file olsr-routing-protocol.cc.

◆ OLSR_ASYM_LINK

#define OLSR_ASYM_LINK   1

Asymmetric link type.

Definition at line 92 of file olsr-routing-protocol.cc.

◆ OLSR_DUP_HOLD_TIME

#define OLSR_DUP_HOLD_TIME   Seconds (30)

Dup holding time.

Definition at line 81 of file olsr-routing-protocol.cc.

◆ OLSR_HNA_HOLD_TIME

#define OLSR_HNA_HOLD_TIME   Time (3 * m_hnaInterval)

HNA holding time.

Definition at line 85 of file olsr-routing-protocol.cc.

◆ OLSR_LOST_LINK

#define OLSR_LOST_LINK   3

Lost link type.

Definition at line 96 of file olsr-routing-protocol.cc.

◆ OLSR_MAX_ADDRS

#define OLSR_MAX_ADDRS   64

Maximum number of addresses advertised on a message.

Definition at line 139 of file olsr-routing-protocol.cc.

◆ OLSR_MAX_HELLOS

#define OLSR_MAX_HELLOS   12

Maximum number of hellos per message (4 possible link types * 3 possible nb types).

Definition at line 136 of file olsr-routing-protocol.cc.

◆ OLSR_MAX_MSGS

#define OLSR_MAX_MSGS   64

Maximum number of messages per packet.

Definition at line 133 of file olsr-routing-protocol.cc.

◆ OLSR_MAX_SEQ_NUM

#define OLSR_MAX_SEQ_NUM   65535

Maximum allowed sequence number.

Definition at line 127 of file olsr-routing-protocol.cc.

◆ OLSR_MAXJITTER

#define OLSR_MAXJITTER   (m_helloInterval.GetSeconds () / 4)

Maximum allowed jitter.

Definition at line 125 of file olsr-routing-protocol.cc.

◆ OLSR_MID_HOLD_TIME

#define OLSR_MID_HOLD_TIME   Time (3 * m_midInterval)

MID holding time.

Definition at line 83 of file olsr-routing-protocol.cc.

◆ OLSR_MPR_NEIGH

#define OLSR_MPR_NEIGH   2

Asymmetric neighbor type.

Definition at line 105 of file olsr-routing-protocol.cc.

◆ OLSR_NEIGHB_HOLD_TIME

#define OLSR_NEIGHB_HOLD_TIME   Time (3 * OLSR_REFRESH_INTERVAL)

Neighbor holding time.

Definition at line 77 of file olsr-routing-protocol.cc.

◆ OLSR_NOT_NEIGH

#define OLSR_NOT_NEIGH   0

Not neighbor type.

Definition at line 101 of file olsr-routing-protocol.cc.

◆ OLSR_REFRESH_INTERVAL

#define OLSR_REFRESH_INTERVAL   m_helloInterval

Period at which a node must cite every link and every neighbor.

We only use this value in order to define OLSR_NEIGHB_HOLD_TIME.

Definition at line 71 of file olsr-routing-protocol.cc.

◆ OLSR_SYM_LINK

#define OLSR_SYM_LINK   2

Symmetric link type.

Definition at line 94 of file olsr-routing-protocol.cc.

◆ OLSR_SYM_NEIGH

#define OLSR_SYM_NEIGH   1

Symmetric neighbor type.

Definition at line 103 of file olsr-routing-protocol.cc.

◆ OLSR_TOP_HOLD_TIME

#define OLSR_TOP_HOLD_TIME   Time (3 * m_tcInterval)

Top holding time.

Definition at line 79 of file olsr-routing-protocol.cc.

◆ OLSR_UNSPEC_LINK

#define OLSR_UNSPEC_LINK   0

Unspecified link type.

Definition at line 90 of file olsr-routing-protocol.cc.

◆ OLSR_WILL_ALWAYS

#define OLSR_WILL_ALWAYS   7

Willingness for forwarding packets from other nodes: always.

Definition at line 119 of file olsr-routing-protocol.cc.

◆ OLSR_WILL_DEFAULT

#define OLSR_WILL_DEFAULT   3

Willingness for forwarding packets from other nodes: medium.

Definition at line 115 of file olsr-routing-protocol.cc.

◆ OLSR_WILL_HIGH

#define OLSR_WILL_HIGH   6

Willingness for forwarding packets from other nodes: high.

Definition at line 117 of file olsr-routing-protocol.cc.

◆ OLSR_WILL_LOW

#define OLSR_WILL_LOW   1

Willingness for forwarding packets from other nodes: low.

Definition at line 113 of file olsr-routing-protocol.cc.

◆ OLSR_WILL_NEVER

#define OLSR_WILL_NEVER   0

Willingness for forwarding packets from other nodes: never.

Definition at line 111 of file olsr-routing-protocol.cc.