src/mesh/model/dot11s/dot11s-mac-header.cc
author Tom Henderson <tomh@tomh.org>
Tue, 05 May 2015 19:07:17 -0700
changeset 11373 03ebade19d98
parent 7386 2310ed220a61
child 11589 d3bfef4544ec
permissions -rw-r--r--
SetGroupName for mesh module
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
7385
10beb0e53130 standardize emacs c++ mode comments
Vedran Miletić <rivanvx@gmail.com>
parents: 7178
diff changeset
     1
/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
4883
27921b45078e Restored mesh-wifi-mac-header
Kirill Andreev <andreev@iitp.ru>
parents:
diff changeset
     2
/*
27921b45078e Restored mesh-wifi-mac-header
Kirill Andreev <andreev@iitp.ru>
parents:
diff changeset
     3
 * Copyright (c) 2009 IITP RAS
27921b45078e Restored mesh-wifi-mac-header
Kirill Andreev <andreev@iitp.ru>
parents:
diff changeset
     4
 *
27921b45078e Restored mesh-wifi-mac-header
Kirill Andreev <andreev@iitp.ru>
parents:
diff changeset
     5
 * This program is free software; you can redistribute it and/or modify
27921b45078e Restored mesh-wifi-mac-header
Kirill Andreev <andreev@iitp.ru>
parents:
diff changeset
     6
 * it under the terms of the GNU General Public License version 2 as
27921b45078e Restored mesh-wifi-mac-header
Kirill Andreev <andreev@iitp.ru>
parents:
diff changeset
     7
 * published by the Free Software Foundation;
27921b45078e Restored mesh-wifi-mac-header
Kirill Andreev <andreev@iitp.ru>
parents:
diff changeset
     8
 *
27921b45078e Restored mesh-wifi-mac-header
Kirill Andreev <andreev@iitp.ru>
parents:
diff changeset
     9
 * This program is distributed in the hope that it will be useful,
27921b45078e Restored mesh-wifi-mac-header
Kirill Andreev <andreev@iitp.ru>
parents:
diff changeset
    10
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
27921b45078e Restored mesh-wifi-mac-header
Kirill Andreev <andreev@iitp.ru>
parents:
diff changeset
    11
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
27921b45078e Restored mesh-wifi-mac-header
Kirill Andreev <andreev@iitp.ru>
parents:
diff changeset
    12
 * GNU General Public License for more details.
27921b45078e Restored mesh-wifi-mac-header
Kirill Andreev <andreev@iitp.ru>
parents:
diff changeset
    13
 *
27921b45078e Restored mesh-wifi-mac-header
Kirill Andreev <andreev@iitp.ru>
parents:
diff changeset
    14
 * You should have received a copy of the GNU General Public License
27921b45078e Restored mesh-wifi-mac-header
Kirill Andreev <andreev@iitp.ru>
parents:
diff changeset
    15
 * along with this program; if not, write to the Free Software
27921b45078e Restored mesh-wifi-mac-header
Kirill Andreev <andreev@iitp.ru>
parents:
diff changeset
    16
 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
27921b45078e Restored mesh-wifi-mac-header
Kirill Andreev <andreev@iitp.ru>
parents:
diff changeset
    17
 *
27921b45078e Restored mesh-wifi-mac-header
Kirill Andreev <andreev@iitp.ru>
parents:
diff changeset
    18
 * Author: Kirill Andreev <andreev@iitp.ru>
27921b45078e Restored mesh-wifi-mac-header
Kirill Andreev <andreev@iitp.ru>
parents:
diff changeset
    19
 */
27921b45078e Restored mesh-wifi-mac-header
Kirill Andreev <andreev@iitp.ru>
parents:
diff changeset
    20
27921b45078e Restored mesh-wifi-mac-header
Kirill Andreev <andreev@iitp.ru>
parents:
diff changeset
    21
#include "ns3/assert.h"
27921b45078e Restored mesh-wifi-mac-header
Kirill Andreev <andreev@iitp.ru>
parents:
diff changeset
    22
#include "ns3/address-utils.h"
4956
aba7cae978ac MeshWifiMacHeader moved to Dot11sMacHeader. test to it is written
Kirill Andreev <andreev@iitp.ru>
parents: 4949
diff changeset
    23
#include "dot11s-mac-header.h"
aba7cae978ac MeshWifiMacHeader moved to Dot11sMacHeader. test to it is written
Kirill Andreev <andreev@iitp.ru>
parents: 4949
diff changeset
    24
#include "ns3/packet.h"
4883
27921b45078e Restored mesh-wifi-mac-header
Kirill Andreev <andreev@iitp.ru>
parents:
diff changeset
    25
5132
aee541a30256 Restored newline at namespace
Kirill Andreev <andreev@iitp.ru>
parents: 5129
diff changeset
    26
namespace ns3 {
aee541a30256 Restored newline at namespace
Kirill Andreev <andreev@iitp.ru>
parents: 5129
diff changeset
    27
namespace dot11s {
4883
27921b45078e Restored mesh-wifi-mac-header
Kirill Andreev <andreev@iitp.ru>
parents:
diff changeset
    28
/***********************************************************
27921b45078e Restored mesh-wifi-mac-header
Kirill Andreev <andreev@iitp.ru>
parents:
diff changeset
    29
 *  Here Mesh Mac Header functionality is defined.
27921b45078e Restored mesh-wifi-mac-header
Kirill Andreev <andreev@iitp.ru>
parents:
diff changeset
    30
 ***********************************************************/
27921b45078e Restored mesh-wifi-mac-header
Kirill Andreev <andreev@iitp.ru>
parents:
diff changeset
    31
TypeId
4994
2c25f9c66604 Dot11sMacHeader renamed to MeshHeader to correspond standard
Pavel Boyko <boyko@iitp.ru>
parents: 4984
diff changeset
    32
MeshHeader::GetTypeId ()
4883
27921b45078e Restored mesh-wifi-mac-header
Kirill Andreev <andreev@iitp.ru>
parents:
diff changeset
    33
{
4956
aba7cae978ac MeshWifiMacHeader moved to Dot11sMacHeader. test to it is written
Kirill Andreev <andreev@iitp.ru>
parents: 4949
diff changeset
    34
  static TypeId tid = TypeId ("ns3::Dot11sMacHeader")
7178
1a07cbb68308 mesh coding style changes
Josh Pelkey <jpelkey@gatech.edu>
parents: 6882
diff changeset
    35
    .SetParent<Header> ()
11373
03ebade19d98 SetGroupName for mesh module
Tom Henderson <tomh@tomh.org>
parents: 7386
diff changeset
    36
    .SetGroupName ("Mesh")
7178
1a07cbb68308 mesh coding style changes
Josh Pelkey <jpelkey@gatech.edu>
parents: 6882
diff changeset
    37
    .AddConstructor<MeshHeader> ();
4883
27921b45078e Restored mesh-wifi-mac-header
Kirill Andreev <andreev@iitp.ru>
parents:
diff changeset
    38
  return tid;
27921b45078e Restored mesh-wifi-mac-header
Kirill Andreev <andreev@iitp.ru>
parents:
diff changeset
    39
}
5129
5688b8da4526 Fixed coding style
Kirill Andreev <andreev@iitp.ru>
parents: 5124
diff changeset
    40
MeshHeader::MeshHeader () :
5688b8da4526 Fixed coding style
Kirill Andreev <andreev@iitp.ru>
parents: 5124
diff changeset
    41
  m_meshFlags (0), m_meshTtl (0), m_meshSeqno (0), m_addr4 (Mac48Address ()), m_addr5 (Mac48Address ()),
7178
1a07cbb68308 mesh coding style changes
Josh Pelkey <jpelkey@gatech.edu>
parents: 6882
diff changeset
    42
  m_addr6 (Mac48Address ())
4883
27921b45078e Restored mesh-wifi-mac-header
Kirill Andreev <andreev@iitp.ru>
parents:
diff changeset
    43
{
27921b45078e Restored mesh-wifi-mac-header
Kirill Andreev <andreev@iitp.ru>
parents:
diff changeset
    44
}
4994
2c25f9c66604 Dot11sMacHeader renamed to MeshHeader to correspond standard
Pavel Boyko <boyko@iitp.ru>
parents: 4984
diff changeset
    45
MeshHeader::~MeshHeader ()
4883
27921b45078e Restored mesh-wifi-mac-header
Kirill Andreev <andreev@iitp.ru>
parents:
diff changeset
    46
{
27921b45078e Restored mesh-wifi-mac-header
Kirill Andreev <andreev@iitp.ru>
parents:
diff changeset
    47
}
27921b45078e Restored mesh-wifi-mac-header
Kirill Andreev <andreev@iitp.ru>
parents:
diff changeset
    48
TypeId
4994
2c25f9c66604 Dot11sMacHeader renamed to MeshHeader to correspond standard
Pavel Boyko <boyko@iitp.ru>
parents: 4984
diff changeset
    49
MeshHeader::GetInstanceTypeId () const
4883
27921b45078e Restored mesh-wifi-mac-header
Kirill Andreev <andreev@iitp.ru>
parents:
diff changeset
    50
{
27921b45078e Restored mesh-wifi-mac-header
Kirill Andreev <andreev@iitp.ru>
parents:
diff changeset
    51
  return GetTypeId ();
27921b45078e Restored mesh-wifi-mac-header
Kirill Andreev <andreev@iitp.ru>
parents:
diff changeset
    52
}
27921b45078e Restored mesh-wifi-mac-header
Kirill Andreev <andreev@iitp.ru>
parents:
diff changeset
    53
void
4994
2c25f9c66604 Dot11sMacHeader renamed to MeshHeader to correspond standard
Pavel Boyko <boyko@iitp.ru>
parents: 4984
diff changeset
    54
MeshHeader::SetAddr4 (Mac48Address address)
4889
279b07de3327 Fixrd bugs with address extensions, broadcast frames can go through L2Routing
Kirill Andreev <andreev@iitp.ru>
parents: 4883
diff changeset
    55
{
279b07de3327 Fixrd bugs with address extensions, broadcast frames can go through L2Routing
Kirill Andreev <andreev@iitp.ru>
parents: 4883
diff changeset
    56
  m_addr4 = address;
279b07de3327 Fixrd bugs with address extensions, broadcast frames can go through L2Routing
Kirill Andreev <andreev@iitp.ru>
parents: 4883
diff changeset
    57
}
279b07de3327 Fixrd bugs with address extensions, broadcast frames can go through L2Routing
Kirill Andreev <andreev@iitp.ru>
parents: 4883
diff changeset
    58
void
4994
2c25f9c66604 Dot11sMacHeader renamed to MeshHeader to correspond standard
Pavel Boyko <boyko@iitp.ru>
parents: 4984
diff changeset
    59
MeshHeader::SetAddr5 (Mac48Address address)
4883
27921b45078e Restored mesh-wifi-mac-header
Kirill Andreev <andreev@iitp.ru>
parents:
diff changeset
    60
{
27921b45078e Restored mesh-wifi-mac-header
Kirill Andreev <andreev@iitp.ru>
parents:
diff changeset
    61
  m_addr5 = address;
27921b45078e Restored mesh-wifi-mac-header
Kirill Andreev <andreev@iitp.ru>
parents:
diff changeset
    62
}
27921b45078e Restored mesh-wifi-mac-header
Kirill Andreev <andreev@iitp.ru>
parents:
diff changeset
    63
void
4994
2c25f9c66604 Dot11sMacHeader renamed to MeshHeader to correspond standard
Pavel Boyko <boyko@iitp.ru>
parents: 4984
diff changeset
    64
MeshHeader::SetAddr6 (Mac48Address address)
4883
27921b45078e Restored mesh-wifi-mac-header
Kirill Andreev <andreev@iitp.ru>
parents:
diff changeset
    65
{
27921b45078e Restored mesh-wifi-mac-header
Kirill Andreev <andreev@iitp.ru>
parents:
diff changeset
    66
  m_addr6 = address;
27921b45078e Restored mesh-wifi-mac-header
Kirill Andreev <andreev@iitp.ru>
parents:
diff changeset
    67
}
4889
279b07de3327 Fixrd bugs with address extensions, broadcast frames can go through L2Routing
Kirill Andreev <andreev@iitp.ru>
parents: 4883
diff changeset
    68
Mac48Address
4994
2c25f9c66604 Dot11sMacHeader renamed to MeshHeader to correspond standard
Pavel Boyko <boyko@iitp.ru>
parents: 4984
diff changeset
    69
MeshHeader::GetAddr4 () const
4883
27921b45078e Restored mesh-wifi-mac-header
Kirill Andreev <andreev@iitp.ru>
parents:
diff changeset
    70
{
4889
279b07de3327 Fixrd bugs with address extensions, broadcast frames can go through L2Routing
Kirill Andreev <andreev@iitp.ru>
parents: 4883
diff changeset
    71
  return m_addr4;
4883
27921b45078e Restored mesh-wifi-mac-header
Kirill Andreev <andreev@iitp.ru>
parents:
diff changeset
    72
}
27921b45078e Restored mesh-wifi-mac-header
Kirill Andreev <andreev@iitp.ru>
parents:
diff changeset
    73
Mac48Address
4994
2c25f9c66604 Dot11sMacHeader renamed to MeshHeader to correspond standard
Pavel Boyko <boyko@iitp.ru>
parents: 4984
diff changeset
    74
MeshHeader::GetAddr5 () const
4883
27921b45078e Restored mesh-wifi-mac-header
Kirill Andreev <andreev@iitp.ru>
parents:
diff changeset
    75
{
27921b45078e Restored mesh-wifi-mac-header
Kirill Andreev <andreev@iitp.ru>
parents:
diff changeset
    76
  return m_addr5;
27921b45078e Restored mesh-wifi-mac-header
Kirill Andreev <andreev@iitp.ru>
parents:
diff changeset
    77
}
27921b45078e Restored mesh-wifi-mac-header
Kirill Andreev <andreev@iitp.ru>
parents:
diff changeset
    78
Mac48Address
4994
2c25f9c66604 Dot11sMacHeader renamed to MeshHeader to correspond standard
Pavel Boyko <boyko@iitp.ru>
parents: 4984
diff changeset
    79
MeshHeader::GetAddr6 () const
4883
27921b45078e Restored mesh-wifi-mac-header
Kirill Andreev <andreev@iitp.ru>
parents:
diff changeset
    80
{
27921b45078e Restored mesh-wifi-mac-header
Kirill Andreev <andreev@iitp.ru>
parents:
diff changeset
    81
  return m_addr6;
27921b45078e Restored mesh-wifi-mac-header
Kirill Andreev <andreev@iitp.ru>
parents:
diff changeset
    82
}
27921b45078e Restored mesh-wifi-mac-header
Kirill Andreev <andreev@iitp.ru>
parents:
diff changeset
    83
void
4994
2c25f9c66604 Dot11sMacHeader renamed to MeshHeader to correspond standard
Pavel Boyko <boyko@iitp.ru>
parents: 4984
diff changeset
    84
MeshHeader::SetMeshSeqno (uint32_t seqno)
4883
27921b45078e Restored mesh-wifi-mac-header
Kirill Andreev <andreev@iitp.ru>
parents:
diff changeset
    85
{
27921b45078e Restored mesh-wifi-mac-header
Kirill Andreev <andreev@iitp.ru>
parents:
diff changeset
    86
  m_meshSeqno = seqno;
27921b45078e Restored mesh-wifi-mac-header
Kirill Andreev <andreev@iitp.ru>
parents:
diff changeset
    87
}
27921b45078e Restored mesh-wifi-mac-header
Kirill Andreev <andreev@iitp.ru>
parents:
diff changeset
    88
uint32_t
4994
2c25f9c66604 Dot11sMacHeader renamed to MeshHeader to correspond standard
Pavel Boyko <boyko@iitp.ru>
parents: 4984
diff changeset
    89
MeshHeader::GetMeshSeqno () const
4883
27921b45078e Restored mesh-wifi-mac-header
Kirill Andreev <andreev@iitp.ru>
parents:
diff changeset
    90
{
27921b45078e Restored mesh-wifi-mac-header
Kirill Andreev <andreev@iitp.ru>
parents:
diff changeset
    91
  return m_meshSeqno;
27921b45078e Restored mesh-wifi-mac-header
Kirill Andreev <andreev@iitp.ru>
parents:
diff changeset
    92
}
27921b45078e Restored mesh-wifi-mac-header
Kirill Andreev <andreev@iitp.ru>
parents:
diff changeset
    93
void
4994
2c25f9c66604 Dot11sMacHeader renamed to MeshHeader to correspond standard
Pavel Boyko <boyko@iitp.ru>
parents: 4984
diff changeset
    94
MeshHeader::SetMeshTtl (uint8_t TTL)
4883
27921b45078e Restored mesh-wifi-mac-header
Kirill Andreev <andreev@iitp.ru>
parents:
diff changeset
    95
{
27921b45078e Restored mesh-wifi-mac-header
Kirill Andreev <andreev@iitp.ru>
parents:
diff changeset
    96
  m_meshTtl = TTL;
27921b45078e Restored mesh-wifi-mac-header
Kirill Andreev <andreev@iitp.ru>
parents:
diff changeset
    97
}
27921b45078e Restored mesh-wifi-mac-header
Kirill Andreev <andreev@iitp.ru>
parents:
diff changeset
    98
uint8_t
4994
2c25f9c66604 Dot11sMacHeader renamed to MeshHeader to correspond standard
Pavel Boyko <boyko@iitp.ru>
parents: 4984
diff changeset
    99
MeshHeader::GetMeshTtl () const
4883
27921b45078e Restored mesh-wifi-mac-header
Kirill Andreev <andreev@iitp.ru>
parents:
diff changeset
   100
{
27921b45078e Restored mesh-wifi-mac-header
Kirill Andreev <andreev@iitp.ru>
parents:
diff changeset
   101
  return m_meshTtl;
27921b45078e Restored mesh-wifi-mac-header
Kirill Andreev <andreev@iitp.ru>
parents:
diff changeset
   102
}
27921b45078e Restored mesh-wifi-mac-header
Kirill Andreev <andreev@iitp.ru>
parents:
diff changeset
   103
void
4994
2c25f9c66604 Dot11sMacHeader renamed to MeshHeader to correspond standard
Pavel Boyko <boyko@iitp.ru>
parents: 4984
diff changeset
   104
MeshHeader::SetAddressExt (uint8_t num_of_addresses)
4883
27921b45078e Restored mesh-wifi-mac-header
Kirill Andreev <andreev@iitp.ru>
parents:
diff changeset
   105
{
5063
97b947e83640 Faker's code review response
Pavel Boyko <boyko@iitp.ru>
parents: 5027
diff changeset
   106
  NS_ASSERT (num_of_addresses <= 3);
5027
2f926202a5bf Moving to IEEE 802.11s Draft 3.0 (Mesh Control Field, Beacon Timing Element):
Andrey Mazo <mazo@iitp.ru>
parents: 4994
diff changeset
   107
  m_meshFlags |= 0x03 & num_of_addresses;
4883
27921b45078e Restored mesh-wifi-mac-header
Kirill Andreev <andreev@iitp.ru>
parents:
diff changeset
   108
}
27921b45078e Restored mesh-wifi-mac-header
Kirill Andreev <andreev@iitp.ru>
parents:
diff changeset
   109
uint8_t
4994
2c25f9c66604 Dot11sMacHeader renamed to MeshHeader to correspond standard
Pavel Boyko <boyko@iitp.ru>
parents: 4984
diff changeset
   110
MeshHeader::GetAddressExt () const
4883
27921b45078e Restored mesh-wifi-mac-header
Kirill Andreev <andreev@iitp.ru>
parents:
diff changeset
   111
{
5027
2f926202a5bf Moving to IEEE 802.11s Draft 3.0 (Mesh Control Field, Beacon Timing Element):
Andrey Mazo <mazo@iitp.ru>
parents: 4994
diff changeset
   112
  return (0x03 & m_meshFlags);
4883
27921b45078e Restored mesh-wifi-mac-header
Kirill Andreev <andreev@iitp.ru>
parents:
diff changeset
   113
}
27921b45078e Restored mesh-wifi-mac-header
Kirill Andreev <andreev@iitp.ru>
parents:
diff changeset
   114
uint32_t
4994
2c25f9c66604 Dot11sMacHeader renamed to MeshHeader to correspond standard
Pavel Boyko <boyko@iitp.ru>
parents: 4984
diff changeset
   115
MeshHeader::GetSerializedSize () const
4883
27921b45078e Restored mesh-wifi-mac-header
Kirill Andreev <andreev@iitp.ru>
parents:
diff changeset
   116
{
4889
279b07de3327 Fixrd bugs with address extensions, broadcast frames can go through L2Routing
Kirill Andreev <andreev@iitp.ru>
parents: 4883
diff changeset
   117
  return 6 + GetAddressExt () * 6;
4883
27921b45078e Restored mesh-wifi-mac-header
Kirill Andreev <andreev@iitp.ru>
parents:
diff changeset
   118
}
27921b45078e Restored mesh-wifi-mac-header
Kirill Andreev <andreev@iitp.ru>
parents:
diff changeset
   119
void
4994
2c25f9c66604 Dot11sMacHeader renamed to MeshHeader to correspond standard
Pavel Boyko <boyko@iitp.ru>
parents: 4984
diff changeset
   120
MeshHeader::Serialize (Buffer::Iterator start) const
4883
27921b45078e Restored mesh-wifi-mac-header
Kirill Andreev <andreev@iitp.ru>
parents:
diff changeset
   121
{
27921b45078e Restored mesh-wifi-mac-header
Kirill Andreev <andreev@iitp.ru>
parents:
diff changeset
   122
  Buffer::Iterator i = start;
27921b45078e Restored mesh-wifi-mac-header
Kirill Andreev <andreev@iitp.ru>
parents:
diff changeset
   123
  i.WriteU8 (m_meshFlags);
27921b45078e Restored mesh-wifi-mac-header
Kirill Andreev <andreev@iitp.ru>
parents:
diff changeset
   124
  i.WriteU8 (m_meshTtl);
5027
2f926202a5bf Moving to IEEE 802.11s Draft 3.0 (Mesh Control Field, Beacon Timing Element):
Andrey Mazo <mazo@iitp.ru>
parents: 4994
diff changeset
   125
  i.WriteHtolsbU32 (m_meshSeqno);
4889
279b07de3327 Fixrd bugs with address extensions, broadcast frames can go through L2Routing
Kirill Andreev <andreev@iitp.ru>
parents: 4883
diff changeset
   126
  uint8_t addresses_to_add = GetAddressExt ();
4883
27921b45078e Restored mesh-wifi-mac-header
Kirill Andreev <andreev@iitp.ru>
parents:
diff changeset
   127
  //Writing Address extensions:
4956
aba7cae978ac MeshWifiMacHeader moved to Dot11sMacHeader. test to it is written
Kirill Andreev <andreev@iitp.ru>
parents: 4949
diff changeset
   128
  if ((addresses_to_add == 1) || (addresses_to_add == 3))
5124
e206046b2e44 removed GetElementId from *.h files. Fixed spaces before '(' and added {} when needed.
Kirill Andreev <andreev@iitp.ru>
parents: 5112
diff changeset
   129
    {
e206046b2e44 removed GetElementId from *.h files. Fixed spaces before '(' and added {} when needed.
Kirill Andreev <andreev@iitp.ru>
parents: 5112
diff changeset
   130
      WriteTo (i, m_addr4);
e206046b2e44 removed GetElementId from *.h files. Fixed spaces before '(' and added {} when needed.
Kirill Andreev <andreev@iitp.ru>
parents: 5112
diff changeset
   131
    }
4889
279b07de3327 Fixrd bugs with address extensions, broadcast frames can go through L2Routing
Kirill Andreev <andreev@iitp.ru>
parents: 4883
diff changeset
   132
  if (addresses_to_add > 1)
5124
e206046b2e44 removed GetElementId from *.h files. Fixed spaces before '(' and added {} when needed.
Kirill Andreev <andreev@iitp.ru>
parents: 5112
diff changeset
   133
    {
e206046b2e44 removed GetElementId from *.h files. Fixed spaces before '(' and added {} when needed.
Kirill Andreev <andreev@iitp.ru>
parents: 5112
diff changeset
   134
      WriteTo (i, m_addr5);
e206046b2e44 removed GetElementId from *.h files. Fixed spaces before '(' and added {} when needed.
Kirill Andreev <andreev@iitp.ru>
parents: 5112
diff changeset
   135
    }
4956
aba7cae978ac MeshWifiMacHeader moved to Dot11sMacHeader. test to it is written
Kirill Andreev <andreev@iitp.ru>
parents: 4949
diff changeset
   136
  if (addresses_to_add > 1)
5124
e206046b2e44 removed GetElementId from *.h files. Fixed spaces before '(' and added {} when needed.
Kirill Andreev <andreev@iitp.ru>
parents: 5112
diff changeset
   137
    {
e206046b2e44 removed GetElementId from *.h files. Fixed spaces before '(' and added {} when needed.
Kirill Andreev <andreev@iitp.ru>
parents: 5112
diff changeset
   138
      WriteTo (i, m_addr6);
e206046b2e44 removed GetElementId from *.h files. Fixed spaces before '(' and added {} when needed.
Kirill Andreev <andreev@iitp.ru>
parents: 5112
diff changeset
   139
    }
4883
27921b45078e Restored mesh-wifi-mac-header
Kirill Andreev <andreev@iitp.ru>
parents:
diff changeset
   140
}
27921b45078e Restored mesh-wifi-mac-header
Kirill Andreev <andreev@iitp.ru>
parents:
diff changeset
   141
uint32_t
4994
2c25f9c66604 Dot11sMacHeader renamed to MeshHeader to correspond standard
Pavel Boyko <boyko@iitp.ru>
parents: 4984
diff changeset
   142
MeshHeader::Deserialize (Buffer::Iterator start)
4883
27921b45078e Restored mesh-wifi-mac-header
Kirill Andreev <andreev@iitp.ru>
parents:
diff changeset
   143
{
27921b45078e Restored mesh-wifi-mac-header
Kirill Andreev <andreev@iitp.ru>
parents:
diff changeset
   144
  Buffer::Iterator i = start;
27921b45078e Restored mesh-wifi-mac-header
Kirill Andreev <andreev@iitp.ru>
parents:
diff changeset
   145
  uint8_t addresses_to_read = 0;
27921b45078e Restored mesh-wifi-mac-header
Kirill Andreev <andreev@iitp.ru>
parents:
diff changeset
   146
  m_meshFlags = i.ReadU8 ();
27921b45078e Restored mesh-wifi-mac-header
Kirill Andreev <andreev@iitp.ru>
parents:
diff changeset
   147
  m_meshTtl = i.ReadU8 ();
5027
2f926202a5bf Moving to IEEE 802.11s Draft 3.0 (Mesh Control Field, Beacon Timing Element):
Andrey Mazo <mazo@iitp.ru>
parents: 4994
diff changeset
   148
  m_meshSeqno = i.ReadLsbtohU32 ();
2f926202a5bf Moving to IEEE 802.11s Draft 3.0 (Mesh Control Field, Beacon Timing Element):
Andrey Mazo <mazo@iitp.ru>
parents: 4994
diff changeset
   149
  addresses_to_read = m_meshFlags & 0x03;
4956
aba7cae978ac MeshWifiMacHeader moved to Dot11sMacHeader. test to it is written
Kirill Andreev <andreev@iitp.ru>
parents: 4949
diff changeset
   150
  if ((addresses_to_read == 1) || (addresses_to_read == 3))
5124
e206046b2e44 removed GetElementId from *.h files. Fixed spaces before '(' and added {} when needed.
Kirill Andreev <andreev@iitp.ru>
parents: 5112
diff changeset
   151
    {
e206046b2e44 removed GetElementId from *.h files. Fixed spaces before '(' and added {} when needed.
Kirill Andreev <andreev@iitp.ru>
parents: 5112
diff changeset
   152
      ReadFrom (i, m_addr4);
e206046b2e44 removed GetElementId from *.h files. Fixed spaces before '(' and added {} when needed.
Kirill Andreev <andreev@iitp.ru>
parents: 5112
diff changeset
   153
    }
4889
279b07de3327 Fixrd bugs with address extensions, broadcast frames can go through L2Routing
Kirill Andreev <andreev@iitp.ru>
parents: 4883
diff changeset
   154
  if (addresses_to_read > 1)
5124
e206046b2e44 removed GetElementId from *.h files. Fixed spaces before '(' and added {} when needed.
Kirill Andreev <andreev@iitp.ru>
parents: 5112
diff changeset
   155
    {
e206046b2e44 removed GetElementId from *.h files. Fixed spaces before '(' and added {} when needed.
Kirill Andreev <andreev@iitp.ru>
parents: 5112
diff changeset
   156
      ReadFrom (i, m_addr5);
e206046b2e44 removed GetElementId from *.h files. Fixed spaces before '(' and added {} when needed.
Kirill Andreev <andreev@iitp.ru>
parents: 5112
diff changeset
   157
    }
4956
aba7cae978ac MeshWifiMacHeader moved to Dot11sMacHeader. test to it is written
Kirill Andreev <andreev@iitp.ru>
parents: 4949
diff changeset
   158
  if (addresses_to_read > 1)
5124
e206046b2e44 removed GetElementId from *.h files. Fixed spaces before '(' and added {} when needed.
Kirill Andreev <andreev@iitp.ru>
parents: 5112
diff changeset
   159
    {
e206046b2e44 removed GetElementId from *.h files. Fixed spaces before '(' and added {} when needed.
Kirill Andreev <andreev@iitp.ru>
parents: 5112
diff changeset
   160
      ReadFrom (i, m_addr6);
e206046b2e44 removed GetElementId from *.h files. Fixed spaces before '(' and added {} when needed.
Kirill Andreev <andreev@iitp.ru>
parents: 5112
diff changeset
   161
    }
4883
27921b45078e Restored mesh-wifi-mac-header
Kirill Andreev <andreev@iitp.ru>
parents:
diff changeset
   162
  return i.GetDistanceFrom (start);
27921b45078e Restored mesh-wifi-mac-header
Kirill Andreev <andreev@iitp.ru>
parents:
diff changeset
   163
}
27921b45078e Restored mesh-wifi-mac-header
Kirill Andreev <andreev@iitp.ru>
parents:
diff changeset
   164
void
4994
2c25f9c66604 Dot11sMacHeader renamed to MeshHeader to correspond standard
Pavel Boyko <boyko@iitp.ru>
parents: 4984
diff changeset
   165
MeshHeader::Print (std::ostream &os) const
4883
27921b45078e Restored mesh-wifi-mac-header
Kirill Andreev <andreev@iitp.ru>
parents:
diff changeset
   166
{
5157
ace422ad12df Cosmetics: '\n' was replaced with std::endl, Camel case for attributes
Kirill Andreev <andreev@iitp.ru>
parents: 5132
diff changeset
   167
  os << "flags = " << (uint16_t) m_meshFlags << std::endl << "ttl = " << (uint16_t) m_meshTtl 
7178
1a07cbb68308 mesh coding style changes
Josh Pelkey <jpelkey@gatech.edu>
parents: 6882
diff changeset
   168
     << std::endl << "seqno = " << m_meshSeqno << std::endl<< "addr4 = " << m_addr4 << std::endl
1a07cbb68308 mesh coding style changes
Josh Pelkey <jpelkey@gatech.edu>
parents: 6882
diff changeset
   169
     << "addr5 = " << m_addr5 << std::endl << "addr6 = " << m_addr6 << std::endl;
4956
aba7cae978ac MeshWifiMacHeader moved to Dot11sMacHeader. test to it is written
Kirill Andreev <andreev@iitp.ru>
parents: 4949
diff changeset
   170
}
5129
5688b8da4526 Fixed coding style
Kirill Andreev <andreev@iitp.ru>
parents: 5124
diff changeset
   171
bool
5688b8da4526 Fixed coding style
Kirill Andreev <andreev@iitp.ru>
parents: 5124
diff changeset
   172
operator== (const MeshHeader & a, const MeshHeader & b)
4956
aba7cae978ac MeshWifiMacHeader moved to Dot11sMacHeader. test to it is written
Kirill Andreev <andreev@iitp.ru>
parents: 4949
diff changeset
   173
{
5129
5688b8da4526 Fixed coding style
Kirill Andreev <andreev@iitp.ru>
parents: 5124
diff changeset
   174
  return ((a.m_meshFlags == b.m_meshFlags) && (a.m_meshTtl == b.m_meshTtl)
7178
1a07cbb68308 mesh coding style changes
Josh Pelkey <jpelkey@gatech.edu>
parents: 6882
diff changeset
   175
          && (a.m_meshSeqno == b.m_meshSeqno) && (a.m_addr4 == b.m_addr4) && (a.m_addr5 == b.m_addr5)
1a07cbb68308 mesh coding style changes
Josh Pelkey <jpelkey@gatech.edu>
parents: 6882
diff changeset
   176
          && (a.m_addr6 == b.m_addr6));
4883
27921b45078e Restored mesh-wifi-mac-header
Kirill Andreev <andreev@iitp.ru>
parents:
diff changeset
   177
}
7386
2310ed220a61 standardize ns-3 namespace declaration format
Vedran Miletić <rivanvx@gmail.com>
parents: 7385
diff changeset
   178
} // namespace dot11s
4883
27921b45078e Restored mesh-wifi-mac-header
Kirill Andreev <andreev@iitp.ru>
parents:
diff changeset
   179
} // namespace ns3