src/devices/mesh/mesh-wifi-mac-header.cc
author Kirill Andreev <andreev@iitp.ru>
Thu, 26 Mar 2009 20:17:41 +0300
changeset 4890 8ee0a72c0ae0
parent 4889 279b07de3327
permissions -rw-r--r--
More bufix
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
4883
27921b45078e Restored mesh-wifi-mac-header
Kirill Andreev <andreev@iitp.ru>
parents:
diff changeset
     1
/* -*-  Mode: C++; c-file-style: "gnu"; indent-tabs-mode:nil; -*- */
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
27921b45078e Restored mesh-wifi-mac-header
Kirill Andreev <andreev@iitp.ru>
parents:
diff changeset
    22
#include "ns3/assert.h"
27921b45078e Restored mesh-wifi-mac-header
Kirill Andreev <andreev@iitp.ru>
parents:
diff changeset
    23
#include "ns3/address-utils.h"
27921b45078e Restored mesh-wifi-mac-header
Kirill Andreev <andreev@iitp.ru>
parents:
diff changeset
    24
#include "ns3/mesh-wifi-mac-header.h"
27921b45078e Restored mesh-wifi-mac-header
Kirill Andreev <andreev@iitp.ru>
parents:
diff changeset
    25
27921b45078e Restored mesh-wifi-mac-header
Kirill Andreev <andreev@iitp.ru>
parents:
diff changeset
    26
namespace ns3 {
27921b45078e Restored mesh-wifi-mac-header
Kirill Andreev <andreev@iitp.ru>
parents:
diff changeset
    27
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
27921b45078e Restored mesh-wifi-mac-header
Kirill Andreev <andreev@iitp.ru>
parents:
diff changeset
    32
WifiMeshHeader::GetTypeId ()
27921b45078e Restored mesh-wifi-mac-header
Kirill Andreev <andreev@iitp.ru>
parents:
diff changeset
    33
{
27921b45078e Restored mesh-wifi-mac-header
Kirill Andreev <andreev@iitp.ru>
parents:
diff changeset
    34
  static TypeId tid = TypeId ("ns3::WifiMeshHeader")
4890
8ee0a72c0ae0 More bufix
Kirill Andreev <andreev@iitp.ru>
parents: 4889
diff changeset
    35
    .SetParent<Header> ()
8ee0a72c0ae0 More bufix
Kirill Andreev <andreev@iitp.ru>
parents: 4889
diff changeset
    36
    .AddConstructor<WifiMeshHeader> ()
8ee0a72c0ae0 More bufix
Kirill Andreev <andreev@iitp.ru>
parents: 4889
diff changeset
    37
    ;
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
}
27921b45078e Restored mesh-wifi-mac-header
Kirill Andreev <andreev@iitp.ru>
parents:
diff changeset
    40
4889
279b07de3327 Fixrd bugs with address extensions, broadcast frames can go through L2Routing
Kirill Andreev <andreev@iitp.ru>
parents: 4883
diff changeset
    41
WifiMeshHeader::WifiMeshHeader ():
279b07de3327 Fixrd bugs with address extensions, broadcast frames can go through L2Routing
Kirill Andreev <andreev@iitp.ru>
parents: 4883
diff changeset
    42
  m_meshFlags (0),
279b07de3327 Fixrd bugs with address extensions, broadcast frames can go through L2Routing
Kirill Andreev <andreev@iitp.ru>
parents: 4883
diff changeset
    43
  m_meshTtl (0),
279b07de3327 Fixrd bugs with address extensions, broadcast frames can go through L2Routing
Kirill Andreev <andreev@iitp.ru>
parents: 4883
diff changeset
    44
  m_meshSeqno (0),
279b07de3327 Fixrd bugs with address extensions, broadcast frames can go through L2Routing
Kirill Andreev <andreev@iitp.ru>
parents: 4883
diff changeset
    45
  m_addr4 (Mac48Address ()),
279b07de3327 Fixrd bugs with address extensions, broadcast frames can go through L2Routing
Kirill Andreev <andreev@iitp.ru>
parents: 4883
diff changeset
    46
  m_addr5 (Mac48Address ()),
279b07de3327 Fixrd bugs with address extensions, broadcast frames can go through L2Routing
Kirill Andreev <andreev@iitp.ru>
parents: 4883
diff changeset
    47
  m_addr6 (Mac48Address ())
4883
27921b45078e Restored mesh-wifi-mac-header
Kirill Andreev <andreev@iitp.ru>
parents:
diff changeset
    48
{
27921b45078e Restored mesh-wifi-mac-header
Kirill Andreev <andreev@iitp.ru>
parents:
diff changeset
    49
}
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
WifiMeshHeader::~WifiMeshHeader ()
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
}
27921b45078e Restored mesh-wifi-mac-header
Kirill Andreev <andreev@iitp.ru>
parents:
diff changeset
    54
27921b45078e Restored mesh-wifi-mac-header
Kirill Andreev <andreev@iitp.ru>
parents:
diff changeset
    55
TypeId
27921b45078e Restored mesh-wifi-mac-header
Kirill Andreev <andreev@iitp.ru>
parents:
diff changeset
    56
WifiMeshHeader::GetInstanceTypeId () const
27921b45078e Restored mesh-wifi-mac-header
Kirill Andreev <andreev@iitp.ru>
parents:
diff changeset
    57
{
27921b45078e Restored mesh-wifi-mac-header
Kirill Andreev <andreev@iitp.ru>
parents:
diff changeset
    58
  return GetTypeId ();
27921b45078e Restored mesh-wifi-mac-header
Kirill Andreev <andreev@iitp.ru>
parents:
diff changeset
    59
}
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
void
4889
279b07de3327 Fixrd bugs with address extensions, broadcast frames can go through L2Routing
Kirill Andreev <andreev@iitp.ru>
parents: 4883
diff changeset
    62
WifiMeshHeader::SetAddr4 (Mac48Address address)
279b07de3327 Fixrd bugs with address extensions, broadcast frames can go through L2Routing
Kirill Andreev <andreev@iitp.ru>
parents: 4883
diff changeset
    63
{
279b07de3327 Fixrd bugs with address extensions, broadcast frames can go through L2Routing
Kirill Andreev <andreev@iitp.ru>
parents: 4883
diff changeset
    64
  m_addr4 = address;
279b07de3327 Fixrd bugs with address extensions, broadcast frames can go through L2Routing
Kirill Andreev <andreev@iitp.ru>
parents: 4883
diff changeset
    65
}
279b07de3327 Fixrd bugs with address extensions, broadcast frames can go through L2Routing
Kirill Andreev <andreev@iitp.ru>
parents: 4883
diff changeset
    66
279b07de3327 Fixrd bugs with address extensions, broadcast frames can go through L2Routing
Kirill Andreev <andreev@iitp.ru>
parents: 4883
diff changeset
    67
void
4883
27921b45078e Restored mesh-wifi-mac-header
Kirill Andreev <andreev@iitp.ru>
parents:
diff changeset
    68
WifiMeshHeader::SetAddr5 (Mac48Address address)
27921b45078e Restored mesh-wifi-mac-header
Kirill Andreev <andreev@iitp.ru>
parents:
diff changeset
    69
{
27921b45078e Restored mesh-wifi-mac-header
Kirill Andreev <andreev@iitp.ru>
parents:
diff changeset
    70
  m_addr5 = address;
27921b45078e Restored mesh-wifi-mac-header
Kirill Andreev <andreev@iitp.ru>
parents:
diff changeset
    71
}
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
void
27921b45078e Restored mesh-wifi-mac-header
Kirill Andreev <andreev@iitp.ru>
parents:
diff changeset
    74
WifiMeshHeader::SetAddr6 (Mac48Address address)
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
  m_addr6 = address;
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
4889
279b07de3327 Fixrd bugs with address extensions, broadcast frames can go through L2Routing
Kirill Andreev <andreev@iitp.ru>
parents: 4883
diff changeset
    79
Mac48Address
279b07de3327 Fixrd bugs with address extensions, broadcast frames can go through L2Routing
Kirill Andreev <andreev@iitp.ru>
parents: 4883
diff changeset
    80
WifiMeshHeader::GetAddr4 () const
4883
27921b45078e Restored mesh-wifi-mac-header
Kirill Andreev <andreev@iitp.ru>
parents:
diff changeset
    81
{
4889
279b07de3327 Fixrd bugs with address extensions, broadcast frames can go through L2Routing
Kirill Andreev <andreev@iitp.ru>
parents: 4883
diff changeset
    82
  return m_addr4;
4883
27921b45078e Restored mesh-wifi-mac-header
Kirill Andreev <andreev@iitp.ru>
parents:
diff changeset
    83
}
27921b45078e Restored mesh-wifi-mac-header
Kirill Andreev <andreev@iitp.ru>
parents:
diff changeset
    84
27921b45078e Restored mesh-wifi-mac-header
Kirill Andreev <andreev@iitp.ru>
parents:
diff changeset
    85
Mac48Address
4889
279b07de3327 Fixrd bugs with address extensions, broadcast frames can go through L2Routing
Kirill Andreev <andreev@iitp.ru>
parents: 4883
diff changeset
    86
WifiMeshHeader::GetAddr5 () const
4883
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
  return m_addr5;
27921b45078e Restored mesh-wifi-mac-header
Kirill Andreev <andreev@iitp.ru>
parents:
diff changeset
    89
}
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
Mac48Address
4889
279b07de3327 Fixrd bugs with address extensions, broadcast frames can go through L2Routing
Kirill Andreev <andreev@iitp.ru>
parents: 4883
diff changeset
    92
WifiMeshHeader::GetAddr6 () const
4883
27921b45078e Restored mesh-wifi-mac-header
Kirill Andreev <andreev@iitp.ru>
parents:
diff changeset
    93
{
27921b45078e Restored mesh-wifi-mac-header
Kirill Andreev <andreev@iitp.ru>
parents:
diff changeset
    94
  return m_addr6;
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
27921b45078e Restored mesh-wifi-mac-header
Kirill Andreev <andreev@iitp.ru>
parents:
diff changeset
    97
void
27921b45078e Restored mesh-wifi-mac-header
Kirill Andreev <andreev@iitp.ru>
parents:
diff changeset
    98
WifiMeshHeader::SetMeshSeqno (uint32_t seqno)
27921b45078e Restored mesh-wifi-mac-header
Kirill Andreev <andreev@iitp.ru>
parents:
diff changeset
    99
{
27921b45078e Restored mesh-wifi-mac-header
Kirill Andreev <andreev@iitp.ru>
parents:
diff changeset
   100
  m_meshSeqno = seqno;
27921b45078e Restored mesh-wifi-mac-header
Kirill Andreev <andreev@iitp.ru>
parents:
diff changeset
   101
}
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
uint32_t
4889
279b07de3327 Fixrd bugs with address extensions, broadcast frames can go through L2Routing
Kirill Andreev <andreev@iitp.ru>
parents: 4883
diff changeset
   104
WifiMeshHeader::GetMeshSeqno () const
4883
27921b45078e Restored mesh-wifi-mac-header
Kirill Andreev <andreev@iitp.ru>
parents:
diff changeset
   105
{
27921b45078e Restored mesh-wifi-mac-header
Kirill Andreev <andreev@iitp.ru>
parents:
diff changeset
   106
  return m_meshSeqno;
27921b45078e Restored mesh-wifi-mac-header
Kirill Andreev <andreev@iitp.ru>
parents:
diff changeset
   107
}
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
void
27921b45078e Restored mesh-wifi-mac-header
Kirill Andreev <andreev@iitp.ru>
parents:
diff changeset
   110
WifiMeshHeader::SetMeshTtl (uint8_t TTL)
27921b45078e Restored mesh-wifi-mac-header
Kirill Andreev <andreev@iitp.ru>
parents:
diff changeset
   111
{
27921b45078e Restored mesh-wifi-mac-header
Kirill Andreev <andreev@iitp.ru>
parents:
diff changeset
   112
  m_meshTtl = TTL;
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
27921b45078e Restored mesh-wifi-mac-header
Kirill Andreev <andreev@iitp.ru>
parents:
diff changeset
   115
uint8_t
4889
279b07de3327 Fixrd bugs with address extensions, broadcast frames can go through L2Routing
Kirill Andreev <andreev@iitp.ru>
parents: 4883
diff changeset
   116
WifiMeshHeader::GetMeshTtl () const
4883
27921b45078e Restored mesh-wifi-mac-header
Kirill Andreev <andreev@iitp.ru>
parents:
diff changeset
   117
{
27921b45078e Restored mesh-wifi-mac-header
Kirill Andreev <andreev@iitp.ru>
parents:
diff changeset
   118
  return m_meshTtl;
27921b45078e Restored mesh-wifi-mac-header
Kirill Andreev <andreev@iitp.ru>
parents:
diff changeset
   119
}
27921b45078e Restored mesh-wifi-mac-header
Kirill Andreev <andreev@iitp.ru>
parents:
diff changeset
   120
27921b45078e Restored mesh-wifi-mac-header
Kirill Andreev <andreev@iitp.ru>
parents:
diff changeset
   121
void
27921b45078e Restored mesh-wifi-mac-header
Kirill Andreev <andreev@iitp.ru>
parents:
diff changeset
   122
WifiMeshHeader::SetAddressExt (uint8_t num_of_addresses)
27921b45078e Restored mesh-wifi-mac-header
Kirill Andreev <andreev@iitp.ru>
parents:
diff changeset
   123
{
27921b45078e Restored mesh-wifi-mac-header
Kirill Andreev <andreev@iitp.ru>
parents:
diff changeset
   124
  if (num_of_addresses > 3)
27921b45078e Restored mesh-wifi-mac-header
Kirill Andreev <andreev@iitp.ru>
parents:
diff changeset
   125
    return;
4889
279b07de3327 Fixrd bugs with address extensions, broadcast frames can go through L2Routing
Kirill Andreev <andreev@iitp.ru>
parents: 4883
diff changeset
   126
  m_meshFlags |= 0xc0 & (num_of_addresses << 6);
4883
27921b45078e Restored mesh-wifi-mac-header
Kirill Andreev <andreev@iitp.ru>
parents:
diff changeset
   127
}
27921b45078e Restored mesh-wifi-mac-header
Kirill Andreev <andreev@iitp.ru>
parents:
diff changeset
   128
27921b45078e Restored mesh-wifi-mac-header
Kirill Andreev <andreev@iitp.ru>
parents:
diff changeset
   129
uint8_t
4889
279b07de3327 Fixrd bugs with address extensions, broadcast frames can go through L2Routing
Kirill Andreev <andreev@iitp.ru>
parents: 4883
diff changeset
   130
WifiMeshHeader::GetAddressExt () const
4883
27921b45078e Restored mesh-wifi-mac-header
Kirill Andreev <andreev@iitp.ru>
parents:
diff changeset
   131
{
27921b45078e Restored mesh-wifi-mac-header
Kirill Andreev <andreev@iitp.ru>
parents:
diff changeset
   132
  return ((0xc0 & m_meshFlags) >> 6);
27921b45078e Restored mesh-wifi-mac-header
Kirill Andreev <andreev@iitp.ru>
parents:
diff changeset
   133
}
27921b45078e Restored mesh-wifi-mac-header
Kirill Andreev <andreev@iitp.ru>
parents:
diff changeset
   134
27921b45078e Restored mesh-wifi-mac-header
Kirill Andreev <andreev@iitp.ru>
parents:
diff changeset
   135
27921b45078e Restored mesh-wifi-mac-header
Kirill Andreev <andreev@iitp.ru>
parents:
diff changeset
   136
uint32_t
27921b45078e Restored mesh-wifi-mac-header
Kirill Andreev <andreev@iitp.ru>
parents:
diff changeset
   137
WifiMeshHeader::GetSerializedSize () const
27921b45078e Restored mesh-wifi-mac-header
Kirill Andreev <andreev@iitp.ru>
parents:
diff changeset
   138
{
4889
279b07de3327 Fixrd bugs with address extensions, broadcast frames can go through L2Routing
Kirill Andreev <andreev@iitp.ru>
parents: 4883
diff changeset
   139
  return 6 + GetAddressExt () * 6;
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
27921b45078e Restored mesh-wifi-mac-header
Kirill Andreev <andreev@iitp.ru>
parents:
diff changeset
   142
void
27921b45078e Restored mesh-wifi-mac-header
Kirill Andreev <andreev@iitp.ru>
parents:
diff changeset
   143
WifiMeshHeader::Serialize (Buffer::Iterator start) const
27921b45078e Restored mesh-wifi-mac-header
Kirill Andreev <andreev@iitp.ru>
parents:
diff changeset
   144
{
27921b45078e Restored mesh-wifi-mac-header
Kirill Andreev <andreev@iitp.ru>
parents:
diff changeset
   145
  Buffer::Iterator i = start;
27921b45078e Restored mesh-wifi-mac-header
Kirill Andreev <andreev@iitp.ru>
parents:
diff changeset
   146
  i.WriteU8 (m_meshFlags);
27921b45078e Restored mesh-wifi-mac-header
Kirill Andreev <andreev@iitp.ru>
parents:
diff changeset
   147
  i.WriteU8 (m_meshTtl);
27921b45078e Restored mesh-wifi-mac-header
Kirill Andreev <andreev@iitp.ru>
parents:
diff changeset
   148
  i.WriteU32 (m_meshSeqno);
4889
279b07de3327 Fixrd bugs with address extensions, broadcast frames can go through L2Routing
Kirill Andreev <andreev@iitp.ru>
parents: 4883
diff changeset
   149
  uint8_t addresses_to_add = GetAddressExt ();
4883
27921b45078e Restored mesh-wifi-mac-header
Kirill Andreev <andreev@iitp.ru>
parents:
diff changeset
   150
  //Writing Address extensions:
27921b45078e Restored mesh-wifi-mac-header
Kirill Andreev <andreev@iitp.ru>
parents:
diff changeset
   151
  if (addresses_to_add > 0)
4889
279b07de3327 Fixrd bugs with address extensions, broadcast frames can go through L2Routing
Kirill Andreev <andreev@iitp.ru>
parents: 4883
diff changeset
   152
    WriteTo (i, m_addr4);
279b07de3327 Fixrd bugs with address extensions, broadcast frames can go through L2Routing
Kirill Andreev <andreev@iitp.ru>
parents: 4883
diff changeset
   153
  if (addresses_to_add > 1)
4883
27921b45078e Restored mesh-wifi-mac-header
Kirill Andreev <andreev@iitp.ru>
parents:
diff changeset
   154
    WriteTo (i, m_addr5);
4889
279b07de3327 Fixrd bugs with address extensions, broadcast frames can go through L2Routing
Kirill Andreev <andreev@iitp.ru>
parents: 4883
diff changeset
   155
  if (addresses_to_add > 2)
4883
27921b45078e Restored mesh-wifi-mac-header
Kirill Andreev <andreev@iitp.ru>
parents:
diff changeset
   156
    WriteTo (i, m_addr6);
27921b45078e Restored mesh-wifi-mac-header
Kirill Andreev <andreev@iitp.ru>
parents:
diff changeset
   157
}
27921b45078e Restored mesh-wifi-mac-header
Kirill Andreev <andreev@iitp.ru>
parents:
diff changeset
   158
27921b45078e Restored mesh-wifi-mac-header
Kirill Andreev <andreev@iitp.ru>
parents:
diff changeset
   159
uint32_t
27921b45078e Restored mesh-wifi-mac-header
Kirill Andreev <andreev@iitp.ru>
parents:
diff changeset
   160
WifiMeshHeader::Deserialize (Buffer::Iterator start)
27921b45078e Restored mesh-wifi-mac-header
Kirill Andreev <andreev@iitp.ru>
parents:
diff changeset
   161
{
27921b45078e Restored mesh-wifi-mac-header
Kirill Andreev <andreev@iitp.ru>
parents:
diff changeset
   162
  Buffer::Iterator i = start;
27921b45078e Restored mesh-wifi-mac-header
Kirill Andreev <andreev@iitp.ru>
parents:
diff changeset
   163
  uint8_t addresses_to_read = 0;
27921b45078e Restored mesh-wifi-mac-header
Kirill Andreev <andreev@iitp.ru>
parents:
diff changeset
   164
  m_meshFlags = i.ReadU8 ();
27921b45078e Restored mesh-wifi-mac-header
Kirill Andreev <andreev@iitp.ru>
parents:
diff changeset
   165
  m_meshTtl = i.ReadU8 ();
27921b45078e Restored mesh-wifi-mac-header
Kirill Andreev <andreev@iitp.ru>
parents:
diff changeset
   166
  m_meshSeqno = i.ReadU32 ();
27921b45078e Restored mesh-wifi-mac-header
Kirill Andreev <andreev@iitp.ru>
parents:
diff changeset
   167
  addresses_to_read = (m_meshFlags & 0xc0) >> 6;
27921b45078e Restored mesh-wifi-mac-header
Kirill Andreev <andreev@iitp.ru>
parents:
diff changeset
   168
  if (addresses_to_read > 0)
4889
279b07de3327 Fixrd bugs with address extensions, broadcast frames can go through L2Routing
Kirill Andreev <andreev@iitp.ru>
parents: 4883
diff changeset
   169
    ReadFrom (i, m_addr4);
279b07de3327 Fixrd bugs with address extensions, broadcast frames can go through L2Routing
Kirill Andreev <andreev@iitp.ru>
parents: 4883
diff changeset
   170
  if (addresses_to_read > 1)
4883
27921b45078e Restored mesh-wifi-mac-header
Kirill Andreev <andreev@iitp.ru>
parents:
diff changeset
   171
    ReadFrom (i, m_addr5);
4889
279b07de3327 Fixrd bugs with address extensions, broadcast frames can go through L2Routing
Kirill Andreev <andreev@iitp.ru>
parents: 4883
diff changeset
   172
  if (addresses_to_read > 2)
4883
27921b45078e Restored mesh-wifi-mac-header
Kirill Andreev <andreev@iitp.ru>
parents:
diff changeset
   173
    ReadFrom (i, m_addr6);
27921b45078e Restored mesh-wifi-mac-header
Kirill Andreev <andreev@iitp.ru>
parents:
diff changeset
   174
  return i.GetDistanceFrom (start);
27921b45078e Restored mesh-wifi-mac-header
Kirill Andreev <andreev@iitp.ru>
parents:
diff changeset
   175
}
27921b45078e Restored mesh-wifi-mac-header
Kirill Andreev <andreev@iitp.ru>
parents:
diff changeset
   176
void
27921b45078e Restored mesh-wifi-mac-header
Kirill Andreev <andreev@iitp.ru>
parents:
diff changeset
   177
WifiMeshHeader::Print (std::ostream &os) const
27921b45078e Restored mesh-wifi-mac-header
Kirill Andreev <andreev@iitp.ru>
parents:
diff changeset
   178
{
27921b45078e Restored mesh-wifi-mac-header
Kirill Andreev <andreev@iitp.ru>
parents:
diff changeset
   179
  os << "flags" << m_meshFlags
27921b45078e Restored mesh-wifi-mac-header
Kirill Andreev <andreev@iitp.ru>
parents:
diff changeset
   180
  << "ttl" << m_meshTtl
27921b45078e Restored mesh-wifi-mac-header
Kirill Andreev <andreev@iitp.ru>
parents:
diff changeset
   181
  << "seqno" << m_meshSeqno;
27921b45078e Restored mesh-wifi-mac-header
Kirill Andreev <andreev@iitp.ru>
parents:
diff changeset
   182
}
27921b45078e Restored mesh-wifi-mac-header
Kirill Andreev <andreev@iitp.ru>
parents:
diff changeset
   183
/**********************************************************
27921b45078e Restored mesh-wifi-mac-header
Kirill Andreev <andreev@iitp.ru>
parents:
diff changeset
   184
 *   MultihopActionFrame
27921b45078e Restored mesh-wifi-mac-header
Kirill Andreev <andreev@iitp.ru>
parents:
diff changeset
   185
 **********************************************************/
27921b45078e Restored mesh-wifi-mac-header
Kirill Andreev <andreev@iitp.ru>
parents:
diff changeset
   186
WifiMeshMultihopActionHeader::WifiMeshMultihopActionHeader ()
27921b45078e Restored mesh-wifi-mac-header
Kirill Andreev <andreev@iitp.ru>
parents:
diff changeset
   187
{
27921b45078e Restored mesh-wifi-mac-header
Kirill Andreev <andreev@iitp.ru>
parents:
diff changeset
   188
}
27921b45078e Restored mesh-wifi-mac-header
Kirill Andreev <andreev@iitp.ru>
parents:
diff changeset
   189
27921b45078e Restored mesh-wifi-mac-header
Kirill Andreev <andreev@iitp.ru>
parents:
diff changeset
   190
WifiMeshMultihopActionHeader::~WifiMeshMultihopActionHeader ()
27921b45078e Restored mesh-wifi-mac-header
Kirill Andreev <andreev@iitp.ru>
parents:
diff changeset
   191
{
27921b45078e Restored mesh-wifi-mac-header
Kirill Andreev <andreev@iitp.ru>
parents:
diff changeset
   192
}
27921b45078e Restored mesh-wifi-mac-header
Kirill Andreev <andreev@iitp.ru>
parents:
diff changeset
   193
27921b45078e Restored mesh-wifi-mac-header
Kirill Andreev <andreev@iitp.ru>
parents:
diff changeset
   194
void
27921b45078e Restored mesh-wifi-mac-header
Kirill Andreev <andreev@iitp.ru>
parents:
diff changeset
   195
WifiMeshMultihopActionHeader::SetAction (
27921b45078e Restored mesh-wifi-mac-header
Kirill Andreev <andreev@iitp.ru>
parents:
diff changeset
   196
  enum WifiMeshMultihopActionHeader::CategoryValue type,
27921b45078e Restored mesh-wifi-mac-header
Kirill Andreev <andreev@iitp.ru>
parents:
diff changeset
   197
  WifiMeshMultihopActionHeader::ACTION_VALUE action)
27921b45078e Restored mesh-wifi-mac-header
Kirill Andreev <andreev@iitp.ru>
parents:
diff changeset
   198
{
27921b45078e Restored mesh-wifi-mac-header
Kirill Andreev <andreev@iitp.ru>
parents:
diff changeset
   199
  switch (type)
27921b45078e Restored mesh-wifi-mac-header
Kirill Andreev <andreev@iitp.ru>
parents:
diff changeset
   200
    {
27921b45078e Restored mesh-wifi-mac-header
Kirill Andreev <andreev@iitp.ru>
parents:
diff changeset
   201
    case MESH_PEER_LINK_MGT:
27921b45078e Restored mesh-wifi-mac-header
Kirill Andreev <andreev@iitp.ru>
parents:
diff changeset
   202
      m_category = 4;
27921b45078e Restored mesh-wifi-mac-header
Kirill Andreev <andreev@iitp.ru>
parents:
diff changeset
   203
      switch (action.peerLink)
27921b45078e Restored mesh-wifi-mac-header
Kirill Andreev <andreev@iitp.ru>
parents:
diff changeset
   204
        {
27921b45078e Restored mesh-wifi-mac-header
Kirill Andreev <andreev@iitp.ru>
parents:
diff changeset
   205
        case PEER_LINK_OPEN:
27921b45078e Restored mesh-wifi-mac-header
Kirill Andreev <andreev@iitp.ru>
parents:
diff changeset
   206
          m_actionValue = 0;
27921b45078e Restored mesh-wifi-mac-header
Kirill Andreev <andreev@iitp.ru>
parents:
diff changeset
   207
          break;
27921b45078e Restored mesh-wifi-mac-header
Kirill Andreev <andreev@iitp.ru>
parents:
diff changeset
   208
        case PEER_LINK_CONFIRM:
27921b45078e Restored mesh-wifi-mac-header
Kirill Andreev <andreev@iitp.ru>
parents:
diff changeset
   209
          m_actionValue = 1;
27921b45078e Restored mesh-wifi-mac-header
Kirill Andreev <andreev@iitp.ru>
parents:
diff changeset
   210
          break;
27921b45078e Restored mesh-wifi-mac-header
Kirill Andreev <andreev@iitp.ru>
parents:
diff changeset
   211
        case PEER_LINK_CLOSE:
27921b45078e Restored mesh-wifi-mac-header
Kirill Andreev <andreev@iitp.ru>
parents:
diff changeset
   212
          m_actionValue = 2;
27921b45078e Restored mesh-wifi-mac-header
Kirill Andreev <andreev@iitp.ru>
parents:
diff changeset
   213
          break;
27921b45078e Restored mesh-wifi-mac-header
Kirill Andreev <andreev@iitp.ru>
parents:
diff changeset
   214
        };
27921b45078e Restored mesh-wifi-mac-header
Kirill Andreev <andreev@iitp.ru>
parents:
diff changeset
   215
      break;
27921b45078e Restored mesh-wifi-mac-header
Kirill Andreev <andreev@iitp.ru>
parents:
diff changeset
   216
    case MESH_LINK_METRIC:
27921b45078e Restored mesh-wifi-mac-header
Kirill Andreev <andreev@iitp.ru>
parents:
diff changeset
   217
      m_category = 5;
27921b45078e Restored mesh-wifi-mac-header
Kirill Andreev <andreev@iitp.ru>
parents:
diff changeset
   218
      break;
27921b45078e Restored mesh-wifi-mac-header
Kirill Andreev <andreev@iitp.ru>
parents:
diff changeset
   219
    case MESH_PATH_SELECTION:
27921b45078e Restored mesh-wifi-mac-header
Kirill Andreev <andreev@iitp.ru>
parents:
diff changeset
   220
      m_category = 6;
27921b45078e Restored mesh-wifi-mac-header
Kirill Andreev <andreev@iitp.ru>
parents:
diff changeset
   221
      switch (action.pathSelection)
27921b45078e Restored mesh-wifi-mac-header
Kirill Andreev <andreev@iitp.ru>
parents:
diff changeset
   222
        {
27921b45078e Restored mesh-wifi-mac-header
Kirill Andreev <andreev@iitp.ru>
parents:
diff changeset
   223
        case PATH_REQUEST:
27921b45078e Restored mesh-wifi-mac-header
Kirill Andreev <andreev@iitp.ru>
parents:
diff changeset
   224
          m_actionValue = 0;
27921b45078e Restored mesh-wifi-mac-header
Kirill Andreev <andreev@iitp.ru>
parents:
diff changeset
   225
          break;
27921b45078e Restored mesh-wifi-mac-header
Kirill Andreev <andreev@iitp.ru>
parents:
diff changeset
   226
        case PATH_REPLY:
27921b45078e Restored mesh-wifi-mac-header
Kirill Andreev <andreev@iitp.ru>
parents:
diff changeset
   227
          m_actionValue = 1;
27921b45078e Restored mesh-wifi-mac-header
Kirill Andreev <andreev@iitp.ru>
parents:
diff changeset
   228
          break;
27921b45078e Restored mesh-wifi-mac-header
Kirill Andreev <andreev@iitp.ru>
parents:
diff changeset
   229
        case PATH_ERROR:
27921b45078e Restored mesh-wifi-mac-header
Kirill Andreev <andreev@iitp.ru>
parents:
diff changeset
   230
          m_actionValue = 2;
27921b45078e Restored mesh-wifi-mac-header
Kirill Andreev <andreev@iitp.ru>
parents:
diff changeset
   231
          break;
27921b45078e Restored mesh-wifi-mac-header
Kirill Andreev <andreev@iitp.ru>
parents:
diff changeset
   232
        case ROOT_ANNOUNCEMENT:
27921b45078e Restored mesh-wifi-mac-header
Kirill Andreev <andreev@iitp.ru>
parents:
diff changeset
   233
          m_actionValue = 3;
27921b45078e Restored mesh-wifi-mac-header
Kirill Andreev <andreev@iitp.ru>
parents:
diff changeset
   234
          break;
27921b45078e Restored mesh-wifi-mac-header
Kirill Andreev <andreev@iitp.ru>
parents:
diff changeset
   235
        };
27921b45078e Restored mesh-wifi-mac-header
Kirill Andreev <andreev@iitp.ru>
parents:
diff changeset
   236
      break;
27921b45078e Restored mesh-wifi-mac-header
Kirill Andreev <andreev@iitp.ru>
parents:
diff changeset
   237
    case MESH_INTERWORK_ACTION:
27921b45078e Restored mesh-wifi-mac-header
Kirill Andreev <andreev@iitp.ru>
parents:
diff changeset
   238
      m_category = 7;
27921b45078e Restored mesh-wifi-mac-header
Kirill Andreev <andreev@iitp.ru>
parents:
diff changeset
   239
      break;
27921b45078e Restored mesh-wifi-mac-header
Kirill Andreev <andreev@iitp.ru>
parents:
diff changeset
   240
    case MESH_RESOURCE_COORDINATION:
27921b45078e Restored mesh-wifi-mac-header
Kirill Andreev <andreev@iitp.ru>
parents:
diff changeset
   241
      m_category = 8;
27921b45078e Restored mesh-wifi-mac-header
Kirill Andreev <andreev@iitp.ru>
parents:
diff changeset
   242
      break;
27921b45078e Restored mesh-wifi-mac-header
Kirill Andreev <andreev@iitp.ru>
parents:
diff changeset
   243
    };
27921b45078e Restored mesh-wifi-mac-header
Kirill Andreev <andreev@iitp.ru>
parents:
diff changeset
   244
}
27921b45078e Restored mesh-wifi-mac-header
Kirill Andreev <andreev@iitp.ru>
parents:
diff changeset
   245
27921b45078e Restored mesh-wifi-mac-header
Kirill Andreev <andreev@iitp.ru>
parents:
diff changeset
   246
enum WifiMeshMultihopActionHeader::CategoryValue
27921b45078e Restored mesh-wifi-mac-header
Kirill Andreev <andreev@iitp.ru>
parents:
diff changeset
   247
WifiMeshMultihopActionHeader::GetCategory ()
27921b45078e Restored mesh-wifi-mac-header
Kirill Andreev <andreev@iitp.ru>
parents:
diff changeset
   248
{
27921b45078e Restored mesh-wifi-mac-header
Kirill Andreev <andreev@iitp.ru>
parents:
diff changeset
   249
  switch (m_category)
27921b45078e Restored mesh-wifi-mac-header
Kirill Andreev <andreev@iitp.ru>
parents:
diff changeset
   250
    {
27921b45078e Restored mesh-wifi-mac-header
Kirill Andreev <andreev@iitp.ru>
parents:
diff changeset
   251
    case 4:
27921b45078e Restored mesh-wifi-mac-header
Kirill Andreev <andreev@iitp.ru>
parents:
diff changeset
   252
      return MESH_PEER_LINK_MGT;
27921b45078e Restored mesh-wifi-mac-header
Kirill Andreev <andreev@iitp.ru>
parents:
diff changeset
   253
    case 5:
27921b45078e Restored mesh-wifi-mac-header
Kirill Andreev <andreev@iitp.ru>
parents:
diff changeset
   254
      return MESH_LINK_METRIC;
27921b45078e Restored mesh-wifi-mac-header
Kirill Andreev <andreev@iitp.ru>
parents:
diff changeset
   255
    case 6:
27921b45078e Restored mesh-wifi-mac-header
Kirill Andreev <andreev@iitp.ru>
parents:
diff changeset
   256
      return MESH_PATH_SELECTION;
27921b45078e Restored mesh-wifi-mac-header
Kirill Andreev <andreev@iitp.ru>
parents:
diff changeset
   257
    case 7:
27921b45078e Restored mesh-wifi-mac-header
Kirill Andreev <andreev@iitp.ru>
parents:
diff changeset
   258
      return MESH_INTERWORK_ACTION;
27921b45078e Restored mesh-wifi-mac-header
Kirill Andreev <andreev@iitp.ru>
parents:
diff changeset
   259
    case 8:
27921b45078e Restored mesh-wifi-mac-header
Kirill Andreev <andreev@iitp.ru>
parents:
diff changeset
   260
      return MESH_RESOURCE_COORDINATION;
27921b45078e Restored mesh-wifi-mac-header
Kirill Andreev <andreev@iitp.ru>
parents:
diff changeset
   261
    default:
27921b45078e Restored mesh-wifi-mac-header
Kirill Andreev <andreev@iitp.ru>
parents:
diff changeset
   262
      NS_ASSERT (false);
27921b45078e Restored mesh-wifi-mac-header
Kirill Andreev <andreev@iitp.ru>
parents:
diff changeset
   263
      return MESH_PEER_LINK_MGT;
27921b45078e Restored mesh-wifi-mac-header
Kirill Andreev <andreev@iitp.ru>
parents:
diff changeset
   264
    }
27921b45078e Restored mesh-wifi-mac-header
Kirill Andreev <andreev@iitp.ru>
parents:
diff changeset
   265
}
27921b45078e Restored mesh-wifi-mac-header
Kirill Andreev <andreev@iitp.ru>
parents:
diff changeset
   266
27921b45078e Restored mesh-wifi-mac-header
Kirill Andreev <andreev@iitp.ru>
parents:
diff changeset
   267
WifiMeshMultihopActionHeader::ACTION_VALUE
27921b45078e Restored mesh-wifi-mac-header
Kirill Andreev <andreev@iitp.ru>
parents:
diff changeset
   268
WifiMeshMultihopActionHeader::GetAction ()
27921b45078e Restored mesh-wifi-mac-header
Kirill Andreev <andreev@iitp.ru>
parents:
diff changeset
   269
{
27921b45078e Restored mesh-wifi-mac-header
Kirill Andreev <andreev@iitp.ru>
parents:
diff changeset
   270
  ACTION_VALUE retval;
27921b45078e Restored mesh-wifi-mac-header
Kirill Andreev <andreev@iitp.ru>
parents:
diff changeset
   271
  switch (m_category)
27921b45078e Restored mesh-wifi-mac-header
Kirill Andreev <andreev@iitp.ru>
parents:
diff changeset
   272
    {
27921b45078e Restored mesh-wifi-mac-header
Kirill Andreev <andreev@iitp.ru>
parents:
diff changeset
   273
    case 4:
27921b45078e Restored mesh-wifi-mac-header
Kirill Andreev <andreev@iitp.ru>
parents:
diff changeset
   274
      //MESH_PEER_LINK_MGT;
27921b45078e Restored mesh-wifi-mac-header
Kirill Andreev <andreev@iitp.ru>
parents:
diff changeset
   275
      switch (m_actionValue)
27921b45078e Restored mesh-wifi-mac-header
Kirill Andreev <andreev@iitp.ru>
parents:
diff changeset
   276
        {
27921b45078e Restored mesh-wifi-mac-header
Kirill Andreev <andreev@iitp.ru>
parents:
diff changeset
   277
        case 0:
27921b45078e Restored mesh-wifi-mac-header
Kirill Andreev <andreev@iitp.ru>
parents:
diff changeset
   278
          retval.peerLink = PEER_LINK_OPEN;
27921b45078e Restored mesh-wifi-mac-header
Kirill Andreev <andreev@iitp.ru>
parents:
diff changeset
   279
          return retval;
27921b45078e Restored mesh-wifi-mac-header
Kirill Andreev <andreev@iitp.ru>
parents:
diff changeset
   280
        case 1:
27921b45078e Restored mesh-wifi-mac-header
Kirill Andreev <andreev@iitp.ru>
parents:
diff changeset
   281
          retval.peerLink = PEER_LINK_CONFIRM;
27921b45078e Restored mesh-wifi-mac-header
Kirill Andreev <andreev@iitp.ru>
parents:
diff changeset
   282
          return retval;
27921b45078e Restored mesh-wifi-mac-header
Kirill Andreev <andreev@iitp.ru>
parents:
diff changeset
   283
        case 2:
27921b45078e Restored mesh-wifi-mac-header
Kirill Andreev <andreev@iitp.ru>
parents:
diff changeset
   284
          retval.peerLink = PEER_LINK_CLOSE;
27921b45078e Restored mesh-wifi-mac-header
Kirill Andreev <andreev@iitp.ru>
parents:
diff changeset
   285
          return retval;
27921b45078e Restored mesh-wifi-mac-header
Kirill Andreev <andreev@iitp.ru>
parents:
diff changeset
   286
        default:
27921b45078e Restored mesh-wifi-mac-header
Kirill Andreev <andreev@iitp.ru>
parents:
diff changeset
   287
          NS_ASSERT (false);
27921b45078e Restored mesh-wifi-mac-header
Kirill Andreev <andreev@iitp.ru>
parents:
diff changeset
   288
          return retval;
27921b45078e Restored mesh-wifi-mac-header
Kirill Andreev <andreev@iitp.ru>
parents:
diff changeset
   289
27921b45078e Restored mesh-wifi-mac-header
Kirill Andreev <andreev@iitp.ru>
parents:
diff changeset
   290
        }
27921b45078e Restored mesh-wifi-mac-header
Kirill Andreev <andreev@iitp.ru>
parents:
diff changeset
   291
    case 5:
27921b45078e Restored mesh-wifi-mac-header
Kirill Andreev <andreev@iitp.ru>
parents:
diff changeset
   292
      //MESH_LINK_METRIC;
27921b45078e Restored mesh-wifi-mac-header
Kirill Andreev <andreev@iitp.ru>
parents:
diff changeset
   293
    case 6:
27921b45078e Restored mesh-wifi-mac-header
Kirill Andreev <andreev@iitp.ru>
parents:
diff changeset
   294
      //MESH_PATH_SELECTION;
27921b45078e Restored mesh-wifi-mac-header
Kirill Andreev <andreev@iitp.ru>
parents:
diff changeset
   295
      switch (m_actionValue)
27921b45078e Restored mesh-wifi-mac-header
Kirill Andreev <andreev@iitp.ru>
parents:
diff changeset
   296
        {
27921b45078e Restored mesh-wifi-mac-header
Kirill Andreev <andreev@iitp.ru>
parents:
diff changeset
   297
        case 0:
27921b45078e Restored mesh-wifi-mac-header
Kirill Andreev <andreev@iitp.ru>
parents:
diff changeset
   298
          retval.pathSelection = PATH_REQUEST;
27921b45078e Restored mesh-wifi-mac-header
Kirill Andreev <andreev@iitp.ru>
parents:
diff changeset
   299
          return retval;
27921b45078e Restored mesh-wifi-mac-header
Kirill Andreev <andreev@iitp.ru>
parents:
diff changeset
   300
        case 1:
27921b45078e Restored mesh-wifi-mac-header
Kirill Andreev <andreev@iitp.ru>
parents:
diff changeset
   301
          retval.pathSelection = PATH_REPLY;
27921b45078e Restored mesh-wifi-mac-header
Kirill Andreev <andreev@iitp.ru>
parents:
diff changeset
   302
          return retval;
27921b45078e Restored mesh-wifi-mac-header
Kirill Andreev <andreev@iitp.ru>
parents:
diff changeset
   303
        case 2:
27921b45078e Restored mesh-wifi-mac-header
Kirill Andreev <andreev@iitp.ru>
parents:
diff changeset
   304
          retval.pathSelection = PATH_ERROR;
27921b45078e Restored mesh-wifi-mac-header
Kirill Andreev <andreev@iitp.ru>
parents:
diff changeset
   305
          return retval;
27921b45078e Restored mesh-wifi-mac-header
Kirill Andreev <andreev@iitp.ru>
parents:
diff changeset
   306
        case 3:
27921b45078e Restored mesh-wifi-mac-header
Kirill Andreev <andreev@iitp.ru>
parents:
diff changeset
   307
          retval.pathSelection = ROOT_ANNOUNCEMENT;
27921b45078e Restored mesh-wifi-mac-header
Kirill Andreev <andreev@iitp.ru>
parents:
diff changeset
   308
          return retval;
27921b45078e Restored mesh-wifi-mac-header
Kirill Andreev <andreev@iitp.ru>
parents:
diff changeset
   309
        default:
27921b45078e Restored mesh-wifi-mac-header
Kirill Andreev <andreev@iitp.ru>
parents:
diff changeset
   310
          NS_ASSERT (false);
27921b45078e Restored mesh-wifi-mac-header
Kirill Andreev <andreev@iitp.ru>
parents:
diff changeset
   311
          return retval;
27921b45078e Restored mesh-wifi-mac-header
Kirill Andreev <andreev@iitp.ru>
parents:
diff changeset
   312
        }
27921b45078e Restored mesh-wifi-mac-header
Kirill Andreev <andreev@iitp.ru>
parents:
diff changeset
   313
27921b45078e Restored mesh-wifi-mac-header
Kirill Andreev <andreev@iitp.ru>
parents:
diff changeset
   314
    case 7:
27921b45078e Restored mesh-wifi-mac-header
Kirill Andreev <andreev@iitp.ru>
parents:
diff changeset
   315
      //MESH_INTERWORK_ACTION;
27921b45078e Restored mesh-wifi-mac-header
Kirill Andreev <andreev@iitp.ru>
parents:
diff changeset
   316
    case 8:
27921b45078e Restored mesh-wifi-mac-header
Kirill Andreev <andreev@iitp.ru>
parents:
diff changeset
   317
      //MESH_RESOURCE_COORDINATION;
27921b45078e Restored mesh-wifi-mac-header
Kirill Andreev <andreev@iitp.ru>
parents:
diff changeset
   318
    default:
27921b45078e Restored mesh-wifi-mac-header
Kirill Andreev <andreev@iitp.ru>
parents:
diff changeset
   319
      NS_ASSERT (false);
27921b45078e Restored mesh-wifi-mac-header
Kirill Andreev <andreev@iitp.ru>
parents:
diff changeset
   320
      return retval;
27921b45078e Restored mesh-wifi-mac-header
Kirill Andreev <andreev@iitp.ru>
parents:
diff changeset
   321
    }
27921b45078e Restored mesh-wifi-mac-header
Kirill Andreev <andreev@iitp.ru>
parents:
diff changeset
   322
}
27921b45078e Restored mesh-wifi-mac-header
Kirill Andreev <andreev@iitp.ru>
parents:
diff changeset
   323
27921b45078e Restored mesh-wifi-mac-header
Kirill Andreev <andreev@iitp.ru>
parents:
diff changeset
   324
TypeId
27921b45078e Restored mesh-wifi-mac-header
Kirill Andreev <andreev@iitp.ru>
parents:
diff changeset
   325
WifiMeshMultihopActionHeader::GetTypeId ()
27921b45078e Restored mesh-wifi-mac-header
Kirill Andreev <andreev@iitp.ru>
parents:
diff changeset
   326
{
27921b45078e Restored mesh-wifi-mac-header
Kirill Andreev <andreev@iitp.ru>
parents:
diff changeset
   327
  static TypeId tid = TypeId ("ns3::WifiMeshMultihopActionHeader")
27921b45078e Restored mesh-wifi-mac-header
Kirill Andreev <andreev@iitp.ru>
parents:
diff changeset
   328
                      .SetParent<Header> ()
27921b45078e Restored mesh-wifi-mac-header
Kirill Andreev <andreev@iitp.ru>
parents:
diff changeset
   329
                      .AddConstructor<WifiMeshMultihopActionHeader> ()
27921b45078e Restored mesh-wifi-mac-header
Kirill Andreev <andreev@iitp.ru>
parents:
diff changeset
   330
                      ;
27921b45078e Restored mesh-wifi-mac-header
Kirill Andreev <andreev@iitp.ru>
parents:
diff changeset
   331
  return tid;
27921b45078e Restored mesh-wifi-mac-header
Kirill Andreev <andreev@iitp.ru>
parents:
diff changeset
   332
}
27921b45078e Restored mesh-wifi-mac-header
Kirill Andreev <andreev@iitp.ru>
parents:
diff changeset
   333
27921b45078e Restored mesh-wifi-mac-header
Kirill Andreev <andreev@iitp.ru>
parents:
diff changeset
   334
TypeId
27921b45078e Restored mesh-wifi-mac-header
Kirill Andreev <andreev@iitp.ru>
parents:
diff changeset
   335
WifiMeshMultihopActionHeader::GetInstanceTypeId () const
27921b45078e Restored mesh-wifi-mac-header
Kirill Andreev <andreev@iitp.ru>
parents:
diff changeset
   336
{
27921b45078e Restored mesh-wifi-mac-header
Kirill Andreev <andreev@iitp.ru>
parents:
diff changeset
   337
  return GetTypeId ();
27921b45078e Restored mesh-wifi-mac-header
Kirill Andreev <andreev@iitp.ru>
parents:
diff changeset
   338
}
27921b45078e Restored mesh-wifi-mac-header
Kirill Andreev <andreev@iitp.ru>
parents:
diff changeset
   339
27921b45078e Restored mesh-wifi-mac-header
Kirill Andreev <andreev@iitp.ru>
parents:
diff changeset
   340
void
27921b45078e Restored mesh-wifi-mac-header
Kirill Andreev <andreev@iitp.ru>
parents:
diff changeset
   341
WifiMeshMultihopActionHeader::Print (std::ostream &os) const
27921b45078e Restored mesh-wifi-mac-header
Kirill Andreev <andreev@iitp.ru>
parents:
diff changeset
   342
{
27921b45078e Restored mesh-wifi-mac-header
Kirill Andreev <andreev@iitp.ru>
parents:
diff changeset
   343
}
27921b45078e Restored mesh-wifi-mac-header
Kirill Andreev <andreev@iitp.ru>
parents:
diff changeset
   344
27921b45078e Restored mesh-wifi-mac-header
Kirill Andreev <andreev@iitp.ru>
parents:
diff changeset
   345
uint32_t
27921b45078e Restored mesh-wifi-mac-header
Kirill Andreev <andreev@iitp.ru>
parents:
diff changeset
   346
WifiMeshMultihopActionHeader::GetSerializedSize () const
27921b45078e Restored mesh-wifi-mac-header
Kirill Andreev <andreev@iitp.ru>
parents:
diff changeset
   347
{
27921b45078e Restored mesh-wifi-mac-header
Kirill Andreev <andreev@iitp.ru>
parents:
diff changeset
   348
  return 2;
27921b45078e Restored mesh-wifi-mac-header
Kirill Andreev <andreev@iitp.ru>
parents:
diff changeset
   349
}
27921b45078e Restored mesh-wifi-mac-header
Kirill Andreev <andreev@iitp.ru>
parents:
diff changeset
   350
27921b45078e Restored mesh-wifi-mac-header
Kirill Andreev <andreev@iitp.ru>
parents:
diff changeset
   351
void
27921b45078e Restored mesh-wifi-mac-header
Kirill Andreev <andreev@iitp.ru>
parents:
diff changeset
   352
WifiMeshMultihopActionHeader::Serialize (Buffer::Iterator start) const
27921b45078e Restored mesh-wifi-mac-header
Kirill Andreev <andreev@iitp.ru>
parents:
diff changeset
   353
{
27921b45078e Restored mesh-wifi-mac-header
Kirill Andreev <andreev@iitp.ru>
parents:
diff changeset
   354
  start.WriteU8 (m_category);
27921b45078e Restored mesh-wifi-mac-header
Kirill Andreev <andreev@iitp.ru>
parents:
diff changeset
   355
  start.WriteU8 (m_actionValue);
27921b45078e Restored mesh-wifi-mac-header
Kirill Andreev <andreev@iitp.ru>
parents:
diff changeset
   356
}
27921b45078e Restored mesh-wifi-mac-header
Kirill Andreev <andreev@iitp.ru>
parents:
diff changeset
   357
27921b45078e Restored mesh-wifi-mac-header
Kirill Andreev <andreev@iitp.ru>
parents:
diff changeset
   358
uint32_t
27921b45078e Restored mesh-wifi-mac-header
Kirill Andreev <andreev@iitp.ru>
parents:
diff changeset
   359
WifiMeshMultihopActionHeader::Deserialize (Buffer::Iterator start)
27921b45078e Restored mesh-wifi-mac-header
Kirill Andreev <andreev@iitp.ru>
parents:
diff changeset
   360
{
27921b45078e Restored mesh-wifi-mac-header
Kirill Andreev <andreev@iitp.ru>
parents:
diff changeset
   361
  Buffer::Iterator i = start;
27921b45078e Restored mesh-wifi-mac-header
Kirill Andreev <andreev@iitp.ru>
parents:
diff changeset
   362
  m_category = i.ReadU8 ();
27921b45078e Restored mesh-wifi-mac-header
Kirill Andreev <andreev@iitp.ru>
parents:
diff changeset
   363
  m_actionValue = i.ReadU8 ();
27921b45078e Restored mesh-wifi-mac-header
Kirill Andreev <andreev@iitp.ru>
parents:
diff changeset
   364
  return i.GetDistanceFrom (start);
27921b45078e Restored mesh-wifi-mac-header
Kirill Andreev <andreev@iitp.ru>
parents:
diff changeset
   365
}
27921b45078e Restored mesh-wifi-mac-header
Kirill Andreev <andreev@iitp.ru>
parents:
diff changeset
   366
27921b45078e Restored mesh-wifi-mac-header
Kirill Andreev <andreev@iitp.ru>
parents:
diff changeset
   367
} // namespace ns3