A Discrete-Event Network Simulator
API
ns3::dsr::DsrRreqTable Class Reference

maintain list of DsrRreqTable entry More...

#include "dsr-rreq-table.h"

+ Inheritance diagram for ns3::dsr::DsrRreqTable:
+ Collaboration diagram for ns3::dsr::DsrRreqTable:

Classes

struct  IsExpired
 Check if the entry is expired or not. More...
 

Public Member Functions

 DsrRreqTable ()
 
 ~DsrRreqTable () override
 
uint32_t CheckUniqueRreqId (Ipv4Address dst)
 The following code generates new request id for each destination. More...
 
void FindAndUpdate (Ipv4Address dst)
 Find the entry in the route request queue to see if already exists. More...
 
bool FindSourceEntry (Ipv4Address src, Ipv4Address dst, uint16_t id)
 Find the source request entry in the route request queue, return false if not found. More...
 
BlackListFindUnidirectional (Ipv4Address neighbor)
 Verify if entry is unidirectional or not(e.g. More...
 
uint32_t GetInitHopLimit () const
 Return the initial discovert hop limit. More...
 
uint32_t GetRreqCnt (Ipv4Address dst)
 Get the request count number for one destination address. More...
 
uint32_t GetRreqIdSize () const
 Return the maximum number of request source Ids in the request table. More...
 
uint32_t GetRreqSize ()
 Get the request id size. More...
 
uint32_t GetRreqTableSize () const
 Return the maximum number of request entries in the request table. More...
 
uint32_t GetUniqueRreqIdSize () const
 Return the maximum number of request Ids in the request table for a single destination. More...
 
void Invalidate ()
 set the unidirectional entry as QUESTIONABLE state More...
 
bool MarkLinkAsUnidirectional (Ipv4Address neighbor, Time blacklistTimeout)
 Mark entry as unidirectional (e.g. More...
 
void PurgeNeighbor ()
 Remove all expired black list entries. More...
 
void RemoveLeastExpire ()
 Remove the least used entry. More...
 
void RemoveRreqEntry (Ipv4Address dst)
 Remove route request entry for dst. More...
 
void SetInitHopLimit (uint32_t hl)
 Set the initial discovert hop limit. More...
 
void SetRreqIdSize (uint32_t id)
 Set the maximum number of request source Ids in the request table. More...
 
void SetRreqTableSize (uint32_t rt)
 Set the maximum number of request entries in the request table. More...
 
void SetUniqueRreqIdSize (uint32_t uid)
 Set the maximum number of request Ids in the request table for a single destination. More...
 
- Public Member Functions inherited from ns3::Object
 Object ()
 Constructor. More...
 
 ~Object () override
 Destructor. More...
 
void AggregateObject (Ptr< Object > other)
 Aggregate two Objects together. More...
 
void Dispose ()
 Dispose of this Object. More...
 
AggregateIterator GetAggregateIterator () const
 Get an iterator to the Objects aggregated to this one. More...
 
TypeId GetInstanceTypeId () const override
 Get the most derived TypeId for this Object. More...
 
template<typename T >
Ptr< T > GetObject () const
 Get a pointer to the requested aggregated Object. More...
 
template<>
Ptr< ObjectGetObject () const
 Specialization of () for objects of type ns3::Object. More...
 
template<typename T >
Ptr< T > GetObject (TypeId tid) const
 Get a pointer to the requested aggregated Object by TypeId. More...
 
template<>
Ptr< ObjectGetObject (TypeId tid) const
 Specialization of (TypeId tid) for objects of type ns3::Object. More...
 
void Initialize ()
 Invoke DoInitialize on all Objects aggregated to this one. More...
 
bool IsInitialized () 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[[maybe_unused]])
 Copy constructor. More...
 
uint32_t GetReferenceCount () const
 Get the reference count of the object. More...
 
SimpleRefCountoperator= (const SimpleRefCount &o[[maybe_unused]])
 Assignment operator. More...
 
void Ref () const
 Increment the reference count. More...
 
void Unref () 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 errors. 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 ()
 Get the type ID. More...
 
- Static Public Member Functions inherited from ns3::Object
static TypeId GetTypeId ()
 Register this type. More...
 
- Static Public Member Functions inherited from ns3::ObjectBase
static TypeId GetTypeId ()
 Get the type ID. More...
 

Private Attributes

std::vector< BlackListm_blackList
 The Black list. More...
 
uint32_t m_initHopLimit
 The initial hop limit. More...
 
LinkStates m_linkStates
 The state of the unidirectional link. More...
 
uint32_t m_maxRreqId
 The unique request id for any destination. More...
 
uint32_t m_requestIdSize
 The request source id size. More...
 
uint32_t m_requestTableSize
 The request table size. More...
 
std::map< Ipv4Address, RreqTableEntrym_rreqDstMap
 The cache to save route request table entries indexed with destination address. More...
 
Time m_rreqEntryExpire
 The source route entry expire time. More...
 
std::map< Ipv4Address, uint32_t > m_rreqIdCache
 The id cache to ensure all the ids are unique, it is used when sending out route request. More...
 
std::list< DsrReceivedRreqEntrym_sourceRequests
 Map of entries. More...
 
std::map< Ipv4Address, std::list< DsrReceivedRreqEntry > > m_sourceRreqMap
 The cache to ensure all the route request from unique source. More...
 
Time MaxRequestPeriod
 The max request period among requests. More...
 
Time NonpropRequestTimeout
 The non-propagaton request timeout. More...
 
Time RequestPeriod
 The original request period. More...
 

Additional Inherited Members

- Protected Member Functions inherited from ns3::Object
 Object (const Object &o)
 Copy an Object. More...
 
virtual void DoDispose ()
 Destructor implementation. More...
 
virtual void DoInitialize ()
 Initialize() implementation. More...
 
virtual void NotifyNewAggregate ()
 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 ()
 Notifier called once the ObjectBase is fully constructed. More...
 

Detailed Description

maintain list of DsrRreqTable entry

Definition at line 212 of file dsr-rreq-table.h.

Constructor & Destructor Documentation

◆ DsrRreqTable()

ns3::dsr::DsrRreqTable::DsrRreqTable ( )

Definition at line 58 of file dsr-rreq-table.cc.

◆ ~DsrRreqTable()

ns3::dsr::DsrRreqTable::~DsrRreqTable ( )
override

Definition at line 63 of file dsr-rreq-table.cc.

References NS_LOG_FUNCTION_NOARGS.

Member Function Documentation

◆ CheckUniqueRreqId()

uint32_t ns3::dsr::DsrRreqTable::CheckUniqueRreqId ( Ipv4Address  dst)

The following code generates new request id for each destination.

Check for duplicate ids and save new entries if the id is not present in the table.

Parameters
dstIPv4 address of the destination
Returns
id

Definition at line 157 of file dsr-rreq-table.cc.

References m_maxRreqId, m_rreqIdCache, NS_LOG_DEBUG, NS_LOG_INFO, and NS_LOG_LOGIC.

◆ FindAndUpdate()

void ns3::dsr::DsrRreqTable::FindAndUpdate ( Ipv4Address  dst)

Find the entry in the route request queue to see if already exists.

Parameters
dstDestination IP

Definition at line 88 of file dsr-rreq-table.cc.

References ns3::dsr::RreqTableEntry::m_expire, ns3::dsr::RreqTableEntry::m_reqNo, m_requestTableSize, m_rreqDstMap, ns3::Simulator::Now(), NS_LOG_FUNCTION, NS_LOG_INFO, NS_LOG_LOGIC, and RemoveLeastExpire().

+ Here is the call graph for this function:

◆ FindSourceEntry()

bool ns3::dsr::DsrRreqTable::FindSourceEntry ( Ipv4Address  src,
Ipv4Address  dst,
uint16_t  id 
)

Find the source request entry in the route request queue, return false if not found.

Parameters
srcthe source address we just received the source request
dstthe destination address the request is targeted at
idthe identification number for this request
Returns
true if found, false otherwise

Clear the received source request entry

Check if we have found one duplication entry or not

if this entry is not found, we need to save the entry in the cache, and then return false for the check

Definition at line 251 of file dsr-rreq-table.cc.

References m_requestIdSize, m_sourceRreqMap, NS_LOG_FUNCTION, NS_LOG_LOGIC, ns3::dsr::DsrReceivedRreqEntry::SetDestination(), and ns3::dsr::DsrReceivedRreqEntry::SetIdentification().

+ Here is the call graph for this function:

◆ FindUnidirectional()

BlackList * ns3::dsr::DsrRreqTable::FindUnidirectional ( Ipv4Address  neighbor)

Verify if entry is unidirectional or not(e.g.

add this neighbor to "blacklist" for blacklistTimeout period)

Parameters
neighborneighbor address link to which assumed to be unidirectional
Returns
true on success

Definition at line 208 of file dsr-rreq-table.cc.

References m_blackList, and PurgeNeighbor().

+ Here is the call graph for this function:

◆ GetInitHopLimit()

uint32_t ns3::dsr::DsrRreqTable::GetInitHopLimit ( ) const
inline

Return the initial discovert hop limit.

Returns
the initial discovert hop limit

Definition at line 239 of file dsr-rreq-table.h.

References m_initHopLimit.

◆ GetRreqCnt()

uint32_t ns3::dsr::DsrRreqTable::GetRreqCnt ( Ipv4Address  dst)

Get the request count number for one destination address.

Parameters
dstDestination IP
Returns
the route request counter

Definition at line 137 of file dsr-rreq-table.cc.

References ns3::dsr::RreqTableEntry::m_reqNo, m_rreqDstMap, NS_LOG_FUNCTION, and NS_LOG_LOGIC.

◆ GetRreqIdSize()

uint32_t ns3::dsr::DsrRreqTable::GetRreqIdSize ( ) const
inline

Return the maximum number of request source Ids in the request table.

Returns
the maximum number of request source Ids

Definition at line 283 of file dsr-rreq-table.h.

References m_requestIdSize.

◆ GetRreqSize()

uint32_t ns3::dsr::DsrRreqTable::GetRreqSize ( )

Get the request id size.

Returns
the request id size

Definition at line 187 of file dsr-rreq-table.cc.

References m_rreqIdCache.

◆ GetRreqTableSize()

uint32_t ns3::dsr::DsrRreqTable::GetRreqTableSize ( ) const
inline

Return the maximum number of request entries in the request table.

Returns
the maximum number of request entries

Definition at line 261 of file dsr-rreq-table.h.

References m_requestTableSize.

◆ GetTypeId()

TypeId ns3::dsr::DsrRreqTable::GetTypeId ( void  )
static

Get the type ID.

Returns
the object TypeId

Definition at line 49 of file dsr-rreq-table.cc.

References ns3::TypeId::SetParent().

+ Here is the call graph for this function:

◆ GetUniqueRreqIdSize()

uint32_t ns3::dsr::DsrRreqTable::GetUniqueRreqIdSize ( ) const
inline

Return the maximum number of request Ids in the request table for a single destination.

Returns
the maximum number of request Ids

Definition at line 305 of file dsr-rreq-table.h.

References m_maxRreqId.

◆ Invalidate()

void ns3::dsr::DsrRreqTable::Invalidate ( )

set the unidirectional entry as QUESTIONABLE state

Definition at line 198 of file dsr-rreq-table.cc.

References m_linkStates, and ns3::dsr::QUESTIONABLE.

◆ MarkLinkAsUnidirectional()

bool ns3::dsr::DsrRreqTable::MarkLinkAsUnidirectional ( Ipv4Address  neighbor,
Time  blacklistTimeout 
)

Mark entry as unidirectional (e.g.

add this neighbor to "blacklist" for blacklistTimeout period)

Parameters
neighborneighbor address link to which assumed to be unidirectional
blacklistTimeouttime for which the neighboring node is put into the blacklist
Returns
true on success

Definition at line 222 of file dsr-rreq-table.cc.

References m_blackList, max, ns3::Simulator::Now(), NS_LOG_DEBUG, NS_LOG_LOGIC, and PurgeNeighbor().

+ Here is the call graph for this function:

◆ PurgeNeighbor()

void ns3::dsr::DsrRreqTable::PurgeNeighbor ( )

Remove all expired black list entries.

Definition at line 241 of file dsr-rreq-table.cc.

References m_blackList.

Referenced by FindUnidirectional(), and MarkLinkAsUnidirectional().

+ Here is the caller graph for this function:

◆ RemoveLeastExpire()

void ns3::dsr::DsrRreqTable::RemoveLeastExpire ( )

Remove the least used entry.

Definition at line 69 of file dsr-rreq-table.cc.

References ns3::dsr::RreqTableEntry::m_expire, m_rreqDstMap, max, NS_LOG_FUNCTION, and ns3::Seconds().

Referenced by FindAndUpdate().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ RemoveRreqEntry()

void ns3::dsr::DsrRreqTable::RemoveRreqEntry ( Ipv4Address  dst)

Remove route request entry for dst.

Parameters
dstDestination IP

Definition at line 121 of file dsr-rreq-table.cc.

References m_rreqDstMap, NS_LOG_FUNCTION, and NS_LOG_LOGIC.

◆ SetInitHopLimit()

void ns3::dsr::DsrRreqTable::SetInitHopLimit ( uint32_t  hl)
inline

Set the initial discovert hop limit.

Parameters
hlthe initial discovert hop limit

Definition at line 229 of file dsr-rreq-table.h.

References m_initHopLimit.

◆ SetRreqIdSize()

void ns3::dsr::DsrRreqTable::SetRreqIdSize ( uint32_t  id)
inline

Set the maximum number of request source Ids in the request table.

Parameters
idthe maximum number of request source Ids

Definition at line 272 of file dsr-rreq-table.h.

References m_requestIdSize.

◆ SetRreqTableSize()

void ns3::dsr::DsrRreqTable::SetRreqTableSize ( uint32_t  rt)
inline

Set the maximum number of request entries in the request table.

Parameters
rtthe maximum number of request entries

Definition at line 250 of file dsr-rreq-table.h.

References m_requestTableSize.

◆ SetUniqueRreqIdSize()

void ns3::dsr::DsrRreqTable::SetUniqueRreqIdSize ( uint32_t  uid)
inline

Set the maximum number of request Ids in the request table for a single destination.

Parameters
uidthe maximum number of request Ids

Definition at line 294 of file dsr-rreq-table.h.

References m_maxRreqId.

Member Data Documentation

◆ m_blackList

std::vector<BlackList> ns3::dsr::DsrRreqTable::m_blackList
private

The Black list.

Definition at line 400 of file dsr-rreq-table.h.

Referenced by FindUnidirectional(), MarkLinkAsUnidirectional(), and PurgeNeighbor().

◆ m_initHopLimit

uint32_t ns3::dsr::DsrRreqTable::m_initHopLimit
private

The initial hop limit.

Definition at line 381 of file dsr-rreq-table.h.

Referenced by GetInitHopLimit(), and SetInitHopLimit().

◆ m_linkStates

LinkStates ns3::dsr::DsrRreqTable::m_linkStates
private

The state of the unidirectional link.

Definition at line 389 of file dsr-rreq-table.h.

Referenced by Invalidate().

◆ m_maxRreqId

uint32_t ns3::dsr::DsrRreqTable::m_maxRreqId
private

The unique request id for any destination.

Definition at line 387 of file dsr-rreq-table.h.

Referenced by CheckUniqueRreqId(), GetUniqueRreqIdSize(), and SetUniqueRreqIdSize().

◆ m_requestIdSize

uint32_t ns3::dsr::DsrRreqTable::m_requestIdSize
private

The request source id size.

Definition at line 385 of file dsr-rreq-table.h.

Referenced by FindSourceEntry(), GetRreqIdSize(), and SetRreqIdSize().

◆ m_requestTableSize

uint32_t ns3::dsr::DsrRreqTable::m_requestTableSize
private

The request table size.

Definition at line 383 of file dsr-rreq-table.h.

Referenced by FindAndUpdate(), GetRreqTableSize(), and SetRreqTableSize().

◆ m_rreqDstMap

std::map<Ipv4Address, RreqTableEntry> ns3::dsr::DsrRreqTable::m_rreqDstMap
private

The cache to save route request table entries indexed with destination address.

Definition at line 395 of file dsr-rreq-table.h.

Referenced by FindAndUpdate(), GetRreqCnt(), RemoveLeastExpire(), and RemoveRreqEntry().

◆ m_rreqEntryExpire

Time ns3::dsr::DsrRreqTable::m_rreqEntryExpire
private

The source route entry expire time.

Definition at line 379 of file dsr-rreq-table.h.

◆ m_rreqIdCache

std::map<Ipv4Address, uint32_t> ns3::dsr::DsrRreqTable::m_rreqIdCache
private

The id cache to ensure all the ids are unique, it is used when sending out route request.

Definition at line 393 of file dsr-rreq-table.h.

Referenced by CheckUniqueRreqId(), and GetRreqSize().

◆ m_sourceRequests

std::list<DsrReceivedRreqEntry> ns3::dsr::DsrRreqTable::m_sourceRequests
private

Map of entries.

Definition at line 391 of file dsr-rreq-table.h.

◆ m_sourceRreqMap

std::map<Ipv4Address, std::list<DsrReceivedRreqEntry> > ns3::dsr::DsrRreqTable::m_sourceRreqMap
private

The cache to ensure all the route request from unique source.

Definition at line 397 of file dsr-rreq-table.h.

Referenced by FindSourceEntry().

◆ MaxRequestPeriod

Time ns3::dsr::DsrRreqTable::MaxRequestPeriod
private

The max request period among requests.

Definition at line 373 of file dsr-rreq-table.h.

◆ NonpropRequestTimeout

Time ns3::dsr::DsrRreqTable::NonpropRequestTimeout
private

The non-propagaton request timeout.

Definition at line 377 of file dsr-rreq-table.h.

◆ RequestPeriod

Time ns3::dsr::DsrRreqTable::RequestPeriod
private

The original request period.

Definition at line 375 of file dsr-rreq-table.h.


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