A Discrete-Event Network Simulator
API
ns3::Radvd Class Reference

Router advertisement daemon. More...

#include "radvd.h"

+ Inheritance diagram for ns3::Radvd:
+ Collaboration diagram for ns3::Radvd:

Public Member Functions

 Radvd ()
 Constructor. More...
 
 ~Radvd () override
 Destructor. More...
 
void AddConfiguration (Ptr< RadvdInterface > routerInterface)
 Add configuration for an interface;. More...
 
int64_t AssignStreams (int64_t stream)
 Assign a fixed random variable stream number to the random variables used by this model. More...
 
- Public Member Functions inherited from ns3::Application
 Application ()
 
 ~Application () override
 
Ptr< NodeGetNode () const
 
void SetNode (Ptr< Node > node)
 
void SetStartTime (Time start)
 Specify application start time. More...
 
void SetStopTime (Time stop)
 Specify application stop time. More...
 
- Public Member Functions inherited from ns3::Object
 Object ()
 Constructor. More...
 
 ~Object () override
 Destructor. More...
 
void AggregateObject (Ptr< Object > other)
 Aggregate two Objects together. More...
 
void Dispose ()
 Dispose of this Object. More...
 
AggregateIterator GetAggregateIterator () const
 Get an iterator to the Objects aggregated to this one. More...
 
TypeId GetInstanceTypeId () const override
 Get the most derived TypeId for this Object. More...
 
template<typename T >
Ptr< T > GetObject () const
 Get a pointer to the requested aggregated Object. More...
 
template<>
Ptr< ObjectGetObject () const
 Specialization of () for objects of type ns3::Object. More...
 
template<typename T >
Ptr< T > GetObject (TypeId tid) const
 Get a pointer to the requested aggregated Object by TypeId. More...
 
template<>
Ptr< ObjectGetObject (TypeId tid) const
 Specialization of (TypeId tid) for objects of type ns3::Object. More...
 
void Initialize ()
 Invoke DoInitialize on all Objects aggregated to this one. More...
 
bool IsInitialized () const
 Check if the object has been initialized. More...
 
- Public Member Functions inherited from ns3::SimpleRefCount< Object, ObjectBase, ObjectDeleter >
 SimpleRefCount ()
 Default constructor. More...
 
 SimpleRefCount (const SimpleRefCount &o[[maybe_unused]])
 Copy constructor. More...
 
uint32_t GetReferenceCount () const
 Get the reference count of the object. More...
 
SimpleRefCountoperator= (const SimpleRefCount &o[[maybe_unused]])
 Assignment operator. More...
 
void Ref () const
 Increment the reference count. More...
 
void Unref () const
 Decrement the reference count. More...
 
- Public Member Functions inherited from ns3::ObjectBase
virtual ~ObjectBase ()
 Virtual destructor. More...
 
void GetAttribute (std::string name, AttributeValue &value) const
 Get the value of an attribute, raising fatal errors if unsuccessful. More...
 
bool GetAttributeFailSafe (std::string name, AttributeValue &value) const
 Get the value of an attribute without raising errors. More...
 
void SetAttribute (std::string name, const AttributeValue &value)
 Set a single attribute, raising fatal errors if unsuccessful. More...
 
bool SetAttributeFailSafe (std::string name, const AttributeValue &value)
 Set a single attribute without raising errors. More...
 
bool TraceConnect (std::string name, std::string context, const CallbackBase &cb)
 Connect a TraceSource to a Callback with a context. More...
 
bool TraceConnectWithoutContext (std::string name, const CallbackBase &cb)
 Connect a TraceSource to a Callback without a context. More...
 
bool TraceDisconnect (std::string name, std::string context, const CallbackBase &cb)
 Disconnect from a TraceSource a Callback previously connected with a context. More...
 
bool TraceDisconnectWithoutContext (std::string name, const CallbackBase &cb)
 Disconnect from a TraceSource a Callback previously connected without a context. More...
 

Static Public Member Functions

static TypeId GetTypeId ()
 Get the type ID. More...
 
- Static Public Member Functions inherited from ns3::Application
static TypeId GetTypeId ()
 Get the type ID. More...
 
- Static Public Member Functions inherited from ns3::Object
static TypeId GetTypeId ()
 Register this type. More...
 
- Static Public Member Functions inherited from ns3::ObjectBase
static TypeId GetTypeId ()
 Get the type ID. More...
 

Static Public Attributes

static const uint32_t MAX_INITIAL_RTR_ADVERT_INTERVAL = 16000
 Default value for maximum initial RA advertisements interval (ms) More...
 
static const uint32_t MAX_INITIAL_RTR_ADVERTISEMENTS = 3
 Default value for maximum initial RA advertisements. More...
 
static const uint32_t MAX_RA_DELAY_TIME = 500
 Default value for maximum delay of RA (ms) More...
 
static const uint32_t MIN_DELAY_BETWEEN_RAS = 3000
 Default value for minimum delay between RA advertisements (ms) More...
 

Protected Member Functions

void DoDispose () override
 Dispose the instance. More...
 
- Protected Member Functions inherited from ns3::Application
void DoDispose () override
 Destructor implementation. More...
 
void DoInitialize () override
 Initialize() implementation. More...
 
- Protected Member Functions inherited from ns3::Object
 Object (const Object &o)
 Copy an Object. More...
 
virtual void NotifyNewAggregate ()
 Notify all Objects aggregated to this one of a new Object being aggregated. More...
 
- Protected Member Functions inherited from ns3::ObjectBase
void ConstructSelf (const AttributeConstructionList &attributes)
 Complete construction of ObjectBase; invoked by derived classes. More...
 
virtual void NotifyConstructionCompleted ()
 Notifier called once the ObjectBase is fully constructed. More...
 

Private Types

typedef std::map< uint32_t, EventIdEventIdMap
 Container: interface number, EventId. More...
 
typedef std::map< uint32_t, EventId >::const_iterator EventIdMapCI
 Container Const Iterator: interface number, EventId. More...
 
typedef std::map< uint32_t, EventId >::iterator EventIdMapI
 Container Iterator: interface number, EventId. More...
 
typedef std::list< Ptr< RadvdInterface > > RadvdInterfaceList
 Container: Ptr to RadvdInterface. More...
 
typedef std::list< Ptr< RadvdInterface > >::const_iterator RadvdInterfaceListCI
 Container Const Iterator: Ptr to RadvdInterface. More...
 
typedef std::list< Ptr< RadvdInterface > >::iterator RadvdInterfaceListI
 Container Iterator: Ptr to RadvdInterface. More...
 
typedef std::map< uint32_t, Ptr< Socket > > SocketMap
 Container: interface number, Socket. More...
 
typedef std::map< uint32_t, Ptr< Socket > >::const_iterator SocketMapCI
 Container Const Iterator: interface number, Socket. More...
 
typedef std::map< uint32_t, Ptr< Socket > >::iterator SocketMapI
 Container Iterator: interface number, Socket. More...
 

Private Member Functions

void HandleRead (Ptr< Socket > socket)
 Handle received packet, especially router solicitation. More...
 
void Send (Ptr< RadvdInterface > config, Ipv6Address dst=Ipv6Address::GetAllNodesMulticast(), bool reschedule=false)
 Send a packet. More...
 
void StartApplication () override
 Start the application. More...
 
void StopApplication () override
 Stop the application. More...
 

Private Attributes

RadvdInterfaceList m_configurations
 List of configuration for interface. More...
 
Ptr< UniformRandomVariablem_jitter
 Variable to provide jitter in advertisement interval. More...
 
Ptr< Socketm_recvSocket
 Raw socket to receive RS. More...
 
SocketMap m_sendSockets
 Raw socket to send RA. More...
 
EventIdMap m_solicitedEventIds
 Event ID map for solicited RAs. More...
 
EventIdMap m_unsolicitedEventIds
 Event ID map for unsolicited RAs. More...
 

Additional Inherited Members

- Public Types inherited from ns3::Application
typedef void(* DelayAddressCallback) (const Time &delay, const Address &from)
 Common callback signature for packet delay and address. More...
 
typedef void(* StateTransitionCallback) (const std::string &oldState, const std::string &newState)
 Common signature used by callbacks to application's state transition trace source. More...
 
- Protected Attributes inherited from ns3::Application
Ptr< Nodem_node
 The node that this application is installed on. More...
 
EventId m_startEvent
 The event that will fire at m_startTime to start the application. More...
 
Time m_startTime
 The simulation time that the application will start. More...
 
EventId m_stopEvent
 The event that will fire at m_stopTime to end the application. More...
 
Time m_stopTime
 The simulation time that the application will end. More...
 

Detailed Description

Router advertisement daemon.

Definition at line 46 of file radvd.h.

Member Typedef Documentation

◆ EventIdMap

typedef std::map<uint32_t, EventId> ns3::Radvd::EventIdMap
private

Container: interface number, EventId.

Definition at line 113 of file radvd.h.

◆ EventIdMapCI

typedef std::map<uint32_t, EventId>::const_iterator ns3::Radvd::EventIdMapCI
private

Container Const Iterator: interface number, EventId.

Definition at line 117 of file radvd.h.

◆ EventIdMapI

typedef std::map<uint32_t, EventId>::iterator ns3::Radvd::EventIdMapI
private

Container Iterator: interface number, EventId.

Definition at line 115 of file radvd.h.

◆ RadvdInterfaceList

Container: Ptr to RadvdInterface.

Definition at line 106 of file radvd.h.

◆ RadvdInterfaceListCI

typedef std::list<Ptr<RadvdInterface> >::const_iterator ns3::Radvd::RadvdInterfaceListCI
private

Container Const Iterator: Ptr to RadvdInterface.

Definition at line 110 of file radvd.h.

◆ RadvdInterfaceListI

Container Iterator: Ptr to RadvdInterface.

Definition at line 108 of file radvd.h.

◆ SocketMap

typedef std::map<uint32_t, Ptr<Socket> > ns3::Radvd::SocketMap
private

Container: interface number, Socket.

Definition at line 120 of file radvd.h.

◆ SocketMapCI

typedef std::map<uint32_t, Ptr<Socket> >::const_iterator ns3::Radvd::SocketMapCI
private

Container Const Iterator: interface number, Socket.

Definition at line 124 of file radvd.h.

◆ SocketMapI

typedef std::map<uint32_t, Ptr<Socket> >::iterator ns3::Radvd::SocketMapI
private

Container Iterator: interface number, Socket.

Definition at line 122 of file radvd.h.

Constructor & Destructor Documentation

◆ Radvd()

ns3::Radvd::Radvd ( )

Constructor.

Definition at line 70 of file radvd.cc.

References NS_LOG_FUNCTION.

◆ ~Radvd()

ns3::Radvd::~Radvd ( )
override

Destructor.

Definition at line 75 of file radvd.cc.

References m_configurations, m_recvSocket, and NS_LOG_FUNCTION.

Member Function Documentation

◆ AddConfiguration()

void ns3::Radvd::AddConfiguration ( Ptr< RadvdInterface routerInterface)

Add configuration for an interface;.

Parameters
routerInterfaceconfiguration

Definition at line 176 of file radvd.cc.

References m_configurations, and NS_LOG_FUNCTION.

◆ AssignStreams()

int64_t ns3::Radvd::AssignStreams ( int64_t  stream)

Assign a fixed random variable stream number to the random variables used by this model.

Return the number of streams (possibly zero) that have been assigned.

Parameters
streamfirst stream index to use
Returns
the number of stream indices assigned by this model

Definition at line 183 of file radvd.cc.

References m_jitter, NS_LOG_FUNCTION, and ns3::RandomVariableStream::SetStream().

+ Here is the call graph for this function:

◆ DoDispose()

void ns3::Radvd::DoDispose ( void  )
overrideprotectedvirtual

Dispose the instance.

Reimplemented from ns3::Object.

Definition at line 87 of file radvd.cc.

References ns3::Socket::Close(), ns3::Application::DoDispose(), m_recvSocket, m_sendSockets, and NS_LOG_FUNCTION.

+ Here is the call graph for this function:

◆ GetTypeId()

TypeId ns3::Radvd::GetTypeId ( void  )
static

Get the type ID.

Returns
type ID

Definition at line 53 of file radvd.cc.

References m_jitter, ns3::MakePointerAccessor(), and ns3::TypeId::SetParent().

Referenced by ns3::RadvdHelper::RadvdHelper().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ HandleRead()

◆ Send()

void ns3::Radvd::Send ( Ptr< RadvdInterface config,
Ipv6Address  dst = Ipv6Address::GetAllNodesMulticast(),
bool  reschedule = false 
)
private

Send a packet.

Parameters
configinterface configuration
dstdestination address (default ff02::1)
rescheduleif true another send will be reschedule (periodic)

Definition at line 191 of file radvd.cc.

References ns3::Packet::AddHeader(), ns3::Packet::AddPacketTag(), ns3::Icmpv6OptionPrefixInformation::AUTADDRCONF, ns3::Icmpv6Header::CalculatePseudoHeaderChecksum(), ns3::Inet6SocketAddress::ConvertFrom(), ns3::Ipv6Address::GetAllNodesMulticast(), ns3::RadvdInterface::GetCurHopLimit(), ns3::RadvdInterface::GetDefaultLifeTime(), ns3::RadvdInterface::GetInterface(), ns3::Inet6SocketAddress::GetIpv6(), ns3::RadvdInterface::GetLinkMtu(), ns3::RadvdInterface::GetMaxRtrAdvInterval(), ns3::RadvdInterface::GetMinRtrAdvInterval(), ns3::Application::GetNode(), ns3::Object::GetObject(), ns3::RadvdInterface::GetPrefixes(), ns3::RadvdInterface::GetReachableTime(), ns3::RadvdInterface::GetRetransTimer(), ns3::Icmpv6RA::GetSerializedSize(), ns3::Packet::GetSize(), ns3::UniformRandomVariable::GetValue(), ns3::RadvdInterface::IsHomeAgentFlag(), ns3::RadvdInterface::IsInitialRtrAdv(), ns3::RadvdInterface::IsManagedFlag(), ns3::RadvdInterface::IsOtherConfigFlag(), ns3::RadvdInterface::IsSourceLLAddress(), m_jitter, m_sendSockets, m_unsolicitedEventIds, MAX_INITIAL_RTR_ADVERT_INTERVAL, ns3::MilliSeconds(), ns3::Simulator::Now(), NS_ASSERT, NS_LOG_FUNCTION, NS_LOG_INFO, NS_LOG_LOGIC, ns3::Icmpv6OptionPrefixInformation::ONLINK, ns3::Icmpv6OptionPrefixInformation::ROUTERADDR, ns3::Simulator::Schedule(), ns3::Icmpv6RA::SetCurHopLimit(), ns3::Icmpv6RA::SetFlagH(), ns3::Icmpv6RA::SetFlagM(), ns3::Icmpv6RA::SetFlagO(), ns3::Icmpv6OptionPrefixInformation::SetFlags(), ns3::RadvdInterface::SetLastRaTxTime(), ns3::Icmpv6RA::SetLifeTime(), ns3::Icmpv6OptionPrefixInformation::SetPreferredTime(), ns3::Icmpv6OptionPrefixInformation::SetPrefix(), ns3::Icmpv6OptionPrefixInformation::SetPrefixLength(), ns3::Icmpv6RA::SetReachableTime(), ns3::Icmpv6RA::SetRetransmissionTime(), ns3::SocketIpTtlTag::SetTtl(), and ns3::Icmpv6OptionPrefixInformation::SetValidTime().

Referenced by HandleRead(), and StartApplication().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ StartApplication()

◆ StopApplication()

void ns3::Radvd::StopApplication ( void  )
overrideprivatevirtual

Stop the application.

Reimplemented from ns3::Application.

Definition at line 153 of file radvd.cc.

References ns3::Simulator::Cancel(), m_recvSocket, m_solicitedEventIds, m_unsolicitedEventIds, ns3::MakeNullCallback(), NS_LOG_FUNCTION, and ns3::Socket::SetRecvCallback().

+ Here is the call graph for this function:

Member Data Documentation

◆ m_configurations

RadvdInterfaceList ns3::Radvd::m_configurations
private

List of configuration for interface.

Definition at line 165 of file radvd.h.

Referenced by ~Radvd(), AddConfiguration(), HandleRead(), and StartApplication().

◆ m_jitter

Ptr<UniformRandomVariable> ns3::Radvd::m_jitter
private

Variable to provide jitter in advertisement interval.

Definition at line 180 of file radvd.h.

Referenced by AssignStreams(), GetTypeId(), HandleRead(), and Send().

◆ m_recvSocket

Ptr<Socket> ns3::Radvd::m_recvSocket
private

Raw socket to receive RS.

Definition at line 155 of file radvd.h.

Referenced by ~Radvd(), DoDispose(), StartApplication(), and StopApplication().

◆ m_sendSockets

SocketMap ns3::Radvd::m_sendSockets
private

Raw socket to send RA.

Definition at line 160 of file radvd.h.

Referenced by DoDispose(), Send(), and StartApplication().

◆ m_solicitedEventIds

EventIdMap ns3::Radvd::m_solicitedEventIds
private

Event ID map for solicited RAs.

Definition at line 175 of file radvd.h.

Referenced by HandleRead(), and StopApplication().

◆ m_unsolicitedEventIds

EventIdMap ns3::Radvd::m_unsolicitedEventIds
private

Event ID map for unsolicited RAs.

Definition at line 170 of file radvd.h.

Referenced by HandleRead(), Send(), StartApplication(), and StopApplication().

◆ MAX_INITIAL_RTR_ADVERT_INTERVAL

const uint32_t ns3::Radvd::MAX_INITIAL_RTR_ADVERT_INTERVAL = 16000
static

Default value for maximum initial RA advertisements interval (ms)

Definition at line 76 of file radvd.h.

Referenced by Send().

◆ MAX_INITIAL_RTR_ADVERTISEMENTS

const uint32_t ns3::Radvd::MAX_INITIAL_RTR_ADVERTISEMENTS = 3
static

Default value for maximum initial RA advertisements.

Definition at line 72 of file radvd.h.

◆ MAX_RA_DELAY_TIME

const uint32_t ns3::Radvd::MAX_RA_DELAY_TIME = 500
static

Default value for maximum delay of RA (ms)

Definition at line 68 of file radvd.h.

Referenced by HandleRead().

◆ MIN_DELAY_BETWEEN_RAS

const uint32_t ns3::Radvd::MIN_DELAY_BETWEEN_RAS = 3000
static

Default value for minimum delay between RA advertisements (ms)

Definition at line 80 of file radvd.h.

Referenced by HandleRead().


The documentation for this class was generated from the following files: