A Discrete-Event Network Simulator
API
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
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...
 
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...
 
bool Update (RoutingTableEntry &rt)
 Updating the routing Table with routing table entry rt. More...
 
Handle life time of invalid route
Time Getholddowntime () const
 
void Setholddowntime (Time t)
 

Private Attributes

Fields
std::map< Ipv4Address,
RoutingTableEntry
m_ipv4AddressEntry
 an entry in the routing table. More...
 
std::map< Ipv4Address, EventIdm_ipv4Events
 an entry in the event table. More...
 
Time m_holddownTime
 an entry in the routing 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 66 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 263 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 127 of file dsdv-rtable.cc.

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

Referenced by ns3::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 271 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 147 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 310 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 110 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 295 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 337 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 169 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 182 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 71 of file dsdv-rtable.cc.

References m_ipv4AddressEntry.

Referenced by ns3::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 88 of file dsdv-rtable.cc.

References m_ipv4AddressEntry.

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

Print routing table.

Definition at line 251 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 207 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 121 of file dsdv-rtable.cc.

References m_ipv4AddressEntry.

Referenced by ns3::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 135 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

an entry in the routing table.

Definition at line 344 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 342 of file dsdv-rtable.h.

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


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