A Discrete-Event Network Simulator
API
olsr-routing-protocol.cc File Reference
#include "olsr-routing-protocol.h"
#include "olsr-repositories.h"
#include "ns3/boolean.h"
#include "ns3/enum.h"
#include "ns3/inet-socket-address.h"
#include "ns3/ipv4-header.h"
#include "ns3/ipv4-packet-info-tag.h"
#include "ns3/ipv4-route.h"
#include "ns3/ipv4-routing-protocol.h"
#include "ns3/ipv4-routing-table-entry.h"
#include "ns3/log.h"
#include "ns3/names.h"
#include "ns3/simulator.h"
#include "ns3/socket-factory.h"
#include "ns3/trace-source-accessor.h"
#include "ns3/udp-socket-factory.h"
#include "ns3/uinteger.h"
#include <iomanip>
#include <iostream>
+ 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
 Implementation of OLSR agent and related classes. 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_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_NEIGHB_HOLD_TIME   Time(3 * OLSR_REFRESH_INTERVAL)
 Neighbor holding time. More...
 
#define OLSR_REFRESH_INTERVAL   m_helloInterval
 Period at which a node must cite every link and every neighbor. More...
 
#define OLSR_TOP_HOLD_TIME   Time(3 * m_tcInterval)
 Top holding time. More...
 

Enumerations

enum class  ns3::olsr::LinkType : uint8_t { ns3::olsr::UNSPEC_LINK = 0 , ns3::olsr::ASYM_LINK = 1 , ns3::olsr::SYM_LINK = 2 , ns3::olsr::LOST_LINK = 3 }
 OLSR link types. More...
 
enum class  ns3::olsr::NeighborType : uint8_t { ns3::olsr::NOT_NEIGH = 0 , ns3::olsr::SYM_NEIGH = 1 , ns3::olsr::MPR_NEIGH = 2 }
 OLSR neighbor types. 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...
 
std::ostream & ns3::olsr::operator<< (std::ostream &os, LinkType linkType)
 Stream insertion operator for OLSR link type. More...
 
std::ostream & ns3::olsr::operator<< (std::ostream &os, NeighborType neighborType)
 Stream insertion operator for OLSR link type. More...
 

Macro Definition Documentation

◆ DELAY

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

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 66 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 97 of file olsr-routing-protocol.cc.

◆ NS_LOG_APPEND_CONTEXT

#define NS_LOG_APPEND_CONTEXT
Value:
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 29 of file olsr-routing-protocol.cc.

◆ OLSR_DUP_HOLD_TIME

#define OLSR_DUP_HOLD_TIME   Seconds(30)

Dup holding time.

Definition at line 84 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 88 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 106 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 103 of file olsr-routing-protocol.cc.

◆ OLSR_MAX_MSGS

#define OLSR_MAX_MSGS   64

Maximum number of messages per packet.

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

◆ OLSR_MAX_SEQ_NUM

#define OLSR_MAX_SEQ_NUM   65535

Maximum allowed sequence number.

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

◆ OLSR_MAXJITTER

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

Maximum allowed jitter.

Definition at line 93 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 86 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 80 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 75 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 82 of file olsr-routing-protocol.cc.