src/devices/mesh/dot11s/peer-link.cc
author Kirill Andreev <andreev@iitp.ru>
Wed, 22 Jul 2009 14:52:42 +0400
changeset 5129 5688b8da4526
parent 5125 b90c6c0af6a3
child 5132 aee541a30256
permissions -rw-r--r--
Fixed coding style
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
4862
6a14f272a033 PeerLink refactored (use peer-link.h)
Pavel Boyko <boyko@iitp.ru>
parents:
diff changeset
     1
/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
5129
5688b8da4526 Fixed coding style
Kirill Andreev <andreev@iitp.ru>
parents: 5125
diff changeset
     2
/*
4862
6a14f272a033 PeerLink refactored (use peer-link.h)
Pavel Boyko <boyko@iitp.ru>
parents:
diff changeset
     3
 * Copyright (c) 2009 IITP RAS
5129
5688b8da4526 Fixed coding style
Kirill Andreev <andreev@iitp.ru>
parents: 5125
diff changeset
     4
 *
4862
6a14f272a033 PeerLink refactored (use peer-link.h)
Pavel Boyko <boyko@iitp.ru>
parents:
diff changeset
     5
 * This program is free software; you can redistribute it and/or modify
6a14f272a033 PeerLink refactored (use peer-link.h)
Pavel Boyko <boyko@iitp.ru>
parents:
diff changeset
     6
 * it under the terms of the GNU General Public License version 2 as
6a14f272a033 PeerLink refactored (use peer-link.h)
Pavel Boyko <boyko@iitp.ru>
parents:
diff changeset
     7
 * published by the Free Software Foundation;
6a14f272a033 PeerLink refactored (use peer-link.h)
Pavel Boyko <boyko@iitp.ru>
parents:
diff changeset
     8
 *
6a14f272a033 PeerLink refactored (use peer-link.h)
Pavel Boyko <boyko@iitp.ru>
parents:
diff changeset
     9
 * This program is distributed in the hope that it will be useful,
6a14f272a033 PeerLink refactored (use peer-link.h)
Pavel Boyko <boyko@iitp.ru>
parents:
diff changeset
    10
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
6a14f272a033 PeerLink refactored (use peer-link.h)
Pavel Boyko <boyko@iitp.ru>
parents:
diff changeset
    11
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
6a14f272a033 PeerLink refactored (use peer-link.h)
Pavel Boyko <boyko@iitp.ru>
parents:
diff changeset
    12
 * GNU General Public License for more details.
6a14f272a033 PeerLink refactored (use peer-link.h)
Pavel Boyko <boyko@iitp.ru>
parents:
diff changeset
    13
 *
6a14f272a033 PeerLink refactored (use peer-link.h)
Pavel Boyko <boyko@iitp.ru>
parents:
diff changeset
    14
 * You should have received a copy of the GNU General Public License
6a14f272a033 PeerLink refactored (use peer-link.h)
Pavel Boyko <boyko@iitp.ru>
parents:
diff changeset
    15
 * along with this program; if not, write to the Free Software
6a14f272a033 PeerLink refactored (use peer-link.h)
Pavel Boyko <boyko@iitp.ru>
parents:
diff changeset
    16
 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
5129
5688b8da4526 Fixed coding style
Kirill Andreev <andreev@iitp.ru>
parents: 5125
diff changeset
    17
 *
4862
6a14f272a033 PeerLink refactored (use peer-link.h)
Pavel Boyko <boyko@iitp.ru>
parents:
diff changeset
    18
 * Authors: Kirill Andreev <andreev@iitp.ru>
6a14f272a033 PeerLink refactored (use peer-link.h)
Pavel Boyko <boyko@iitp.ru>
parents:
diff changeset
    19
 *          Aleksey Kovalenko <kovalenko@iitp.ru>
6a14f272a033 PeerLink refactored (use peer-link.h)
Pavel Boyko <boyko@iitp.ru>
parents:
diff changeset
    20
 *          Pavel Boyko <boyko@iitp.ru>
6a14f272a033 PeerLink refactored (use peer-link.h)
Pavel Boyko <boyko@iitp.ru>
parents:
diff changeset
    21
 */
6a14f272a033 PeerLink refactored (use peer-link.h)
Pavel Boyko <boyko@iitp.ru>
parents:
diff changeset
    22
6a14f272a033 PeerLink refactored (use peer-link.h)
Pavel Boyko <boyko@iitp.ru>
parents:
diff changeset
    23
#include "peer-link.h"
6a14f272a033 PeerLink refactored (use peer-link.h)
Pavel Boyko <boyko@iitp.ru>
parents:
diff changeset
    24
#include "ns3/log.h"
4872
ea1bce018a44 Added namespace dot11s
Kirill Andreev <andreev@iitp.ru>
parents: 4871
diff changeset
    25
#include "ns3/simulator.h"
4887
cbf02c77d5c1 HWMP is attached to mesh point device and MAC layer with zero functionality
Kirill Andreev <andreev@iitp.ru>
parents: 4881
diff changeset
    26
#include "ns3/traced-value.h"
4862
6a14f272a033 PeerLink refactored (use peer-link.h)
Pavel Boyko <boyko@iitp.ru>
parents:
diff changeset
    27
6a14f272a033 PeerLink refactored (use peer-link.h)
Pavel Boyko <boyko@iitp.ru>
parents:
diff changeset
    28
NS_LOG_COMPONENT_DEFINE ("Dot11sPeerManagementProtocol");
6a14f272a033 PeerLink refactored (use peer-link.h)
Pavel Boyko <boyko@iitp.ru>
parents:
diff changeset
    29
5129
5688b8da4526 Fixed coding style
Kirill Andreev <andreev@iitp.ru>
parents: 5125
diff changeset
    30
namespace ns3
5688b8da4526 Fixed coding style
Kirill Andreev <andreev@iitp.ru>
parents: 5125
diff changeset
    31
{
5688b8da4526 Fixed coding style
Kirill Andreev <andreev@iitp.ru>
parents: 5125
diff changeset
    32
namespace dot11s
5688b8da4526 Fixed coding style
Kirill Andreev <andreev@iitp.ru>
parents: 5125
diff changeset
    33
{
4862
6a14f272a033 PeerLink refactored (use peer-link.h)
Pavel Boyko <boyko@iitp.ru>
parents:
diff changeset
    34
5129
5688b8da4526 Fixed coding style
Kirill Andreev <andreev@iitp.ru>
parents: 5125
diff changeset
    35
NS_OBJECT_ENSURE_REGISTERED( PeerLink);
4862
6a14f272a033 PeerLink refactored (use peer-link.h)
Pavel Boyko <boyko@iitp.ru>
parents:
diff changeset
    36
5129
5688b8da4526 Fixed coding style
Kirill Andreev <andreev@iitp.ru>
parents: 5125
diff changeset
    37
TypeId
5688b8da4526 Fixed coding style
Kirill Andreev <andreev@iitp.ru>
parents: 5125
diff changeset
    38
PeerLink::GetTypeId ()
4862
6a14f272a033 PeerLink refactored (use peer-link.h)
Pavel Boyko <boyko@iitp.ru>
parents:
diff changeset
    39
{
4920
fbd04c749aaa HwmpRtable unit test + cleanup
Pavel Boyko <boyko@iitp.ru>
parents: 4919
diff changeset
    40
  static TypeId tid = TypeId ("ns3::dot11s::PeerLink")
4887
cbf02c77d5c1 HWMP is attached to mesh point device and MAC layer with zero functionality
Kirill Andreev <andreev@iitp.ru>
parents: 4881
diff changeset
    41
    .SetParent<Object> ()
cbf02c77d5c1 HWMP is attached to mesh point device and MAC layer with zero functionality
Kirill Andreev <andreev@iitp.ru>
parents: 4881
diff changeset
    42
    .AddConstructor<PeerLink> ()
5129
5688b8da4526 Fixed coding style
Kirill Andreev <andreev@iitp.ru>
parents: 5125
diff changeset
    43
    .AddAttribute ( "RetryTimeout",
5688b8da4526 Fixed coding style
Kirill Andreev <andreev@iitp.ru>
parents: 5125
diff changeset
    44
                    "Retry timeout",
5688b8da4526 Fixed coding style
Kirill Andreev <andreev@iitp.ru>
parents: 5125
diff changeset
    45
                    TimeValue (TimeValue (MicroSeconds (40 * 1024))),
5688b8da4526 Fixed coding style
Kirill Andreev <andreev@iitp.ru>
parents: 5125
diff changeset
    46
                    MakeTimeAccessor (
5688b8da4526 Fixed coding style
Kirill Andreev <andreev@iitp.ru>
parents: 5125
diff changeset
    47
                        &PeerLink::m_dot11MeshRetryTimeout),
5688b8da4526 Fixed coding style
Kirill Andreev <andreev@iitp.ru>
parents: 5125
diff changeset
    48
                    MakeTimeChecker ()
5688b8da4526 Fixed coding style
Kirill Andreev <andreev@iitp.ru>
parents: 5125
diff changeset
    49
                  )
5688b8da4526 Fixed coding style
Kirill Andreev <andreev@iitp.ru>
parents: 5125
diff changeset
    50
    .AddAttribute ( "HoldingTimeout",
5688b8da4526 Fixed coding style
Kirill Andreev <andreev@iitp.ru>
parents: 5125
diff changeset
    51
                    "Holding timeout",
5688b8da4526 Fixed coding style
Kirill Andreev <andreev@iitp.ru>
parents: 5125
diff changeset
    52
                    TimeValue (TimeValue (MicroSeconds (40 * 1024))),
5688b8da4526 Fixed coding style
Kirill Andreev <andreev@iitp.ru>
parents: 5125
diff changeset
    53
                    MakeTimeAccessor (
5688b8da4526 Fixed coding style
Kirill Andreev <andreev@iitp.ru>
parents: 5125
diff changeset
    54
                        &PeerLink::m_dot11MeshHoldingTimeout),
5688b8da4526 Fixed coding style
Kirill Andreev <andreev@iitp.ru>
parents: 5125
diff changeset
    55
                    MakeTimeChecker ()
5688b8da4526 Fixed coding style
Kirill Andreev <andreev@iitp.ru>
parents: 5125
diff changeset
    56
                  )
5688b8da4526 Fixed coding style
Kirill Andreev <andreev@iitp.ru>
parents: 5125
diff changeset
    57
    .AddAttribute ( "ConfirmTimeout",
5688b8da4526 Fixed coding style
Kirill Andreev <andreev@iitp.ru>
parents: 5125
diff changeset
    58
                    "Confirm timeout",
5688b8da4526 Fixed coding style
Kirill Andreev <andreev@iitp.ru>
parents: 5125
diff changeset
    59
                    TimeValue (TimeValue (MicroSeconds (40 * 1024))),
5688b8da4526 Fixed coding style
Kirill Andreev <andreev@iitp.ru>
parents: 5125
diff changeset
    60
                    MakeTimeAccessor (
5688b8da4526 Fixed coding style
Kirill Andreev <andreev@iitp.ru>
parents: 5125
diff changeset
    61
                        &PeerLink::m_dot11MeshConfirmTimeout),
5688b8da4526 Fixed coding style
Kirill Andreev <andreev@iitp.ru>
parents: 5125
diff changeset
    62
                    MakeTimeChecker ()
5688b8da4526 Fixed coding style
Kirill Andreev <andreev@iitp.ru>
parents: 5125
diff changeset
    63
                  )
5688b8da4526 Fixed coding style
Kirill Andreev <andreev@iitp.ru>
parents: 5125
diff changeset
    64
    .AddAttribute ( "MaxRetries",
5688b8da4526 Fixed coding style
Kirill Andreev <andreev@iitp.ru>
parents: 5125
diff changeset
    65
                    "Maximum number of retries",
5688b8da4526 Fixed coding style
Kirill Andreev <andreev@iitp.ru>
parents: 5125
diff changeset
    66
                    UintegerValue (4),
5688b8da4526 Fixed coding style
Kirill Andreev <andreev@iitp.ru>
parents: 5125
diff changeset
    67
                    MakeUintegerAccessor (
5688b8da4526 Fixed coding style
Kirill Andreev <andreev@iitp.ru>
parents: 5125
diff changeset
    68
                        &PeerLink::m_dot11MeshMaxRetries),
5688b8da4526 Fixed coding style
Kirill Andreev <andreev@iitp.ru>
parents: 5125
diff changeset
    69
                    MakeUintegerChecker<uint16_t> ()
5688b8da4526 Fixed coding style
Kirill Andreev <andreev@iitp.ru>
parents: 5125
diff changeset
    70
                  )
5688b8da4526 Fixed coding style
Kirill Andreev <andreev@iitp.ru>
parents: 5125
diff changeset
    71
    .AddAttribute ( "MaxBeaconLoss",
5688b8da4526 Fixed coding style
Kirill Andreev <andreev@iitp.ru>
parents: 5125
diff changeset
    72
                    "Maximum number of lost beacons before link will be closed",
5688b8da4526 Fixed coding style
Kirill Andreev <andreev@iitp.ru>
parents: 5125
diff changeset
    73
                    UintegerValue (2),
5688b8da4526 Fixed coding style
Kirill Andreev <andreev@iitp.ru>
parents: 5125
diff changeset
    74
                    MakeUintegerAccessor (
5688b8da4526 Fixed coding style
Kirill Andreev <andreev@iitp.ru>
parents: 5125
diff changeset
    75
                        &PeerLink::m_maxBeaconLoss),
5688b8da4526 Fixed coding style
Kirill Andreev <andreev@iitp.ru>
parents: 5125
diff changeset
    76
                    MakeUintegerChecker<uint16_t> (1)
5688b8da4526 Fixed coding style
Kirill Andreev <andreev@iitp.ru>
parents: 5125
diff changeset
    77
                  )
5688b8da4526 Fixed coding style
Kirill Andreev <andreev@iitp.ru>
parents: 5125
diff changeset
    78
                  ;
4862
6a14f272a033 PeerLink refactored (use peer-link.h)
Pavel Boyko <boyko@iitp.ru>
parents:
diff changeset
    79
  return tid;
6a14f272a033 PeerLink refactored (use peer-link.h)
Pavel Boyko <boyko@iitp.ru>
parents:
diff changeset
    80
}
5129
5688b8da4526 Fixed coding style
Kirill Andreev <andreev@iitp.ru>
parents: 5125
diff changeset
    81
5688b8da4526 Fixed coding style
Kirill Andreev <andreev@iitp.ru>
parents: 5125
diff changeset
    82
4862
6a14f272a033 PeerLink refactored (use peer-link.h)
Pavel Boyko <boyko@iitp.ru>
parents:
diff changeset
    83
//-----------------------------------------------------------------------------
6a14f272a033 PeerLink refactored (use peer-link.h)
Pavel Boyko <boyko@iitp.ru>
parents:
diff changeset
    84
// PeerLink public interface
6a14f272a033 PeerLink refactored (use peer-link.h)
Pavel Boyko <boyko@iitp.ru>
parents:
diff changeset
    85
//-----------------------------------------------------------------------------
5129
5688b8da4526 Fixed coding style
Kirill Andreev <andreev@iitp.ru>
parents: 5125
diff changeset
    86
PeerLink::PeerLink () :
5688b8da4526 Fixed coding style
Kirill Andreev <andreev@iitp.ru>
parents: 5125
diff changeset
    87
  m_peerAddress (Mac48Address::GetBroadcast ()), m_peerMeshPointAddress (Mac48Address::GetBroadcast ()),
5688b8da4526 Fixed coding style
Kirill Andreev <andreev@iitp.ru>
parents: 5125
diff changeset
    88
      m_localLinkId (0), m_peerLinkId (0), m_state (IDLE), m_retryCounter (0)
4862
6a14f272a033 PeerLink refactored (use peer-link.h)
Pavel Boyko <boyko@iitp.ru>
parents:
diff changeset
    89
{
6a14f272a033 PeerLink refactored (use peer-link.h)
Pavel Boyko <boyko@iitp.ru>
parents:
diff changeset
    90
}
5005
8038200dac53 Fixed removing peer links
Kirill Andreev <andreev@iitp.ru>
parents: 4954
diff changeset
    91
PeerLink::~PeerLink ()
8038200dac53 Fixed removing peer links
Kirill Andreev <andreev@iitp.ru>
parents: 4954
diff changeset
    92
{
8038200dac53 Fixed removing peer links
Kirill Andreev <andreev@iitp.ru>
parents: 4954
diff changeset
    93
}
8038200dac53 Fixed removing peer links
Kirill Andreev <andreev@iitp.ru>
parents: 4954
diff changeset
    94
void
8038200dac53 Fixed removing peer links
Kirill Andreev <andreev@iitp.ru>
parents: 4954
diff changeset
    95
PeerLink::DoDispose ()
8038200dac53 Fixed removing peer links
Kirill Andreev <andreev@iitp.ru>
parents: 4954
diff changeset
    96
{
8038200dac53 Fixed removing peer links
Kirill Andreev <andreev@iitp.ru>
parents: 4954
diff changeset
    97
  m_retryTimer.Cancel ();
8038200dac53 Fixed removing peer links
Kirill Andreev <andreev@iitp.ru>
parents: 4954
diff changeset
    98
  m_holdingTimer.Cancel ();
8038200dac53 Fixed removing peer links
Kirill Andreev <andreev@iitp.ru>
parents: 4954
diff changeset
    99
  m_confirmTimer.Cancel ();
8038200dac53 Fixed removing peer links
Kirill Andreev <andreev@iitp.ru>
parents: 4954
diff changeset
   100
  m_beaconLossTimer.Cancel ();
8038200dac53 Fixed removing peer links
Kirill Andreev <andreev@iitp.ru>
parents: 4954
diff changeset
   101
  m_beaconTiming.ClearTimingElement ();
8038200dac53 Fixed removing peer links
Kirill Andreev <andreev@iitp.ru>
parents: 4954
diff changeset
   102
}
4862
6a14f272a033 PeerLink refactored (use peer-link.h)
Pavel Boyko <boyko@iitp.ru>
parents:
diff changeset
   103
void
6a14f272a033 PeerLink refactored (use peer-link.h)
Pavel Boyko <boyko@iitp.ru>
parents:
diff changeset
   104
PeerLink::SetPeerAddress (Mac48Address macaddr)
6a14f272a033 PeerLink refactored (use peer-link.h)
Pavel Boyko <boyko@iitp.ru>
parents:
diff changeset
   105
{
6a14f272a033 PeerLink refactored (use peer-link.h)
Pavel Boyko <boyko@iitp.ru>
parents:
diff changeset
   106
  m_peerAddress = macaddr;
6a14f272a033 PeerLink refactored (use peer-link.h)
Pavel Boyko <boyko@iitp.ru>
parents:
diff changeset
   107
}
4933
72f0481cfb2d Peer link restructured to support multi-interface
Kirill Andreev <andreev@iitp.ru>
parents: 4920
diff changeset
   108
void
5129
5688b8da4526 Fixed coding style
Kirill Andreev <andreev@iitp.ru>
parents: 5125
diff changeset
   109
PeerLink::SetPeerMeshPointAddress (Mac48Address macaddr)
4933
72f0481cfb2d Peer link restructured to support multi-interface
Kirill Andreev <andreev@iitp.ru>
parents: 4920
diff changeset
   110
{
72f0481cfb2d Peer link restructured to support multi-interface
Kirill Andreev <andreev@iitp.ru>
parents: 4920
diff changeset
   111
  m_peerMeshPointAddress = macaddr;
72f0481cfb2d Peer link restructured to support multi-interface
Kirill Andreev <andreev@iitp.ru>
parents: 4920
diff changeset
   112
}
4862
6a14f272a033 PeerLink refactored (use peer-link.h)
Pavel Boyko <boyko@iitp.ru>
parents:
diff changeset
   113
void
4869
bf6f699d4e03 Debug messages fixed
Kirill Andreev <andreev@iitp.ru>
parents: 4868
diff changeset
   114
PeerLink::SetInterface (uint32_t interface)
bf6f699d4e03 Debug messages fixed
Kirill Andreev <andreev@iitp.ru>
parents: 4868
diff changeset
   115
{
bf6f699d4e03 Debug messages fixed
Kirill Andreev <andreev@iitp.ru>
parents: 4868
diff changeset
   116
  m_interface = interface;
bf6f699d4e03 Debug messages fixed
Kirill Andreev <andreev@iitp.ru>
parents: 4868
diff changeset
   117
}
bf6f699d4e03 Debug messages fixed
Kirill Andreev <andreev@iitp.ru>
parents: 4868
diff changeset
   118
void
4862
6a14f272a033 PeerLink refactored (use peer-link.h)
Pavel Boyko <boyko@iitp.ru>
parents:
diff changeset
   119
PeerLink::SetLocalLinkId (uint16_t id)
6a14f272a033 PeerLink refactored (use peer-link.h)
Pavel Boyko <boyko@iitp.ru>
parents:
diff changeset
   120
{
6a14f272a033 PeerLink refactored (use peer-link.h)
Pavel Boyko <boyko@iitp.ru>
parents:
diff changeset
   121
  m_localLinkId = id;
6a14f272a033 PeerLink refactored (use peer-link.h)
Pavel Boyko <boyko@iitp.ru>
parents:
diff changeset
   122
}
6a14f272a033 PeerLink refactored (use peer-link.h)
Pavel Boyko <boyko@iitp.ru>
parents:
diff changeset
   123
void
6a14f272a033 PeerLink refactored (use peer-link.h)
Pavel Boyko <boyko@iitp.ru>
parents:
diff changeset
   124
PeerLink::SetLocalAid (uint16_t aid)
6a14f272a033 PeerLink refactored (use peer-link.h)
Pavel Boyko <boyko@iitp.ru>
parents:
diff changeset
   125
{
6a14f272a033 PeerLink refactored (use peer-link.h)
Pavel Boyko <boyko@iitp.ru>
parents:
diff changeset
   126
  m_assocId = aid;
6a14f272a033 PeerLink refactored (use peer-link.h)
Pavel Boyko <boyko@iitp.ru>
parents:
diff changeset
   127
}
6a14f272a033 PeerLink refactored (use peer-link.h)
Pavel Boyko <boyko@iitp.ru>
parents:
diff changeset
   128
void
6a14f272a033 PeerLink refactored (use peer-link.h)
Pavel Boyko <boyko@iitp.ru>
parents:
diff changeset
   129
PeerLink::SetBeaconInformation (Time lastBeacon, Time beaconInterval)
6a14f272a033 PeerLink refactored (use peer-link.h)
Pavel Boyko <boyko@iitp.ru>
parents:
diff changeset
   130
{
6a14f272a033 PeerLink refactored (use peer-link.h)
Pavel Boyko <boyko@iitp.ru>
parents:
diff changeset
   131
  m_lastBeacon = lastBeacon;
6a14f272a033 PeerLink refactored (use peer-link.h)
Pavel Boyko <boyko@iitp.ru>
parents:
diff changeset
   132
  m_beaconInterval = beaconInterval;
6a14f272a033 PeerLink refactored (use peer-link.h)
Pavel Boyko <boyko@iitp.ru>
parents:
diff changeset
   133
  m_beaconLossTimer.Cancel ();
5129
5688b8da4526 Fixed coding style
Kirill Andreev <andreev@iitp.ru>
parents: 5125
diff changeset
   134
  Time delay = Seconds (beaconInterval.GetSeconds () * m_maxBeaconLoss);
5688b8da4526 Fixed coding style
Kirill Andreev <andreev@iitp.ru>
parents: 5125
diff changeset
   135
  NS_ASSERT (delay.GetMicroSeconds () != 0);
4862
6a14f272a033 PeerLink refactored (use peer-link.h)
Pavel Boyko <boyko@iitp.ru>
parents:
diff changeset
   136
  m_beaconLossTimer = Simulator::Schedule (delay, &PeerLink::BeaconLoss, this);
6a14f272a033 PeerLink refactored (use peer-link.h)
Pavel Boyko <boyko@iitp.ru>
parents:
diff changeset
   137
}
6a14f272a033 PeerLink refactored (use peer-link.h)
Pavel Boyko <boyko@iitp.ru>
parents:
diff changeset
   138
void
6a14f272a033 PeerLink refactored (use peer-link.h)
Pavel Boyko <boyko@iitp.ru>
parents:
diff changeset
   139
PeerLink::MLMESetSignalStatusCallback (PeerLink::SignalStatusCallback cb)
6a14f272a033 PeerLink refactored (use peer-link.h)
Pavel Boyko <boyko@iitp.ru>
parents:
diff changeset
   140
{
6a14f272a033 PeerLink refactored (use peer-link.h)
Pavel Boyko <boyko@iitp.ru>
parents:
diff changeset
   141
  m_linkStatusCallback = cb;
6a14f272a033 PeerLink refactored (use peer-link.h)
Pavel Boyko <boyko@iitp.ru>
parents:
diff changeset
   142
}
6a14f272a033 PeerLink refactored (use peer-link.h)
Pavel Boyko <boyko@iitp.ru>
parents:
diff changeset
   143
void
6a14f272a033 PeerLink refactored (use peer-link.h)
Pavel Boyko <boyko@iitp.ru>
parents:
diff changeset
   144
PeerLink::BeaconLoss ()
6a14f272a033 PeerLink refactored (use peer-link.h)
Pavel Boyko <boyko@iitp.ru>
parents:
diff changeset
   145
{
6a14f272a033 PeerLink refactored (use peer-link.h)
Pavel Boyko <boyko@iitp.ru>
parents:
diff changeset
   146
  StateMachine (CNCL);
6a14f272a033 PeerLink refactored (use peer-link.h)
Pavel Boyko <boyko@iitp.ru>
parents:
diff changeset
   147
}
6a14f272a033 PeerLink refactored (use peer-link.h)
Pavel Boyko <boyko@iitp.ru>
parents:
diff changeset
   148
void
4876
d78f1b978dac Rstructured file names: IeDot11s* no is Ie, because it is in namespace dot11s
Kirill Andreev <andreev@iitp.ru>
parents: 4873
diff changeset
   149
PeerLink::SetBeaconTimingElement (IeBeaconTiming beaconTiming)
4862
6a14f272a033 PeerLink refactored (use peer-link.h)
Pavel Boyko <boyko@iitp.ru>
parents:
diff changeset
   150
{
6a14f272a033 PeerLink refactored (use peer-link.h)
Pavel Boyko <boyko@iitp.ru>
parents:
diff changeset
   151
  m_beaconTiming = beaconTiming;
6a14f272a033 PeerLink refactored (use peer-link.h)
Pavel Boyko <boyko@iitp.ru>
parents:
diff changeset
   152
}
6a14f272a033 PeerLink refactored (use peer-link.h)
Pavel Boyko <boyko@iitp.ru>
parents:
diff changeset
   153
Mac48Address
6a14f272a033 PeerLink refactored (use peer-link.h)
Pavel Boyko <boyko@iitp.ru>
parents:
diff changeset
   154
PeerLink::GetPeerAddress () const
6a14f272a033 PeerLink refactored (use peer-link.h)
Pavel Boyko <boyko@iitp.ru>
parents:
diff changeset
   155
{
6a14f272a033 PeerLink refactored (use peer-link.h)
Pavel Boyko <boyko@iitp.ru>
parents:
diff changeset
   156
  return m_peerAddress;
6a14f272a033 PeerLink refactored (use peer-link.h)
Pavel Boyko <boyko@iitp.ru>
parents:
diff changeset
   157
}
6a14f272a033 PeerLink refactored (use peer-link.h)
Pavel Boyko <boyko@iitp.ru>
parents:
diff changeset
   158
uint16_t
6a14f272a033 PeerLink refactored (use peer-link.h)
Pavel Boyko <boyko@iitp.ru>
parents:
diff changeset
   159
PeerLink::GetLocalAid () const
6a14f272a033 PeerLink refactored (use peer-link.h)
Pavel Boyko <boyko@iitp.ru>
parents:
diff changeset
   160
{
6a14f272a033 PeerLink refactored (use peer-link.h)
Pavel Boyko <boyko@iitp.ru>
parents:
diff changeset
   161
  return m_assocId;
6a14f272a033 PeerLink refactored (use peer-link.h)
Pavel Boyko <boyko@iitp.ru>
parents:
diff changeset
   162
}
6a14f272a033 PeerLink refactored (use peer-link.h)
Pavel Boyko <boyko@iitp.ru>
parents:
diff changeset
   163
Time
6a14f272a033 PeerLink refactored (use peer-link.h)
Pavel Boyko <boyko@iitp.ru>
parents:
diff changeset
   164
PeerLink::GetLastBeacon () const
6a14f272a033 PeerLink refactored (use peer-link.h)
Pavel Boyko <boyko@iitp.ru>
parents:
diff changeset
   165
{
6a14f272a033 PeerLink refactored (use peer-link.h)
Pavel Boyko <boyko@iitp.ru>
parents:
diff changeset
   166
  return m_lastBeacon;
6a14f272a033 PeerLink refactored (use peer-link.h)
Pavel Boyko <boyko@iitp.ru>
parents:
diff changeset
   167
}
6a14f272a033 PeerLink refactored (use peer-link.h)
Pavel Boyko <boyko@iitp.ru>
parents:
diff changeset
   168
Time
6a14f272a033 PeerLink refactored (use peer-link.h)
Pavel Boyko <boyko@iitp.ru>
parents:
diff changeset
   169
PeerLink::GetBeaconInterval () const
6a14f272a033 PeerLink refactored (use peer-link.h)
Pavel Boyko <boyko@iitp.ru>
parents:
diff changeset
   170
{
6a14f272a033 PeerLink refactored (use peer-link.h)
Pavel Boyko <boyko@iitp.ru>
parents:
diff changeset
   171
  return m_beaconInterval;
6a14f272a033 PeerLink refactored (use peer-link.h)
Pavel Boyko <boyko@iitp.ru>
parents:
diff changeset
   172
}
4876
d78f1b978dac Rstructured file names: IeDot11s* no is Ie, because it is in namespace dot11s
Kirill Andreev <andreev@iitp.ru>
parents: 4873
diff changeset
   173
IeBeaconTiming
4862
6a14f272a033 PeerLink refactored (use peer-link.h)
Pavel Boyko <boyko@iitp.ru>
parents:
diff changeset
   174
PeerLink::GetBeaconTimingElement () const
6a14f272a033 PeerLink refactored (use peer-link.h)
Pavel Boyko <boyko@iitp.ru>
parents:
diff changeset
   175
{
6a14f272a033 PeerLink refactored (use peer-link.h)
Pavel Boyko <boyko@iitp.ru>
parents:
diff changeset
   176
  return m_beaconTiming;
6a14f272a033 PeerLink refactored (use peer-link.h)
Pavel Boyko <boyko@iitp.ru>
parents:
diff changeset
   177
}
6a14f272a033 PeerLink refactored (use peer-link.h)
Pavel Boyko <boyko@iitp.ru>
parents:
diff changeset
   178
void
4933
72f0481cfb2d Peer link restructured to support multi-interface
Kirill Andreev <andreev@iitp.ru>
parents: 4920
diff changeset
   179
PeerLink::MLMECancelPeerLink (PmpReasonCode reason)
4862
6a14f272a033 PeerLink refactored (use peer-link.h)
Pavel Boyko <boyko@iitp.ru>
parents:
diff changeset
   180
{
5129
5688b8da4526 Fixed coding style
Kirill Andreev <andreev@iitp.ru>
parents: 5125
diff changeset
   181
  StateMachine (CNCL, reason);
4862
6a14f272a033 PeerLink refactored (use peer-link.h)
Pavel Boyko <boyko@iitp.ru>
parents:
diff changeset
   182
}
4933
72f0481cfb2d Peer link restructured to support multi-interface
Kirill Andreev <andreev@iitp.ru>
parents: 4920
diff changeset
   183
void
72f0481cfb2d Peer link restructured to support multi-interface
Kirill Andreev <andreev@iitp.ru>
parents: 4920
diff changeset
   184
PeerLink::MLMEActivePeerLinkOpen ()
4862
6a14f272a033 PeerLink refactored (use peer-link.h)
Pavel Boyko <boyko@iitp.ru>
parents:
diff changeset
   185
{
6a14f272a033 PeerLink refactored (use peer-link.h)
Pavel Boyko <boyko@iitp.ru>
parents:
diff changeset
   186
  StateMachine (ACTOPN);
6a14f272a033 PeerLink refactored (use peer-link.h)
Pavel Boyko <boyko@iitp.ru>
parents:
diff changeset
   187
}
4933
72f0481cfb2d Peer link restructured to support multi-interface
Kirill Andreev <andreev@iitp.ru>
parents: 4920
diff changeset
   188
void
72f0481cfb2d Peer link restructured to support multi-interface
Kirill Andreev <andreev@iitp.ru>
parents: 4920
diff changeset
   189
PeerLink::MLMEPeeringRequestReject ()
4862
6a14f272a033 PeerLink refactored (use peer-link.h)
Pavel Boyko <boyko@iitp.ru>
parents:
diff changeset
   190
{
5023
fce378307409 Moving to IEEE 802.11s Draft 3.0:
Andrey Mazo <mazo@iitp.ru>
parents: 5015
diff changeset
   191
  StateMachine (REQ_RJCT, REASON11S_PEERING_CANCELLED);
4862
6a14f272a033 PeerLink refactored (use peer-link.h)
Pavel Boyko <boyko@iitp.ru>
parents:
diff changeset
   192
}
4933
72f0481cfb2d Peer link restructured to support multi-interface
Kirill Andreev <andreev@iitp.ru>
parents: 4920
diff changeset
   193
void
72f0481cfb2d Peer link restructured to support multi-interface
Kirill Andreev <andreev@iitp.ru>
parents: 4920
diff changeset
   194
PeerLink::Close (uint16_t localLinkId, uint16_t peerLinkId, PmpReasonCode reason)
4862
6a14f272a033 PeerLink refactored (use peer-link.h)
Pavel Boyko <boyko@iitp.ru>
parents:
diff changeset
   195
{
6a14f272a033 PeerLink refactored (use peer-link.h)
Pavel Boyko <boyko@iitp.ru>
parents:
diff changeset
   196
  if (peerLinkId != 0 && m_localLinkId != peerLinkId)
5125
b90c6c0af6a3 Added max beacon loss to PeerManagementProtocol (for beacon timing), cosmetic
Kirill Andreev <andreev@iitp.ru>
parents: 5098
diff changeset
   197
    {
b90c6c0af6a3 Added max beacon loss to PeerManagementProtocol (for beacon timing), cosmetic
Kirill Andreev <andreev@iitp.ru>
parents: 5098
diff changeset
   198
      return;
b90c6c0af6a3 Added max beacon loss to PeerManagementProtocol (for beacon timing), cosmetic
Kirill Andreev <andreev@iitp.ru>
parents: 5098
diff changeset
   199
    }
4862
6a14f272a033 PeerLink refactored (use peer-link.h)
Pavel Boyko <boyko@iitp.ru>
parents:
diff changeset
   200
  if (m_peerLinkId == 0)
5125
b90c6c0af6a3 Added max beacon loss to PeerManagementProtocol (for beacon timing), cosmetic
Kirill Andreev <andreev@iitp.ru>
parents: 5098
diff changeset
   201
    {
b90c6c0af6a3 Added max beacon loss to PeerManagementProtocol (for beacon timing), cosmetic
Kirill Andreev <andreev@iitp.ru>
parents: 5098
diff changeset
   202
      m_peerLinkId = localLinkId;
b90c6c0af6a3 Added max beacon loss to PeerManagementProtocol (for beacon timing), cosmetic
Kirill Andreev <andreev@iitp.ru>
parents: 5098
diff changeset
   203
    }
5129
5688b8da4526 Fixed coding style
Kirill Andreev <andreev@iitp.ru>
parents: 5125
diff changeset
   204
  else
5125
b90c6c0af6a3 Added max beacon loss to PeerManagementProtocol (for beacon timing), cosmetic
Kirill Andreev <andreev@iitp.ru>
parents: 5098
diff changeset
   205
    {
b90c6c0af6a3 Added max beacon loss to PeerManagementProtocol (for beacon timing), cosmetic
Kirill Andreev <andreev@iitp.ru>
parents: 5098
diff changeset
   206
      if (m_peerLinkId != localLinkId)
b90c6c0af6a3 Added max beacon loss to PeerManagementProtocol (for beacon timing), cosmetic
Kirill Andreev <andreev@iitp.ru>
parents: 5098
diff changeset
   207
        {
b90c6c0af6a3 Added max beacon loss to PeerManagementProtocol (for beacon timing), cosmetic
Kirill Andreev <andreev@iitp.ru>
parents: 5098
diff changeset
   208
          return;
b90c6c0af6a3 Added max beacon loss to PeerManagementProtocol (for beacon timing), cosmetic
Kirill Andreev <andreev@iitp.ru>
parents: 5098
diff changeset
   209
        }
b90c6c0af6a3 Added max beacon loss to PeerManagementProtocol (for beacon timing), cosmetic
Kirill Andreev <andreev@iitp.ru>
parents: 5098
diff changeset
   210
    }
4862
6a14f272a033 PeerLink refactored (use peer-link.h)
Pavel Boyko <boyko@iitp.ru>
parents:
diff changeset
   211
  StateMachine (CLS_ACPT, reason);
6a14f272a033 PeerLink refactored (use peer-link.h)
Pavel Boyko <boyko@iitp.ru>
parents:
diff changeset
   212
}
4933
72f0481cfb2d Peer link restructured to support multi-interface
Kirill Andreev <andreev@iitp.ru>
parents: 4920
diff changeset
   213
void
5129
5688b8da4526 Fixed coding style
Kirill Andreev <andreev@iitp.ru>
parents: 5125
diff changeset
   214
PeerLink::OpenAccept (uint16_t localLinkId, IeConfiguration conf, Mac48Address peerMp)
4862
6a14f272a033 PeerLink refactored (use peer-link.h)
Pavel Boyko <boyko@iitp.ru>
parents:
diff changeset
   215
{
6a14f272a033 PeerLink refactored (use peer-link.h)
Pavel Boyko <boyko@iitp.ru>
parents:
diff changeset
   216
  if (m_peerLinkId == 0)
5125
b90c6c0af6a3 Added max beacon loss to PeerManagementProtocol (for beacon timing), cosmetic
Kirill Andreev <andreev@iitp.ru>
parents: 5098
diff changeset
   217
    {
b90c6c0af6a3 Added max beacon loss to PeerManagementProtocol (for beacon timing), cosmetic
Kirill Andreev <andreev@iitp.ru>
parents: 5098
diff changeset
   218
      m_peerLinkId = localLinkId;
b90c6c0af6a3 Added max beacon loss to PeerManagementProtocol (for beacon timing), cosmetic
Kirill Andreev <andreev@iitp.ru>
parents: 5098
diff changeset
   219
    }
4862
6a14f272a033 PeerLink refactored (use peer-link.h)
Pavel Boyko <boyko@iitp.ru>
parents:
diff changeset
   220
  m_configuration = conf;
5125
b90c6c0af6a3 Added max beacon loss to PeerManagementProtocol (for beacon timing), cosmetic
Kirill Andreev <andreev@iitp.ru>
parents: 5098
diff changeset
   221
  if (m_peerMeshPointAddress != Mac48Address::GetBroadcast ())
b90c6c0af6a3 Added max beacon loss to PeerManagementProtocol (for beacon timing), cosmetic
Kirill Andreev <andreev@iitp.ru>
parents: 5098
diff changeset
   222
    {
5129
5688b8da4526 Fixed coding style
Kirill Andreev <andreev@iitp.ru>
parents: 5125
diff changeset
   223
      NS_ASSERT (m_peerMeshPointAddress == peerMp);
5125
b90c6c0af6a3 Added max beacon loss to PeerManagementProtocol (for beacon timing), cosmetic
Kirill Andreev <andreev@iitp.ru>
parents: 5098
diff changeset
   224
    }
4933
72f0481cfb2d Peer link restructured to support multi-interface
Kirill Andreev <andreev@iitp.ru>
parents: 4920
diff changeset
   225
  else
5125
b90c6c0af6a3 Added max beacon loss to PeerManagementProtocol (for beacon timing), cosmetic
Kirill Andreev <andreev@iitp.ru>
parents: 5098
diff changeset
   226
    {
b90c6c0af6a3 Added max beacon loss to PeerManagementProtocol (for beacon timing), cosmetic
Kirill Andreev <andreev@iitp.ru>
parents: 5098
diff changeset
   227
      m_peerMeshPointAddress = peerMp;
b90c6c0af6a3 Added max beacon loss to PeerManagementProtocol (for beacon timing), cosmetic
Kirill Andreev <andreev@iitp.ru>
parents: 5098
diff changeset
   228
    }
4862
6a14f272a033 PeerLink refactored (use peer-link.h)
Pavel Boyko <boyko@iitp.ru>
parents:
diff changeset
   229
  StateMachine (OPN_ACPT);
6a14f272a033 PeerLink refactored (use peer-link.h)
Pavel Boyko <boyko@iitp.ru>
parents:
diff changeset
   230
}
4933
72f0481cfb2d Peer link restructured to support multi-interface
Kirill Andreev <andreev@iitp.ru>
parents: 4920
diff changeset
   231
void
5129
5688b8da4526 Fixed coding style
Kirill Andreev <andreev@iitp.ru>
parents: 5125
diff changeset
   232
PeerLink::OpenReject (uint16_t localLinkId, IeConfiguration conf, Mac48Address peerMp, PmpReasonCode reason)
4862
6a14f272a033 PeerLink refactored (use peer-link.h)
Pavel Boyko <boyko@iitp.ru>
parents:
diff changeset
   233
{
5129
5688b8da4526 Fixed coding style
Kirill Andreev <andreev@iitp.ru>
parents: 5125
diff changeset
   234
  if (m_peerLinkId == 0)
5125
b90c6c0af6a3 Added max beacon loss to PeerManagementProtocol (for beacon timing), cosmetic
Kirill Andreev <andreev@iitp.ru>
parents: 5098
diff changeset
   235
    {
b90c6c0af6a3 Added max beacon loss to PeerManagementProtocol (for beacon timing), cosmetic
Kirill Andreev <andreev@iitp.ru>
parents: 5098
diff changeset
   236
      m_peerLinkId = localLinkId;
b90c6c0af6a3 Added max beacon loss to PeerManagementProtocol (for beacon timing), cosmetic
Kirill Andreev <andreev@iitp.ru>
parents: 5098
diff changeset
   237
    }
4862
6a14f272a033 PeerLink refactored (use peer-link.h)
Pavel Boyko <boyko@iitp.ru>
parents:
diff changeset
   238
  m_configuration = conf;
5125
b90c6c0af6a3 Added max beacon loss to PeerManagementProtocol (for beacon timing), cosmetic
Kirill Andreev <andreev@iitp.ru>
parents: 5098
diff changeset
   239
  if (m_peerMeshPointAddress != Mac48Address::GetBroadcast ())
b90c6c0af6a3 Added max beacon loss to PeerManagementProtocol (for beacon timing), cosmetic
Kirill Andreev <andreev@iitp.ru>
parents: 5098
diff changeset
   240
    {
5129
5688b8da4526 Fixed coding style
Kirill Andreev <andreev@iitp.ru>
parents: 5125
diff changeset
   241
      NS_ASSERT (m_peerMeshPointAddress == peerMp);
5125
b90c6c0af6a3 Added max beacon loss to PeerManagementProtocol (for beacon timing), cosmetic
Kirill Andreev <andreev@iitp.ru>
parents: 5098
diff changeset
   242
    }
4933
72f0481cfb2d Peer link restructured to support multi-interface
Kirill Andreev <andreev@iitp.ru>
parents: 4920
diff changeset
   243
  else
5125
b90c6c0af6a3 Added max beacon loss to PeerManagementProtocol (for beacon timing), cosmetic
Kirill Andreev <andreev@iitp.ru>
parents: 5098
diff changeset
   244
    {
b90c6c0af6a3 Added max beacon loss to PeerManagementProtocol (for beacon timing), cosmetic
Kirill Andreev <andreev@iitp.ru>
parents: 5098
diff changeset
   245
      m_peerMeshPointAddress = peerMp;
b90c6c0af6a3 Added max beacon loss to PeerManagementProtocol (for beacon timing), cosmetic
Kirill Andreev <andreev@iitp.ru>
parents: 5098
diff changeset
   246
    }
4862
6a14f272a033 PeerLink refactored (use peer-link.h)
Pavel Boyko <boyko@iitp.ru>
parents:
diff changeset
   247
  StateMachine (OPN_RJCT, reason);
6a14f272a033 PeerLink refactored (use peer-link.h)
Pavel Boyko <boyko@iitp.ru>
parents:
diff changeset
   248
}
6a14f272a033 PeerLink refactored (use peer-link.h)
Pavel Boyko <boyko@iitp.ru>
parents:
diff changeset
   249
void
5129
5688b8da4526 Fixed coding style
Kirill Andreev <andreev@iitp.ru>
parents: 5125
diff changeset
   250
PeerLink::ConfirmAccept (uint16_t localLinkId, uint16_t peerLinkId, uint16_t peerAid, IeConfiguration conf,
5688b8da4526 Fixed coding style
Kirill Andreev <andreev@iitp.ru>
parents: 5125
diff changeset
   251
    Mac48Address peerMp)
4862
6a14f272a033 PeerLink refactored (use peer-link.h)
Pavel Boyko <boyko@iitp.ru>
parents:
diff changeset
   252
{
5129
5688b8da4526 Fixed coding style
Kirill Andreev <andreev@iitp.ru>
parents: 5125
diff changeset
   253
  if (m_localLinkId != peerLinkId)
5125
b90c6c0af6a3 Added max beacon loss to PeerManagementProtocol (for beacon timing), cosmetic
Kirill Andreev <andreev@iitp.ru>
parents: 5098
diff changeset
   254
    {
b90c6c0af6a3 Added max beacon loss to PeerManagementProtocol (for beacon timing), cosmetic
Kirill Andreev <andreev@iitp.ru>
parents: 5098
diff changeset
   255
      return;
b90c6c0af6a3 Added max beacon loss to PeerManagementProtocol (for beacon timing), cosmetic
Kirill Andreev <andreev@iitp.ru>
parents: 5098
diff changeset
   256
    }
5129
5688b8da4526 Fixed coding style
Kirill Andreev <andreev@iitp.ru>
parents: 5125
diff changeset
   257
  if (m_peerLinkId == 0)
5125
b90c6c0af6a3 Added max beacon loss to PeerManagementProtocol (for beacon timing), cosmetic
Kirill Andreev <andreev@iitp.ru>
parents: 5098
diff changeset
   258
    {
b90c6c0af6a3 Added max beacon loss to PeerManagementProtocol (for beacon timing), cosmetic
Kirill Andreev <andreev@iitp.ru>
parents: 5098
diff changeset
   259
      m_peerLinkId = localLinkId;
b90c6c0af6a3 Added max beacon loss to PeerManagementProtocol (for beacon timing), cosmetic
Kirill Andreev <andreev@iitp.ru>
parents: 5098
diff changeset
   260
    }
b90c6c0af6a3 Added max beacon loss to PeerManagementProtocol (for beacon timing), cosmetic
Kirill Andreev <andreev@iitp.ru>
parents: 5098
diff changeset
   261
  else
b90c6c0af6a3 Added max beacon loss to PeerManagementProtocol (for beacon timing), cosmetic
Kirill Andreev <andreev@iitp.ru>
parents: 5098
diff changeset
   262
    {
5129
5688b8da4526 Fixed coding style
Kirill Andreev <andreev@iitp.ru>
parents: 5125
diff changeset
   263
      if (m_peerLinkId != localLinkId)
5125
b90c6c0af6a3 Added max beacon loss to PeerManagementProtocol (for beacon timing), cosmetic
Kirill Andreev <andreev@iitp.ru>
parents: 5098
diff changeset
   264
        {
b90c6c0af6a3 Added max beacon loss to PeerManagementProtocol (for beacon timing), cosmetic
Kirill Andreev <andreev@iitp.ru>
parents: 5098
diff changeset
   265
          return;
b90c6c0af6a3 Added max beacon loss to PeerManagementProtocol (for beacon timing), cosmetic
Kirill Andreev <andreev@iitp.ru>
parents: 5098
diff changeset
   266
        }
b90c6c0af6a3 Added max beacon loss to PeerManagementProtocol (for beacon timing), cosmetic
Kirill Andreev <andreev@iitp.ru>
parents: 5098
diff changeset
   267
    }
4862
6a14f272a033 PeerLink refactored (use peer-link.h)
Pavel Boyko <boyko@iitp.ru>
parents:
diff changeset
   268
  m_configuration = conf;
6a14f272a033 PeerLink refactored (use peer-link.h)
Pavel Boyko <boyko@iitp.ru>
parents:
diff changeset
   269
  m_peerAssocId = peerAid;
5125
b90c6c0af6a3 Added max beacon loss to PeerManagementProtocol (for beacon timing), cosmetic
Kirill Andreev <andreev@iitp.ru>
parents: 5098
diff changeset
   270
  if (m_peerMeshPointAddress != Mac48Address::GetBroadcast ())
5129
5688b8da4526 Fixed coding style
Kirill Andreev <andreev@iitp.ru>
parents: 5125
diff changeset
   271
    {
5688b8da4526 Fixed coding style
Kirill Andreev <andreev@iitp.ru>
parents: 5125
diff changeset
   272
      NS_ASSERT (m_peerMeshPointAddress == peerMp);
5688b8da4526 Fixed coding style
Kirill Andreev <andreev@iitp.ru>
parents: 5125
diff changeset
   273
    }
4933
72f0481cfb2d Peer link restructured to support multi-interface
Kirill Andreev <andreev@iitp.ru>
parents: 4920
diff changeset
   274
  else
5129
5688b8da4526 Fixed coding style
Kirill Andreev <andreev@iitp.ru>
parents: 5125
diff changeset
   275
    {
5688b8da4526 Fixed coding style
Kirill Andreev <andreev@iitp.ru>
parents: 5125
diff changeset
   276
      m_peerMeshPointAddress = peerMp;
5688b8da4526 Fixed coding style
Kirill Andreev <andreev@iitp.ru>
parents: 5125
diff changeset
   277
    }
4862
6a14f272a033 PeerLink refactored (use peer-link.h)
Pavel Boyko <boyko@iitp.ru>
parents:
diff changeset
   278
  StateMachine (CNF_ACPT);
6a14f272a033 PeerLink refactored (use peer-link.h)
Pavel Boyko <boyko@iitp.ru>
parents:
diff changeset
   279
}
6a14f272a033 PeerLink refactored (use peer-link.h)
Pavel Boyko <boyko@iitp.ru>
parents:
diff changeset
   280
void
5129
5688b8da4526 Fixed coding style
Kirill Andreev <andreev@iitp.ru>
parents: 5125
diff changeset
   281
PeerLink::ConfirmReject (uint16_t localLinkId, uint16_t peerLinkId, IeConfiguration conf,
5688b8da4526 Fixed coding style
Kirill Andreev <andreev@iitp.ru>
parents: 5125
diff changeset
   282
    Mac48Address peerMp, PmpReasonCode reason)
4862
6a14f272a033 PeerLink refactored (use peer-link.h)
Pavel Boyko <boyko@iitp.ru>
parents:
diff changeset
   283
{
6a14f272a033 PeerLink refactored (use peer-link.h)
Pavel Boyko <boyko@iitp.ru>
parents:
diff changeset
   284
  if (m_localLinkId != peerLinkId)
5125
b90c6c0af6a3 Added max beacon loss to PeerManagementProtocol (for beacon timing), cosmetic
Kirill Andreev <andreev@iitp.ru>
parents: 5098
diff changeset
   285
    {
b90c6c0af6a3 Added max beacon loss to PeerManagementProtocol (for beacon timing), cosmetic
Kirill Andreev <andreev@iitp.ru>
parents: 5098
diff changeset
   286
      return;
b90c6c0af6a3 Added max beacon loss to PeerManagementProtocol (for beacon timing), cosmetic
Kirill Andreev <andreev@iitp.ru>
parents: 5098
diff changeset
   287
    }
4862
6a14f272a033 PeerLink refactored (use peer-link.h)
Pavel Boyko <boyko@iitp.ru>
parents:
diff changeset
   288
  if (m_peerLinkId == 0)
5125
b90c6c0af6a3 Added max beacon loss to PeerManagementProtocol (for beacon timing), cosmetic
Kirill Andreev <andreev@iitp.ru>
parents: 5098
diff changeset
   289
    {
b90c6c0af6a3 Added max beacon loss to PeerManagementProtocol (for beacon timing), cosmetic
Kirill Andreev <andreev@iitp.ru>
parents: 5098
diff changeset
   290
      m_peerLinkId = localLinkId;
b90c6c0af6a3 Added max beacon loss to PeerManagementProtocol (for beacon timing), cosmetic
Kirill Andreev <andreev@iitp.ru>
parents: 5098
diff changeset
   291
    }
b90c6c0af6a3 Added max beacon loss to PeerManagementProtocol (for beacon timing), cosmetic
Kirill Andreev <andreev@iitp.ru>
parents: 5098
diff changeset
   292
  else
b90c6c0af6a3 Added max beacon loss to PeerManagementProtocol (for beacon timing), cosmetic
Kirill Andreev <andreev@iitp.ru>
parents: 5098
diff changeset
   293
    {
b90c6c0af6a3 Added max beacon loss to PeerManagementProtocol (for beacon timing), cosmetic
Kirill Andreev <andreev@iitp.ru>
parents: 5098
diff changeset
   294
      if (m_peerLinkId != localLinkId)
b90c6c0af6a3 Added max beacon loss to PeerManagementProtocol (for beacon timing), cosmetic
Kirill Andreev <andreev@iitp.ru>
parents: 5098
diff changeset
   295
        {
b90c6c0af6a3 Added max beacon loss to PeerManagementProtocol (for beacon timing), cosmetic
Kirill Andreev <andreev@iitp.ru>
parents: 5098
diff changeset
   296
          return;
b90c6c0af6a3 Added max beacon loss to PeerManagementProtocol (for beacon timing), cosmetic
Kirill Andreev <andreev@iitp.ru>
parents: 5098
diff changeset
   297
        }
b90c6c0af6a3 Added max beacon loss to PeerManagementProtocol (for beacon timing), cosmetic
Kirill Andreev <andreev@iitp.ru>
parents: 5098
diff changeset
   298
    }
4862
6a14f272a033 PeerLink refactored (use peer-link.h)
Pavel Boyko <boyko@iitp.ru>
parents:
diff changeset
   299
  m_configuration = conf;
5125
b90c6c0af6a3 Added max beacon loss to PeerManagementProtocol (for beacon timing), cosmetic
Kirill Andreev <andreev@iitp.ru>
parents: 5098
diff changeset
   300
  if (m_peerMeshPointAddress != Mac48Address::GetBroadcast ())
5129
5688b8da4526 Fixed coding style
Kirill Andreev <andreev@iitp.ru>
parents: 5125
diff changeset
   301
    {
5688b8da4526 Fixed coding style
Kirill Andreev <andreev@iitp.ru>
parents: 5125
diff changeset
   302
      NS_ASSERT (m_peerMeshPointAddress == peerMp);
5688b8da4526 Fixed coding style
Kirill Andreev <andreev@iitp.ru>
parents: 5125
diff changeset
   303
    }
4933
72f0481cfb2d Peer link restructured to support multi-interface
Kirill Andreev <andreev@iitp.ru>
parents: 4920
diff changeset
   304
  m_peerMeshPointAddress = peerMp;
4862
6a14f272a033 PeerLink refactored (use peer-link.h)
Pavel Boyko <boyko@iitp.ru>
parents:
diff changeset
   305
  StateMachine (CNF_RJCT, reason);
6a14f272a033 PeerLink refactored (use peer-link.h)
Pavel Boyko <boyko@iitp.ru>
parents:
diff changeset
   306
}
6a14f272a033 PeerLink refactored (use peer-link.h)
Pavel Boyko <boyko@iitp.ru>
parents:
diff changeset
   307
bool
6a14f272a033 PeerLink refactored (use peer-link.h)
Pavel Boyko <boyko@iitp.ru>
parents:
diff changeset
   308
PeerLink::LinkIsEstab () const
6a14f272a033 PeerLink refactored (use peer-link.h)
Pavel Boyko <boyko@iitp.ru>
parents:
diff changeset
   309
{
6a14f272a033 PeerLink refactored (use peer-link.h)
Pavel Boyko <boyko@iitp.ru>
parents:
diff changeset
   310
  return (m_state == ESTAB);
6a14f272a033 PeerLink refactored (use peer-link.h)
Pavel Boyko <boyko@iitp.ru>
parents:
diff changeset
   311
}
6a14f272a033 PeerLink refactored (use peer-link.h)
Pavel Boyko <boyko@iitp.ru>
parents:
diff changeset
   312
bool
6a14f272a033 PeerLink refactored (use peer-link.h)
Pavel Boyko <boyko@iitp.ru>
parents:
diff changeset
   313
PeerLink::LinkIsIdle () const
6a14f272a033 PeerLink refactored (use peer-link.h)
Pavel Boyko <boyko@iitp.ru>
parents:
diff changeset
   314
{
6a14f272a033 PeerLink refactored (use peer-link.h)
Pavel Boyko <boyko@iitp.ru>
parents:
diff changeset
   315
  return (m_state == IDLE);
6a14f272a033 PeerLink refactored (use peer-link.h)
Pavel Boyko <boyko@iitp.ru>
parents:
diff changeset
   316
}
4866
564372fc5491 First management frame goes through new archotecture
Kirill Andreev <andreev@iitp.ru>
parents: 4864
diff changeset
   317
void
5129
5688b8da4526 Fixed coding style
Kirill Andreev <andreev@iitp.ru>
parents: 5125
diff changeset
   318
PeerLink::SetMacPlugin (Ptr<PeerManagementProtocolMac> plugin)
4866
564372fc5491 First management frame goes through new archotecture
Kirill Andreev <andreev@iitp.ru>
parents: 4864
diff changeset
   319
{
564372fc5491 First management frame goes through new archotecture
Kirill Andreev <andreev@iitp.ru>
parents: 4864
diff changeset
   320
  m_macPlugin = plugin;
564372fc5491 First management frame goes through new archotecture
Kirill Andreev <andreev@iitp.ru>
parents: 4864
diff changeset
   321
}
4862
6a14f272a033 PeerLink refactored (use peer-link.h)
Pavel Boyko <boyko@iitp.ru>
parents:
diff changeset
   322
//-----------------------------------------------------------------------------
6a14f272a033 PeerLink refactored (use peer-link.h)
Pavel Boyko <boyko@iitp.ru>
parents:
diff changeset
   323
// Private
6a14f272a033 PeerLink refactored (use peer-link.h)
Pavel Boyko <boyko@iitp.ru>
parents:
diff changeset
   324
//-----------------------------------------------------------------------------
6a14f272a033 PeerLink refactored (use peer-link.h)
Pavel Boyko <boyko@iitp.ru>
parents:
diff changeset
   325
void
5129
5688b8da4526 Fixed coding style
Kirill Andreev <andreev@iitp.ru>
parents: 5125
diff changeset
   326
PeerLink::StateMachine (PeerEvent event, PmpReasonCode reasoncode)
4862
6a14f272a033 PeerLink refactored (use peer-link.h)
Pavel Boyko <boyko@iitp.ru>
parents:
diff changeset
   327
{
6a14f272a033 PeerLink refactored (use peer-link.h)
Pavel Boyko <boyko@iitp.ru>
parents:
diff changeset
   328
  switch (m_state)
6a14f272a033 PeerLink refactored (use peer-link.h)
Pavel Boyko <boyko@iitp.ru>
parents:
diff changeset
   329
    {
5129
5688b8da4526 Fixed coding style
Kirill Andreev <andreev@iitp.ru>
parents: 5125
diff changeset
   330
  case IDLE:
5688b8da4526 Fixed coding style
Kirill Andreev <andreev@iitp.ru>
parents: 5125
diff changeset
   331
    switch (event)
5688b8da4526 Fixed coding style
Kirill Andreev <andreev@iitp.ru>
parents: 5125
diff changeset
   332
      {
5688b8da4526 Fixed coding style
Kirill Andreev <andreev@iitp.ru>
parents: 5125
diff changeset
   333
    case CNCL:
5688b8da4526 Fixed coding style
Kirill Andreev <andreev@iitp.ru>
parents: 5125
diff changeset
   334
    case CLS_ACPT:
5688b8da4526 Fixed coding style
Kirill Andreev <andreev@iitp.ru>
parents: 5125
diff changeset
   335
      m_state = IDLE;
5688b8da4526 Fixed coding style
Kirill Andreev <andreev@iitp.ru>
parents: 5125
diff changeset
   336
      m_linkStatusCallback (m_interface, m_peerAddress, m_peerMeshPointAddress, IDLE, IDLE);
5688b8da4526 Fixed coding style
Kirill Andreev <andreev@iitp.ru>
parents: 5125
diff changeset
   337
      break;
5688b8da4526 Fixed coding style
Kirill Andreev <andreev@iitp.ru>
parents: 5125
diff changeset
   338
    case REQ_RJCT:
5688b8da4526 Fixed coding style
Kirill Andreev <andreev@iitp.ru>
parents: 5125
diff changeset
   339
      SendPeerLinkClose (reasoncode);
5688b8da4526 Fixed coding style
Kirill Andreev <andreev@iitp.ru>
parents: 5125
diff changeset
   340
      break;
5688b8da4526 Fixed coding style
Kirill Andreev <andreev@iitp.ru>
parents: 5125
diff changeset
   341
    case ACTOPN:
5688b8da4526 Fixed coding style
Kirill Andreev <andreev@iitp.ru>
parents: 5125
diff changeset
   342
      m_state = OPN_SNT;
5688b8da4526 Fixed coding style
Kirill Andreev <andreev@iitp.ru>
parents: 5125
diff changeset
   343
      m_linkStatusCallback (m_interface, m_peerAddress, m_peerMeshPointAddress, IDLE, OPN_SNT);
5688b8da4526 Fixed coding style
Kirill Andreev <andreev@iitp.ru>
parents: 5125
diff changeset
   344
      SendPeerLinkOpen ();
5688b8da4526 Fixed coding style
Kirill Andreev <andreev@iitp.ru>
parents: 5125
diff changeset
   345
      SetRetryTimer ();
5688b8da4526 Fixed coding style
Kirill Andreev <andreev@iitp.ru>
parents: 5125
diff changeset
   346
      break;
5688b8da4526 Fixed coding style
Kirill Andreev <andreev@iitp.ru>
parents: 5125
diff changeset
   347
    case OPN_ACPT:
5688b8da4526 Fixed coding style
Kirill Andreev <andreev@iitp.ru>
parents: 5125
diff changeset
   348
      m_state = OPN_RCVD;
5688b8da4526 Fixed coding style
Kirill Andreev <andreev@iitp.ru>
parents: 5125
diff changeset
   349
      m_linkStatusCallback (m_interface, m_peerAddress, m_peerMeshPointAddress, IDLE, OPN_RCVD);
5688b8da4526 Fixed coding style
Kirill Andreev <andreev@iitp.ru>
parents: 5125
diff changeset
   350
      SendPeerLinkConfirm ();
5688b8da4526 Fixed coding style
Kirill Andreev <andreev@iitp.ru>
parents: 5125
diff changeset
   351
      SendPeerLinkOpen ();
5688b8da4526 Fixed coding style
Kirill Andreev <andreev@iitp.ru>
parents: 5125
diff changeset
   352
      SetRetryTimer ();
5688b8da4526 Fixed coding style
Kirill Andreev <andreev@iitp.ru>
parents: 5125
diff changeset
   353
      break;
5688b8da4526 Fixed coding style
Kirill Andreev <andreev@iitp.ru>
parents: 5125
diff changeset
   354
    default:
5688b8da4526 Fixed coding style
Kirill Andreev <andreev@iitp.ru>
parents: 5125
diff changeset
   355
      //11B.5.3.4 of 802.11s Draft D3.0
5688b8da4526 Fixed coding style
Kirill Andreev <andreev@iitp.ru>
parents: 5125
diff changeset
   356
      //All other events shall be ignored in this state
5688b8da4526 Fixed coding style
Kirill Andreev <andreev@iitp.ru>
parents: 5125
diff changeset
   357
      break;
5688b8da4526 Fixed coding style
Kirill Andreev <andreev@iitp.ru>
parents: 5125
diff changeset
   358
      }
5688b8da4526 Fixed coding style
Kirill Andreev <andreev@iitp.ru>
parents: 5125
diff changeset
   359
    break;
5688b8da4526 Fixed coding style
Kirill Andreev <andreev@iitp.ru>
parents: 5125
diff changeset
   360
  case OPN_SNT:
5688b8da4526 Fixed coding style
Kirill Andreev <andreev@iitp.ru>
parents: 5125
diff changeset
   361
    switch (event)
5688b8da4526 Fixed coding style
Kirill Andreev <andreev@iitp.ru>
parents: 5125
diff changeset
   362
      {
5688b8da4526 Fixed coding style
Kirill Andreev <andreev@iitp.ru>
parents: 5125
diff changeset
   363
    case TOR1:
5688b8da4526 Fixed coding style
Kirill Andreev <andreev@iitp.ru>
parents: 5125
diff changeset
   364
      SendPeerLinkOpen ();
5688b8da4526 Fixed coding style
Kirill Andreev <andreev@iitp.ru>
parents: 5125
diff changeset
   365
      m_retryCounter++;
5688b8da4526 Fixed coding style
Kirill Andreev <andreev@iitp.ru>
parents: 5125
diff changeset
   366
      SetRetryTimer ();
5688b8da4526 Fixed coding style
Kirill Andreev <andreev@iitp.ru>
parents: 5125
diff changeset
   367
      break;
5688b8da4526 Fixed coding style
Kirill Andreev <andreev@iitp.ru>
parents: 5125
diff changeset
   368
    case CNF_ACPT:
5688b8da4526 Fixed coding style
Kirill Andreev <andreev@iitp.ru>
parents: 5125
diff changeset
   369
      m_state = CNF_RCVD;
5688b8da4526 Fixed coding style
Kirill Andreev <andreev@iitp.ru>
parents: 5125
diff changeset
   370
      m_linkStatusCallback (m_interface, m_peerAddress, m_peerMeshPointAddress, OPN_SNT, CNF_RCVD);
5688b8da4526 Fixed coding style
Kirill Andreev <andreev@iitp.ru>
parents: 5125
diff changeset
   371
      ClearRetryTimer ();
5688b8da4526 Fixed coding style
Kirill Andreev <andreev@iitp.ru>
parents: 5125
diff changeset
   372
      SetConfirmTimer ();
5688b8da4526 Fixed coding style
Kirill Andreev <andreev@iitp.ru>
parents: 5125
diff changeset
   373
      break;
5688b8da4526 Fixed coding style
Kirill Andreev <andreev@iitp.ru>
parents: 5125
diff changeset
   374
    case OPN_ACPT:
5688b8da4526 Fixed coding style
Kirill Andreev <andreev@iitp.ru>
parents: 5125
diff changeset
   375
      m_state = OPN_RCVD;
5688b8da4526 Fixed coding style
Kirill Andreev <andreev@iitp.ru>
parents: 5125
diff changeset
   376
      m_linkStatusCallback (m_interface, m_peerAddress, m_peerMeshPointAddress, OPN_SNT, OPN_RCVD);
5688b8da4526 Fixed coding style
Kirill Andreev <andreev@iitp.ru>
parents: 5125
diff changeset
   377
      SendPeerLinkConfirm ();
5688b8da4526 Fixed coding style
Kirill Andreev <andreev@iitp.ru>
parents: 5125
diff changeset
   378
      break;
5688b8da4526 Fixed coding style
Kirill Andreev <andreev@iitp.ru>
parents: 5125
diff changeset
   379
    case CLS_ACPT:
5688b8da4526 Fixed coding style
Kirill Andreev <andreev@iitp.ru>
parents: 5125
diff changeset
   380
      m_state = HOLDING;
5688b8da4526 Fixed coding style
Kirill Andreev <andreev@iitp.ru>
parents: 5125
diff changeset
   381
      m_linkStatusCallback (m_interface, m_peerAddress, m_peerMeshPointAddress, OPN_SNT, HOLDING);
5688b8da4526 Fixed coding style
Kirill Andreev <andreev@iitp.ru>
parents: 5125
diff changeset
   382
      ClearRetryTimer ();
5688b8da4526 Fixed coding style
Kirill Andreev <andreev@iitp.ru>
parents: 5125
diff changeset
   383
      SendPeerLinkClose (REASON11S_MESH_CLOSE_RCVD);
5688b8da4526 Fixed coding style
Kirill Andreev <andreev@iitp.ru>
parents: 5125
diff changeset
   384
      SetHoldingTimer ();
4862
6a14f272a033 PeerLink refactored (use peer-link.h)
Pavel Boyko <boyko@iitp.ru>
parents:
diff changeset
   385
      break;
5129
5688b8da4526 Fixed coding style
Kirill Andreev <andreev@iitp.ru>
parents: 5125
diff changeset
   386
    case OPN_RJCT:
5688b8da4526 Fixed coding style
Kirill Andreev <andreev@iitp.ru>
parents: 5125
diff changeset
   387
    case CNF_RJCT:
5688b8da4526 Fixed coding style
Kirill Andreev <andreev@iitp.ru>
parents: 5125
diff changeset
   388
      m_state = HOLDING;
5688b8da4526 Fixed coding style
Kirill Andreev <andreev@iitp.ru>
parents: 5125
diff changeset
   389
      m_linkStatusCallback (m_interface, m_peerAddress, m_peerMeshPointAddress, OPN_SNT, HOLDING);
5688b8da4526 Fixed coding style
Kirill Andreev <andreev@iitp.ru>
parents: 5125
diff changeset
   390
      ClearRetryTimer ();
5688b8da4526 Fixed coding style
Kirill Andreev <andreev@iitp.ru>
parents: 5125
diff changeset
   391
      SendPeerLinkClose (reasoncode);
5688b8da4526 Fixed coding style
Kirill Andreev <andreev@iitp.ru>
parents: 5125
diff changeset
   392
      SetHoldingTimer ();
5688b8da4526 Fixed coding style
Kirill Andreev <andreev@iitp.ru>
parents: 5125
diff changeset
   393
      break;
5688b8da4526 Fixed coding style
Kirill Andreev <andreev@iitp.ru>
parents: 5125
diff changeset
   394
    case TOR2:
5688b8da4526 Fixed coding style
Kirill Andreev <andreev@iitp.ru>
parents: 5125
diff changeset
   395
      m_state = HOLDING;
5688b8da4526 Fixed coding style
Kirill Andreev <andreev@iitp.ru>
parents: 5125
diff changeset
   396
      m_linkStatusCallback (m_interface, m_peerAddress, m_peerMeshPointAddress, OPN_SNT, HOLDING);
5688b8da4526 Fixed coding style
Kirill Andreev <andreev@iitp.ru>
parents: 5125
diff changeset
   397
      ClearRetryTimer ();
5688b8da4526 Fixed coding style
Kirill Andreev <andreev@iitp.ru>
parents: 5125
diff changeset
   398
      SendPeerLinkClose (REASON11S_MESH_MAX_RETRIES);
5688b8da4526 Fixed coding style
Kirill Andreev <andreev@iitp.ru>
parents: 5125
diff changeset
   399
      SetHoldingTimer ();
5688b8da4526 Fixed coding style
Kirill Andreev <andreev@iitp.ru>
parents: 5125
diff changeset
   400
      break;
5688b8da4526 Fixed coding style
Kirill Andreev <andreev@iitp.ru>
parents: 5125
diff changeset
   401
    case CNCL:
5688b8da4526 Fixed coding style
Kirill Andreev <andreev@iitp.ru>
parents: 5125
diff changeset
   402
      m_state = HOLDING;
5688b8da4526 Fixed coding style
Kirill Andreev <andreev@iitp.ru>
parents: 5125
diff changeset
   403
      m_linkStatusCallback (m_interface, m_peerAddress, m_peerMeshPointAddress, OPN_SNT, HOLDING);
5688b8da4526 Fixed coding style
Kirill Andreev <andreev@iitp.ru>
parents: 5125
diff changeset
   404
      ClearRetryTimer ();
5688b8da4526 Fixed coding style
Kirill Andreev <andreev@iitp.ru>
parents: 5125
diff changeset
   405
      SendPeerLinkClose (REASON11S_PEERING_CANCELLED);
5688b8da4526 Fixed coding style
Kirill Andreev <andreev@iitp.ru>
parents: 5125
diff changeset
   406
      SetHoldingTimer ();
5688b8da4526 Fixed coding style
Kirill Andreev <andreev@iitp.ru>
parents: 5125
diff changeset
   407
      break;
5688b8da4526 Fixed coding style
Kirill Andreev <andreev@iitp.ru>
parents: 5125
diff changeset
   408
    default:
5688b8da4526 Fixed coding style
Kirill Andreev <andreev@iitp.ru>
parents: 5125
diff changeset
   409
      //11B.5.3.5 of 802.11s Draft D3.0
5688b8da4526 Fixed coding style
Kirill Andreev <andreev@iitp.ru>
parents: 5125
diff changeset
   410
      //All other events shall be ignored in this state
5688b8da4526 Fixed coding style
Kirill Andreev <andreev@iitp.ru>
parents: 5125
diff changeset
   411
      break;
5688b8da4526 Fixed coding style
Kirill Andreev <andreev@iitp.ru>
parents: 5125
diff changeset
   412
      }
5688b8da4526 Fixed coding style
Kirill Andreev <andreev@iitp.ru>
parents: 5125
diff changeset
   413
    break;
5688b8da4526 Fixed coding style
Kirill Andreev <andreev@iitp.ru>
parents: 5125
diff changeset
   414
  case CNF_RCVD:
5688b8da4526 Fixed coding style
Kirill Andreev <andreev@iitp.ru>
parents: 5125
diff changeset
   415
    switch (event)
5688b8da4526 Fixed coding style
Kirill Andreev <andreev@iitp.ru>
parents: 5125
diff changeset
   416
      {
5688b8da4526 Fixed coding style
Kirill Andreev <andreev@iitp.ru>
parents: 5125
diff changeset
   417
    case CNF_ACPT:
5688b8da4526 Fixed coding style
Kirill Andreev <andreev@iitp.ru>
parents: 5125
diff changeset
   418
      break;
5688b8da4526 Fixed coding style
Kirill Andreev <andreev@iitp.ru>
parents: 5125
diff changeset
   419
    case OPN_ACPT:
5688b8da4526 Fixed coding style
Kirill Andreev <andreev@iitp.ru>
parents: 5125
diff changeset
   420
      m_state = ESTAB;
5688b8da4526 Fixed coding style
Kirill Andreev <andreev@iitp.ru>
parents: 5125
diff changeset
   421
      m_linkStatusCallback (m_interface, m_peerAddress, m_peerMeshPointAddress, CNF_RCVD, ESTAB);
5688b8da4526 Fixed coding style
Kirill Andreev <andreev@iitp.ru>
parents: 5125
diff changeset
   422
      ClearConfirmTimer ();
5688b8da4526 Fixed coding style
Kirill Andreev <andreev@iitp.ru>
parents: 5125
diff changeset
   423
      SendPeerLinkConfirm ();
5688b8da4526 Fixed coding style
Kirill Andreev <andreev@iitp.ru>
parents: 5125
diff changeset
   424
      NS_ASSERT (m_peerMeshPointAddress != Mac48Address::GetBroadcast ());
5688b8da4526 Fixed coding style
Kirill Andreev <andreev@iitp.ru>
parents: 5125
diff changeset
   425
      break;
5688b8da4526 Fixed coding style
Kirill Andreev <andreev@iitp.ru>
parents: 5125
diff changeset
   426
    case CLS_ACPT:
5688b8da4526 Fixed coding style
Kirill Andreev <andreev@iitp.ru>
parents: 5125
diff changeset
   427
      m_state = HOLDING;
5688b8da4526 Fixed coding style
Kirill Andreev <andreev@iitp.ru>
parents: 5125
diff changeset
   428
      m_linkStatusCallback (m_interface, m_peerAddress, m_peerMeshPointAddress, CNF_RCVD, HOLDING);
5688b8da4526 Fixed coding style
Kirill Andreev <andreev@iitp.ru>
parents: 5125
diff changeset
   429
      ClearConfirmTimer ();
5688b8da4526 Fixed coding style
Kirill Andreev <andreev@iitp.ru>
parents: 5125
diff changeset
   430
      SendPeerLinkClose (REASON11S_MESH_CLOSE_RCVD);
5688b8da4526 Fixed coding style
Kirill Andreev <andreev@iitp.ru>
parents: 5125
diff changeset
   431
      SetHoldingTimer ();
5688b8da4526 Fixed coding style
Kirill Andreev <andreev@iitp.ru>
parents: 5125
diff changeset
   432
      break;
5688b8da4526 Fixed coding style
Kirill Andreev <andreev@iitp.ru>
parents: 5125
diff changeset
   433
    case CNF_RJCT:
5688b8da4526 Fixed coding style
Kirill Andreev <andreev@iitp.ru>
parents: 5125
diff changeset
   434
    case OPN_RJCT:
5688b8da4526 Fixed coding style
Kirill Andreev <andreev@iitp.ru>
parents: 5125
diff changeset
   435
      m_state = HOLDING;
5688b8da4526 Fixed coding style
Kirill Andreev <andreev@iitp.ru>
parents: 5125
diff changeset
   436
      m_linkStatusCallback (m_interface, m_peerAddress, m_peerMeshPointAddress, CNF_RCVD, HOLDING);
5688b8da4526 Fixed coding style
Kirill Andreev <andreev@iitp.ru>
parents: 5125
diff changeset
   437
      ClearConfirmTimer ();
5688b8da4526 Fixed coding style
Kirill Andreev <andreev@iitp.ru>
parents: 5125
diff changeset
   438
      SendPeerLinkClose (reasoncode);
5688b8da4526 Fixed coding style
Kirill Andreev <andreev@iitp.ru>
parents: 5125
diff changeset
   439
      SetHoldingTimer ();
5688b8da4526 Fixed coding style
Kirill Andreev <andreev@iitp.ru>
parents: 5125
diff changeset
   440
      break;
5688b8da4526 Fixed coding style
Kirill Andreev <andreev@iitp.ru>
parents: 5125
diff changeset
   441
    case CNCL:
5688b8da4526 Fixed coding style
Kirill Andreev <andreev@iitp.ru>
parents: 5125
diff changeset
   442
      m_state = HOLDING;
5688b8da4526 Fixed coding style
Kirill Andreev <andreev@iitp.ru>
parents: 5125
diff changeset
   443
      m_linkStatusCallback (m_interface, m_peerAddress, m_peerMeshPointAddress, CNF_RCVD, HOLDING);
5688b8da4526 Fixed coding style
Kirill Andreev <andreev@iitp.ru>
parents: 5125
diff changeset
   444
      ClearConfirmTimer ();
5688b8da4526 Fixed coding style
Kirill Andreev <andreev@iitp.ru>
parents: 5125
diff changeset
   445
      SendPeerLinkClose (REASON11S_PEERING_CANCELLED);
5688b8da4526 Fixed coding style
Kirill Andreev <andreev@iitp.ru>
parents: 5125
diff changeset
   446
      SetHoldingTimer ();
4862
6a14f272a033 PeerLink refactored (use peer-link.h)
Pavel Boyko <boyko@iitp.ru>
parents:
diff changeset
   447
      break;
5129
5688b8da4526 Fixed coding style
Kirill Andreev <andreev@iitp.ru>
parents: 5125
diff changeset
   448
    case TOC:
5688b8da4526 Fixed coding style
Kirill Andreev <andreev@iitp.ru>
parents: 5125
diff changeset
   449
      m_state = HOLDING;
5688b8da4526 Fixed coding style
Kirill Andreev <andreev@iitp.ru>
parents: 5125
diff changeset
   450
      m_linkStatusCallback (m_interface, m_peerAddress, m_peerMeshPointAddress, CNF_RCVD, HOLDING);
5688b8da4526 Fixed coding style
Kirill Andreev <andreev@iitp.ru>
parents: 5125
diff changeset
   451
      SendPeerLinkClose (REASON11S_MESH_CONFIRM_TIMEOUT);
5688b8da4526 Fixed coding style
Kirill Andreev <andreev@iitp.ru>
parents: 5125
diff changeset
   452
      SetHoldingTimer ();
5688b8da4526 Fixed coding style
Kirill Andreev <andreev@iitp.ru>
parents: 5125
diff changeset
   453
      break;
5688b8da4526 Fixed coding style
Kirill Andreev <andreev@iitp.ru>
parents: 5125
diff changeset
   454
    default:
5688b8da4526 Fixed coding style
Kirill Andreev <andreev@iitp.ru>
parents: 5125
diff changeset
   455
      //11B.5.3.6 of 802.11s Draft D3.0
5688b8da4526 Fixed coding style
Kirill Andreev <andreev@iitp.ru>
parents: 5125
diff changeset
   456
      //All other events shall be ignored in this state
5688b8da4526 Fixed coding style
Kirill Andreev <andreev@iitp.ru>
parents: 5125
diff changeset
   457
      break;
5688b8da4526 Fixed coding style
Kirill Andreev <andreev@iitp.ru>
parents: 5125
diff changeset
   458
      }
5688b8da4526 Fixed coding style
Kirill Andreev <andreev@iitp.ru>
parents: 5125
diff changeset
   459
    break;
5688b8da4526 Fixed coding style
Kirill Andreev <andreev@iitp.ru>
parents: 5125
diff changeset
   460
  case OPN_RCVD:
5688b8da4526 Fixed coding style
Kirill Andreev <andreev@iitp.ru>
parents: 5125
diff changeset
   461
    switch (event)
5688b8da4526 Fixed coding style
Kirill Andreev <andreev@iitp.ru>
parents: 5125
diff changeset
   462
      {
5688b8da4526 Fixed coding style
Kirill Andreev <andreev@iitp.ru>
parents: 5125
diff changeset
   463
    case TOR1:
5688b8da4526 Fixed coding style
Kirill Andreev <andreev@iitp.ru>
parents: 5125
diff changeset
   464
      SendPeerLinkOpen ();
5688b8da4526 Fixed coding style
Kirill Andreev <andreev@iitp.ru>
parents: 5125
diff changeset
   465
      m_retryCounter++;
5688b8da4526 Fixed coding style
Kirill Andreev <andreev@iitp.ru>
parents: 5125
diff changeset
   466
      SetRetryTimer ();
5688b8da4526 Fixed coding style
Kirill Andreev <andreev@iitp.ru>
parents: 5125
diff changeset
   467
      break;
5688b8da4526 Fixed coding style
Kirill Andreev <andreev@iitp.ru>
parents: 5125
diff changeset
   468
    case CNF_ACPT:
5688b8da4526 Fixed coding style
Kirill Andreev <andreev@iitp.ru>
parents: 5125
diff changeset
   469
      m_state = ESTAB;
5688b8da4526 Fixed coding style
Kirill Andreev <andreev@iitp.ru>
parents: 5125
diff changeset
   470
      m_linkStatusCallback (m_interface, m_peerAddress, m_peerMeshPointAddress, OPN_RCVD, ESTAB);
5688b8da4526 Fixed coding style
Kirill Andreev <andreev@iitp.ru>
parents: 5125
diff changeset
   471
      ClearRetryTimer ();
5688b8da4526 Fixed coding style
Kirill Andreev <andreev@iitp.ru>
parents: 5125
diff changeset
   472
      NS_ASSERT (m_peerMeshPointAddress != Mac48Address::GetBroadcast ());
5688b8da4526 Fixed coding style
Kirill Andreev <andreev@iitp.ru>
parents: 5125
diff changeset
   473
      break;
5688b8da4526 Fixed coding style
Kirill Andreev <andreev@iitp.ru>
parents: 5125
diff changeset
   474
    case CLS_ACPT:
5688b8da4526 Fixed coding style
Kirill Andreev <andreev@iitp.ru>
parents: 5125
diff changeset
   475
      m_state = HOLDING;
5688b8da4526 Fixed coding style
Kirill Andreev <andreev@iitp.ru>
parents: 5125
diff changeset
   476
      m_linkStatusCallback (m_interface, m_peerAddress, m_peerMeshPointAddress, OPN_RCVD, HOLDING);
5688b8da4526 Fixed coding style
Kirill Andreev <andreev@iitp.ru>
parents: 5125
diff changeset
   477
      ClearRetryTimer ();
5688b8da4526 Fixed coding style
Kirill Andreev <andreev@iitp.ru>
parents: 5125
diff changeset
   478
      SendPeerLinkClose (REASON11S_MESH_CLOSE_RCVD);
5688b8da4526 Fixed coding style
Kirill Andreev <andreev@iitp.ru>
parents: 5125
diff changeset
   479
      SetHoldingTimer ();
5688b8da4526 Fixed coding style
Kirill Andreev <andreev@iitp.ru>
parents: 5125
diff changeset
   480
      break;
5688b8da4526 Fixed coding style
Kirill Andreev <andreev@iitp.ru>
parents: 5125
diff changeset
   481
    case OPN_RJCT:
5688b8da4526 Fixed coding style
Kirill Andreev <andreev@iitp.ru>
parents: 5125
diff changeset
   482
    case CNF_RJCT:
5688b8da4526 Fixed coding style
Kirill Andreev <andreev@iitp.ru>
parents: 5125
diff changeset
   483
      m_state = HOLDING;
5688b8da4526 Fixed coding style
Kirill Andreev <andreev@iitp.ru>
parents: 5125
diff changeset
   484
      m_linkStatusCallback (m_interface, m_peerAddress, m_peerMeshPointAddress, OPN_RCVD, HOLDING);
5688b8da4526 Fixed coding style
Kirill Andreev <andreev@iitp.ru>
parents: 5125
diff changeset
   485
      ClearRetryTimer ();
5688b8da4526 Fixed coding style
Kirill Andreev <andreev@iitp.ru>
parents: 5125
diff changeset
   486
      SendPeerLinkClose (reasoncode);
5688b8da4526 Fixed coding style
Kirill Andreev <andreev@iitp.ru>
parents: 5125
diff changeset
   487
      SetHoldingTimer ();
5688b8da4526 Fixed coding style
Kirill Andreev <andreev@iitp.ru>
parents: 5125
diff changeset
   488
      break;
5688b8da4526 Fixed coding style
Kirill Andreev <andreev@iitp.ru>
parents: 5125
diff changeset
   489
    case TOR2:
5688b8da4526 Fixed coding style
Kirill Andreev <andreev@iitp.ru>
parents: 5125
diff changeset
   490
      m_state = HOLDING;
5688b8da4526 Fixed coding style
Kirill Andreev <andreev@iitp.ru>
parents: 5125
diff changeset
   491
      m_linkStatusCallback (m_interface, m_peerAddress, m_peerMeshPointAddress, OPN_RCVD, HOLDING);
5688b8da4526 Fixed coding style
Kirill Andreev <andreev@iitp.ru>
parents: 5125
diff changeset
   492
      ClearRetryTimer ();
5688b8da4526 Fixed coding style
Kirill Andreev <andreev@iitp.ru>
parents: 5125
diff changeset
   493
      SendPeerLinkClose (REASON11S_MESH_MAX_RETRIES);
5688b8da4526 Fixed coding style
Kirill Andreev <andreev@iitp.ru>
parents: 5125
diff changeset
   494
      SetHoldingTimer ();
5688b8da4526 Fixed coding style
Kirill Andreev <andreev@iitp.ru>
parents: 5125
diff changeset
   495
      break;
5688b8da4526 Fixed coding style
Kirill Andreev <andreev@iitp.ru>
parents: 5125
diff changeset
   496
    case CNCL:
5688b8da4526 Fixed coding style
Kirill Andreev <andreev@iitp.ru>
parents: 5125
diff changeset
   497
      m_state = HOLDING;
5688b8da4526 Fixed coding style
Kirill Andreev <andreev@iitp.ru>
parents: 5125
diff changeset
   498
      m_linkStatusCallback (m_interface, m_peerAddress, m_peerMeshPointAddress, OPN_RCVD, HOLDING);
5688b8da4526 Fixed coding style
Kirill Andreev <andreev@iitp.ru>
parents: 5125
diff changeset
   499
      ClearRetryTimer ();
5688b8da4526 Fixed coding style
Kirill Andreev <andreev@iitp.ru>
parents: 5125
diff changeset
   500
      SendPeerLinkClose (REASON11S_PEERING_CANCELLED);
5688b8da4526 Fixed coding style
Kirill Andreev <andreev@iitp.ru>
parents: 5125
diff changeset
   501
      SetHoldingTimer ();
5688b8da4526 Fixed coding style
Kirill Andreev <andreev@iitp.ru>
parents: 5125
diff changeset
   502
      break;
5688b8da4526 Fixed coding style
Kirill Andreev <andreev@iitp.ru>
parents: 5125
diff changeset
   503
    default:
5688b8da4526 Fixed coding style
Kirill Andreev <andreev@iitp.ru>
parents: 5125
diff changeset
   504
      //11B.5.3.7 of 802.11s Draft D3.0
5688b8da4526 Fixed coding style
Kirill Andreev <andreev@iitp.ru>
parents: 5125
diff changeset
   505
      //All other events shall be ignored in this state
4862
6a14f272a033 PeerLink refactored (use peer-link.h)
Pavel Boyko <boyko@iitp.ru>
parents:
diff changeset
   506
      break;
5129
5688b8da4526 Fixed coding style
Kirill Andreev <andreev@iitp.ru>
parents: 5125
diff changeset
   507
      }
5688b8da4526 Fixed coding style
Kirill Andreev <andreev@iitp.ru>
parents: 5125
diff changeset
   508
    break;
5688b8da4526 Fixed coding style
Kirill Andreev <andreev@iitp.ru>
parents: 5125
diff changeset
   509
  case ESTAB:
5688b8da4526 Fixed coding style
Kirill Andreev <andreev@iitp.ru>
parents: 5125
diff changeset
   510
    switch (event)
5688b8da4526 Fixed coding style
Kirill Andreev <andreev@iitp.ru>
parents: 5125
diff changeset
   511
      {
5688b8da4526 Fixed coding style
Kirill Andreev <andreev@iitp.ru>
parents: 5125
diff changeset
   512
    case OPN_ACPT:
5688b8da4526 Fixed coding style
Kirill Andreev <andreev@iitp.ru>
parents: 5125
diff changeset
   513
      SendPeerLinkConfirm ();
5688b8da4526 Fixed coding style
Kirill Andreev <andreev@iitp.ru>
parents: 5125
diff changeset
   514
      break;
5688b8da4526 Fixed coding style
Kirill Andreev <andreev@iitp.ru>
parents: 5125
diff changeset
   515
    case CLS_ACPT:
5688b8da4526 Fixed coding style
Kirill Andreev <andreev@iitp.ru>
parents: 5125
diff changeset
   516
      m_state = HOLDING;
5688b8da4526 Fixed coding style
Kirill Andreev <andreev@iitp.ru>
parents: 5125
diff changeset
   517
      m_linkStatusCallback (m_interface, m_peerAddress, m_peerMeshPointAddress, ESTAB, HOLDING);
5688b8da4526 Fixed coding style
Kirill Andreev <andreev@iitp.ru>
parents: 5125
diff changeset
   518
      SendPeerLinkClose (REASON11S_MESH_CLOSE_RCVD);
5688b8da4526 Fixed coding style
Kirill Andreev <andreev@iitp.ru>
parents: 5125
diff changeset
   519
      SetHoldingTimer ();
5688b8da4526 Fixed coding style
Kirill Andreev <andreev@iitp.ru>
parents: 5125
diff changeset
   520
      break;
5688b8da4526 Fixed coding style
Kirill Andreev <andreev@iitp.ru>
parents: 5125
diff changeset
   521
    case OPN_RJCT:
5688b8da4526 Fixed coding style
Kirill Andreev <andreev@iitp.ru>
parents: 5125
diff changeset
   522
    case CNF_RJCT:
5688b8da4526 Fixed coding style
Kirill Andreev <andreev@iitp.ru>
parents: 5125
diff changeset
   523
      m_state = HOLDING;
5688b8da4526 Fixed coding style
Kirill Andreev <andreev@iitp.ru>
parents: 5125
diff changeset
   524
      m_linkStatusCallback (m_interface, m_peerAddress, m_peerMeshPointAddress, ESTAB, HOLDING);
5688b8da4526 Fixed coding style
Kirill Andreev <andreev@iitp.ru>
parents: 5125
diff changeset
   525
      ClearRetryTimer ();
5688b8da4526 Fixed coding style
Kirill Andreev <andreev@iitp.ru>
parents: 5125
diff changeset
   526
      SendPeerLinkClose (reasoncode);
5688b8da4526 Fixed coding style
Kirill Andreev <andreev@iitp.ru>
parents: 5125
diff changeset
   527
      SetHoldingTimer ();
5688b8da4526 Fixed coding style
Kirill Andreev <andreev@iitp.ru>
parents: 5125
diff changeset
   528
      break;
5688b8da4526 Fixed coding style
Kirill Andreev <andreev@iitp.ru>
parents: 5125
diff changeset
   529
    case CNCL:
5688b8da4526 Fixed coding style
Kirill Andreev <andreev@iitp.ru>
parents: 5125
diff changeset
   530
      m_state = HOLDING;
5688b8da4526 Fixed coding style
Kirill Andreev <andreev@iitp.ru>
parents: 5125
diff changeset
   531
      m_linkStatusCallback (m_interface, m_peerAddress, m_peerMeshPointAddress, ESTAB, HOLDING);
5688b8da4526 Fixed coding style
Kirill Andreev <andreev@iitp.ru>
parents: 5125
diff changeset
   532
      SendPeerLinkClose (REASON11S_PEERING_CANCELLED);
5688b8da4526 Fixed coding style
Kirill Andreev <andreev@iitp.ru>
parents: 5125
diff changeset
   533
      SetHoldingTimer ();
4862
6a14f272a033 PeerLink refactored (use peer-link.h)
Pavel Boyko <boyko@iitp.ru>
parents:
diff changeset
   534
      break;
5129
5688b8da4526 Fixed coding style
Kirill Andreev <andreev@iitp.ru>
parents: 5125
diff changeset
   535
    default:
5688b8da4526 Fixed coding style
Kirill Andreev <andreev@iitp.ru>
parents: 5125
diff changeset
   536
      //11B.5.3.8 of 802.11s Draft D3.0
5688b8da4526 Fixed coding style
Kirill Andreev <andreev@iitp.ru>
parents: 5125
diff changeset
   537
      //All other events shall be ignored in this state
5688b8da4526 Fixed coding style
Kirill Andreev <andreev@iitp.ru>
parents: 5125
diff changeset
   538
      break;
5688b8da4526 Fixed coding style
Kirill Andreev <andreev@iitp.ru>
parents: 5125
diff changeset
   539
      }
5688b8da4526 Fixed coding style
Kirill Andreev <andreev@iitp.ru>
parents: 5125
diff changeset
   540
    break;
5688b8da4526 Fixed coding style
Kirill Andreev <andreev@iitp.ru>
parents: 5125
diff changeset
   541
  case HOLDING:
5688b8da4526 Fixed coding style
Kirill Andreev <andreev@iitp.ru>
parents: 5125
diff changeset
   542
    switch (event)
5688b8da4526 Fixed coding style
Kirill Andreev <andreev@iitp.ru>
parents: 5125
diff changeset
   543
      {
5688b8da4526 Fixed coding style
Kirill Andreev <andreev@iitp.ru>
parents: 5125
diff changeset
   544
    case CLS_ACPT:
5688b8da4526 Fixed coding style
Kirill Andreev <andreev@iitp.ru>
parents: 5125
diff changeset
   545
      ClearHoldingTimer ();
5688b8da4526 Fixed coding style
Kirill Andreev <andreev@iitp.ru>
parents: 5125
diff changeset
   546
    case TOH:
5688b8da4526 Fixed coding style
Kirill Andreev <andreev@iitp.ru>
parents: 5125
diff changeset
   547
      m_state = IDLE;
5688b8da4526 Fixed coding style
Kirill Andreev <andreev@iitp.ru>
parents: 5125
diff changeset
   548
      m_linkStatusCallback (m_interface, m_peerAddress, m_peerMeshPointAddress, HOLDING, IDLE);
4862
6a14f272a033 PeerLink refactored (use peer-link.h)
Pavel Boyko <boyko@iitp.ru>
parents:
diff changeset
   549
      break;
5129
5688b8da4526 Fixed coding style
Kirill Andreev <andreev@iitp.ru>
parents: 5125
diff changeset
   550
    case OPN_ACPT:
5688b8da4526 Fixed coding style
Kirill Andreev <andreev@iitp.ru>
parents: 5125
diff changeset
   551
    case CNF_ACPT:
5688b8da4526 Fixed coding style
Kirill Andreev <andreev@iitp.ru>
parents: 5125
diff changeset
   552
      m_state = HOLDING;
5688b8da4526 Fixed coding style
Kirill Andreev <andreev@iitp.ru>
parents: 5125
diff changeset
   553
      m_linkStatusCallback (m_interface, m_peerAddress, m_peerMeshPointAddress, HOLDING, HOLDING);
5688b8da4526 Fixed coding style
Kirill Andreev <andreev@iitp.ru>
parents: 5125
diff changeset
   554
      // reason not spec in D2.0
5688b8da4526 Fixed coding style
Kirill Andreev <andreev@iitp.ru>
parents: 5125
diff changeset
   555
      SendPeerLinkClose (REASON11S_PEERING_CANCELLED);
4862
6a14f272a033 PeerLink refactored (use peer-link.h)
Pavel Boyko <boyko@iitp.ru>
parents:
diff changeset
   556
      break;
5129
5688b8da4526 Fixed coding style
Kirill Andreev <andreev@iitp.ru>
parents: 5125
diff changeset
   557
    case OPN_RJCT:
5688b8da4526 Fixed coding style
Kirill Andreev <andreev@iitp.ru>
parents: 5125
diff changeset
   558
    case CNF_RJCT:
5688b8da4526 Fixed coding style
Kirill Andreev <andreev@iitp.ru>
parents: 5125
diff changeset
   559
      m_state = HOLDING;
5688b8da4526 Fixed coding style
Kirill Andreev <andreev@iitp.ru>
parents: 5125
diff changeset
   560
      m_linkStatusCallback (m_interface, m_peerAddress, m_peerMeshPointAddress, HOLDING, HOLDING);
5688b8da4526 Fixed coding style
Kirill Andreev <andreev@iitp.ru>
parents: 5125
diff changeset
   561
      SendPeerLinkClose (reasoncode);
5688b8da4526 Fixed coding style
Kirill Andreev <andreev@iitp.ru>
parents: 5125
diff changeset
   562
      break;
5688b8da4526 Fixed coding style
Kirill Andreev <andreev@iitp.ru>
parents: 5125
diff changeset
   563
    default:
5688b8da4526 Fixed coding style
Kirill Andreev <andreev@iitp.ru>
parents: 5125
diff changeset
   564
      //11B.5.3.9 of 802.11s Draft D3.0
5688b8da4526 Fixed coding style
Kirill Andreev <andreev@iitp.ru>
parents: 5125
diff changeset
   565
      //All other events shall be ignored in this state
5688b8da4526 Fixed coding style
Kirill Andreev <andreev@iitp.ru>
parents: 5125
diff changeset
   566
      break;
5688b8da4526 Fixed coding style
Kirill Andreev <andreev@iitp.ru>
parents: 5125
diff changeset
   567
      }
5688b8da4526 Fixed coding style
Kirill Andreev <andreev@iitp.ru>
parents: 5125
diff changeset
   568
    break;
4862
6a14f272a033 PeerLink refactored (use peer-link.h)
Pavel Boyko <boyko@iitp.ru>
parents:
diff changeset
   569
    }
6a14f272a033 PeerLink refactored (use peer-link.h)
Pavel Boyko <boyko@iitp.ru>
parents:
diff changeset
   570
}
4933
72f0481cfb2d Peer link restructured to support multi-interface
Kirill Andreev <andreev@iitp.ru>
parents: 4920
diff changeset
   571
void
72f0481cfb2d Peer link restructured to support multi-interface
Kirill Andreev <andreev@iitp.ru>
parents: 4920
diff changeset
   572
PeerLink::ClearRetryTimer ()
4862
6a14f272a033 PeerLink refactored (use peer-link.h)
Pavel Boyko <boyko@iitp.ru>
parents:
diff changeset
   573
{
6a14f272a033 PeerLink refactored (use peer-link.h)
Pavel Boyko <boyko@iitp.ru>
parents:
diff changeset
   574
  m_retryTimer.Cancel ();
6a14f272a033 PeerLink refactored (use peer-link.h)
Pavel Boyko <boyko@iitp.ru>
parents:
diff changeset
   575
}
4933
72f0481cfb2d Peer link restructured to support multi-interface
Kirill Andreev <andreev@iitp.ru>
parents: 4920
diff changeset
   576
void
72f0481cfb2d Peer link restructured to support multi-interface
Kirill Andreev <andreev@iitp.ru>
parents: 4920
diff changeset
   577
PeerLink::ClearConfirmTimer ()
4862
6a14f272a033 PeerLink refactored (use peer-link.h)
Pavel Boyko <boyko@iitp.ru>
parents:
diff changeset
   578
{
6a14f272a033 PeerLink refactored (use peer-link.h)
Pavel Boyko <boyko@iitp.ru>
parents:
diff changeset
   579
  m_confirmTimer.Cancel ();
6a14f272a033 PeerLink refactored (use peer-link.h)
Pavel Boyko <boyko@iitp.ru>
parents:
diff changeset
   580
}
4933
72f0481cfb2d Peer link restructured to support multi-interface
Kirill Andreev <andreev@iitp.ru>
parents: 4920
diff changeset
   581
void
72f0481cfb2d Peer link restructured to support multi-interface
Kirill Andreev <andreev@iitp.ru>
parents: 4920
diff changeset
   582
PeerLink::ClearHoldingTimer ()
4862
6a14f272a033 PeerLink refactored (use peer-link.h)
Pavel Boyko <boyko@iitp.ru>
parents:
diff changeset
   583
{
6a14f272a033 PeerLink refactored (use peer-link.h)
Pavel Boyko <boyko@iitp.ru>
parents:
diff changeset
   584
  m_holdingTimer.Cancel ();
6a14f272a033 PeerLink refactored (use peer-link.h)
Pavel Boyko <boyko@iitp.ru>
parents:
diff changeset
   585
}
4933
72f0481cfb2d Peer link restructured to support multi-interface
Kirill Andreev <andreev@iitp.ru>
parents: 4920
diff changeset
   586
void
72f0481cfb2d Peer link restructured to support multi-interface
Kirill Andreev <andreev@iitp.ru>
parents: 4920
diff changeset
   587
PeerLink::SendPeerLinkClose (PmpReasonCode reasoncode)
4862
6a14f272a033 PeerLink refactored (use peer-link.h)
Pavel Boyko <boyko@iitp.ru>
parents:
diff changeset
   588
{
4876
d78f1b978dac Rstructured file names: IeDot11s* no is Ie, because it is in namespace dot11s
Kirill Andreev <andreev@iitp.ru>
parents: 4873
diff changeset
   589
  IePeerManagement peerElement;
4862
6a14f272a033 PeerLink refactored (use peer-link.h)
Pavel Boyko <boyko@iitp.ru>
parents:
diff changeset
   590
  peerElement.SetPeerClose (m_localLinkId, m_peerLinkId, reasoncode);
5129
5688b8da4526 Fixed coding style
Kirill Andreev <andreev@iitp.ru>
parents: 5125
diff changeset
   591
  m_macPlugin->SendPeerLinkManagementFrame (m_peerAddress, m_peerMeshPointAddress, m_assocId, peerElement,
5688b8da4526 Fixed coding style
Kirill Andreev <andreev@iitp.ru>
parents: 5125
diff changeset
   592
      m_configuration);
4862
6a14f272a033 PeerLink refactored (use peer-link.h)
Pavel Boyko <boyko@iitp.ru>
parents:
diff changeset
   593
}
4933
72f0481cfb2d Peer link restructured to support multi-interface
Kirill Andreev <andreev@iitp.ru>
parents: 4920
diff changeset
   594
void
72f0481cfb2d Peer link restructured to support multi-interface
Kirill Andreev <andreev@iitp.ru>
parents: 4920
diff changeset
   595
PeerLink::SendPeerLinkOpen ()
4862
6a14f272a033 PeerLink refactored (use peer-link.h)
Pavel Boyko <boyko@iitp.ru>
parents:
diff changeset
   596
{
4876
d78f1b978dac Rstructured file names: IeDot11s* no is Ie, because it is in namespace dot11s
Kirill Andreev <andreev@iitp.ru>
parents: 4873
diff changeset
   597
  IePeerManagement peerElement;
4862
6a14f272a033 PeerLink refactored (use peer-link.h)
Pavel Boyko <boyko@iitp.ru>
parents:
diff changeset
   598
  peerElement.SetPeerOpen (m_localLinkId);
5066
94d5c01b1534 Fixed tests, removes NS_ASSERT (false)
Kirill Andreev <andreev@iitp.ru>
parents: 5065
diff changeset
   599
  NS_ASSERT (m_macPlugin != 0);
5129
5688b8da4526 Fixed coding style
Kirill Andreev <andreev@iitp.ru>
parents: 5125
diff changeset
   600
  m_macPlugin->SendPeerLinkManagementFrame (m_peerAddress, m_peerMeshPointAddress, m_assocId, peerElement,
5688b8da4526 Fixed coding style
Kirill Andreev <andreev@iitp.ru>
parents: 5125
diff changeset
   601
      m_configuration);
4862
6a14f272a033 PeerLink refactored (use peer-link.h)
Pavel Boyko <boyko@iitp.ru>
parents:
diff changeset
   602
}
4933
72f0481cfb2d Peer link restructured to support multi-interface
Kirill Andreev <andreev@iitp.ru>
parents: 4920
diff changeset
   603
void
72f0481cfb2d Peer link restructured to support multi-interface
Kirill Andreev <andreev@iitp.ru>
parents: 4920
diff changeset
   604
PeerLink::SendPeerLinkConfirm ()
4862
6a14f272a033 PeerLink refactored (use peer-link.h)
Pavel Boyko <boyko@iitp.ru>
parents:
diff changeset
   605
{
4876
d78f1b978dac Rstructured file names: IeDot11s* no is Ie, because it is in namespace dot11s
Kirill Andreev <andreev@iitp.ru>
parents: 4873
diff changeset
   606
  IePeerManagement peerElement;
4862
6a14f272a033 PeerLink refactored (use peer-link.h)
Pavel Boyko <boyko@iitp.ru>
parents:
diff changeset
   607
  peerElement.SetPeerConfirm (m_localLinkId, m_peerLinkId);
5129
5688b8da4526 Fixed coding style
Kirill Andreev <andreev@iitp.ru>
parents: 5125
diff changeset
   608
  m_macPlugin->SendPeerLinkManagementFrame (m_peerAddress, m_peerMeshPointAddress, m_assocId, peerElement,
5688b8da4526 Fixed coding style
Kirill Andreev <andreev@iitp.ru>
parents: 5125
diff changeset
   609
      m_configuration);
4862
6a14f272a033 PeerLink refactored (use peer-link.h)
Pavel Boyko <boyko@iitp.ru>
parents:
diff changeset
   610
}
4933
72f0481cfb2d Peer link restructured to support multi-interface
Kirill Andreev <andreev@iitp.ru>
parents: 4920
diff changeset
   611
void
72f0481cfb2d Peer link restructured to support multi-interface
Kirill Andreev <andreev@iitp.ru>
parents: 4920
diff changeset
   612
PeerLink::SetHoldingTimer ()
4862
6a14f272a033 PeerLink refactored (use peer-link.h)
Pavel Boyko <boyko@iitp.ru>
parents:
diff changeset
   613
{
5129
5688b8da4526 Fixed coding style
Kirill Andreev <andreev@iitp.ru>
parents: 5125
diff changeset
   614
  NS_ASSERT (m_dot11MeshHoldingTimeout.GetMicroSeconds () != 0);
4892
cdd13648776b Removed dot11s-parameters and they are made as attributes
Kirill Andreev <andreev@iitp.ru>
parents: 4887
diff changeset
   615
  m_holdingTimer = Simulator::Schedule (m_dot11MeshHoldingTimeout, &PeerLink::HoldingTimeout, this);
4862
6a14f272a033 PeerLink refactored (use peer-link.h)
Pavel Boyko <boyko@iitp.ru>
parents:
diff changeset
   616
}
4933
72f0481cfb2d Peer link restructured to support multi-interface
Kirill Andreev <andreev@iitp.ru>
parents: 4920
diff changeset
   617
void
72f0481cfb2d Peer link restructured to support multi-interface
Kirill Andreev <andreev@iitp.ru>
parents: 4920
diff changeset
   618
PeerLink::HoldingTimeout ()
4862
6a14f272a033 PeerLink refactored (use peer-link.h)
Pavel Boyko <boyko@iitp.ru>
parents:
diff changeset
   619
{
6a14f272a033 PeerLink refactored (use peer-link.h)
Pavel Boyko <boyko@iitp.ru>
parents:
diff changeset
   620
  StateMachine (TOH);
6a14f272a033 PeerLink refactored (use peer-link.h)
Pavel Boyko <boyko@iitp.ru>
parents:
diff changeset
   621
}
4933
72f0481cfb2d Peer link restructured to support multi-interface
Kirill Andreev <andreev@iitp.ru>
parents: 4920
diff changeset
   622
void
72f0481cfb2d Peer link restructured to support multi-interface
Kirill Andreev <andreev@iitp.ru>
parents: 4920
diff changeset
   623
PeerLink::SetRetryTimer ()
4862
6a14f272a033 PeerLink refactored (use peer-link.h)
Pavel Boyko <boyko@iitp.ru>
parents:
diff changeset
   624
{
5129
5688b8da4526 Fixed coding style
Kirill Andreev <andreev@iitp.ru>
parents: 5125
diff changeset
   625
  NS_ASSERT (m_dot11MeshRetryTimeout.GetMicroSeconds () != 0);
4892
cdd13648776b Removed dot11s-parameters and they are made as attributes
Kirill Andreev <andreev@iitp.ru>
parents: 4887
diff changeset
   626
  m_retryTimer = Simulator::Schedule (m_dot11MeshRetryTimeout, &PeerLink::RetryTimeout, this);
4862
6a14f272a033 PeerLink refactored (use peer-link.h)
Pavel Boyko <boyko@iitp.ru>
parents:
diff changeset
   627
}
4933
72f0481cfb2d Peer link restructured to support multi-interface
Kirill Andreev <andreev@iitp.ru>
parents: 4920
diff changeset
   628
void
72f0481cfb2d Peer link restructured to support multi-interface
Kirill Andreev <andreev@iitp.ru>
parents: 4920
diff changeset
   629
PeerLink::RetryTimeout ()
4862
6a14f272a033 PeerLink refactored (use peer-link.h)
Pavel Boyko <boyko@iitp.ru>
parents:
diff changeset
   630
{
5129
5688b8da4526 Fixed coding style
Kirill Andreev <andreev@iitp.ru>
parents: 5125
diff changeset
   631
  if (m_retryCounter < m_dot11MeshMaxRetries)
5125
b90c6c0af6a3 Added max beacon loss to PeerManagementProtocol (for beacon timing), cosmetic
Kirill Andreev <andreev@iitp.ru>
parents: 5098
diff changeset
   632
    {
b90c6c0af6a3 Added max beacon loss to PeerManagementProtocol (for beacon timing), cosmetic
Kirill Andreev <andreev@iitp.ru>
parents: 5098
diff changeset
   633
      StateMachine (TOR1);
b90c6c0af6a3 Added max beacon loss to PeerManagementProtocol (for beacon timing), cosmetic
Kirill Andreev <andreev@iitp.ru>
parents: 5098
diff changeset
   634
    }
4862
6a14f272a033 PeerLink refactored (use peer-link.h)
Pavel Boyko <boyko@iitp.ru>
parents:
diff changeset
   635
  else
5125
b90c6c0af6a3 Added max beacon loss to PeerManagementProtocol (for beacon timing), cosmetic
Kirill Andreev <andreev@iitp.ru>
parents: 5098
diff changeset
   636
    {
b90c6c0af6a3 Added max beacon loss to PeerManagementProtocol (for beacon timing), cosmetic
Kirill Andreev <andreev@iitp.ru>
parents: 5098
diff changeset
   637
      StateMachine (TOR2);
b90c6c0af6a3 Added max beacon loss to PeerManagementProtocol (for beacon timing), cosmetic
Kirill Andreev <andreev@iitp.ru>
parents: 5098
diff changeset
   638
    }
4862
6a14f272a033 PeerLink refactored (use peer-link.h)
Pavel Boyko <boyko@iitp.ru>
parents:
diff changeset
   639
}
4933
72f0481cfb2d Peer link restructured to support multi-interface
Kirill Andreev <andreev@iitp.ru>
parents: 4920
diff changeset
   640
void
72f0481cfb2d Peer link restructured to support multi-interface
Kirill Andreev <andreev@iitp.ru>
parents: 4920
diff changeset
   641
PeerLink::SetConfirmTimer ()
4862
6a14f272a033 PeerLink refactored (use peer-link.h)
Pavel Boyko <boyko@iitp.ru>
parents:
diff changeset
   642
{
5129
5688b8da4526 Fixed coding style
Kirill Andreev <andreev@iitp.ru>
parents: 5125
diff changeset
   643
  NS_ASSERT (m_dot11MeshConfirmTimeout.GetMicroSeconds () != 0);
4892
cdd13648776b Removed dot11s-parameters and they are made as attributes
Kirill Andreev <andreev@iitp.ru>
parents: 4887
diff changeset
   644
  m_confirmTimer = Simulator::Schedule (m_dot11MeshConfirmTimeout, &PeerLink::ConfirmTimeout, this);
4862
6a14f272a033 PeerLink refactored (use peer-link.h)
Pavel Boyko <boyko@iitp.ru>
parents:
diff changeset
   645
}
4933
72f0481cfb2d Peer link restructured to support multi-interface
Kirill Andreev <andreev@iitp.ru>
parents: 4920
diff changeset
   646
void
72f0481cfb2d Peer link restructured to support multi-interface
Kirill Andreev <andreev@iitp.ru>
parents: 4920
diff changeset
   647
PeerLink::ConfirmTimeout ()
4862
6a14f272a033 PeerLink refactored (use peer-link.h)
Pavel Boyko <boyko@iitp.ru>
parents:
diff changeset
   648
{
6a14f272a033 PeerLink refactored (use peer-link.h)
Pavel Boyko <boyko@iitp.ru>
parents:
diff changeset
   649
  StateMachine (TOC);
5015
e460e29f9f78 Statistics fixed
Kirill Andreev <andreev@iitp.ru>
parents: 5005
diff changeset
   650
}
e460e29f9f78 Statistics fixed
Kirill Andreev <andreev@iitp.ru>
parents: 5005
diff changeset
   651
void
e460e29f9f78 Statistics fixed
Kirill Andreev <andreev@iitp.ru>
parents: 5005
diff changeset
   652
PeerLink::Report (std::ostream & os) const
e460e29f9f78 Statistics fixed
Kirill Andreev <andreev@iitp.ru>
parents: 5005
diff changeset
   653
{
5125
b90c6c0af6a3 Added max beacon loss to PeerManagementProtocol (for beacon timing), cosmetic
Kirill Andreev <andreev@iitp.ru>
parents: 5098
diff changeset
   654
  if (m_state != ESTAB)
b90c6c0af6a3 Added max beacon loss to PeerManagementProtocol (for beacon timing), cosmetic
Kirill Andreev <andreev@iitp.ru>
parents: 5098
diff changeset
   655
    {
5129
5688b8da4526 Fixed coding style
Kirill Andreev <andreev@iitp.ru>
parents: 5125
diff changeset
   656
      return;
5125
b90c6c0af6a3 Added max beacon loss to PeerManagementProtocol (for beacon timing), cosmetic
Kirill Andreev <andreev@iitp.ru>
parents: 5098
diff changeset
   657
    }
5015
e460e29f9f78 Statistics fixed
Kirill Andreev <andreev@iitp.ru>
parents: 5005
diff changeset
   658
  os << "<PeerLink\n"
e460e29f9f78 Statistics fixed
Kirill Andreev <andreev@iitp.ru>
parents: 5005
diff changeset
   659
    "localAddress=\"" << m_macPlugin->GetAddress () << "\"\n"
e460e29f9f78 Statistics fixed
Kirill Andreev <andreev@iitp.ru>
parents: 5005
diff changeset
   660
    "peerInterfaceAddress=\"" << m_peerAddress << "\"\n"
e460e29f9f78 Statistics fixed
Kirill Andreev <andreev@iitp.ru>
parents: 5005
diff changeset
   661
    "peerMeshPointAddress=\"" << m_peerMeshPointAddress << "\"\n"
5129
5688b8da4526 Fixed coding style
Kirill Andreev <andreev@iitp.ru>
parents: 5125
diff changeset
   662
    "metric=\"" << m_macPlugin->GetLinkMetric (m_peerAddress) << "\"\n"
5098
13ded9ff11c4 XML reports simplified for better parsing
Pavel Boyko <boyko@iitp.ru>
parents: 5086
diff changeset
   663
    "lastBeacon=\"" << m_lastBeacon.GetSeconds () << "\"\n"
5038
0b8f9da17a56 Statistics fixed
Kirill Andreev <andreev@iitp.ru>
parents: 5023
diff changeset
   664
    "localLinkId=\"" << m_localLinkId << "\"\n"
0b8f9da17a56 Statistics fixed
Kirill Andreev <andreev@iitp.ru>
parents: 5023
diff changeset
   665
    "peerLinkId=\"" << m_peerLinkId << "\"\n"
0b8f9da17a56 Statistics fixed
Kirill Andreev <andreev@iitp.ru>
parents: 5023
diff changeset
   666
    "assocId=\"" << m_assocId << "\"\n"
5015
e460e29f9f78 Statistics fixed
Kirill Andreev <andreev@iitp.ru>
parents: 5005
diff changeset
   667
    "/>\n";
e460e29f9f78 Statistics fixed
Kirill Andreev <andreev@iitp.ru>
parents: 5005
diff changeset
   668
}
4872
ea1bce018a44 Added namespace dot11s
Kirill Andreev <andreev@iitp.ru>
parents: 4871
diff changeset
   669
} // namespace dot11s
ea1bce018a44 Added namespace dot11s
Kirill Andreev <andreev@iitp.ru>
parents: 4871
diff changeset
   670
} //namespace ns3
4862
6a14f272a033 PeerLink refactored (use peer-link.h)
Pavel Boyko <boyko@iitp.ru>
parents:
diff changeset
   671