A Discrete-Event Network Simulator
API
ns3::dsdv::RoutingTable Class Reference

The Routing table used by DSDV protocol. More...

#include "dsdv-rtable.h"

+ Collaboration diagram for ns3::dsdv::RoutingTable:

Public Member Functions

 RoutingTable ()
 c-tor More...
 
bool AddIpv4Event (Ipv4Address address, EventId id)
 Add an event for a destination address so that the update to for that destination is sent after the event is completed. More...
 
bool AddRoute (RoutingTableEntry &r)
 Add routing table entry if it doesn't yet exist in routing table. More...
 
bool AnyRunningEvent (Ipv4Address address)
 Force delete an update waiting for settling time to complete as a better update to same destination was received. More...
 
void Clear ()
 Delete all entries from routing table. More...
 
void DeleteAllRoutesFromInterface (Ipv4InterfaceAddress iface)
 Delete all route from interface with address iface. More...
 
bool DeleteIpv4Event (Ipv4Address address)
 Clear up the entry from the map after the event is completed. More...
 
bool DeleteRoute (Ipv4Address dst)
 Delete routing table entry with destination address dst, if it exists. More...
 
bool ForceDeleteIpv4Event (Ipv4Address address)
 Force delete an update waiting for settling time to complete as a better update to same destination was received. More...
 
EventId GetEventId (Ipv4Address address)
 Get the EcentId associated with that address. More...
 
Time Getholddowntime () const
 
void GetListOfAllRoutes (std::map< Ipv4Address, RoutingTableEntry > &allRoutes)
 Lookup list of all addresses in the routing table. More...
 
void GetListOfDestinationWithNextHop (Ipv4Address nxtHp, std::map< Ipv4Address, RoutingTableEntry > &dstList)
 Lookup list of addresses for which nxtHp is the next Hop address. More...
 
bool LookupRoute (Ipv4Address dst, RoutingTableEntry &rt)
 Lookup routing table entry with destination address dst. More...
 
bool LookupRoute (Ipv4Address id, RoutingTableEntry &rt, bool forRouteInput)
 
void Print (Ptr< OutputStreamWrapper > stream) const
 Print routing table. More...
 
void Purge (std::map< Ipv4Address, RoutingTableEntry > &removedAddresses)
 Delete all outdated entries if Lifetime is expired. More...
 
uint32_t RoutingTableSize ()
 Provides the number of routes present in that nodes routing table. More...
 
void Setholddowntime (Time t)
 
bool Update (RoutingTableEntry &rt)
 Updating the routing Table with routing table entry rt. More...
 

Private Attributes

Time m_holddownTime
 
std::map< Ipv4Address, RoutingTableEntrym_ipv4AddressEntry
 an entry in the routing table. More...
 
std::map< Ipv4Address, EventIdm_ipv4Events
 an entry in the event table. More...
 

Detailed Description

The Routing table used by DSDV protocol.

Definition at line 219 of file dsdv-rtable.h.

Constructor & Destructor Documentation

ns3::dsdv::RoutingTable::RoutingTable ( )

c-tor

Definition at line 67 of file dsdv-rtable.cc.

Member Function Documentation

bool ns3::dsdv::RoutingTable::AddIpv4Event ( Ipv4Address  address,
EventId  id 
)

Add an event for a destination address so that the update to for that destination is sent after the event is completed.

Parameters
addressdestination address for which this event is running.
idunique eventid that was generated.

Definition at line 264 of file dsdv-rtable.cc.

References m_ipv4Events.

Referenced by ns3::dsdv::RoutingProtocol::RecvDsdv().

+ Here is the caller graph for this function:

bool ns3::dsdv::RoutingTable::AddRoute ( RoutingTableEntry r)

Add routing table entry if it doesn't yet exist in routing table.

Parameters
rrouting table entry
Returns
true in success

Definition at line 128 of file dsdv-rtable.cc.

References ns3::dsdv::RoutingTableEntry::GetDestination(), and m_ipv4AddressEntry.

Referenced by DsdvTableTestCase::DoRun(), ns3::dsdv::RoutingProtocol::NotifyAddAddress(), ns3::dsdv::RoutingProtocol::NotifyInterfaceUp(), ns3::dsdv::RoutingProtocol::RecvDsdv(), ns3::dsdv::RoutingProtocol::RouteOutput(), and ns3::dsdv::RoutingProtocol::SetIpv4().

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

bool ns3::dsdv::RoutingTable::AnyRunningEvent ( Ipv4Address  address)

Force delete an update waiting for settling time to complete as a better update to same destination was received.

Parameters
addressdestination address for which this event is running.
Returns
true on success

Definition at line 272 of file dsdv-rtable.cc.

References ns3::EventId::IsRunning(), and m_ipv4Events.

Referenced by ns3::dsdv::RoutingProtocol::MergeTriggerPeriodicUpdates(), ns3::dsdv::RoutingProtocol::RecvDsdv(), and ns3::dsdv::RoutingProtocol::SendTriggeredUpdate().

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

void ns3::dsdv::RoutingTable::Clear ( void  )
inline

Delete all entries from routing table.

Definition at line 273 of file dsdv-rtable.h.

References m_ipv4AddressEntry.

Referenced by ns3::dsdv::RoutingProtocol::NotifyInterfaceDown().

+ Here is the caller graph for this function:

void ns3::dsdv::RoutingTable::DeleteAllRoutesFromInterface ( Ipv4InterfaceAddress  iface)

Delete all route from interface with address iface.

Definition at line 148 of file dsdv-rtable.cc.

References m_ipv4AddressEntry.

Referenced by ns3::dsdv::RoutingProtocol::NotifyInterfaceDown().

+ Here is the caller graph for this function:

bool ns3::dsdv::RoutingTable::DeleteIpv4Event ( Ipv4Address  address)

Clear up the entry from the map after the event is completed.

Parameters
addressdestination address for which this event is running.
Returns
true on success

Definition at line 311 of file dsdv-rtable.cc.

References ns3::EventId::IsExpired(), ns3::EventId::IsRunning(), and m_ipv4Events.

Referenced by ns3::dsdv::RoutingProtocol::SendTriggeredUpdate().

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

bool ns3::dsdv::RoutingTable::DeleteRoute ( Ipv4Address  dst)

Delete routing table entry with destination address dst, if it exists.

Parameters
dstdestination address
Returns
true on success

Definition at line 111 of file dsdv-rtable.cc.

References m_ipv4AddressEntry.

Referenced by ns3::dsdv::RoutingProtocol::MergeTriggerPeriodicUpdates(), ns3::dsdv::RoutingProtocol::RecvDsdv(), and ns3::dsdv::RoutingProtocol::SendTriggeredUpdate().

+ Here is the caller graph for this function:

bool ns3::dsdv::RoutingTable::ForceDeleteIpv4Event ( Ipv4Address  address)

Force delete an update waiting for settling time to complete as a better update to same destination was received.

Parameters
addressdestination address for which this event is running.
Returns
true on finding out that an event is already running for that destination address.

Definition at line 296 of file dsdv-rtable.cc.

References ns3::Simulator::Cancel(), and m_ipv4Events.

Referenced by ns3::dsdv::RoutingProtocol::RecvDsdv().

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

EventId ns3::dsdv::RoutingTable::GetEventId ( Ipv4Address  address)

Get the EcentId associated with that address.

Parameters
addressdestination address for which this event is running.
Returns
EventId on finding out an event is associated else return NULL.

Definition at line 338 of file dsdv-rtable.cc.

References m_ipv4Events.

Referenced by ns3::dsdv::RoutingProtocol::SendTriggeredUpdate().

+ Here is the caller graph for this function:

Time ns3::dsdv::RoutingTable::Getholddowntime ( ) const
inline

Definition at line 326 of file dsdv-rtable.h.

References m_holddownTime.

void ns3::dsdv::RoutingTable::GetListOfAllRoutes ( std::map< Ipv4Address, RoutingTableEntry > &  allRoutes)

Lookup list of all addresses in the routing table.

Parameters
allRoutesis the list that will hold all these addresses present in the nodes routing table

Definition at line 170 of file dsdv-rtable.cc.

References m_ipv4AddressEntry, and ns3::dsdv::VALID.

Referenced by ns3::dsdv::RoutingProtocol::LookForQueuedPackets(), ns3::dsdv::RoutingProtocol::MergeTriggerPeriodicUpdates(), ns3::dsdv::RoutingProtocol::RecvDsdv(), ns3::dsdv::RoutingProtocol::SendPeriodicUpdate(), and ns3::dsdv::RoutingProtocol::SendTriggeredUpdate().

+ Here is the caller graph for this function:

void ns3::dsdv::RoutingTable::GetListOfDestinationWithNextHop ( Ipv4Address  nxtHp,
std::map< Ipv4Address, RoutingTableEntry > &  dstList 
)

Lookup list of addresses for which nxtHp is the next Hop address.

Parameters
nxtHpnexthop's address for which we want the list of destinations
dstListis the list that will hold all these destination addresses

Definition at line 183 of file dsdv-rtable.cc.

References m_ipv4AddressEntry.

Referenced by ns3::dsdv::RoutingProtocol::RecvDsdv().

+ Here is the caller graph for this function:

bool ns3::dsdv::RoutingTable::LookupRoute ( Ipv4Address  dst,
RoutingTableEntry rt 
)

Lookup routing table entry with destination address dst.

Parameters
dstdestination address
rtentry with destination address dst, if exists
Returns
true on success

Definition at line 72 of file dsdv-rtable.cc.

References m_ipv4AddressEntry.

Referenced by DsdvTableTestCase::DoRun(), ns3::dsdv::RoutingProtocol::GetSettlingTime(), ns3::dsdv::RoutingProtocol::LookForQueuedPackets(), ns3::dsdv::RoutingProtocol::RecvDsdv(), ns3::dsdv::RoutingProtocol::RouteInput(), ns3::dsdv::RoutingProtocol::RouteOutput(), ns3::dsdv::RoutingProtocol::SendPeriodicUpdate(), and ns3::dsdv::RoutingProtocol::SendTriggeredUpdate().

+ Here is the caller graph for this function:

bool ns3::dsdv::RoutingTable::LookupRoute ( Ipv4Address  id,
RoutingTableEntry rt,
bool  forRouteInput 
)

Definition at line 89 of file dsdv-rtable.cc.

References m_ipv4AddressEntry.

void ns3::dsdv::RoutingTable::Print ( Ptr< OutputStreamWrapper stream) const

Print routing table.

Definition at line 252 of file dsdv-rtable.cc.

References ns3::OutputStreamWrapper::GetStream(), and m_ipv4AddressEntry.

Referenced by ns3::dsdv::RoutingProtocol::PrintRoutingTable().

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

void ns3::dsdv::RoutingTable::Purge ( std::map< Ipv4Address, RoutingTableEntry > &  removedAddresses)

Delete all outdated entries if Lifetime is expired.

Todo:
Need to decide when to invalidate a route

Definition at line 208 of file dsdv-rtable.cc.

References m_holddownTime, and m_ipv4AddressEntry.

Referenced by ns3::dsdv::RoutingProtocol::RouteOutput(), and ns3::dsdv::RoutingProtocol::SendPeriodicUpdate().

+ Here is the caller graph for this function:

uint32_t ns3::dsdv::RoutingTable::RoutingTableSize ( )

Provides the number of routes present in that nodes routing table.

Definition at line 122 of file dsdv-rtable.cc.

References m_ipv4AddressEntry.

Referenced by DsdvTableTestCase::DoRun().

+ Here is the caller graph for this function:

void ns3::dsdv::RoutingTable::Setholddowntime ( Time  t)
inline

Definition at line 330 of file dsdv-rtable.h.

References m_holddownTime.

Referenced by ns3::dsdv::RoutingProtocol::Start().

+ Here is the caller graph for this function:

bool ns3::dsdv::RoutingTable::Update ( RoutingTableEntry rt)

Updating the routing Table with routing table entry rt.

Parameters
rtrouting table entry
Returns
true on success

Definition at line 136 of file dsdv-rtable.cc.

References ns3::dsdv::RoutingTableEntry::GetDestination(), and m_ipv4AddressEntry.

Referenced by ns3::dsdv::RoutingProtocol::MergeTriggerPeriodicUpdates(), ns3::dsdv::RoutingProtocol::RecvDsdv(), ns3::dsdv::RoutingProtocol::SendPeriodicUpdate(), and ns3::dsdv::RoutingProtocol::SendTriggeredUpdate().

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

Member Data Documentation

Time ns3::dsdv::RoutingTable::m_holddownTime
private

Definition at line 343 of file dsdv-rtable.h.

Referenced by Getholddowntime(), Purge(), and Setholddowntime().

std::map<Ipv4Address, RoutingTableEntry> ns3::dsdv::RoutingTable::m_ipv4AddressEntry
private
std::map<Ipv4Address, EventId> ns3::dsdv::RoutingTable::m_ipv4Events
private

an entry in the event table.

Definition at line 341 of file dsdv-rtable.h.

Referenced by AddIpv4Event(), AnyRunningEvent(), DeleteIpv4Event(), ForceDeleteIpv4Event(), and GetEventId().


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