Dot11sMacHeader renamed to MeshHeader to correspond standard
This commit is contained in:
@@ -31,15 +31,15 @@ namespace dot11s {
|
||||
* Here Mesh Mac Header functionality is defined.
|
||||
***********************************************************/
|
||||
TypeId
|
||||
Dot11sMacHeader::GetTypeId ()
|
||||
MeshHeader::GetTypeId ()
|
||||
{
|
||||
static TypeId tid = TypeId ("ns3::Dot11sMacHeader")
|
||||
.SetParent<Header> ()
|
||||
.AddConstructor<Dot11sMacHeader> ()
|
||||
.AddConstructor<MeshHeader> ()
|
||||
;
|
||||
return tid;
|
||||
}
|
||||
Dot11sMacHeader::Dot11sMacHeader ():
|
||||
MeshHeader::MeshHeader ():
|
||||
m_meshFlags (0),
|
||||
m_meshTtl (0),
|
||||
m_meshSeqno (0),
|
||||
@@ -48,83 +48,83 @@ Dot11sMacHeader::Dot11sMacHeader ():
|
||||
m_addr6 (Mac48Address ())
|
||||
{
|
||||
}
|
||||
Dot11sMacHeader::~Dot11sMacHeader ()
|
||||
MeshHeader::~MeshHeader ()
|
||||
{
|
||||
}
|
||||
TypeId
|
||||
Dot11sMacHeader::GetInstanceTypeId () const
|
||||
MeshHeader::GetInstanceTypeId () const
|
||||
{
|
||||
return GetTypeId ();
|
||||
}
|
||||
void
|
||||
Dot11sMacHeader::SetAddr4 (Mac48Address address)
|
||||
MeshHeader::SetAddr4 (Mac48Address address)
|
||||
{
|
||||
m_addr4 = address;
|
||||
}
|
||||
void
|
||||
Dot11sMacHeader::SetAddr5 (Mac48Address address)
|
||||
MeshHeader::SetAddr5 (Mac48Address address)
|
||||
{
|
||||
m_addr5 = address;
|
||||
}
|
||||
void
|
||||
Dot11sMacHeader::SetAddr6 (Mac48Address address)
|
||||
MeshHeader::SetAddr6 (Mac48Address address)
|
||||
{
|
||||
m_addr6 = address;
|
||||
}
|
||||
Mac48Address
|
||||
Dot11sMacHeader::GetAddr4 () const
|
||||
MeshHeader::GetAddr4 () const
|
||||
{
|
||||
return m_addr4;
|
||||
}
|
||||
Mac48Address
|
||||
Dot11sMacHeader::GetAddr5 () const
|
||||
MeshHeader::GetAddr5 () const
|
||||
{
|
||||
return m_addr5;
|
||||
}
|
||||
Mac48Address
|
||||
Dot11sMacHeader::GetAddr6 () const
|
||||
MeshHeader::GetAddr6 () const
|
||||
{
|
||||
return m_addr6;
|
||||
}
|
||||
void
|
||||
Dot11sMacHeader::SetMeshSeqno (uint32_t seqno)
|
||||
MeshHeader::SetMeshSeqno (uint32_t seqno)
|
||||
{
|
||||
m_meshSeqno = seqno;
|
||||
}
|
||||
uint32_t
|
||||
Dot11sMacHeader::GetMeshSeqno () const
|
||||
MeshHeader::GetMeshSeqno () const
|
||||
{
|
||||
return m_meshSeqno;
|
||||
}
|
||||
void
|
||||
Dot11sMacHeader::SetMeshTtl (uint8_t TTL)
|
||||
MeshHeader::SetMeshTtl (uint8_t TTL)
|
||||
{
|
||||
m_meshTtl = TTL;
|
||||
}
|
||||
uint8_t
|
||||
Dot11sMacHeader::GetMeshTtl () const
|
||||
MeshHeader::GetMeshTtl () const
|
||||
{
|
||||
return m_meshTtl;
|
||||
}
|
||||
void
|
||||
Dot11sMacHeader::SetAddressExt (uint8_t num_of_addresses)
|
||||
MeshHeader::SetAddressExt (uint8_t num_of_addresses)
|
||||
{
|
||||
if (num_of_addresses > 3)
|
||||
return;
|
||||
m_meshFlags |= 0xc0 & (num_of_addresses << 6);
|
||||
}
|
||||
uint8_t
|
||||
Dot11sMacHeader::GetAddressExt () const
|
||||
MeshHeader::GetAddressExt () const
|
||||
{
|
||||
return ((0xc0 & m_meshFlags) >> 6);
|
||||
}
|
||||
uint32_t
|
||||
Dot11sMacHeader::GetSerializedSize () const
|
||||
MeshHeader::GetSerializedSize () const
|
||||
{
|
||||
return 6 + GetAddressExt () * 6;
|
||||
}
|
||||
void
|
||||
Dot11sMacHeader::Serialize (Buffer::Iterator start) const
|
||||
MeshHeader::Serialize (Buffer::Iterator start) const
|
||||
{
|
||||
Buffer::Iterator i = start;
|
||||
i.WriteU8 (m_meshFlags);
|
||||
@@ -140,7 +140,7 @@ Dot11sMacHeader::Serialize (Buffer::Iterator start) const
|
||||
WriteTo (i, m_addr6);
|
||||
}
|
||||
uint32_t
|
||||
Dot11sMacHeader::Deserialize (Buffer::Iterator start)
|
||||
MeshHeader::Deserialize (Buffer::Iterator start)
|
||||
{
|
||||
Buffer::Iterator i = start;
|
||||
uint8_t addresses_to_read = 0;
|
||||
@@ -157,7 +157,7 @@ Dot11sMacHeader::Deserialize (Buffer::Iterator start)
|
||||
return i.GetDistanceFrom (start);
|
||||
}
|
||||
void
|
||||
Dot11sMacHeader::Print (std::ostream &os) const
|
||||
MeshHeader::Print (std::ostream &os) const
|
||||
{
|
||||
os << "flags = " << (uint16_t)m_meshFlags
|
||||
<< "\nttl = " << (uint16_t)m_meshTtl
|
||||
@@ -166,7 +166,7 @@ Dot11sMacHeader::Print (std::ostream &os) const
|
||||
<< "\naddr5 = " << m_addr5
|
||||
<< "\naddr6 = " << m_addr6;
|
||||
}
|
||||
bool operator== (const Dot11sMacHeader & a, const Dot11sMacHeader & b)
|
||||
bool operator== (const MeshHeader & a, const MeshHeader & b)
|
||||
{
|
||||
return (
|
||||
(a.m_meshFlags == b.m_meshFlags) &&
|
||||
@@ -325,7 +325,7 @@ WifiMeshActionHeader::Deserialize (Buffer::Iterator start)
|
||||
/// Built-in self test for Dot11sMacHeader
|
||||
struct Dot11sMacHeaderBist : public Test
|
||||
{
|
||||
Dot11sMacHeaderBist () : Test ("Mesh/802.11s/IE/Dot11sMacHeader") {}
|
||||
Dot11sMacHeaderBist () : Test ("Mesh/802.11s/MeshHeader") {}
|
||||
virtual bool RunTests();
|
||||
};
|
||||
|
||||
@@ -336,7 +336,7 @@ bool Dot11sMacHeaderBist::RunTests ()
|
||||
{
|
||||
bool result (true);
|
||||
{
|
||||
Dot11sMacHeader a;
|
||||
MeshHeader a;
|
||||
a.SetAddressExt(3);
|
||||
a.SetAddr4(Mac48Address ("11:22:33:44:55:66"));
|
||||
a.SetAddr5(Mac48Address ("11:00:33:00:55:00"));
|
||||
@@ -345,12 +345,12 @@ bool Dot11sMacHeaderBist::RunTests ()
|
||||
a.SetMeshSeqno (321);
|
||||
Ptr<Packet> packet = Create<Packet> ();
|
||||
packet->AddHeader (a);
|
||||
Dot11sMacHeader b;
|
||||
MeshHeader b;
|
||||
packet->RemoveHeader (b);
|
||||
NS_TEST_ASSERT_EQUAL (a, b);
|
||||
}
|
||||
{
|
||||
Dot11sMacHeader a;
|
||||
MeshHeader a;
|
||||
a.SetAddressExt(2);
|
||||
a.SetAddr5(Mac48Address ("11:00:33:00:55:00"));
|
||||
a.SetAddr6(Mac48Address ("00:22:00:44:00:66"));
|
||||
@@ -358,19 +358,19 @@ bool Dot11sMacHeaderBist::RunTests ()
|
||||
a.SetMeshSeqno (321);
|
||||
Ptr<Packet> packet = Create<Packet> ();
|
||||
packet->AddHeader (a);
|
||||
Dot11sMacHeader b;
|
||||
MeshHeader b;
|
||||
packet->RemoveHeader (b);
|
||||
NS_TEST_ASSERT_EQUAL (a, b);
|
||||
}
|
||||
{
|
||||
Dot11sMacHeader a;
|
||||
MeshHeader a;
|
||||
a.SetAddressExt(1);
|
||||
a.SetAddr4(Mac48Address ("11:22:33:44:55:66"));
|
||||
a.SetMeshTtl (122);
|
||||
a.SetMeshSeqno (321);
|
||||
Ptr<Packet> packet = Create<Packet> ();
|
||||
packet->AddHeader (a);
|
||||
Dot11sMacHeader b;
|
||||
MeshHeader b;
|
||||
packet->RemoveHeader (b);
|
||||
NS_TEST_ASSERT_EQUAL (a, b);
|
||||
}
|
||||
|
||||
@@ -30,13 +30,15 @@ namespace dot11s {
|
||||
/**
|
||||
* \ingroup dot11s
|
||||
*
|
||||
* \brief See IEEE 802.11s draft 3.0 section 7.1.3.5b
|
||||
* \brief Mesh Control field, see IEEE 802.11s draft 3.0 section 7.1.3.5b
|
||||
*
|
||||
* Header format: | Mesh flags: 1 | TTL: 1 | Sequence number: 4 | Address ext.: 0, 6, 12 or 18 |
|
||||
*/
|
||||
class Dot11sMacHeader : public Header
|
||||
class MeshHeader : public Header
|
||||
{
|
||||
public:
|
||||
Dot11sMacHeader ();
|
||||
~Dot11sMacHeader ();
|
||||
MeshHeader ();
|
||||
~MeshHeader ();
|
||||
static TypeId GetTypeId ();
|
||||
virtual TypeId GetInstanceTypeId () const;
|
||||
virtual void Print (std::ostream &os) const;
|
||||
@@ -67,22 +69,16 @@ private:
|
||||
Mac48Address m_addr4;
|
||||
Mac48Address m_addr5;
|
||||
Mac48Address m_addr6;
|
||||
friend bool operator== (const Dot11sMacHeader & a, const Dot11sMacHeader & b);
|
||||
friend bool operator== (const MeshHeader & a, const MeshHeader & b);
|
||||
};
|
||||
bool operator== (const Dot11sMacHeader & a, const Dot11sMacHeader & b);
|
||||
bool operator== (const MeshHeader & a, const MeshHeader & b);
|
||||
|
||||
/**
|
||||
* \ingroup dot11s
|
||||
*
|
||||
* \brief See IEEE 802.11s draft 3.0 section 7.2.3.14
|
||||
*
|
||||
* Multichop action frame consists of Mesh header, Action, and
|
||||
* the last information. Mesh header is present within all data
|
||||
* frames and multihop action frames, so Mesh header is a
|
||||
* separate structure. Each Action frames (frames like
|
||||
* PREQ, PREP and other) start form Category field and Action
|
||||
* value field, so the Multihop Action Frame should containt
|
||||
* three fields: Category, Action Value.
|
||||
* Header format: | category: 1 | action value: 1 |
|
||||
*/
|
||||
class WifiMeshActionHeader : public Header
|
||||
{
|
||||
|
||||
@@ -53,7 +53,7 @@ HwmpMacPlugin::Receive (Ptr<Packet> packet, const WifiMacHeader & header)
|
||||
//TODO: here we fix only mesh header
|
||||
if(header.IsData())
|
||||
{
|
||||
Dot11sMacHeader meshHdr;
|
||||
MeshHeader meshHdr;
|
||||
HwmpTag tag;
|
||||
if(packet->PeekPacketTag (tag))
|
||||
{
|
||||
@@ -136,7 +136,7 @@ HwmpMacPlugin::UpdateOutcomingFrame (Ptr<Packet> packet, WifiMacHeader & header,
|
||||
bool tagExists = packet->RemovePacketTag(tag);
|
||||
NS_ASSERT (tagExists);
|
||||
|
||||
Dot11sMacHeader meshHdr;
|
||||
MeshHeader meshHdr;
|
||||
meshHdr.SetMeshSeqno(tag.GetSeqno());
|
||||
meshHdr.SetMeshTtl(tag.GetTtl());
|
||||
packet->AddHeader(meshHdr);
|
||||
|
||||
@@ -26,22 +26,8 @@ def build(bld):
|
||||
headers = bld.new_task_gen('ns3header')
|
||||
headers.module = 'dot11s'
|
||||
headers.source = [
|
||||
'ie-dot11s-beacon-timing.h',
|
||||
#'ie-dot11s-configuration.h',
|
||||
'ie-dot11s-peer-management.h',
|
||||
#'ie-dot11s-preq.h',
|
||||
#'ie-dot11s-prep.h',
|
||||
'ie-dot11s-perr.h',
|
||||
#'ie-dot11s-rann.h',
|
||||
#'peer-link-frame.h',
|
||||
#'peer-link.h',
|
||||
#'peer-management-plugin.h',
|
||||
'peer-management-protocol.h',
|
||||
#'hwmp-mac-plugin.h',
|
||||
'hwmp-protocol.h',
|
||||
'dot11s-helper.h',
|
||||
'dot11s-mac-header.h',
|
||||
]
|
||||
|
||||
# obj = bld.create_ns3_program('wifi-phy-test',
|
||||
# ['core', 'simulator', 'mobility', 'node', 'wifi'])
|
||||
# obj.source = 'wifi-phy-test.cc'
|
||||
|
||||
@@ -12,7 +12,6 @@ def build(bld):
|
||||
headers = bld.new_task_gen('ns3header')
|
||||
headers.module = 'mesh'
|
||||
headers.source = [
|
||||
# Refactored
|
||||
'wifi-information-element.h',
|
||||
'mesh-point-device.h',
|
||||
'mesh-l2-routing-protocol.h',
|
||||
@@ -20,4 +19,3 @@ def build(bld):
|
||||
'mesh-wifi-interface-mac.h',
|
||||
'mesh-wifi-interface-mac-plugin.h',
|
||||
]
|
||||
|
||||
|
||||
Reference in New Issue
Block a user