This class implements the Path MTU cache, as defined by RFC 1981 . More...
#include "ipv6-pmtu-cache.h"
Public Member Functions | |
Ipv6PmtuCache () | |
Constructor. | |
~Ipv6PmtuCache () override | |
Destructor. | |
void | DoDispose () override |
Dispose object. | |
uint32_t | GetPmtu (Ipv6Address dst) |
Gets the known Path MTU for the specific destination. | |
Time | GetPmtuValidityTime () const |
Gets the Path MTU validity time. | |
void | SetPmtu (Ipv6Address dst, uint32_t pmtu) |
Sets the Path MTU for the specific destination. | |
bool | SetPmtuValidityTime (Time validity) |
Sets the Path MTU validity time (minimum is 5 minutes) | |
Public Member Functions inherited from ns3::Object | |
Object () | |
Constructor. | |
~Object () override | |
Destructor. | |
void | AggregateObject (Ptr< Object > other) |
Aggregate two Objects together. | |
void | Dispose () |
Dispose of this Object. | |
AggregateIterator | GetAggregateIterator () const |
Get an iterator to the Objects aggregated to this one. | |
TypeId | GetInstanceTypeId () const override |
Get the most derived TypeId for this Object. | |
template<typename T > | |
Ptr< T > | GetObject () const |
Get a pointer to the requested aggregated Object. | |
template<> | |
Ptr< Object > | GetObject () const |
Specialization of () for objects of type ns3::Object. | |
template<typename T > | |
Ptr< T > | GetObject (TypeId tid) const |
Get a pointer to the requested aggregated Object by TypeId. | |
template<> | |
Ptr< Object > | GetObject (TypeId tid) const |
Specialization of (TypeId tid) for objects of type ns3::Object. | |
void | Initialize () |
Invoke DoInitialize on all Objects aggregated to this one. | |
bool | IsInitialized () const |
Check if the object has been initialized. | |
void | UnidirectionalAggregateObject (Ptr< Object > other) |
Aggregate an Object to another Object. | |
Public Member Functions inherited from ns3::SimpleRefCount< Object, ObjectBase, ObjectDeleter > | |
SimpleRefCount () | |
Default constructor. | |
SimpleRefCount (const SimpleRefCount &o) | |
Copy constructor. | |
uint32_t | GetReferenceCount () const |
Get the reference count of the object. | |
SimpleRefCount & | operator= (const SimpleRefCount &o) |
Assignment operator. | |
void | Ref () const |
Increment the reference count. | |
void | Unref () const |
Decrement the reference count. | |
Public Member Functions inherited from ns3::ObjectBase | |
virtual | ~ObjectBase () |
Virtual destructor. | |
void | GetAttribute (std::string name, AttributeValue &value, bool permissive=false) const |
Get the value of an attribute, raising fatal errors if unsuccessful. | |
bool | GetAttributeFailSafe (std::string name, AttributeValue &value) const |
Get the value of an attribute without raising errors. | |
void | SetAttribute (std::string name, const AttributeValue &value) |
Set a single attribute, raising fatal errors if unsuccessful. | |
bool | SetAttributeFailSafe (std::string name, const AttributeValue &value) |
Set a single attribute without raising errors. | |
bool | TraceConnect (std::string name, std::string context, const CallbackBase &cb) |
Connect a TraceSource to a Callback with a context. | |
bool | TraceConnectWithoutContext (std::string name, const CallbackBase &cb) |
Connect a TraceSource to a Callback without a context. | |
bool | TraceDisconnect (std::string name, std::string context, const CallbackBase &cb) |
Disconnect from a TraceSource a Callback previously connected with a context. | |
bool | TraceDisconnectWithoutContext (std::string name, const CallbackBase &cb) |
Disconnect from a TraceSource a Callback previously connected without a context. | |
Static Public Member Functions | |
static TypeId | GetTypeId () |
Get the type ID. | |
Static Public Member Functions inherited from ns3::Object | |
static TypeId | GetTypeId () |
Register this type. | |
Static Public Member Functions inherited from ns3::ObjectBase | |
static TypeId | GetTypeId () |
Get the type ID. | |
Private Types | |
typedef std::map< Ipv6Address, EventId >::iterator | pathMtuTimerIter |
Container of the IPv6 PMTU data (Ipv6 destination address and expiration event). | |
Private Member Functions | |
void | ClearPmtu (Ipv6Address dst) |
Clears the Path MTU for the specific destination. | |
Private Attributes | |
std::map< Ipv6Address, uint32_t > | m_pathMtu |
Path MTU table. | |
std::map< Ipv6Address, EventId > | m_pathMtuTimer |
Path MTU Expiration table. | |
Time | m_validityTime |
Path MTU entry validity time. | |
Additional Inherited Members | |
Protected Member Functions inherited from ns3::Object | |
Object (const Object &o) | |
Copy an Object. | |
virtual void | DoInitialize () |
Initialize() implementation. | |
virtual void | NotifyNewAggregate () |
Notify all Objects aggregated to this one of a new Object being aggregated. | |
Protected Member Functions inherited from ns3::ObjectBase | |
void | ConstructSelf (const AttributeConstructionList &attributes) |
Complete construction of ObjectBase; invoked by derived classes. | |
virtual void | NotifyConstructionCompleted () |
Notifier called once the ObjectBase is fully constructed. | |
Related Symbols inherited from ns3::ObjectBase | |
static TypeId | GetObjectIid () |
Ensure the TypeId for ObjectBase gets fully configured to anchor the inheritance tree properly. | |
This class implements the Path MTU cache, as defined by RFC 1981 .
The Path MTU is stored according to the destination address, and it is cleared upon expiration (default validity time is 10 minutes).
The "infinite lifetime" PMTU entry type is not implemented, since it is useful only in an very limited number of cases. See the RFC for further details.
Definition at line 36 of file ipv6-pmtu-cache.h.
|
private |
Container of the IPv6 PMTU data (Ipv6 destination address and expiration event).
Definition at line 104 of file ipv6-pmtu-cache.h.
ns3::Ipv6PmtuCache::Ipv6PmtuCache | ( | ) |
Constructor.
Definition at line 37 of file ipv6-pmtu-cache.cc.
|
override |
Destructor.
Definition at line 41 of file ipv6-pmtu-cache.cc.
|
private |
Clears the Path MTU for the specific destination.
dst | the destination |
Definition at line 106 of file ipv6-pmtu-cache.cc.
References m_pathMtu, m_pathMtuTimer, and NS_LOG_FUNCTION.
Referenced by SetPmtu().
|
overridevirtual |
Dispose object.
Reimplemented from ns3::Object.
Definition at line 46 of file ipv6-pmtu-cache.cc.
References m_pathMtu, and m_pathMtuTimer.
uint32_t ns3::Ipv6PmtuCache::GetPmtu | ( | Ipv6Address | dst | ) |
Gets the known Path MTU for the specific destination.
dst | the destination |
Definition at line 57 of file ipv6-pmtu-cache.cc.
References m_pathMtu, and NS_LOG_FUNCTION.
Time ns3::Ipv6PmtuCache::GetPmtuValidityTime | ( | ) | const |
Gets the Path MTU validity time.
Definition at line 84 of file ipv6-pmtu-cache.cc.
References m_validityTime, and NS_LOG_FUNCTION.
|
static |
Get the type ID.
Definition at line 22 of file ipv6-pmtu-cache.cc.
References m_validityTime, ns3::MakeTimeAccessor(), ns3::MakeTimeChecker(), ns3::Seconds(), and ns3::TypeId::SetParent().
void ns3::Ipv6PmtuCache::SetPmtu | ( | Ipv6Address | dst, |
uint32_t | pmtu ) |
Sets the Path MTU for the specific destination.
dst | the destination |
pmtu | the Path MTU |
Definition at line 69 of file ipv6-pmtu-cache.cc.
References ClearPmtu(), m_pathMtu, m_pathMtuTimer, m_validityTime, NS_LOG_FUNCTION, and ns3::Simulator::Schedule().
bool ns3::Ipv6PmtuCache::SetPmtuValidityTime | ( | Time | validity | ) |
Sets the Path MTU validity time (minimum is 5 minutes)
validity | the Path MTU validity time |
Definition at line 91 of file ipv6-pmtu-cache.cc.
References m_validityTime, NS_LOG_FUNCTION, NS_LOG_LOGIC, and ns3::Seconds().
|
private |
Path MTU table.
Definition at line 99 of file ipv6-pmtu-cache.h.
Referenced by ClearPmtu(), DoDispose(), GetPmtu(), and SetPmtu().
|
private |
Path MTU Expiration table.
Definition at line 109 of file ipv6-pmtu-cache.h.
Referenced by ClearPmtu(), DoDispose(), and SetPmtu().
|
private |
Path MTU entry validity time.
Definition at line 114 of file ipv6-pmtu-cache.h.
Referenced by GetPmtuValidityTime(), GetTypeId(), SetPmtu(), and SetPmtuValidityTime().