Dot11sMacHeader renamed to MeshHeader to correspond standard

This commit is contained in:
Pavel Boyko
2009-04-30 13:28:45 +04:00
parent 51759b2b3c
commit 8b5a8fdfbc
5 changed files with 41 additions and 61 deletions

View File

@@ -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);
}

View File

@@ -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
{

View File

@@ -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);

View File

@@ -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'

View File

@@ -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',
]