Dsr Option Route Reply. More...
#include "dsr-options.h"
Public Member Functions | |
DsrOptionRrep () | |
~DsrOptionRrep () override | |
TypeId | GetInstanceTypeId () const override |
Get the instance type ID. More... | |
uint8_t | GetOptionNumber () const override |
Get the option number. More... | |
uint8_t | Process (Ptr< Packet > packet, Ptr< Packet > dsrP, Ipv4Address ipv4Address, Ipv4Address source, const Ipv4Header &ipv4Header, uint8_t protocol, bool &isPromisc, Ipv4Address promiscSource) override |
Process method. More... | |
Public Member Functions inherited from ns3::dsr::DsrOptions | |
DsrOptions () | |
Constructor. More... | |
~DsrOptions () override | |
Destructor. More... | |
bool | CheckDuplicates (Ipv4Address ipv4Address, std::vector< Ipv4Address > &vec) |
Check if the route already contains the node ip address. More... | |
bool | ContainAddressAfter (Ipv4Address ipv4Address, Ipv4Address destAddress, std::vector< Ipv4Address > &nodeList) |
Search for the ipv4 address in the node list. More... | |
std::vector< Ipv4Address > | CutRoute (Ipv4Address ipv4Address, std::vector< Ipv4Address > &nodeList) |
Cut the route from ipv4Address to the end of the route vector. More... | |
uint32_t | GetIDfromIP (Ipv4Address address) |
Get the node id with Ipv4Address. More... | |
Ptr< Node > | GetNode () const |
Get the node. More... | |
Ptr< Node > | GetNodeWithAddress (Ipv4Address ipv4Address) |
Get the node object with Ipv4Address. More... | |
bool | IfDuplicates (std::vector< Ipv4Address > &vec, std::vector< Ipv4Address > &vec2) |
Check if the two vectors contain duplicate or not. More... | |
void | PrintVector (std::vector< Ipv4Address > &vec) |
Print out the elements in the route vector. More... | |
void | RemoveDuplicates (std::vector< Ipv4Address > &vec) |
Remove the duplicates from the route. More... | |
bool | ReverseRoutes (std::vector< Ipv4Address > &vec) |
Reverse the routes. More... | |
Ipv4Address | ReverseSearchNextHop (Ipv4Address ipv4Address, std::vector< Ipv4Address > &vec) |
Reverse search for the next hop in the route. More... | |
Ipv4Address | ReverseSearchNextTwoHop (Ipv4Address ipv4Address, std::vector< Ipv4Address > &vec) |
Reverse search for the next two hop in the route. More... | |
void | ScheduleReply (Ptr< Packet > &packet, std::vector< Ipv4Address > &nodeList, Ipv4Address &source, Ipv4Address &destination) |
Schedule the intermediate node route request broadcast. More... | |
Ipv4Address | SearchNextHop (Ipv4Address ipv4Address, std::vector< Ipv4Address > &vec) |
Search for the next hop in the route. More... | |
void | SetNode (Ptr< Node > node) |
Set the node. More... | |
virtual Ptr< Ipv4Route > | SetRoute (Ipv4Address nextHop, Ipv4Address srcAddress) |
Set the route to use for data packets, used by the option headers when sending data/control packets. 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... | |
template<typename T > | |
Ptr< T > | GetObject () const |
Get a pointer to the requested aggregated Object. More... | |
template<> | |
Ptr< Object > | GetObject () 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< Object > | GetObject (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... | |
SimpleRefCount & | operator= (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::dsr::DsrOptions | |
static TypeId | GetTypeId () |
Get the type identificator. 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... | |
Static Public Attributes | |
static const uint8_t | OPT_NUMBER = 2 |
Router alert option number. More... | |
Private Attributes | |
Ptr< Ipv4 > | m_ipv4 |
The ip layer 3. More... | |
Ptr< dsr::DsrRouteCache > | m_routeCache |
The route cache. 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... | |
Protected Attributes inherited from ns3::dsr::DsrOptions | |
Time | ActiveRouteTimeout |
The active route timeout value. More... | |
Ipv4Address | Broadcast |
The broadcast IP address. More... | |
TracedCallback< Ptr< const Packet > > | m_dropTrace |
Drop trace callback. More... | |
std::vector< Ipv4Address > | m_finalRoute |
The vector of final Ipv4 address. More... | |
Ptr< Ipv4 > | m_ipv4 |
The ipv4. More... | |
std::vector< Ipv4Address > | m_ipv4Address |
The vector of Ipv4 address. More... | |
Ptr< Ipv4Route > | m_ipv4Route |
The ipv4 route. More... | |
Ptr< dsr::DsrRouteCache > | m_routeCache |
The route cache table. More... | |
Ptr< dsr::DsrRreqTable > | m_rreqTable |
The route request table. More... | |
TracedCallback< const DsrOptionSRHeader & > | m_rxPacketTrace |
The receive trace back, only triggered when final destination receive data packet. More... | |
Related Functions inherited from ns3::ObjectBase | |
static TypeId | GetObjectIid () |
Ensure the TypeId for ObjectBase gets fully configured to anchor the inheritance tree properly. More... | |
Dsr Option Route Reply.
Definition at line 406 of file dsr-options.h.
ns3::dsr::DsrOptionRrep::DsrOptionRrep | ( | ) |
Definition at line 1022 of file dsr-options.cc.
References NS_LOG_FUNCTION_NOARGS.
|
override |
Definition at line 1027 of file dsr-options.cc.
References NS_LOG_FUNCTION_NOARGS.
|
overridevirtual |
Get the instance type ID.
Reimplemented from ns3::Object.
Definition at line 1033 of file dsr-options.cc.
References GetTypeId().
|
overridevirtual |
Get the option number.
Implements ns3::dsr::DsrOptions.
Definition at line 1039 of file dsr-options.cc.
References NS_LOG_FUNCTION_NOARGS, and OPT_NUMBER.
|
static |
Get the type ID.
Definition at line 1013 of file dsr-options.cc.
References ns3::TypeId::SetParent().
Referenced by GetInstanceTypeId().
|
overridevirtual |
Process method.
Called from DsrRouting::Receive.
packet | the packet |
dsrP | the clean packet with payload |
ipv4Address | the IPv4 address |
source | IPv4 address of the source |
ipv4Header | the IPv4 header of packet received |
protocol | the protocol number of the up layer |
isPromisc | if the packet must be dropped |
promiscSource | IPv4 address |
Get the destination address, which is the last element in the nodeList
Get the destination address for the data packet, which is the last element in the nodeList
Add the newly found route to the route cache The route looks like: \ "srcAddress" + "intermediate node address" + "targetAddress"
Found a route the dst, construct the source route option header
Schedule the packet retry
Implements ns3::dsr::DsrOptions.
Definition at line 1047 of file dsr-options.cc.
References ns3::dsr::DsrOptions::ActiveRouteTimeout, ns3::dsr::DsrOptionField::AddDsrOption(), ns3::Packet::AddHeader(), ns3::Packet::Copy(), ns3::Packet::CopyData(), ns3::dsr::DsrOptions::CutRoute(), ns3::dsr::DsrOptions::GetIDfromIP(), ns3::dsr::DsrOptionHeader::GetLength(), ns3::dsr::DsrOptionRrepHeader::GetNodesAddress(), ns3::dsr::DsrOptions::GetNodeWithAddress(), ns3::Object::GetObject(), ns3::dsr::DsrOptionRrepHeader::GetSerializedSize(), ns3::dsr::DsrOptions::m_dropTrace, ns3::dsr::DsrOptions::m_ipv4Route, NS_ASSERT, NS_LOG_DEBUG, NS_LOG_FUNCTION, NS_LOG_LOGIC, ns3::dsr::DsrOptions::PrintVector(), ns3::dsr::DsrOptions::RemoveDuplicates(), ns3::Packet::RemoveHeader(), ns3::dsr::DsrOptions::ReverseSearchNextHop(), ns3::dsr::DsrOptions::SearchNextHop(), ns3::dsr::DsrFsHeader::SetDestId(), ns3::dsr::DsrFsHeader::SetMessageType(), ns3::dsr::DsrFsHeader::SetNextHeader(), ns3::dsr::DsrOptionSRHeader::SetNodesAddress(), ns3::dsr::DsrOptionRrepHeader::SetNumberAddress(), ns3::dsr::DsrFsHeader::SetPayloadLength(), ns3::dsr::DsrOptions::SetRoute(), ns3::dsr::DsrOptionSRHeader::SetSalvage(), ns3::dsr::DsrOptionSRHeader::SetSegmentsLeft(), and ns3::dsr::DsrFsHeader::SetSourceId().
The ip layer 3.
Definition at line 446 of file dsr-options.h.
|
private |
The route cache.
Definition at line 442 of file dsr-options.h.
|
static |
Router alert option number.
Definition at line 412 of file dsr-options.h.
Referenced by GetOptionNumber().