35 #include "ns3/ipv4-route.h" 36 #include "ns3/socket.h" 56 for (std::vector<DsrMaintainBuffEntry>::const_iterator i =
m_maintainBuffer.begin (); i
64 if ((i->GetNextHop () == entry.
GetNextHop ()) && (i->GetOurAdd () == entry.
GetOurAdd ()) && (i->GetSrc () == entry.
GetSrc ())
65 && (i->GetDst () == entry.
GetDst ()) && (i->GetAckId () == entry.
GetAckId ()) && (i->GetSegsLeft () == entry.
GetSegsLeft ()))
87 NS_LOG_INFO (
"Drop Packet With next hop " << nextHop);
98 if (i->GetNextHop () == nextHop)
112 for (std::vector<DsrMaintainBuffEntry>::const_iterator i =
m_maintainBuffer.begin (); i
115 if (i->GetNextHop () == nextHop)
117 NS_LOG_DEBUG (
"Found the packet in maintenance buffer");
127 for (std::vector<DsrMaintainBuffEntry>::iterator i =
m_maintainBuffer.begin (); i
135 && (i->GetSrc () == entry.
GetSrc ()) && (i->GetDst () == entry.
GetDst ())
148 for (std::vector<DsrMaintainBuffEntry>::iterator i =
m_maintainBuffer.begin (); i
156 && (i->GetSrc () == entry.
GetSrc ()) && (i->GetDst () == entry.
GetDst ())
157 && (i->GetAckId () == entry.
GetAckId ()))
170 for (std::vector<DsrMaintainBuffEntry>::iterator i =
m_maintainBuffer.begin (); i
178 if ((i->GetSrc () == entry.
GetSrc ()) && (i->GetDst () == entry.
GetDst ())
193 for (std::vector<DsrMaintainBuffEntry>::iterator i =
m_maintainBuffer.begin (); i
201 if ((i->GetSrc () == entry.
GetSrc ()) && (i->GetDst () == entry.
GetDst ()) && (i->GetOurAdd () == entry.
GetOurAdd ())
uint8_t GetSegsLeft() const
Get segments left.
#define NS_LOG_FUNCTION(parameters)
If log level LOG_FUNCTION is enabled, this macro will output all input parameters separated by "...
uint32_t GetSize(void) const
Returns the the size in bytes of the packet (including the zero-filled initial payload).
bool NetworkEqual(DsrMaintainBuffEntry &entry)
Verify if the maintain buffer entry is the same in every field for network ack.
DSR Maintain Buffer Entry.
#define NS_LOG_COMPONENT_DEFINE(name)
Define a Log component with a specific name.
void DropPacketWithNextHop(Ipv4Address nextHop)
Remove all packets with next hop IP address dst.
Ipv4Address GetDst() const
Get destination address.
bool AllEqual(DsrMaintainBuffEntry &entry)
Verify if all the elements in the maintenance buffer entry is the same.
#define NS_LOG_INFO(msg)
Use NS_LOG to output a message of level LOG_INFO.
uint32_t GetSize()
Number of entries.
bool Find(Ipv4Address nextHop)
Finds whether a packet with next hop dst exists in the queue.
Ptr< const Packet > GetPacket() const
Get packet.
Ipv4Address GetSrc() const
Get source address.
bool PromiscEqual(DsrMaintainBuffEntry &entry)
Verify if the maintain buffer entry is the same in every field for promiscuous ack.
void SetExpireTime(Time exp)
Set expiration time.
uint32_t m_maxLen
The maximum number of packets that we allow a routing protocol to buffer.
Every class exported by the ns3 library is enclosed in the ns3 namespace.
Time m_maintainBufferTimeout
The maximum period of time that a routing protocol is allowed to buffer a packet for, seconds.
static bool IsEqual(DsrMaintainBuffEntry en, const Ipv4Address nextHop)
Verify if the maintain buffer is equal or not.
Time GetExpireTime() const
Get expiration time.
void Purge()
Remove all expired entries.
std::vector< DsrMaintainBuffEntry > m_maintainBuffer
The vector of maintain buffer entries.
Ipv4Address GetOurAdd() const
Get local address of entry.
bool Dequeue(Ipv4Address dst, DsrMaintainBuffEntry &entry)
Return first found (the earliest) entry for given destination.
Ipv4 addresses are stored in host order in this class.
Ipv4Address GetNextHop() const
Get next hop of entry.
#define NS_LOG_DEBUG(msg)
Use NS_LOG to output a message of level LOG_DEBUG.
Time Seconds(double value)
Construct a Time in the indicated unit.
bool Enqueue(DsrMaintainBuffEntry &entry)
Push entry in queue, if there is no entry with the same packet and destination address in queue...
bool LinkEqual(DsrMaintainBuffEntry &entry)
Verify if the maintain buffer entry is the same in every field for link ack.
bool operator()(DsrErrorBuffEntry const &e) const
comparison operator
uint16_t GetAckId() const
Get acknowledge ID.