21 #include "ie-dot11s-perr.h" 
   22 #include "ns3/address-utils.h" 
   23 #include "ns3/packet.h" 
   40   os << std::endl << 
"<information_element id=" << 
ElementId () << 
">" << std::endl;
 
   41   os << 
"Number of failed destinations: = " << m_addressUnits.size ();
 
   42   for (
unsigned int j = 0; j < m_addressUnits.size (); j++)
 
   44       os << 
"Failed destination address: = " << m_addressUnits[j].destination << 
", sequence number = " 
   45          << m_addressUnits[j].seqnum;
 
   47   os << std::endl << 
"</information_element>" << std::endl;
 
   50 IePerr::GetNumOfDest ()
 const 
   52   return m_addressUnits.size ();
 
   58   i.
WriteU8 (m_addressUnits.size ());
 
   59   for (
unsigned int j = 0; j < m_addressUnits.size (); j++)
 
   61       WriteTo (i, m_addressUnits[j].destination);
 
   70   uint8_t numOfDest = i.
ReadU8 ();
 
   71   NS_ASSERT ((2 + 10 * numOfDest ) == length);
 
   73   for (
unsigned int j = 0; j < numOfDest; j++)
 
   76       ReadFrom (i, unit.destination);
 
   78       m_addressUnits.push_back (unit);
 
   88     + (6 + 4) * m_addressUnits.size ();
 
   95   for (
unsigned int i = 0; i < m_addressUnits.size (); i++)
 
   97       if (m_addressUnits[i].destination == unit.destination)
 
  102   if ((m_addressUnits.size () + 1) * 10 + 2 > 255)
 
  106   m_addressUnits.push_back (unit);
 
  109 IePerr::IsFull ()
 const 
  113 std::vector<HwmpProtocol::FailedDestination>
 
  114 IePerr::GetAddressUnitVector ()
 const 
  116   return m_addressUnits;
 
  119 IePerr::DeleteAddressUnit (Mac48Address address)
 
  121   for (std::vector<HwmpProtocol::FailedDestination>::iterator i = m_addressUnits.begin (); i
 
  122        != m_addressUnits.end (); i++)
 
  124       if (i->destination == address)
 
  126           m_addressUnits.erase (i);
 
  134   m_addressUnits.clear ();
 
  137 operator== (
const IePerr & a, 
const IePerr & b)
 
  139   if (a.m_addressUnits.size () != b.m_addressUnits.size ())
 
  143   for (
unsigned int i = 0; i < a.m_addressUnits.size (); i++)
 
  145       if (a.m_addressUnits[i].destination != b.m_addressUnits[i].destination)
 
  149       if (a.m_addressUnits[i].seqnum != b.m_addressUnits[i].seqnum)
 
virtual void SerializeInformationField(Buffer::Iterator i) const 
structure of unreachable destination - address and sequence number 
#define NS_ASSERT(condition)
virtual uint8_t DeserializeInformationField(Buffer::Iterator start, uint8_t length)
virtual uint8_t GetInformationFieldSize() const 
uint32_t GetDistanceFrom(Iterator const &o) const 
iterator in a Buffer instance 
virtual void Print(std::ostream &os) const 
In addition, a subclass may optionally override the following... 
std::ostream & operator<<(std::ostream &os, const Angles &a)
void WriteU8(uint8_t data)
virtual WifiInformationElementId ElementId() const 
Own unique Element ID. 
uint8_t WifiInformationElementId
uint32_t ReadLsbtohU32(void)
void WriteHtolsbU32(uint32_t data)