Dsr Option Rreq. More...
#include "dsr-options.h"
Public Member Functions | |
DsrOptionRreq () | |
Constructor. More... | |
~DsrOptionRreq () override | |
Destructor. More... | |
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 = 1 |
Rreq option number. More... | |
Private Attributes | |
Ptr< Ipv4 > | m_ipv4 |
The ipv4. 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 Rreq.
Definition at line 354 of file dsr-options.h.
ns3::dsr::DsrOptionRreq::DsrOptionRreq | ( | ) |
|
override |
|
overridevirtual |
Get the instance type ID.
Reimplemented from ns3::Object.
Definition at line 492 of file dsr-options.cc.
References GetTypeId().
|
overridevirtual |
Get the option number.
Implements ns3::dsr::DsrOptions.
Definition at line 508 of file dsr-options.cc.
References NS_LOG_FUNCTION_NOARGS, and OPT_NUMBER.
|
static |
Get the type ID.
Definition at line 482 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 |
TODO has changed the srcAddress to source, should not matter either way, check later
TODO !!!!!!!!!!!!!! Think about this part, we just added the route, probability no need to increase stability now?????
push back the intermediate node address from the source to this node
push back the route vector we found in our route cache to destination, including this node's address
Implements ns3::dsr::DsrOptions.
Definition at line 516 of file dsr-options.cc.
References ns3::dsr::DsrOptions::ActiveRouteTimeout, ns3::dsr::DsrOptionField::AddDsrOption(), ns3::Packet::AddHeader(), ns3::Packet::AddPacketTag(), ns3::dsr::DsrOptions::CheckDuplicates(), ns3::Packet::Copy(), ns3::Packet::CopyData(), ns3::dsr::DsrOptionRerrUnreachHeader::GetErrorDst(), ns3::dsr::DsrOptionRerrUnreachHeader::GetErrorSrc(), ns3::dsr::DsrOptionRreqHeader::GetId(), ns3::dsr::DsrOptions::GetIDfromIP(), ns3::dsr::DsrOptionHeader::GetLength(), ns3::dsr::DsrOptionRreqHeader::GetNodesAddresses(), ns3::dsr::DsrOptions::GetNodeWithAddress(), ns3::Object::GetObject(), ns3::dsr::DsrOptionRerrUnreachHeader::GetSalvage(), ns3::dsr::DsrOptionRreqHeader::GetSerializedSize(), ns3::Packet::GetSize(), ns3::Ipv4Header::GetSource(), ns3::dsr::DsrOptionRreqHeader::GetTarget(), ns3::Ipv4Header::GetTtl(), ns3::dsr::DsrOptionRerrUnreachHeader::GetUnreachNode(), ns3::dsr::DsrRouteCacheEntry::GetVector(), ns3::dsr::DsrOptions::IfDuplicates(), ns3::dsr::DsrOptions::m_dropTrace, ns3::dsr::DsrOptions::m_finalRoute, ns3::dsr::DsrOptions::m_ipv4Route, NS_ASSERT, NS_LOG_DEBUG, NS_LOG_FUNCTION, NS_LOG_LOGIC, ns3::dsr::DsrOptions::PrintVector(), ns3::dsr::DsrOptions::ReverseRoutes(), ns3::dsr::DsrOptions::ReverseSearchNextHop(), ns3::dsr::DsrOptions::SearchNextHop(), ns3::dsr::DsrFsHeader::SetDestId(), ns3::dsr::DsrOptionRerrUnreachHeader::SetErrorDst(), ns3::dsr::DsrOptionRerrUnreachHeader::SetErrorSrc(), ns3::dsr::DsrOptionRerrHeader::SetErrorType(), ns3::dsr::DsrFsHeader::SetMessageType(), ns3::dsr::DsrFsHeader::SetNextHeader(), ns3::dsr::DsrOptionRreqHeader::SetNodesAddress(), ns3::dsr::DsrOptionRrepHeader::SetNodesAddress(), ns3::dsr::DsrOptionSRHeader::SetNodesAddress(), ns3::dsr::DsrOptionRreqHeader::SetNumberAddress(), ns3::dsr::DsrFsHeader::SetPayloadLength(), ns3::dsr::DsrOptions::SetRoute(), ns3::dsr::DsrOptionSRHeader::SetSalvage(), ns3::dsr::DsrOptionRerrUnreachHeader::SetSalvage(), ns3::dsr::DsrOptionSRHeader::SetSegmentsLeft(), ns3::dsr::DsrFsHeader::SetSourceId(), ns3::SocketIpTtlTag::SetTtl(), and ns3::dsr::DsrOptionRerrUnreachHeader::SetUnreachNode().
The ipv4.
Definition at line 399 of file dsr-options.h.
|
private |
The route cache.
Definition at line 395 of file dsr-options.h.
|
static |