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-- |
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 | 2 |
/* |
4862
6a14f272a033
PeerLink refactored (use peer-link.h)
Pavel Boyko <boyko@iitp.ru>
parents:
diff
changeset
|
3 |
* Copyright (c) 2009 IITP RAS |
5129 | 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 | 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 | 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 | 30 |
namespace ns3 |
31 |
{ |
|
32 |
namespace dot11s |
|
33 |
{ |
|
4862
6a14f272a033
PeerLink refactored (use peer-link.h)
Pavel Boyko <boyko@iitp.ru>
parents:
diff
changeset
|
34 |
|
5129 | 35 |
NS_OBJECT_ENSURE_REGISTERED( PeerLink); |
4862
6a14f272a033
PeerLink refactored (use peer-link.h)
Pavel Boyko <boyko@iitp.ru>
parents:
diff
changeset
|
36 |
|
5129 | 37 |
TypeId |
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 | 43 |
.AddAttribute ( "RetryTimeout", |
44 |
"Retry timeout", |
|
45 |
TimeValue (TimeValue (MicroSeconds (40 * 1024))), |
|
46 |
MakeTimeAccessor ( |
|
47 |
&PeerLink::m_dot11MeshRetryTimeout), |
|
48 |
MakeTimeChecker () |
|
49 |
) |
|
50 |
.AddAttribute ( "HoldingTimeout", |
|
51 |
"Holding timeout", |
|
52 |
TimeValue (TimeValue (MicroSeconds (40 * 1024))), |
|
53 |
MakeTimeAccessor ( |
|
54 |
&PeerLink::m_dot11MeshHoldingTimeout), |
|
55 |
MakeTimeChecker () |
|
56 |
) |
|
57 |
.AddAttribute ( "ConfirmTimeout", |
|
58 |
"Confirm timeout", |
|
59 |
TimeValue (TimeValue (MicroSeconds (40 * 1024))), |
|
60 |
MakeTimeAccessor ( |
|
61 |
&PeerLink::m_dot11MeshConfirmTimeout), |
|
62 |
MakeTimeChecker () |
|
63 |
) |
|
64 |
.AddAttribute ( "MaxRetries", |
|
65 |
"Maximum number of retries", |
|
66 |
UintegerValue (4), |
|
67 |
MakeUintegerAccessor ( |
|
68 |
&PeerLink::m_dot11MeshMaxRetries), |
|
69 |
MakeUintegerChecker<uint16_t> () |
|
70 |
) |
|
71 |
.AddAttribute ( "MaxBeaconLoss", |
|
72 |
"Maximum number of lost beacons before link will be closed", |
|
73 |
UintegerValue (2), |
|
74 |
MakeUintegerAccessor ( |
|
75 |
&PeerLink::m_maxBeaconLoss), |
|
76 |
MakeUintegerChecker<uint16_t> (1) |
|
77 |
) |
|
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 | 81 |
|
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 | 86 |
PeerLink::PeerLink () : |
87 |
m_peerAddress (Mac48Address::GetBroadcast ()), m_peerMeshPointAddress (Mac48Address::GetBroadcast ()), |
|
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 | 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 | 114 |
PeerLink::SetInterface (uint32_t interface) |
115 |
{ |
|
116 |
m_interface = interface; |
|
117 |
} |
|
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 | 134 |
Time delay = Seconds (beaconInterval.GetSeconds () * m_maxBeaconLoss); |
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 | 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 | 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 | 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 | 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 | 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 | 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 | 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 | 250 |
PeerLink::ConfirmAccept (uint16_t localLinkId, uint16_t peerLinkId, uint16_t peerAid, IeConfiguration conf, |
251 |
Mac48Address peerMp) |
|
4862
6a14f272a033
PeerLink refactored (use peer-link.h)
Pavel Boyko <boyko@iitp.ru>
parents:
diff
changeset
|
252 |
{ |
5129 | 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 | 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 | 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 | 271 |
{ |
272 |
NS_ASSERT (m_peerMeshPointAddress == peerMp); |
|
273 |
} |
|
4933
72f0481cfb2d
Peer link restructured to support multi-interface
Kirill Andreev <andreev@iitp.ru>
parents:
4920
diff
changeset
|
274 |
else |
5129 | 275 |
{ |
276 |
m_peerMeshPointAddress = peerMp; |
|
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 | 281 |
PeerLink::ConfirmReject (uint16_t localLinkId, uint16_t peerLinkId, IeConfiguration conf, |
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 | 301 |
{ |
302 |
NS_ASSERT (m_peerMeshPointAddress == peerMp); |
|
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 | 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 | 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 | 330 |
case IDLE: |
331 |
switch (event) |
|
332 |
{ |
|
333 |
case CNCL: |
|
334 |
case CLS_ACPT: |
|
335 |
m_state = IDLE; |
|
336 |
m_linkStatusCallback (m_interface, m_peerAddress, m_peerMeshPointAddress, IDLE, IDLE); |
|
337 |
break; |
|
338 |
case REQ_RJCT: |
|
339 |
SendPeerLinkClose (reasoncode); |
|
340 |
break; |
|
341 |
case ACTOPN: |
|
342 |
m_state = OPN_SNT; |
|
343 |
m_linkStatusCallback (m_interface, m_peerAddress, m_peerMeshPointAddress, IDLE, OPN_SNT); |
|
344 |
SendPeerLinkOpen (); |
|
345 |
SetRetryTimer (); |
|
346 |
break; |
|
347 |
case OPN_ACPT: |
|
348 |
m_state = OPN_RCVD; |
|
349 |
m_linkStatusCallback (m_interface, m_peerAddress, m_peerMeshPointAddress, IDLE, OPN_RCVD); |
|
350 |
SendPeerLinkConfirm (); |
|
351 |
SendPeerLinkOpen (); |
|
352 |
SetRetryTimer (); |
|
353 |
break; |
|
354 |
default: |
|
355 |
//11B.5.3.4 of 802.11s Draft D3.0 |
|
356 |
//All other events shall be ignored in this state |
|
357 |
break; |
|
358 |
} |
|
359 |
break; |
|
360 |
case OPN_SNT: |
|
361 |
switch (event) |
|
362 |
{ |
|
363 |
case TOR1: |
|
364 |
SendPeerLinkOpen (); |
|
365 |
m_retryCounter++; |
|
366 |
SetRetryTimer (); |
|
367 |
break; |
|
368 |
case CNF_ACPT: |
|
369 |
m_state = CNF_RCVD; |
|
370 |
m_linkStatusCallback (m_interface, m_peerAddress, m_peerMeshPointAddress, OPN_SNT, CNF_RCVD); |
|
371 |
ClearRetryTimer (); |
|
372 |
SetConfirmTimer (); |
|
373 |
break; |
|
374 |
case OPN_ACPT: |
|
375 |
m_state = OPN_RCVD; |
|
376 |
m_linkStatusCallback (m_interface, m_peerAddress, m_peerMeshPointAddress, OPN_SNT, OPN_RCVD); |
|
377 |
SendPeerLinkConfirm (); |
|
378 |
break; |
|
379 |
case CLS_ACPT: |
|
380 |
m_state = HOLDING; |
|
381 |
m_linkStatusCallback (m_interface, m_peerAddress, m_peerMeshPointAddress, OPN_SNT, HOLDING); |
|
382 |
ClearRetryTimer (); |
|
383 |
SendPeerLinkClose (REASON11S_MESH_CLOSE_RCVD); |
|
384 |
SetHoldingTimer (); |
|
4862
6a14f272a033
PeerLink refactored (use peer-link.h)
Pavel Boyko <boyko@iitp.ru>
parents:
diff
changeset
|
385 |
break; |
5129 | 386 |
case OPN_RJCT: |
387 |
case CNF_RJCT: |
|
388 |
m_state = HOLDING; |
|
389 |
m_linkStatusCallback (m_interface, m_peerAddress, m_peerMeshPointAddress, OPN_SNT, HOLDING); |
|
390 |
ClearRetryTimer (); |
|
391 |
SendPeerLinkClose (reasoncode); |
|
392 |
SetHoldingTimer (); |
|
393 |
break; |
|
394 |
case TOR2: |
|
395 |
m_state = HOLDING; |
|
396 |
m_linkStatusCallback (m_interface, m_peerAddress, m_peerMeshPointAddress, OPN_SNT, HOLDING); |
|
397 |
ClearRetryTimer (); |
|
398 |
SendPeerLinkClose (REASON11S_MESH_MAX_RETRIES); |
|
399 |
SetHoldingTimer (); |
|
400 |
break; |
|
401 |
case CNCL: |
|
402 |
m_state = HOLDING; |
|
403 |
m_linkStatusCallback (m_interface, m_peerAddress, m_peerMeshPointAddress, OPN_SNT, HOLDING); |
|
404 |
ClearRetryTimer (); |
|
405 |
SendPeerLinkClose (REASON11S_PEERING_CANCELLED); |
|
406 |
SetHoldingTimer (); |
|
407 |
break; |
|
408 |
default: |
|
409 |
//11B.5.3.5 of 802.11s Draft D3.0 |
|
410 |
//All other events shall be ignored in this state |
|
411 |
break; |
|
412 |
} |
|
413 |
break; |
|
414 |
case CNF_RCVD: |
|
415 |
switch (event) |
|
416 |
{ |
|
417 |
case CNF_ACPT: |
|
418 |
break; |
|
419 |
case OPN_ACPT: |
|
420 |
m_state = ESTAB; |
|
421 |
m_linkStatusCallback (m_interface, m_peerAddress, m_peerMeshPointAddress, CNF_RCVD, ESTAB); |
|
422 |
ClearConfirmTimer (); |
|
423 |
SendPeerLinkConfirm (); |
|
424 |
NS_ASSERT (m_peerMeshPointAddress != Mac48Address::GetBroadcast ()); |
|
425 |
break; |
|
426 |
case CLS_ACPT: |
|
427 |
m_state = HOLDING; |
|
428 |
m_linkStatusCallback (m_interface, m_peerAddress, m_peerMeshPointAddress, CNF_RCVD, HOLDING); |
|
429 |
ClearConfirmTimer (); |
|
430 |
SendPeerLinkClose (REASON11S_MESH_CLOSE_RCVD); |
|
431 |
SetHoldingTimer (); |
|
432 |
break; |
|
433 |
case CNF_RJCT: |
|
434 |
case OPN_RJCT: |
|
435 |
m_state = HOLDING; |
|
436 |
m_linkStatusCallback (m_interface, m_peerAddress, m_peerMeshPointAddress, CNF_RCVD, HOLDING); |
|
437 |
ClearConfirmTimer (); |
|
438 |
SendPeerLinkClose (reasoncode); |
|
439 |
SetHoldingTimer (); |
|
440 |
break; |
|
441 |
case CNCL: |
|
442 |
m_state = HOLDING; |
|
443 |
m_linkStatusCallback (m_interface, m_peerAddress, m_peerMeshPointAddress, CNF_RCVD, HOLDING); |
|
444 |
ClearConfirmTimer (); |
|
445 |
SendPeerLinkClose (REASON11S_PEERING_CANCELLED); |
|
446 |
SetHoldingTimer (); |
|
4862
6a14f272a033
PeerLink refactored (use peer-link.h)
Pavel Boyko <boyko@iitp.ru>
parents:
diff
changeset
|
447 |
break; |
5129 | 448 |
case TOC: |
449 |
m_state = HOLDING; |
|
450 |
m_linkStatusCallback (m_interface, m_peerAddress, m_peerMeshPointAddress, CNF_RCVD, HOLDING); |
|
451 |
SendPeerLinkClose (REASON11S_MESH_CONFIRM_TIMEOUT); |
|
452 |
SetHoldingTimer (); |
|
453 |
break; |
|
454 |
default: |
|
455 |
//11B.5.3.6 of 802.11s Draft D3.0 |
|
456 |
//All other events shall be ignored in this state |
|
457 |
break; |
|
458 |
} |
|
459 |
break; |
|
460 |
case OPN_RCVD: |
|
461 |
switch (event) |
|
462 |
{ |
|
463 |
case TOR1: |
|
464 |
SendPeerLinkOpen (); |
|
465 |
m_retryCounter++; |
|
466 |
SetRetryTimer (); |
|
467 |
break; |
|
468 |
case CNF_ACPT: |
|
469 |
m_state = ESTAB; |
|
470 |
m_linkStatusCallback (m_interface, m_peerAddress, m_peerMeshPointAddress, OPN_RCVD, ESTAB); |
|
471 |
ClearRetryTimer (); |
|
472 |
NS_ASSERT (m_peerMeshPointAddress != Mac48Address::GetBroadcast ()); |
|
473 |
break; |
|
474 |
case CLS_ACPT: |
|
475 |
m_state = HOLDING; |
|
476 |
m_linkStatusCallback (m_interface, m_peerAddress, m_peerMeshPointAddress, OPN_RCVD, HOLDING); |
|
477 |
ClearRetryTimer (); |
|
478 |
SendPeerLinkClose (REASON11S_MESH_CLOSE_RCVD); |
|
479 |
SetHoldingTimer (); |
|
480 |
break; |
|
481 |
case OPN_RJCT: |
|
482 |
case CNF_RJCT: |
|
483 |
m_state = HOLDING; |
|
484 |
m_linkStatusCallback (m_interface, m_peerAddress, m_peerMeshPointAddress, OPN_RCVD, HOLDING); |
|
485 |
ClearRetryTimer (); |
|
486 |
SendPeerLinkClose (reasoncode); |
|
487 |
SetHoldingTimer (); |
|
488 |
break; |
|
489 |
case TOR2: |
|
490 |
m_state = HOLDING; |
|
491 |
m_linkStatusCallback (m_interface, m_peerAddress, m_peerMeshPointAddress, OPN_RCVD, HOLDING); |
|
492 |
ClearRetryTimer (); |
|
493 |
SendPeerLinkClose (REASON11S_MESH_MAX_RETRIES); |
|
494 |
SetHoldingTimer (); |
|
495 |
break; |
|
496 |
case CNCL: |
|
497 |
m_state = HOLDING; |
|
498 |
m_linkStatusCallback (m_interface, m_peerAddress, m_peerMeshPointAddress, OPN_RCVD, HOLDING); |
|
499 |
ClearRetryTimer (); |
|
500 |
SendPeerLinkClose (REASON11S_PEERING_CANCELLED); |
|
501 |
SetHoldingTimer (); |
|
502 |
break; |
|
503 |
default: |
|
504 |
//11B.5.3.7 of 802.11s Draft D3.0 |
|
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 | 507 |
} |
508 |
break; |
|
509 |
case ESTAB: |
|
510 |
switch (event) |
|
511 |
{ |
|
512 |
case OPN_ACPT: |
|
513 |
SendPeerLinkConfirm (); |
|
514 |
break; |
|
515 |
case CLS_ACPT: |
|
516 |
m_state = HOLDING; |
|
517 |
m_linkStatusCallback (m_interface, m_peerAddress, m_peerMeshPointAddress, ESTAB, HOLDING); |
|
518 |
SendPeerLinkClose (REASON11S_MESH_CLOSE_RCVD); |
|
519 |
SetHoldingTimer (); |
|
520 |
break; |
|
521 |
case OPN_RJCT: |
|
522 |
case CNF_RJCT: |
|
523 |
m_state = HOLDING; |
|
524 |
m_linkStatusCallback (m_interface, m_peerAddress, m_peerMeshPointAddress, ESTAB, HOLDING); |
|
525 |
ClearRetryTimer (); |
|
526 |
SendPeerLinkClose (reasoncode); |
|
527 |
SetHoldingTimer (); |
|
528 |
break; |
|
529 |
case CNCL: |
|
530 |
m_state = HOLDING; |
|
531 |
m_linkStatusCallback (m_interface, m_peerAddress, m_peerMeshPointAddress, ESTAB, HOLDING); |
|
532 |
SendPeerLinkClose (REASON11S_PEERING_CANCELLED); |
|
533 |
SetHoldingTimer (); |
|
4862
6a14f272a033
PeerLink refactored (use peer-link.h)
Pavel Boyko <boyko@iitp.ru>
parents:
diff
changeset
|
534 |
break; |
5129 | 535 |
default: |
536 |
//11B.5.3.8 of 802.11s Draft D3.0 |
|
537 |
//All other events shall be ignored in this state |
|
538 |
break; |
|
539 |
} |
|
540 |
break; |
|
541 |
case HOLDING: |
|
542 |
switch (event) |
|
543 |
{ |
|
544 |
case CLS_ACPT: |
|
545 |
ClearHoldingTimer (); |
|
546 |
case TOH: |
|
547 |
m_state = IDLE; |
|
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 | 550 |
case OPN_ACPT: |
551 |
case CNF_ACPT: |
|
552 |
m_state = HOLDING; |
|
553 |
m_linkStatusCallback (m_interface, m_peerAddress, m_peerMeshPointAddress, HOLDING, HOLDING); |
|
554 |
// reason not spec in D2.0 |
|
555 |
SendPeerLinkClose (REASON11S_PEERING_CANCELLED); |
|
4862
6a14f272a033
PeerLink refactored (use peer-link.h)
Pavel Boyko <boyko@iitp.ru>
parents:
diff
changeset
|
556 |
break; |
5129 | 557 |
case OPN_RJCT: |
558 |
case CNF_RJCT: |
|
559 |
m_state = HOLDING; |
|
560 |
m_linkStatusCallback (m_interface, m_peerAddress, m_peerMeshPointAddress, HOLDING, HOLDING); |
|
561 |
SendPeerLinkClose (reasoncode); |
|
562 |
break; |
|
563 |
default: |
|
564 |
//11B.5.3.9 of 802.11s Draft D3.0 |
|
565 |
//All other events shall be ignored in this state |
|
566 |
break; |
|
567 |
} |
|
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 | 591 |
m_macPlugin->SendPeerLinkManagementFrame (m_peerAddress, m_peerMeshPointAddress, m_assocId, peerElement, |
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 | 600 |
m_macPlugin->SendPeerLinkManagementFrame (m_peerAddress, m_peerMeshPointAddress, m_assocId, peerElement, |
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 | 608 |
m_macPlugin->SendPeerLinkManagementFrame (m_peerAddress, m_peerMeshPointAddress, m_assocId, peerElement, |
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 | 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 | 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 | 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 | 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 | 650 |
} |
651 |
void |
|
652 |
PeerLink::Report (std::ostream & os) const |
|
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 | 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 | 658 |
os << "<PeerLink\n" |
659 |
"localAddress=\"" << m_macPlugin->GetAddress () << "\"\n" |
|
660 |
"peerInterfaceAddress=\"" << m_peerAddress << "\"\n" |
|
661 |
"peerMeshPointAddress=\"" << m_peerMeshPointAddress << "\"\n" |
|
5129 | 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 | 664 |
"localLinkId=\"" << m_localLinkId << "\"\n" |
665 |
"peerLinkId=\"" << m_peerLinkId << "\"\n" |
|
666 |
"assocId=\"" << m_assocId << "\"\n" |
|
5015 | 667 |
"/>\n"; |
668 |
} |
|
4872 | 669 |
} // namespace dot11s |
670 |
} //namespace ns3 |
|
4862
6a14f272a033
PeerLink refactored (use peer-link.h)
Pavel Boyko <boyko@iitp.ru>
parents:
diff
changeset
|
671 |