35 #include "ns3/ipv4-route.h"
36 #include "ns3/socket.h"
55 for (std::vector<ErrorBuffEntry>::const_iterator i =
m_errorBuffer.begin (); i
59 <<
" next hop " << i->GetNextHop () <<
" " << entry.
GetNextHop () <<
" dst " << i->GetDestination () <<
" " << entry.
GetDestination ());
88 std::vector<Ipv4Address>
list;
89 list.push_back (source);
90 list.push_back (nextHop);
91 const std::vector<Ipv4Address> link =
list;
95 for (std::vector<ErrorBuffEntry>::iterator i =
m_errorBuffer.begin (); i
100 DropLink (*i,
"DropPacketForErrLink");
116 if (i->GetDestination () == dst)
133 for (std::vector<ErrorBuffEntry>::const_iterator i =
m_errorBuffer.begin (); i
136 if (i->GetDestination () == dst)
163 for (std::vector<ErrorBuffEntry>::iterator i =
m_errorBuffer.begin (); i
169 Drop (*i,
"Drop out-dated packet ");
bool Dequeue(Ipv4Address dst, ErrorBuffEntry &entry)
Return first found (the earliest) entry for given destination.
bool operator()(ErrorBuffEntry const &e) const
uint32_t m_maxLen
The maximum number of packets that we allow a routing protocol to buffer.
#define NS_LOG_FUNCTION(parameters)
Time m_errorBufferTimeout
The maximum period of time that a routing protocol is allowed to buffer a packet for, seconds.
uint64_t GetUid(void) const
A packet is allocated a new uid when it is created empty or with zero-filled payload.
bool Enqueue(ErrorBuffEntry &entry)
Push entry in queue, if there is no entry with the same packet and destination address in queue...
void DropPacketForErrLink(Ipv4Address source, Ipv4Address nextHop)
Remove all packets with the error link.
uint32_t GetSize(void) const
Ipv4Address GetNextHop() const
void Purge()
Remove all expired entries.
void DropLink(ErrorBuffEntry en, std::string reason)
Notify that packet is dropped from queue by timeout.
Ptr< const Packet > GetPacket() const
static bool LinkEqual(ErrorBuffEntry en, const std::vector< Ipv4Address > link)
Check if the send buffer entry is the same or not.
Ipv4Address GetDestination() const
#define NS_LOG_LOGIC(msg)
uint32_t GetSize()
Number of entries.
bool Find(Ipv4Address dst)
Finds whether a packet with destination dst exists in the queue.
Ipv4 addresses are stored in host order in this class.
#define NS_LOG_DEBUG(msg)
Ipv4Address GetSource() const
NS_LOG_COMPONENT_DEFINE("DsrErrorBuffer")
void Drop(ErrorBuffEntry en, std::string reason)
Notify that packet is dropped from queue by timeout.
void SetExpireTime(Time exp)
Time GetExpireTime() const
std::vector< ErrorBuffEntry > m_errorBuffer
The send buffer to cache unsent packet.