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...
 
virtual ~Radvd ()
 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 ()
 
virtual ~Application ()
 
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...
 
virtual ~Object ()
 Destructor. More...
 
void AggregateObject (Ptr< Object > other)
 Aggregate two Objects together. More...
 
void Dispose (void)
 Dispose of this Object. More...
 
AggregateIterator GetAggregateIterator (void) const
 Get an iterator to the Objects aggregated to this one. More...
 
virtual TypeId GetInstanceTypeId (void) const
 Get the most derived TypeId for this Object. More...
 
template<typename T >
Ptr< T > GetObject (void) const
 Get a pointer to the requested aggregated Object. More...
 
template<typename T >
Ptr< T > GetObject (TypeId tid) const
 Get a pointer to the requested aggregated Object by TypeId. More...
 
void Initialize (void)
 Invoke DoInitialize on all Objects aggregated to this one. More...
 
bool IsInitialized (void) 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)
 Copy constructor. More...
 
uint32_t GetReferenceCount (void) const
 Get the reference count of the object. More...
 
SimpleRefCountoperator= (const SimpleRefCount &o)
 Assignment operator. More...
 
void Ref (void) const
 Increment the reference count. More...
 
void Unref (void) 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 erros. 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 (void)
 Get the type ID. More...
 
- Static Public Member Functions inherited from ns3::Application
static TypeId GetTypeId (void)
 Get the type ID. More...
 
- Static Public Member Functions inherited from ns3::Object
static TypeId GetTypeId (void)
 Register this type. More...
 
- Static Public Member Functions inherited from ns3::ObjectBase
static TypeId GetTypeId (void)
 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

virtual void DoDispose ()
 Dispose the instance. More...
 
- Protected Member Functions inherited from ns3::Application
virtual void DoInitialize (void)
 Initialize() implementation. More...
 
- Protected Member Functions inherited from ns3::Object
 Object (const Object &o)
 Copy an Object. More...
 
virtual void NotifyNewAggregate (void)
 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 (void)
 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...
 
virtual void StartApplication ()
 Start the application. More...
 
virtual void StopApplication ()
 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

- 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.

Config Paths

ns3::Radvd is accessible through the following paths with Config::Set and Config::Connect:

  • "/NodeList/[i]/ApplicationList/[i]/$ns3::Radvd"

Attributes

Attributes defined in parent class ns3::Application

  • StartTime: Time at which the application will start
    • Set with class: ns3::TimeValue
    • Underlying type: Time –9223372036854775808.0ns:+9223372036854775807.0ns
    • Initial value: +0.0ns
    • Flags: construct write read
  • StopTime: Time at which the application will stop
    • Set with class: ns3::TimeValue
    • Underlying type: Time –9223372036854775808.0ns:+9223372036854775807.0ns
    • Initial value: +0.0ns
    • Flags: construct write read

No TraceSources are defined for this type.
Size of this type is 280 bytes (on a 64-bit architecture).

Definition at line 46 of file radvd.h.

Member Typedef Documentation

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

Container: interface number, EventId.

Definition at line 113 of file radvd.h.

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.

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

Container Iterator: interface number, EventId.

Definition at line 115 of file radvd.h.

Container: Ptr to RadvdInterface.

Definition at line 106 of file radvd.h.

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.

Container Iterator: Ptr to RadvdInterface.

Definition at line 108 of file radvd.h.

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

Container: interface number, Socket.

Definition at line 120 of file radvd.h.

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.

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

ns3::Radvd::Radvd ( )

Constructor.

Definition at line 66 of file radvd.cc.

References NS_LOG_FUNCTION.

ns3::Radvd::~Radvd ( )
virtual

Destructor.

Definition at line 71 of file radvd.cc.

References m_configurations, m_recvSocket, and NS_LOG_FUNCTION.

Member Function Documentation

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

Add configuration for an interface;.

Parameters
routerInterfaceconfiguration

Definition at line 160 of file radvd.cc.

References m_configurations, and NS_LOG_FUNCTION.

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 167 of file radvd.cc.

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

+ Here is the call graph for this function:

void ns3::Radvd::DoDispose ( void  )
protectedvirtual

Dispose the instance.

Reimplemented from ns3::Application.

Definition at line 82 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:

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

Get the type ID.

Returns
type ID

Definition at line 51 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:

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 174 of file radvd.cc.

References ns3::Packet::AddHeader(), ns3::Packet::AddPacketTag(), 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(), list, 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::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:

void ns3::Radvd::StopApplication ( void  )
privatevirtual

Stop the application.

Reimplemented from ns3::Application.

Definition at line 138 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

RadvdInterfaceList ns3::Radvd::m_configurations
private

List of configuration for interface.

Definition at line 163 of file radvd.h.

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

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

Variable to provide jitter in advertisement interval.

Definition at line 178 of file radvd.h.

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

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

Raw socket to receive RS.

Definition at line 153 of file radvd.h.

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

SocketMap ns3::Radvd::m_sendSockets
private

Raw socket to send RA.

Definition at line 158 of file radvd.h.

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

EventIdMap ns3::Radvd::m_solicitedEventIds
private

Event ID map for solicited RAs.

Definition at line 173 of file radvd.h.

Referenced by HandleRead(), and StopApplication().

EventIdMap ns3::Radvd::m_unsolicitedEventIds
private

Event ID map for unsolicited RAs.

Definition at line 168 of file radvd.h.

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

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().

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.

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().

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: