ns3::ArpCache Class Reference
[Arp]

An ARP cache. More...

#include <arp-cache.h>

Inheritance diagram for ns3::ArpCache:
Inheritance graph
[legend]
Collaboration diagram for ns3::ArpCache:
Collaboration graph
[legend]

List of all members.

Classes

class  Entry
 A record that that holds information about an ArpCache entry. More...

Public Member Functions

 ArpCache ()
 ~ArpCache ()
void SetDevice (Ptr< NetDevice > device, Ptr< Ipv4Interface > interface)
Ptr< NetDeviceGetDevice (void) const
Ptr< Ipv4InterfaceGetInterface (void) const
void SetAliveTimeout (Time aliveTimeout)
void SetDeadTimeout (Time deadTimeout)
void SetWaitReplyTimeout (Time waitReplyTimeout)
Time GetAliveTimeout (void) const
Time GetDeadTimeout (void) const
Time GetWaitReplyTimeout (void) const
void SetArpRequestCallback (Callback< void, Ptr< const ArpCache >, Ipv4Address > arpRequestCallback)
void StartWaitReplyTimer (void)
ArpCache::EntryLookup (Ipv4Address destination)
 Do lookup in the ARP cache against an IP address.
ArpCache::EntryAdd (Ipv4Address to)
 Add an Ipv4Address to this ARP cache.
void Flush (void)
 Clear the ArpCache of all entries.

Static Public Member Functions

static TypeId GetTypeId (void)
 This method returns the TypeId associated to ns3::ArpCache.

Private Types

typedef sgi::hash_map
< Ipv4Address, ArpCache::Entry
*, Ipv4AddressHash
Cache
typedef sgi::hash_map
< Ipv4Address, ArpCache::Entry
*, Ipv4AddressHash >::iterator 
CacheI

Private Member Functions

virtual void DoDispose (void)
void HandleWaitReplyTimeout (void)

Private Attributes

Ptr< NetDevicem_device
Ptr< Ipv4Interfacem_interface
Time m_aliveTimeout
Time m_deadTimeout
Time m_waitReplyTimeout
EventId m_waitReplyTimer
Callback< void, Ptr< const
ArpCache >, Ipv4Address
m_arpRequestCallback
uint32_t m_maxRetries
uint32_t m_pendingQueueSize
Cache m_arpCache
TracedCallback< Ptr< const
Packet > > 
m_dropTrace

Detailed Description

An ARP cache.

A cached lookup table for translating layer 3 addresses to layer 2. This implementation does lookups from IPv4 to a MAC address

Definition at line 49 of file arp-cache.h.


Member Typedef Documentation

typedef sgi::hash_map<Ipv4Address, ArpCache::Entry *, Ipv4AddressHash> ns3::ArpCache::Cache [private]

Definition at line 204 of file arp-cache.h.

typedef sgi::hash_map<Ipv4Address, ArpCache::Entry *, Ipv4AddressHash>::iterator ns3::ArpCache::CacheI [private]

Definition at line 205 of file arp-cache.h.


Constructor & Destructor Documentation

ns3::ArpCache::ArpCache (  ) 

Definition at line 73 of file arp-cache.cc.

References NS_LOG_FUNCTION.

ns3::ArpCache::~ArpCache (  ) 

Definition at line 80 of file arp-cache.cc.

References NS_LOG_FUNCTION.


Member Function Documentation

ArpCache::Entry * ns3::ArpCache::Add ( Ipv4Address  to  ) 

Add an Ipv4Address to this ARP cache.

Definition at line 255 of file arp-cache.cc.

References m_arpCache, NS_ASSERT, and NS_LOG_FUNCTION_NOARGS.

void ns3::ArpCache::DoDispose ( void   )  [private, virtual]

This method is called by Object::Dispose or by the object's destructor, whichever comes first.

Subclasses are expected to implement their real destruction code in an overriden version of this method and chain up to their parent's implementation once they are done. i.e., for simplicity, the destructor of every subclass should be empty and its content should be moved to the associated DoDispose method.

Reimplemented from ns3::Object.

Definition at line 86 of file arp-cache.cc.

References Flush(), ns3::EventId::IsRunning(), m_device, m_interface, m_waitReplyTimer, NS_LOG_FUNCTION, and ns3::Simulator::Remove().

void ns3::ArpCache::Flush ( void   ) 
Time ns3::ArpCache::GetAliveTimeout ( void   )  const

Definition at line 141 of file arp-cache.cc.

References m_aliveTimeout, and NS_LOG_FUNCTION_NOARGS.

Referenced by ns3::ArpCache::Entry::IsExpired().

Time ns3::ArpCache::GetDeadTimeout ( void   )  const

Definition at line 147 of file arp-cache.cc.

References m_deadTimeout, and NS_LOG_FUNCTION_NOARGS.

Referenced by ns3::ArpCache::Entry::IsExpired().

Ptr< NetDevice > ns3::ArpCache::GetDevice ( void   )  const
Returns:
The NetDevice that this ARP cache is associated with

Definition at line 108 of file arp-cache.cc.

References m_device, and NS_LOG_FUNCTION_NOARGS.

Ptr< Ipv4Interface > ns3::ArpCache::GetInterface ( void   )  const
Returns:
the Ipv4Interface that this ARP cache is associated with

Definition at line 115 of file arp-cache.cc.

References m_interface, and NS_LOG_FUNCTION_NOARGS.

TypeId ns3::ArpCache::GetTypeId ( void   )  [static]

This method returns the TypeId associated to ns3::ArpCache.

This object is accessible through the following paths with Config::Set and Config::Connect:

  • /NodeList/[i]/$ns3ArpL3Protocol/CacheList/[i]

Attributes defined for this type:

  • AliveTimeout: When this timeout expires, the matching cache entry needs refreshing
    • Set with class: TimeValue
    • Underlying type: Time
    • Initial value: 120000000000ns
    • Flags: construct write read
  • DeadTimeout: When this timeout expires, a new attempt to resolve the matching entry is made
    • Set with class: TimeValue
    • Underlying type: Time
    • Initial value: 100000000000ns
    • Flags: construct write read
  • WaitReplyTimeout: When this timeout expires, the cache entries will be scanned and entries in WaitReply state will resend ArpRequest unless MaxRetries has been exceeded, in which case the entry is marked dead
    • Set with class: TimeValue
    • Underlying type: Time
    • Initial value: 1000000000ns
    • Flags: construct write read
  • MaxRetries: Number of retransmissions of ArpRequest before marking dead
  • PendingQueueSize: The size of the queue for packets pending an arp reply.

TraceSources defined for this type:

Reimplemented from ns3::Object.

Definition at line 37 of file arp-cache.cc.

References ns3::TypeId::AddAttribute(), ns3::TypeId::AddTraceSource(), m_aliveTimeout, m_deadTimeout, m_dropTrace, m_maxRetries, m_pendingQueueSize, m_waitReplyTimeout, ns3::MakeTraceSourceAccessor(), ns3::Seconds(), and ns3::TypeId::SetParent().

Time ns3::ArpCache::GetWaitReplyTimeout ( void   )  const

Definition at line 153 of file arp-cache.cc.

References m_waitReplyTimeout, and NS_LOG_FUNCTION_NOARGS.

Referenced by ns3::ArpCache::Entry::IsExpired().

void ns3::ArpCache::HandleWaitReplyTimeout ( void   )  [private]
ArpCache::Entry * ns3::ArpCache::Lookup ( Ipv4Address  destination  ) 

Do lookup in the ARP cache against an IP address.

Parameters:
destination The destination IPv4 address to lookup the MAC address of
Returns:
An ArpCache::Entry with info about layer 2

Definition at line 243 of file arp-cache.cc.

References m_arpCache, and NS_LOG_FUNCTION_NOARGS.

void ns3::ArpCache::SetAliveTimeout ( Time  aliveTimeout  ) 

Definition at line 122 of file arp-cache.cc.

References m_aliveTimeout, and NS_LOG_FUNCTION_NOARGS.

void ns3::ArpCache::SetArpRequestCallback ( Callback< void, Ptr< const ArpCache >, Ipv4Address arpRequestCallback  ) 

This callback is set when the ArpCache is set up and allows the cache to generate an Arp request when the WaitReply time expires and a retransmission must be sent

Parameters:
arpRequestCallback Callback for transmitting an Arp request.

Definition at line 160 of file arp-cache.cc.

References m_arpRequestCallback, and NS_LOG_FUNCTION_NOARGS.

void ns3::ArpCache::SetDeadTimeout ( Time  deadTimeout  ) 

Definition at line 128 of file arp-cache.cc.

References m_deadTimeout, and NS_LOG_FUNCTION_NOARGS.

void ns3::ArpCache::SetDevice ( Ptr< NetDevice device,
Ptr< Ipv4Interface interface 
)
Parameters:
device The hardware NetDevice associated with this ARP chache
interface the Ipv4Interface associated with this ARP chache

Definition at line 100 of file arp-cache.cc.

References m_device, m_interface, and NS_LOG_FUNCTION_NOARGS.

void ns3::ArpCache::SetWaitReplyTimeout ( Time  waitReplyTimeout  ) 

Definition at line 134 of file arp-cache.cc.

References m_waitReplyTimeout, and NS_LOG_FUNCTION_NOARGS.

void ns3::ArpCache::StartWaitReplyTimer ( void   ) 

This method will schedule a timeout at WaitReplyTimeout interval in the future, unless a timer is already running for the cache, in which case this method does nothing.

Definition at line 168 of file arp-cache.cc.

References HandleWaitReplyTimeout(), ns3::EventId::IsRunning(), m_waitReplyTimeout, m_waitReplyTimer, ns3::Simulator::Now(), NS_LOG_FUNCTION_NOARGS, NS_LOG_LOGIC, and ns3::Simulator::Schedule().

Referenced by ns3::ArpCache::Entry::MarkWaitReply().


Member Data Documentation

Definition at line 211 of file arp-cache.h.

Referenced by GetAliveTimeout(), GetTypeId(), and SetAliveTimeout().

Definition at line 224 of file arp-cache.h.

Referenced by Add(), Flush(), HandleWaitReplyTimeout(), and Lookup().

Definition at line 215 of file arp-cache.h.

Referenced by HandleWaitReplyTimeout(), and SetArpRequestCallback().

Definition at line 212 of file arp-cache.h.

Referenced by GetDeadTimeout(), GetTypeId(), and SetDeadTimeout().

Definition at line 209 of file arp-cache.h.

Referenced by DoDispose(), GetDevice(), HandleWaitReplyTimeout(), and SetDevice().

Definition at line 225 of file arp-cache.h.

Referenced by GetTypeId(), and HandleWaitReplyTimeout().

Definition at line 210 of file arp-cache.h.

Referenced by DoDispose(), GetInterface(), and SetDevice().

uint32_t ns3::ArpCache::m_maxRetries [private]

Definition at line 216 of file arp-cache.h.

Referenced by GetTypeId(), and HandleWaitReplyTimeout().

Definition at line 223 of file arp-cache.h.

Referenced by GetTypeId(), and ns3::ArpCache::Entry::UpdateWaitReply().

Definition at line 214 of file arp-cache.h.

Referenced by DoDispose(), Flush(), HandleWaitReplyTimeout(), and StartWaitReplyTimer().


The documentation for this class was generated from the following files:
Generated on Thu Dec 3 14:11:35 2009 for NS-3 by  doxygen 1.6.3