The Routing table used by AODV protocol. More...
#include "aodv-rtable.h"
Public Member Functions | |
RoutingTable (Time t) | |
constructor More... | |
bool | AddRoute (RoutingTableEntry &r) |
Add routing table entry if it doesn't yet exist in routing table. More... | |
void | Clear () |
Delete all entries from routing table. More... | |
void | DeleteAllRoutesFromInterface (Ipv4InterfaceAddress iface) |
Delete all route from interface with address iface. More... | |
bool | DeleteRoute (Ipv4Address dst) |
Delete routing table entry with destination address dst, if it exists. More... | |
void | GetListOfDestinationWithNextHop (Ipv4Address nextHop, std::map< Ipv4Address, uint32_t > &unreachable) |
Lookup routing entries with next hop Address dst and not empty list of precursors. More... | |
void | InvalidateRoutesWithDst (std::map< Ipv4Address, uint32_t > const &unreachable) |
Update routing entries with this destination as follows: More... | |
bool | LookupRoute (Ipv4Address dst, RoutingTableEntry &rt) |
Lookup routing table entry with destination address dst. More... | |
bool | LookupValidRoute (Ipv4Address dst, RoutingTableEntry &rt) |
Lookup route in VALID state. More... | |
bool | MarkLinkAsUnidirectional (Ipv4Address neighbor, Time blacklistTimeout) |
Mark entry as unidirectional (e.g. More... | |
void | Print (Ptr< OutputStreamWrapper > stream) const |
Print routing table. More... | |
void | Purge () |
Delete all outdated entries and invalidate valid entry if Lifetime is expired. More... | |
bool | SetEntryState (Ipv4Address dst, RouteFlags state) |
Set routing table entry flags. More... | |
bool | Update (RoutingTableEntry &rt) |
Update routing table. More... | |
Handle lifetime of invalid route | |
Time | GetBadLinkLifetime () const |
void | SetBadLinkLifetime (Time t) |
Private Member Functions | |
void | Purge (std::map< Ipv4Address, RoutingTableEntry > &table) const |
const version of Purge, for use by Print() method More... | |
Private Attributes | |
Time | m_badLinkLifetime |
Deletion time for invalid routes. More... | |
std::map< Ipv4Address, RoutingTableEntry > | m_ipv4AddressEntry |
The routing table. More... | |
The Routing table used by AODV protocol.
Definition at line 388 of file aodv-rtable.h.
ns3::aodv::RoutingTable::RoutingTable | ( | Time | t | ) |
constructor
t | the routing table entry lifetime |
Definition at line 208 of file aodv-rtable.cc.
bool ns3::aodv::RoutingTable::AddRoute | ( | RoutingTableEntry & | r | ) |
Add routing table entry if it doesn't yet exist in routing table.
r | routing table entry |
Definition at line 263 of file aodv-rtable.cc.
References ns3::aodv::RoutingTableEntry::GetDestination(), ns3::aodv::RoutingTableEntry::GetFlag(), ns3::aodv::IN_SEARCH, m_ipv4AddressEntry, NS_LOG_FUNCTION, Purge(), and ns3::aodv::RoutingTableEntry::SetRreqCnt().
Referenced by ns3::aodv::AodvRtableTest::DoRun(), ns3::aodv::RoutingProtocol::NotifyAddAddress(), ns3::aodv::RoutingProtocol::NotifyInterfaceUp(), ns3::aodv::RoutingProtocol::NotifyRemoveAddress(), ns3::aodv::RoutingProtocol::ProcessHello(), ns3::aodv::RoutingProtocol::RecvReply(), ns3::aodv::RoutingProtocol::RecvRequest(), ns3::aodv::RoutingProtocol::SendRequest(), ns3::aodv::RoutingProtocol::SetIpv4(), and ns3::aodv::RoutingProtocol::UpdateRouteToNeighbor().
|
inline |
Delete all entries from routing table.
Definition at line 468 of file aodv-rtable.h.
References m_ipv4AddressEntry.
Referenced by ns3::aodv::RoutingProtocol::NotifyInterfaceDown(), and ns3::aodv::RoutingProtocol::NotifyRemoveAddress().
void ns3::aodv::RoutingTable::DeleteAllRoutesFromInterface | ( | Ipv4InterfaceAddress | iface | ) |
Delete all route from interface with address iface.
iface | the interface IP address |
Definition at line 351 of file aodv-rtable.cc.
References m_ipv4AddressEntry, and NS_LOG_FUNCTION.
Referenced by ns3::aodv::RoutingProtocol::NotifyInterfaceDown(), and ns3::aodv::RoutingProtocol::NotifyRemoveAddress().
bool ns3::aodv::RoutingTable::DeleteRoute | ( | Ipv4Address | dst | ) |
Delete routing table entry with destination address dst, if it exists.
dst | destination address |
Definition at line 249 of file aodv-rtable.cc.
References m_ipv4AddressEntry, NS_LOG_FUNCTION, NS_LOG_LOGIC(), and Purge().
Referenced by ns3::aodv::AodvRtableTest::DoRun(), and ns3::aodv::RoutingProtocol::RouteRequestTimerExpire().
|
inline |
Definition at line 398 of file aodv-rtable.h.
References m_badLinkLifetime.
Referenced by ns3::aodv::AodvRtableTest::DoRun().
void ns3::aodv::RoutingTable::GetListOfDestinationWithNextHop | ( | Ipv4Address | nextHop, |
std::map< Ipv4Address, uint32_t > & | unreachable | ||
) |
Lookup routing entries with next hop Address dst and not empty list of precursors.
nextHop | the next hop IP address |
unreachable |
Definition at line 314 of file aodv-rtable.cc.
References m_ipv4AddressEntry, NS_LOG_FUNCTION, NS_LOG_LOGIC(), and Purge().
Referenced by ns3::aodv::AodvRtableTest::DoRun(), ns3::aodv::RoutingProtocol::RecvError(), and ns3::aodv::RoutingProtocol::SendRerrWhenBreaksLinkToNextHop().
void ns3::aodv::RoutingTable::InvalidateRoutesWithDst | ( | std::map< Ipv4Address, uint32_t > const & | unreachable | ) |
Update routing entries with this destination as follows:
unreachable | routes to invalidate |
Definition at line 331 of file aodv-rtable.cc.
References m_badLinkLifetime, m_ipv4AddressEntry, NS_LOG_FUNCTION, NS_LOG_LOGIC(), Purge(), and ns3::aodv::VALID.
Referenced by ns3::aodv::AodvRtableTest::DoRun(), ns3::aodv::RoutingProtocol::RecvError(), and ns3::aodv::RoutingProtocol::SendRerrWhenBreaksLinkToNextHop().
bool ns3::aodv::RoutingTable::LookupRoute | ( | Ipv4Address | dst, |
RoutingTableEntry & | rt | ||
) |
Lookup routing table entry with destination address dst.
dst | destination address |
rt | entry with destination address dst, if exists |
Definition at line 214 of file aodv-rtable.cc.
References m_ipv4AddressEntry, NS_LOG_FUNCTION, NS_LOG_LOGIC(), and Purge().
Referenced by ns3::aodv::RoutingProtocol::DeferredRouteOutput(), ns3::aodv::AodvRtableTest::DoRun(), ns3::aodv::RoutingProtocol::Forwarding(), LookupValidRoute(), ns3::aodv::RoutingProtocol::ProcessHello(), ns3::aodv::RoutingProtocol::RecvError(), ns3::aodv::RoutingProtocol::RecvReply(), ns3::aodv::RoutingProtocol::RecvReplyAck(), ns3::aodv::RoutingProtocol::RecvRequest(), ns3::aodv::RoutingProtocol::RouteInput(), ns3::aodv::RoutingProtocol::ScheduleRreqRetry(), ns3::aodv::RoutingProtocol::SendReplyAck(), ns3::aodv::RoutingProtocol::SendReplyByIntermediateNode(), ns3::aodv::RoutingProtocol::SendRequest(), ns3::aodv::RoutingProtocol::SendRerrWhenBreaksLinkToNextHop(), ns3::aodv::RoutingProtocol::UpdateRouteLifeTime(), and ns3::aodv::RoutingProtocol::UpdateRouteToNeighbor().
bool ns3::aodv::RoutingTable::LookupValidRoute | ( | Ipv4Address | dst, |
RoutingTableEntry & | rt | ||
) |
Lookup route in VALID state.
dst | destination address |
rt | entry with destination address dst, if exists |
Definition at line 236 of file aodv-rtable.cc.
References ns3::aodv::RoutingTableEntry::GetFlag(), LookupRoute(), NS_LOG_FUNCTION, NS_LOG_LOGIC(), and ns3::aodv::VALID.
Referenced by ns3::aodv::RoutingProtocol::RecvReply(), ns3::aodv::RoutingProtocol::RouteInput(), ns3::aodv::RoutingProtocol::RouteOutput(), ns3::aodv::RoutingProtocol::RouteRequestTimerExpire(), ns3::aodv::RoutingProtocol::SendRerrMessage(), and ns3::aodv::RoutingProtocol::SendRerrWhenNoRouteToForward().
bool ns3::aodv::RoutingTable::MarkLinkAsUnidirectional | ( | Ipv4Address | neighbor, |
Time | blacklistTimeout | ||
) |
Mark entry as unidirectional (e.g.
add this neighbor to "blacklist" for blacklistTimeout period)
neighbor | - neighbor address link to which assumed to be unidirectional |
blacklistTimeout | - time for which the neighboring node is put into the blacklist |
Definition at line 449 of file aodv-rtable.cc.
References ns3::Time::GetSeconds(), m_ipv4AddressEntry, NS_LOG_FUNCTION, and NS_LOG_LOGIC().
Referenced by ns3::aodv::RoutingProtocol::AckTimerExpire(), and ns3::aodv::AodvRtableTest::DoRun().
void ns3::aodv::RoutingTable::Print | ( | Ptr< OutputStreamWrapper > | stream | ) | const |
Print routing table.
stream | the output stream |
Definition at line 467 of file aodv-rtable.cc.
References ns3::OutputStreamWrapper::GetStream(), m_ipv4AddressEntry, and Purge().
Referenced by ns3::aodv::RoutingProtocol::PrintRoutingTable().
void ns3::aodv::RoutingTable::Purge | ( | ) |
Delete all outdated entries and invalidate valid entry if Lifetime is expired.
Definition at line 375 of file aodv-rtable.cc.
References ns3::aodv::INVALID, m_badLinkLifetime, m_ipv4AddressEntry, NS_LOG_FUNCTION, NS_LOG_LOGIC(), ns3::Seconds(), and ns3::aodv::VALID.
Referenced by AddRoute(), DeleteRoute(), ns3::aodv::RoutingProtocol::Forwarding(), GetListOfDestinationWithNextHop(), InvalidateRoutesWithDst(), LookupRoute(), and Print().
|
private |
const version of Purge, for use by Print() method
table | the routing table entry to purge |
Definition at line 412 of file aodv-rtable.cc.
References ns3::aodv::INVALID, m_badLinkLifetime, NS_LOG_FUNCTION, NS_LOG_LOGIC(), ns3::Seconds(), and ns3::aodv::VALID.
|
inline |
Definition at line 402 of file aodv-rtable.h.
References m_badLinkLifetime.
Referenced by ns3::aodv::AodvRtableTest::DoRun().
bool ns3::aodv::RoutingTable::SetEntryState | ( | Ipv4Address | dst, |
RouteFlags | state | ||
) |
Set routing table entry flags.
dst | destination address |
state | the routing flags |
Definition at line 297 of file aodv-rtable.cc.
References m_ipv4AddressEntry, NS_LOG_FUNCTION, and NS_LOG_LOGIC().
Referenced by ns3::aodv::AodvRtableTest::DoRun().
bool ns3::aodv::RoutingTable::Update | ( | RoutingTableEntry & | rt | ) |
Update routing table.
rt | entry with destination address dst, if exists |
Definition at line 277 of file aodv-rtable.cc.
References ns3::aodv::RoutingTableEntry::GetDestination(), ns3::aodv::IN_SEARCH, m_ipv4AddressEntry, NS_LOG_FUNCTION, and NS_LOG_LOGIC().
Referenced by ns3::aodv::AodvRtableTest::DoRun(), ns3::aodv::RoutingProtocol::ProcessHello(), ns3::aodv::RoutingProtocol::RecvReply(), ns3::aodv::RoutingProtocol::RecvReplyAck(), ns3::aodv::RoutingProtocol::RecvRequest(), ns3::aodv::RoutingProtocol::SendReplyByIntermediateNode(), ns3::aodv::RoutingProtocol::SendRequest(), ns3::aodv::RoutingProtocol::UpdateRouteLifeTime(), and ns3::aodv::RoutingProtocol::UpdateRouteToNeighbor().
|
private |
Deletion time for invalid routes.
Definition at line 490 of file aodv-rtable.h.
Referenced by GetBadLinkLifetime(), InvalidateRoutesWithDst(), Purge(), and SetBadLinkLifetime().
|
private |
The routing table.
Definition at line 488 of file aodv-rtable.h.
Referenced by AddRoute(), Clear(), DeleteAllRoutesFromInterface(), DeleteRoute(), GetListOfDestinationWithNextHop(), InvalidateRoutesWithDst(), LookupRoute(), MarkLinkAsUnidirectional(), Print(), Purge(), SetEntryState(), and Update().