Router advertisement daemon. More...
#include <radvd.h>
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... | |
![]() | |
Application () | |
virtual | ~Application () |
Ptr< Node > | GetNode () const |
void | SetNode (Ptr< Node > node) |
void | SetStartTime (Time start) |
Specify application start time. More... | |
void | SetStopTime (Time stop) |
Specify application stop time. More... | |
![]() | |
Object () | |
virtual | ~Object () |
void | AggregateObject (Ptr< Object > other) |
void | Dispose (void) |
Run the DoDispose methods of this object and all the objects aggregated to it. More... | |
AggregateIterator | GetAggregateIterator (void) const |
virtual TypeId | GetInstanceTypeId (void) const |
template<typename T > | |
Ptr< T > | GetObject (void) const |
template<typename T > | |
Ptr< T > | GetObject (TypeId tid) const |
void | Initialize (void) |
This method calls the virtual DoInitialize method on all the objects aggregated to this object. More... | |
![]() | |
SimpleRefCount () | |
Constructor. More... | |
SimpleRefCount (const SimpleRefCount &o) | |
Copy constructor. More... | |
uint32_t | GetReferenceCount (void) const |
Get the reference count of the object. More... | |
SimpleRefCount & | operator= (const SimpleRefCount &o) |
Assignment. More... | |
void | Ref (void) const |
Increment the reference count. More... | |
void | Unref (void) const |
Decrement the reference count. More... | |
![]() | |
virtual | ~ObjectBase () |
Virtual destructor. More... | |
void | GetAttribute (std::string name, AttributeValue &value) const |
bool | GetAttributeFailSafe (std::string name, AttributeValue &attribute) const |
void | SetAttribute (std::string name, const AttributeValue &value) |
bool | SetAttributeFailSafe (std::string name, const AttributeValue &value) |
bool | TraceConnect (std::string name, std::string context, const CallbackBase &cb) |
bool | TraceConnectWithoutContext (std::string name, const CallbackBase &cb) |
bool | TraceDisconnect (std::string name, std::string context, const CallbackBase &cb) |
bool | TraceDisconnectWithoutContext (std::string name, const CallbackBase &cb) |
Static Public Member Functions | |
static TypeId | GetTypeId (void) |
Get the type ID. More... | |
![]() | |
static TypeId | GetTypeId (void) |
Get the type ID. More... | |
![]() | |
static TypeId | GetTypeId (void) |
Register this type. More... | |
![]() | |
static void | Cleanup (void) |
Noop. More... | |
![]() | |
static TypeId | GetTypeId (void) |
Get the type ID. More... | |
Static Public Attributes | |
static const uint32_t | MAX_RA_DELAY_TIME = 500 |
Default value for maximum delay of RA (ms) More... | |
Protected Member Functions | |
virtual void | DoDispose () |
Dispose the instance. More... | |
![]() | |
virtual void | DoInitialize (void) |
This method is called only once by Object::Initialize. More... | |
![]() | |
Object (const Object &o) | |
virtual void | NotifyNewAggregate (void) |
This method is invoked whenever two sets of objects are aggregated together. More... | |
![]() | |
void | ConstructSelf (const AttributeConstructionList &attributes) |
virtual void | NotifyConstructionCompleted (void) |
This method is invoked once all member attributes have been initialized. More... | |
Private Types | |
typedef std::map< uint32_t, EventId > | EventIdMap |
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... | |
Private Member Functions | |
void | HandleRead (Ptr< Socket > socket) |
Handle received packet, especially router solicitation. More... | |
void | ScheduleTransmit (Time dt, Ptr< RadvdInterface > config, EventId &eventId, Ipv6Address dst=Ipv6Address::GetAllNodesMulticast(), bool reschedule=false) |
Schedule sending a packet. 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... | |
EventIdMap | m_eventIds |
Event ID map. More... | |
Ptr< UniformRandomVariable > | m_jitter |
Variable to provide jitter in advertisement interval. More... | |
Ptr< Socket > | m_socket |
Raw socket to send RA. More... | |
Additional Inherited Members | |
![]() | |
Ptr< Node > | m_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... | |
Router advertisement daemon.
ns3::Radvd is accessible through the following paths with Config::Set and Config::Connect:
No TraceSources are defined for this type.
|
private |
|
private |
|
private |
|
private |
Container: Ptr to RadvdInterface.
|
private |
Container Const Iterator: Ptr to RadvdInterface.
|
private |
Container Iterator: Ptr to RadvdInterface.
ns3::Radvd::Radvd | ( | ) |
|
virtual |
Destructor.
Definition at line 66 of file radvd.cc.
References m_configurations, m_socket, and NS_LOG_FUNCTION.
void ns3::Radvd::AddConfiguration | ( | Ptr< RadvdInterface > | routerInterface | ) |
Add configuration for an interface;.
routerInterface | configuration |
Definition at line 123 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.
stream | first stream index to use |
Definition at line 130 of file radvd.cc.
References m_jitter, NS_LOG_FUNCTION, and ns3::RandomVariableStream::SetStream().
|
protectedvirtual |
Dispose the instance.
Reimplemented from ns3::Application.
Definition at line 77 of file radvd.cc.
References ns3::Application::DoDispose(), and NS_LOG_FUNCTION.
|
static |
Get the type ID.
Definition at line 47 of file radvd.cc.
References m_jitter, and ns3::TypeId::SetParent().
Referenced by ns3::RadvdHelper::RadvdHelper().
Handle received packet, especially router solicitation.
socket | socket to read data from |
Definition at line 246 of file radvd.cc.
References first::address, ns3::Inet6SocketAddress::ConvertFrom(), ns3::Packet::CopyData(), ns3::Icmpv6Header::GetCode(), ns3::Inet6SocketAddress::GetIpv6(), ns3::Ipv6Header::GetSourceAddress(), ns3::Time::GetTimeStep(), ns3::UniformRandomVariable::GetValue(), ns3::Icmpv6Header::ICMPV6_ND_ROUTER_SOLICITATION, ns3::Inet6SocketAddress::IsMatchingType(), m_configurations, m_eventIds, m_jitter, MAX_RA_DELAY_TIME, ns3::MilliSeconds(), ns3::Simulator::Now(), NS_LOG_FUNCTION, NS_LOG_INFO, ns3::Socket::RecvFrom(), ns3::Packet::RemoveHeader(), and ScheduleTransmit().
Referenced by StartApplication().
|
private |
Schedule sending a packet.
dt | interval between packet |
config | interface configuration |
eventId | event ID associated |
dst | IPv6 destination address |
reschedule | if true another send will be reschedule (periodic) |
Definition at line 137 of file radvd.cc.
References NS_LOG_FUNCTION, ns3::Simulator::Schedule(), and Send().
Referenced by HandleRead(), Send(), and StartApplication().
|
private |
Send a packet.
config | interface configuration |
dst | destination address (default ff02::1) |
reschedule | if true another send will be reschedule (periodic) |
Definition at line 143 of file radvd.cc.
References ns3::Packet::AddHeader(), ns3::Packet::AddPacketTag(), ns3::Socket::Bind(), ns3::Socket::Connect(), ns3::Ipv6Address::GetAllNodesMulticast(), ns3::RadvdInterface::GetCurHopLimit(), ns3::RadvdInterface::GetDefaultLifeTime(), ns3::RadvdInterface::GetInterface(), 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::Packet::GetSize(), ns3::UniformRandomVariable::GetValue(), ns3::RadvdInterface::IsHomeAgentFlag(), ns3::RadvdInterface::IsManagedFlag(), ns3::RadvdInterface::IsOtherConfigFlag(), ns3::RadvdInterface::IsSourceLLAddress(), list, m_eventIds, m_jitter, m_socket, ns3::MilliSeconds(), NS_ASSERT, NS_LOG_FUNCTION, NS_LOG_INFO, NS_LOG_LOGIC, ScheduleTransmit(), ns3::Socket::Send(), ns3::Icmpv6OptionPrefixInformation::SetFlags(), ns3::Icmpv6OptionPrefixInformation::SetPreferredTime(), ns3::Icmpv6OptionPrefixInformation::SetPrefix(), ns3::Icmpv6OptionPrefixInformation::SetPrefixLength(), ns3::SocketIpTtlTag::SetTtl(), and ns3::Icmpv6OptionPrefixInformation::SetValidTime().
Referenced by ScheduleTransmit().
|
privatevirtual |
Start the application.
Reimplemented from ns3::Application.
Definition at line 83 of file radvd.cc.
References ns3::Socket::CreateSocket(), ns3::Ipv6Address::GetAllNodesMulticast(), ns3::Application::GetNode(), HandleRead(), ns3::Ipv6Header::IPV6_ICMPV6, ns3::TypeId::LookupByName(), m_configurations, m_eventIds, m_socket, ns3::MakeCallback(), NS_ASSERT, NS_LOG_FUNCTION, ScheduleTransmit(), ns3::Seconds(), ns3::ObjectBase::SetAttribute(), and ns3::Socket::SetRecvCallback().
|
privatevirtual |
Stop the application.
Reimplemented from ns3::Application.
Definition at line 107 of file radvd.cc.
References ns3::Simulator::Cancel(), m_eventIds, m_socket, ns3::MakeNullCallback(), NS_LOG_FUNCTION, and ns3::Socket::SetRecvCallback().
|
private |
List of configuration for interface.
Definition at line 150 of file radvd.h.
Referenced by AddConfiguration(), HandleRead(), StartApplication(), and ~Radvd().
|
private |
Event ID map.
Definition at line 155 of file radvd.h.
Referenced by HandleRead(), Send(), StartApplication(), and StopApplication().
|
private |
Variable to provide jitter in advertisement interval.
Definition at line 160 of file radvd.h.
Referenced by AssignStreams(), GetTypeId(), HandleRead(), and Send().
Raw socket to send RA.
Definition at line 145 of file radvd.h.
Referenced by Send(), StartApplication(), StopApplication(), and ~Radvd().
|
static |
Default value for maximum delay of RA (ms)
Definition at line 69 of file radvd.h.
Referenced by HandleRead().