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