21 #include "ns3/assert.h"
22 #include "ns3/address-utils.h"
23 #include "dot11s-mac-header.h"
24 #include "ns3/packet.h"
32 MeshHeader::GetTypeId ()
34 static TypeId tid = TypeId (
"ns3::Dot11sMacHeader")
36 .AddConstructor<MeshHeader> ();
39 MeshHeader::MeshHeader () :
40 m_meshFlags (0), m_meshTtl (0), m_meshSeqno (0), m_addr4 (Mac48Address ()), m_addr5 (Mac48Address ()),
41 m_addr6 (Mac48Address ())
44 MeshHeader::~MeshHeader ()
63 MeshHeader::SetAddr6 (Mac48Address address)
68 MeshHeader::GetAddr4 ()
const
73 MeshHeader::GetAddr5 ()
const
78 MeshHeader::GetAddr6 ()
const
83 MeshHeader::SetMeshSeqno (uint32_t seqno)
88 MeshHeader::GetMeshSeqno ()
const
93 MeshHeader::SetMeshTtl (uint8_t TTL)
98 MeshHeader::GetMeshTtl ()
const
103 MeshHeader::SetAddressExt (uint8_t num_of_addresses)
106 m_meshFlags |= 0x03 & num_of_addresses;
109 MeshHeader::GetAddressExt ()
const
111 return (0x03 & m_meshFlags);
116 return 6 + GetAddressExt () * 6;
125 uint8_t addresses_to_add = GetAddressExt ();
127 if ((addresses_to_add == 1) || (addresses_to_add == 3))
129 WriteTo (i, m_addr4);
131 if (addresses_to_add > 1)
133 WriteTo (i, m_addr5);
135 if (addresses_to_add > 1)
137 WriteTo (i, m_addr6);
144 uint8_t addresses_to_read = 0;
145 m_meshFlags = i.
ReadU8 ();
148 addresses_to_read = m_meshFlags & 0x03;
149 if ((addresses_to_read == 1) || (addresses_to_read == 3))
151 ReadFrom (i, m_addr4);
153 if (addresses_to_read > 1)
155 ReadFrom (i, m_addr5);
157 if (addresses_to_read > 1)
159 ReadFrom (i, m_addr6);
166 os <<
"flags = " << (uint16_t) m_meshFlags << std::endl <<
"ttl = " << (uint16_t) m_meshTtl
167 << std::endl <<
"seqno = " << m_meshSeqno << std::endl<<
"addr4 = " << m_addr4 << std::endl
168 <<
"addr5 = " << m_addr5 << std::endl <<
"addr6 = " << m_addr6 << std::endl;
173 return ((a.m_meshFlags == b.m_meshFlags) && (a.m_meshTtl == b.m_meshTtl)
174 && (a.m_meshSeqno == b.m_meshSeqno) && (a.m_addr4 == b.m_addr4) && (a.m_addr5 == b.m_addr5)
175 && (a.m_addr6 == b.m_addr6));
#define NS_ASSERT(condition)
uint32_t GetDistanceFrom(Iterator const &o) const
iterator in a Buffer instance
void WriteU8(uint8_t data)
uint32_t ReadLsbtohU32(void)
void WriteHtolsbU32(uint32_t data)