author | John Abraham<john.abraham@gatech.edu> |
Sat, 14 May 2011 04:50:07 -0400 | |
changeset 7228 | 0202763b3998 |
parent 7178 | 1a07cbb68308 |
child 7256 | b04ba6772f8c |
permissions | -rw-r--r-- |
4857
ddfb13420455
Added new peer manager class, an old one we keep without change
Kirill Andreev <andreev@iitp.ru>
parents:
diff
changeset
|
1 |
/* -*- Mode: C++; c-file-style: "gnu"; indent-tabs-mode:nil; -*- */ |
ddfb13420455
Added new peer manager class, an old one we keep without change
Kirill Andreev <andreev@iitp.ru>
parents:
diff
changeset
|
2 |
/* |
ddfb13420455
Added new peer manager class, an old one we keep without change
Kirill Andreev <andreev@iitp.ru>
parents:
diff
changeset
|
3 |
* Copyright (c) 2008,2009 IITP RAS |
ddfb13420455
Added new peer manager class, an old one we keep without change
Kirill Andreev <andreev@iitp.ru>
parents:
diff
changeset
|
4 |
* |
ddfb13420455
Added new peer manager class, an old one we keep without change
Kirill Andreev <andreev@iitp.ru>
parents:
diff
changeset
|
5 |
* This program is free software; you can redistribute it and/or modify |
ddfb13420455
Added new peer manager class, an old one we keep without change
Kirill Andreev <andreev@iitp.ru>
parents:
diff
changeset
|
6 |
* it under the terms of the GNU General Public License version 2 as |
ddfb13420455
Added new peer manager class, an old one we keep without change
Kirill Andreev <andreev@iitp.ru>
parents:
diff
changeset
|
7 |
* published by the Free Software Foundation; |
ddfb13420455
Added new peer manager class, an old one we keep without change
Kirill Andreev <andreev@iitp.ru>
parents:
diff
changeset
|
8 |
* |
ddfb13420455
Added new peer manager class, an old one we keep without change
Kirill Andreev <andreev@iitp.ru>
parents:
diff
changeset
|
9 |
* This program is distributed in the hope that it will be useful, |
ddfb13420455
Added new peer manager class, an old one we keep without change
Kirill Andreev <andreev@iitp.ru>
parents:
diff
changeset
|
10 |
* but WITHOUT ANY WARRANTY; without even the implied warranty of |
ddfb13420455
Added new peer manager class, an old one we keep without change
Kirill Andreev <andreev@iitp.ru>
parents:
diff
changeset
|
11 |
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
ddfb13420455
Added new peer manager class, an old one we keep without change
Kirill Andreev <andreev@iitp.ru>
parents:
diff
changeset
|
12 |
* GNU General Public License for more details. |
ddfb13420455
Added new peer manager class, an old one we keep without change
Kirill Andreev <andreev@iitp.ru>
parents:
diff
changeset
|
13 |
* |
ddfb13420455
Added new peer manager class, an old one we keep without change
Kirill Andreev <andreev@iitp.ru>
parents:
diff
changeset
|
14 |
* You should have received a copy of the GNU General Public License |
ddfb13420455
Added new peer manager class, an old one we keep without change
Kirill Andreev <andreev@iitp.ru>
parents:
diff
changeset
|
15 |
* along with this program; if not, write to the Free Software |
ddfb13420455
Added new peer manager class, an old one we keep without change
Kirill Andreev <andreev@iitp.ru>
parents:
diff
changeset
|
16 |
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA |
ddfb13420455
Added new peer manager class, an old one we keep without change
Kirill Andreev <andreev@iitp.ru>
parents:
diff
changeset
|
17 |
* |
ddfb13420455
Added new peer manager class, an old one we keep without change
Kirill Andreev <andreev@iitp.ru>
parents:
diff
changeset
|
18 |
* Authors: Kirill Andreev <andreev@iitp.ru> |
ddfb13420455
Added new peer manager class, an old one we keep without change
Kirill Andreev <andreev@iitp.ru>
parents:
diff
changeset
|
19 |
* Aleksey Kovalenko <kovalenko@iitp.ru> |
ddfb13420455
Added new peer manager class, an old one we keep without change
Kirill Andreev <andreev@iitp.ru>
parents:
diff
changeset
|
20 |
*/ |
ddfb13420455
Added new peer manager class, an old one we keep without change
Kirill Andreev <andreev@iitp.ru>
parents:
diff
changeset
|
21 |
|
5169
8033c4e41bd5
Installers moved to src/helper
Kirill Andreev <andreev@iitp.ru>
parents:
5168
diff
changeset
|
22 |
#include "ns3/peer-management-protocol.h" |
8033c4e41bd5
Installers moved to src/helper
Kirill Andreev <andreev@iitp.ru>
parents:
5168
diff
changeset
|
23 |
#include "peer-management-protocol-mac.h" |
4887
cbf02c77d5c1
HWMP is attached to mesh point device and MAC layer with zero functionality
Kirill Andreev <andreev@iitp.ru>
parents:
4882
diff
changeset
|
24 |
#include "ie-dot11s-configuration.h" |
5168
72bf9328f412
Failed destination is structure of HWMP
Kirill Andreev <andreev@iitp.ru>
parents:
5157
diff
changeset
|
25 |
#include "ie-dot11s-id.h" |
4888
dec245c213ab
Attach interfaces replaced with Install. Helper is simplifyed
Kirill Andreev <andreev@iitp.ru>
parents:
4887
diff
changeset
|
26 |
#include "ns3/mesh-point-device.h" |
4857
ddfb13420455
Added new peer manager class, an old one we keep without change
Kirill Andreev <andreev@iitp.ru>
parents:
diff
changeset
|
27 |
#include "ns3/simulator.h" |
ddfb13420455
Added new peer manager class, an old one we keep without change
Kirill Andreev <andreev@iitp.ru>
parents:
diff
changeset
|
28 |
#include "ns3/assert.h" |
ddfb13420455
Added new peer manager class, an old one we keep without change
Kirill Andreev <andreev@iitp.ru>
parents:
diff
changeset
|
29 |
#include "ns3/log.h" |
ddfb13420455
Added new peer manager class, an old one we keep without change
Kirill Andreev <andreev@iitp.ru>
parents:
diff
changeset
|
30 |
#include "ns3/random-variable.h" |
4858
78437693dcc7
Peer manager restructure - unfinished
Kirill Andreev <andreev@iitp.ru>
parents:
4857
diff
changeset
|
31 |
#include "ns3/mesh-wifi-interface-mac.h" |
4872 | 32 |
#include "ns3/mesh-wifi-interface-mac-plugin.h" |
4887
cbf02c77d5c1
HWMP is attached to mesh point device and MAC layer with zero functionality
Kirill Andreev <andreev@iitp.ru>
parents:
4882
diff
changeset
|
33 |
#include "ns3/wifi-net-device.h" |
5825
9e8c8a54772b
Mesh: PeerManagementProtocol: added trace sources for peer link change
Kirill Andreev <andreev@iitp.ru>
parents:
5450
diff
changeset
|
34 |
#include "ns3/trace-source-accessor.h" |
4860
bb5194d57734
New peer management protocol moved to 802.11s/
Pavel Boyko <boyko@iitp.ru>
parents:
4858
diff
changeset
|
35 |
|
4919
b8a0476c7e06
Added unicast PREQ, peer link status callback.
Kirill Andreev <andreev@iitp.ru>
parents:
4899
diff
changeset
|
36 |
NS_LOG_COMPONENT_DEFINE ("PeerManagementProtocol"); |
5132
aee541a30256
Restored newline at namespace
Kirill Andreev <andreev@iitp.ru>
parents:
5129
diff
changeset
|
37 |
namespace ns3 { |
aee541a30256
Restored newline at namespace
Kirill Andreev <andreev@iitp.ru>
parents:
5129
diff
changeset
|
38 |
namespace dot11s { |
4857
ddfb13420455
Added new peer manager class, an old one we keep without change
Kirill Andreev <andreev@iitp.ru>
parents:
diff
changeset
|
39 |
/*************************************************** |
5129 | 40 |
* PeerManager |
41 |
***************************************************/ |
|
4919
b8a0476c7e06
Added unicast PREQ, peer link status callback.
Kirill Andreev <andreev@iitp.ru>
parents:
4899
diff
changeset
|
42 |
NS_OBJECT_ENSURE_REGISTERED (PeerManagementProtocol); |
4857
ddfb13420455
Added new peer manager class, an old one we keep without change
Kirill Andreev <andreev@iitp.ru>
parents:
diff
changeset
|
43 |
|
ddfb13420455
Added new peer manager class, an old one we keep without change
Kirill Andreev <andreev@iitp.ru>
parents:
diff
changeset
|
44 |
TypeId |
4919
b8a0476c7e06
Added unicast PREQ, peer link status callback.
Kirill Andreev <andreev@iitp.ru>
parents:
4899
diff
changeset
|
45 |
PeerManagementProtocol::GetTypeId (void) |
4857
ddfb13420455
Added new peer manager class, an old one we keep without change
Kirill Andreev <andreev@iitp.ru>
parents:
diff
changeset
|
46 |
{ |
4919
b8a0476c7e06
Added unicast PREQ, peer link status callback.
Kirill Andreev <andreev@iitp.ru>
parents:
4899
diff
changeset
|
47 |
static TypeId tid = TypeId ("ns3::dot11s::PeerManagementProtocol") |
7178
1a07cbb68308
mesh coding style changes
Josh Pelkey <jpelkey@gatech.edu>
parents:
6882
diff
changeset
|
48 |
.SetParent<Object> () |
1a07cbb68308
mesh coding style changes
Josh Pelkey <jpelkey@gatech.edu>
parents:
6882
diff
changeset
|
49 |
.AddConstructor<PeerManagementProtocol> () |
1a07cbb68308
mesh coding style changes
Josh Pelkey <jpelkey@gatech.edu>
parents:
6882
diff
changeset
|
50 |
// maximum number of peer links. Now we calculate the total |
1a07cbb68308
mesh coding style changes
Josh Pelkey <jpelkey@gatech.edu>
parents:
6882
diff
changeset
|
51 |
// number of peer links on all interfaces |
1a07cbb68308
mesh coding style changes
Josh Pelkey <jpelkey@gatech.edu>
parents:
6882
diff
changeset
|
52 |
.AddAttribute ( "MaxNumberOfPeerLinks", |
1a07cbb68308
mesh coding style changes
Josh Pelkey <jpelkey@gatech.edu>
parents:
6882
diff
changeset
|
53 |
"Maximum number of peer links", |
1a07cbb68308
mesh coding style changes
Josh Pelkey <jpelkey@gatech.edu>
parents:
6882
diff
changeset
|
54 |
UintegerValue (32), |
1a07cbb68308
mesh coding style changes
Josh Pelkey <jpelkey@gatech.edu>
parents:
6882
diff
changeset
|
55 |
MakeUintegerAccessor ( |
5129 | 56 |
&PeerManagementProtocol::m_maxNumberOfPeerLinks), |
7178
1a07cbb68308
mesh coding style changes
Josh Pelkey <jpelkey@gatech.edu>
parents:
6882
diff
changeset
|
57 |
MakeUintegerChecker<uint8_t> () |
1a07cbb68308
mesh coding style changes
Josh Pelkey <jpelkey@gatech.edu>
parents:
6882
diff
changeset
|
58 |
) |
1a07cbb68308
mesh coding style changes
Josh Pelkey <jpelkey@gatech.edu>
parents:
6882
diff
changeset
|
59 |
.AddAttribute ( "MaxBeaconShiftValue", |
1a07cbb68308
mesh coding style changes
Josh Pelkey <jpelkey@gatech.edu>
parents:
6882
diff
changeset
|
60 |
"Maximum number of TUs for beacon shifting", |
1a07cbb68308
mesh coding style changes
Josh Pelkey <jpelkey@gatech.edu>
parents:
6882
diff
changeset
|
61 |
UintegerValue (15), |
1a07cbb68308
mesh coding style changes
Josh Pelkey <jpelkey@gatech.edu>
parents:
6882
diff
changeset
|
62 |
MakeUintegerAccessor ( |
5446
85d025cc5da4
Mesh: fixed HWMP sequence and metric filtering, added route discovery time
Kirill Andreev <andreev@iitp.ru>
parents:
5422
diff
changeset
|
63 |
&PeerManagementProtocol::m_maxBeaconShift), |
7178
1a07cbb68308
mesh coding style changes
Josh Pelkey <jpelkey@gatech.edu>
parents:
6882
diff
changeset
|
64 |
MakeUintegerChecker<uint16_t> () |
1a07cbb68308
mesh coding style changes
Josh Pelkey <jpelkey@gatech.edu>
parents:
6882
diff
changeset
|
65 |
) |
1a07cbb68308
mesh coding style changes
Josh Pelkey <jpelkey@gatech.edu>
parents:
6882
diff
changeset
|
66 |
.AddAttribute ( "EnableBeaconCollisionAvoidance", |
1a07cbb68308
mesh coding style changes
Josh Pelkey <jpelkey@gatech.edu>
parents:
6882
diff
changeset
|
67 |
"Enable/Disable Beacon collision avoidance.", |
1a07cbb68308
mesh coding style changes
Josh Pelkey <jpelkey@gatech.edu>
parents:
6882
diff
changeset
|
68 |
BooleanValue (true), |
1a07cbb68308
mesh coding style changes
Josh Pelkey <jpelkey@gatech.edu>
parents:
6882
diff
changeset
|
69 |
MakeBooleanAccessor ( |
1a07cbb68308
mesh coding style changes
Josh Pelkey <jpelkey@gatech.edu>
parents:
6882
diff
changeset
|
70 |
&PeerManagementProtocol::SetBeaconCollisionAvoidance, &PeerManagementProtocol::GetBeaconCollisionAvoidance), |
5446
85d025cc5da4
Mesh: fixed HWMP sequence and metric filtering, added route discovery time
Kirill Andreev <andreev@iitp.ru>
parents:
5422
diff
changeset
|
71 |
MakeBooleanChecker () |
7178
1a07cbb68308
mesh coding style changes
Josh Pelkey <jpelkey@gatech.edu>
parents:
6882
diff
changeset
|
72 |
) |
1a07cbb68308
mesh coding style changes
Josh Pelkey <jpelkey@gatech.edu>
parents:
6882
diff
changeset
|
73 |
.AddTraceSource ("LinkOpen", |
1a07cbb68308
mesh coding style changes
Josh Pelkey <jpelkey@gatech.edu>
parents:
6882
diff
changeset
|
74 |
"New peer link opened", |
1a07cbb68308
mesh coding style changes
Josh Pelkey <jpelkey@gatech.edu>
parents:
6882
diff
changeset
|
75 |
MakeTraceSourceAccessor (&PeerManagementProtocol::m_linkOpenTraceSrc) |
1a07cbb68308
mesh coding style changes
Josh Pelkey <jpelkey@gatech.edu>
parents:
6882
diff
changeset
|
76 |
) |
1a07cbb68308
mesh coding style changes
Josh Pelkey <jpelkey@gatech.edu>
parents:
6882
diff
changeset
|
77 |
.AddTraceSource ("LinkClose", |
1a07cbb68308
mesh coding style changes
Josh Pelkey <jpelkey@gatech.edu>
parents:
6882
diff
changeset
|
78 |
"New peer link closed", |
1a07cbb68308
mesh coding style changes
Josh Pelkey <jpelkey@gatech.edu>
parents:
6882
diff
changeset
|
79 |
MakeTraceSourceAccessor (&PeerManagementProtocol::m_linkCloseTraceSrc) |
1a07cbb68308
mesh coding style changes
Josh Pelkey <jpelkey@gatech.edu>
parents:
6882
diff
changeset
|
80 |
) |
1a07cbb68308
mesh coding style changes
Josh Pelkey <jpelkey@gatech.edu>
parents:
6882
diff
changeset
|
81 |
|
1a07cbb68308
mesh coding style changes
Josh Pelkey <jpelkey@gatech.edu>
parents:
6882
diff
changeset
|
82 |
; |
4857
ddfb13420455
Added new peer manager class, an old one we keep without change
Kirill Andreev <andreev@iitp.ru>
parents:
diff
changeset
|
83 |
return tid; |
ddfb13420455
Added new peer manager class, an old one we keep without change
Kirill Andreev <andreev@iitp.ru>
parents:
diff
changeset
|
84 |
} |
5129 | 85 |
PeerManagementProtocol::PeerManagementProtocol () : |
5446
85d025cc5da4
Mesh: fixed HWMP sequence and metric filtering, added route discovery time
Kirill Andreev <andreev@iitp.ru>
parents:
5422
diff
changeset
|
86 |
m_lastAssocId (0), m_lastLocalLinkId (1), m_enableBca (true), m_maxBeaconShift (15) |
5129 | 87 |
{ |
88 |
} |
|
4919
b8a0476c7e06
Added unicast PREQ, peer link status callback.
Kirill Andreev <andreev@iitp.ru>
parents:
4899
diff
changeset
|
89 |
PeerManagementProtocol::~PeerManagementProtocol () |
4857
ddfb13420455
Added new peer manager class, an old one we keep without change
Kirill Andreev <andreev@iitp.ru>
parents:
diff
changeset
|
90 |
{ |
5417
899604299046
plug leaks (bug 711)
Craig Dowell <craigdo@ee.washington.edu>
parents:
5199
diff
changeset
|
91 |
m_meshId = 0; |
5005
8038200dac53
Fixed removing peer links
Kirill Andreev <andreev@iitp.ru>
parents:
5003
diff
changeset
|
92 |
} |
8038200dac53
Fixed removing peer links
Kirill Andreev <andreev@iitp.ru>
parents:
5003
diff
changeset
|
93 |
void |
8038200dac53
Fixed removing peer links
Kirill Andreev <andreev@iitp.ru>
parents:
5003
diff
changeset
|
94 |
PeerManagementProtocol::DoDispose () |
8038200dac53
Fixed removing peer links
Kirill Andreev <andreev@iitp.ru>
parents:
5003
diff
changeset
|
95 |
{ |
4877
f08902c42733
Added a method to find peer link, code cleanup
Kirill Andreev <andreev@iitp.ru>
parents:
4876
diff
changeset
|
96 |
//cancel cleanup event and go through the map of peer links, |
f08902c42733
Added a method to find peer link, code cleanup
Kirill Andreev <andreev@iitp.ru>
parents:
4876
diff
changeset
|
97 |
//deleting each |
f08902c42733
Added a method to find peer link, code cleanup
Kirill Andreev <andreev@iitp.ru>
parents:
4876
diff
changeset
|
98 |
for (PeerLinksMap::iterator j = m_peerLinks.begin (); j != m_peerLinks.end (); j++) |
4857
ddfb13420455
Added new peer manager class, an old one we keep without change
Kirill Andreev <andreev@iitp.ru>
parents:
diff
changeset
|
99 |
{ |
5129 | 100 |
for (PeerLinksOnInterface::iterator i = j->second.begin (); i != j->second.end (); i++) |
5125
b90c6c0af6a3
Added max beacon loss to PeerManagementProtocol (for beacon timing), cosmetic
Kirill Andreev <andreev@iitp.ru>
parents:
5098
diff
changeset
|
101 |
{ |
b90c6c0af6a3
Added max beacon loss to PeerManagementProtocol (for beacon timing), cosmetic
Kirill Andreev <andreev@iitp.ru>
parents:
5098
diff
changeset
|
102 |
(*i) = 0; |
b90c6c0af6a3
Added max beacon loss to PeerManagementProtocol (for beacon timing), cosmetic
Kirill Andreev <andreev@iitp.ru>
parents:
5098
diff
changeset
|
103 |
} |
4857
ddfb13420455
Added new peer manager class, an old one we keep without change
Kirill Andreev <andreev@iitp.ru>
parents:
diff
changeset
|
104 |
j->second.clear (); |
ddfb13420455
Added new peer manager class, an old one we keep without change
Kirill Andreev <andreev@iitp.ru>
parents:
diff
changeset
|
105 |
} |
4866
564372fc5491
First management frame goes through new archotecture
Kirill Andreev <andreev@iitp.ru>
parents:
4865
diff
changeset
|
106 |
m_peerLinks.clear (); |
5422
21a4f34518ff
bug 711: example mesh/mesh fails valgrind.
Andrey Mazo <mazo@iitp.ru>
parents:
5417
diff
changeset
|
107 |
m_plugins.clear (); |
4857
ddfb13420455
Added new peer manager class, an old one we keep without change
Kirill Andreev <andreev@iitp.ru>
parents:
diff
changeset
|
108 |
} |
4870
79f9c2b6dffc
Uncommented destructor and cleaner
Kirill Andreev <andreev@iitp.ru>
parents:
4869
diff
changeset
|
109 |
|
4858
78437693dcc7
Peer manager restructure - unfinished
Kirill Andreev <andreev@iitp.ru>
parents:
4857
diff
changeset
|
110 |
bool |
5125
b90c6c0af6a3
Added max beacon loss to PeerManagementProtocol (for beacon timing), cosmetic
Kirill Andreev <andreev@iitp.ru>
parents:
5098
diff
changeset
|
111 |
PeerManagementProtocol::Install (Ptr<MeshPointDevice> mp) |
4858
78437693dcc7
Peer manager restructure - unfinished
Kirill Andreev <andreev@iitp.ru>
parents:
4857
diff
changeset
|
112 |
{ |
4888
dec245c213ab
Attach interfaces replaced with Install. Helper is simplifyed
Kirill Andreev <andreev@iitp.ru>
parents:
4887
diff
changeset
|
113 |
std::vector<Ptr<NetDevice> > interfaces = mp->GetInterfaces (); |
5129 | 114 |
for (std::vector<Ptr<NetDevice> >::iterator i = interfaces.begin (); i != interfaces.end (); i++) |
5063 | 115 |
{ |
116 |
Ptr<WifiNetDevice> wifiNetDev = (*i)->GetObject<WifiNetDevice> (); |
|
117 |
if (wifiNetDev == 0) |
|
5125
b90c6c0af6a3
Added max beacon loss to PeerManagementProtocol (for beacon timing), cosmetic
Kirill Andreev <andreev@iitp.ru>
parents:
5098
diff
changeset
|
118 |
{ |
b90c6c0af6a3
Added max beacon loss to PeerManagementProtocol (for beacon timing), cosmetic
Kirill Andreev <andreev@iitp.ru>
parents:
5098
diff
changeset
|
119 |
return false; |
b90c6c0af6a3
Added max beacon loss to PeerManagementProtocol (for beacon timing), cosmetic
Kirill Andreev <andreev@iitp.ru>
parents:
5098
diff
changeset
|
120 |
} |
5129 | 121 |
Ptr<MeshWifiInterfaceMac> mac = wifiNetDev->GetMac ()->GetObject<MeshWifiInterfaceMac> (); |
5063 | 122 |
if (mac == 0) |
5125
b90c6c0af6a3
Added max beacon loss to PeerManagementProtocol (for beacon timing), cosmetic
Kirill Andreev <andreev@iitp.ru>
parents:
5098
diff
changeset
|
123 |
{ |
b90c6c0af6a3
Added max beacon loss to PeerManagementProtocol (for beacon timing), cosmetic
Kirill Andreev <andreev@iitp.ru>
parents:
5098
diff
changeset
|
124 |
return false; |
b90c6c0af6a3
Added max beacon loss to PeerManagementProtocol (for beacon timing), cosmetic
Kirill Andreev <andreev@iitp.ru>
parents:
5098
diff
changeset
|
125 |
} |
5129 | 126 |
Ptr<PeerManagementProtocolMac> plugin = Create<PeerManagementProtocolMac> ((*i)->GetIfIndex (), this); |
5125
b90c6c0af6a3
Added max beacon loss to PeerManagementProtocol (for beacon timing), cosmetic
Kirill Andreev <andreev@iitp.ru>
parents:
5098
diff
changeset
|
127 |
mac->InstallPlugin (plugin); |
b90c6c0af6a3
Added max beacon loss to PeerManagementProtocol (for beacon timing), cosmetic
Kirill Andreev <andreev@iitp.ru>
parents:
5098
diff
changeset
|
128 |
m_plugins[(*i)->GetIfIndex ()] = plugin; |
5063 | 129 |
PeerLinksOnInterface newmap; |
5125
b90c6c0af6a3
Added max beacon loss to PeerManagementProtocol (for beacon timing), cosmetic
Kirill Andreev <andreev@iitp.ru>
parents:
5098
diff
changeset
|
130 |
m_peerLinks[(*i)->GetIfIndex ()] = newmap; |
5063 | 131 |
} |
4898
b079cb67fda2
For now mesh point aggregates installed protocols. This is done to allow user directly access protocols via mp->GetObject<...>() (though you must known mesh point and protocol class to do this)
Pavel Boyko <boyko@iitp.ru>
parents:
4895
diff
changeset
|
132 |
// Mesh point aggregates all installed protocols |
5125
b90c6c0af6a3
Added max beacon loss to PeerManagementProtocol (for beacon timing), cosmetic
Kirill Andreev <andreev@iitp.ru>
parents:
5098
diff
changeset
|
133 |
m_address = Mac48Address::ConvertFrom (mp->GetAddress ()); |
b90c6c0af6a3
Added max beacon loss to PeerManagementProtocol (for beacon timing), cosmetic
Kirill Andreev <andreev@iitp.ru>
parents:
5098
diff
changeset
|
134 |
mp->AggregateObject (this); |
4858
78437693dcc7
Peer manager restructure - unfinished
Kirill Andreev <andreev@iitp.ru>
parents:
4857
diff
changeset
|
135 |
return true; |
78437693dcc7
Peer manager restructure - unfinished
Kirill Andreev <andreev@iitp.ru>
parents:
4857
diff
changeset
|
136 |
} |
78437693dcc7
Peer manager restructure - unfinished
Kirill Andreev <andreev@iitp.ru>
parents:
4857
diff
changeset
|
137 |
|
4876
d78f1b978dac
Rstructured file names: IeDot11s* no is Ie, because it is in namespace dot11s
Kirill Andreev <andreev@iitp.ru>
parents:
4873
diff
changeset
|
138 |
Ptr<IeBeaconTiming> |
5125
b90c6c0af6a3
Added max beacon loss to PeerManagementProtocol (for beacon timing), cosmetic
Kirill Andreev <andreev@iitp.ru>
parents:
5098
diff
changeset
|
139 |
PeerManagementProtocol::GetBeaconTimingElement (uint32_t interface) |
4858
78437693dcc7
Peer manager restructure - unfinished
Kirill Andreev <andreev@iitp.ru>
parents:
4857
diff
changeset
|
140 |
{ |
5446
85d025cc5da4
Mesh: fixed HWMP sequence and metric filtering, added route discovery time
Kirill Andreev <andreev@iitp.ru>
parents:
5422
diff
changeset
|
141 |
if (!GetBeaconCollisionAvoidance ()) |
5125
b90c6c0af6a3
Added max beacon loss to PeerManagementProtocol (for beacon timing), cosmetic
Kirill Andreev <andreev@iitp.ru>
parents:
5098
diff
changeset
|
142 |
{ |
5446
85d025cc5da4
Mesh: fixed HWMP sequence and metric filtering, added route discovery time
Kirill Andreev <andreev@iitp.ru>
parents:
5422
diff
changeset
|
143 |
return 0; |
5125
b90c6c0af6a3
Added max beacon loss to PeerManagementProtocol (for beacon timing), cosmetic
Kirill Andreev <andreev@iitp.ru>
parents:
5098
diff
changeset
|
144 |
} |
5446
85d025cc5da4
Mesh: fixed HWMP sequence and metric filtering, added route discovery time
Kirill Andreev <andreev@iitp.ru>
parents:
5422
diff
changeset
|
145 |
Ptr<IeBeaconTiming> retval = Create<IeBeaconTiming> (); |
85d025cc5da4
Mesh: fixed HWMP sequence and metric filtering, added route discovery time
Kirill Andreev <andreev@iitp.ru>
parents:
5422
diff
changeset
|
146 |
PeerLinksMap::iterator iface = m_peerLinks.find (interface); |
85d025cc5da4
Mesh: fixed HWMP sequence and metric filtering, added route discovery time
Kirill Andreev <andreev@iitp.ru>
parents:
5422
diff
changeset
|
147 |
NS_ASSERT (iface != m_peerLinks.end ()); |
85d025cc5da4
Mesh: fixed HWMP sequence and metric filtering, added route discovery time
Kirill Andreev <andreev@iitp.ru>
parents:
5422
diff
changeset
|
148 |
for (PeerLinksOnInterface::iterator i = iface->second.begin (); i != iface->second.end (); i++) |
4879 | 149 |
{ |
5446
85d025cc5da4
Mesh: fixed HWMP sequence and metric filtering, added route discovery time
Kirill Andreev <andreev@iitp.ru>
parents:
5422
diff
changeset
|
150 |
//If we do not know peer Assoc Id, we shall not add any info |
85d025cc5da4
Mesh: fixed HWMP sequence and metric filtering, added route discovery time
Kirill Andreev <andreev@iitp.ru>
parents:
5422
diff
changeset
|
151 |
//to a beacon timing element |
85d025cc5da4
Mesh: fixed HWMP sequence and metric filtering, added route discovery time
Kirill Andreev <andreev@iitp.ru>
parents:
5422
diff
changeset
|
152 |
if ((*i)->GetBeaconInterval () == Seconds (0)) |
5063 | 153 |
{ |
5446
85d025cc5da4
Mesh: fixed HWMP sequence and metric filtering, added route discovery time
Kirill Andreev <andreev@iitp.ru>
parents:
5422
diff
changeset
|
154 |
//No beacon was received, do not include to the beacon timing element |
85d025cc5da4
Mesh: fixed HWMP sequence and metric filtering, added route discovery time
Kirill Andreev <andreev@iitp.ru>
parents:
5422
diff
changeset
|
155 |
continue; |
5063 | 156 |
} |
5446
85d025cc5da4
Mesh: fixed HWMP sequence and metric filtering, added route discovery time
Kirill Andreev <andreev@iitp.ru>
parents:
5422
diff
changeset
|
157 |
retval->AddNeighboursTimingElementUnit ((*i)->GetLocalAid (), (*i)->GetLastBeacon (), |
7178
1a07cbb68308
mesh coding style changes
Josh Pelkey <jpelkey@gatech.edu>
parents:
6882
diff
changeset
|
158 |
(*i)->GetBeaconInterval ()); |
5125
b90c6c0af6a3
Added max beacon loss to PeerManagementProtocol (for beacon timing), cosmetic
Kirill Andreev <andreev@iitp.ru>
parents:
5098
diff
changeset
|
159 |
} |
4858
78437693dcc7
Peer manager restructure - unfinished
Kirill Andreev <andreev@iitp.ru>
parents:
4857
diff
changeset
|
160 |
return retval; |
78437693dcc7
Peer manager restructure - unfinished
Kirill Andreev <andreev@iitp.ru>
parents:
4857
diff
changeset
|
161 |
} |
4867
3a02e4e89292
Finished processing peer link frames on new architeture
Kirill Andreev <andreev@iitp.ru>
parents:
4866
diff
changeset
|
162 |
void |
5446
85d025cc5da4
Mesh: fixed HWMP sequence and metric filtering, added route discovery time
Kirill Andreev <andreev@iitp.ru>
parents:
5422
diff
changeset
|
163 |
PeerManagementProtocol::ReceiveBeacon (uint32_t interface, Mac48Address peerAddress, Time beaconInterval, Ptr<IeBeaconTiming> timingElement) |
4867
3a02e4e89292
Finished processing peer link frames on new architeture
Kirill Andreev <andreev@iitp.ru>
parents:
4866
diff
changeset
|
164 |
{ |
5063 | 165 |
//PM STATE Machine |
166 |
//Check that a given beacon is not from our interface |
|
5446
85d025cc5da4
Mesh: fixed HWMP sequence and metric filtering, added route discovery time
Kirill Andreev <andreev@iitp.ru>
parents:
5422
diff
changeset
|
167 |
Simulator::Schedule (beaconInterval - TuToTime (m_maxBeaconShift + 1), &PeerManagementProtocol::DoShiftBeacon, this, interface); |
5129 | 168 |
for (PeerManagementProtocolMacMap::const_iterator i = m_plugins.begin (); i != m_plugins.end (); i++) |
5125
b90c6c0af6a3
Added max beacon loss to PeerManagementProtocol (for beacon timing), cosmetic
Kirill Andreev <andreev@iitp.ru>
parents:
5098
diff
changeset
|
169 |
{ |
b90c6c0af6a3
Added max beacon loss to PeerManagementProtocol (for beacon timing), cosmetic
Kirill Andreev <andreev@iitp.ru>
parents:
5098
diff
changeset
|
170 |
if (i->second->GetAddress () == peerAddress) |
b90c6c0af6a3
Added max beacon loss to PeerManagementProtocol (for beacon timing), cosmetic
Kirill Andreev <andreev@iitp.ru>
parents:
5098
diff
changeset
|
171 |
{ |
b90c6c0af6a3
Added max beacon loss to PeerManagementProtocol (for beacon timing), cosmetic
Kirill Andreev <andreev@iitp.ru>
parents:
5098
diff
changeset
|
172 |
return; |
b90c6c0af6a3
Added max beacon loss to PeerManagementProtocol (for beacon timing), cosmetic
Kirill Andreev <andreev@iitp.ru>
parents:
5098
diff
changeset
|
173 |
} |
b90c6c0af6a3
Added max beacon loss to PeerManagementProtocol (for beacon timing), cosmetic
Kirill Andreev <andreev@iitp.ru>
parents:
5098
diff
changeset
|
174 |
} |
b90c6c0af6a3
Added max beacon loss to PeerManagementProtocol (for beacon timing), cosmetic
Kirill Andreev <andreev@iitp.ru>
parents:
5098
diff
changeset
|
175 |
Ptr<PeerLink> peerLink = FindPeerLink (interface, peerAddress); |
5446
85d025cc5da4
Mesh: fixed HWMP sequence and metric filtering, added route discovery time
Kirill Andreev <andreev@iitp.ru>
parents:
5422
diff
changeset
|
176 |
if (peerLink == 0) |
5125
b90c6c0af6a3
Added max beacon loss to PeerManagementProtocol (for beacon timing), cosmetic
Kirill Andreev <andreev@iitp.ru>
parents:
5098
diff
changeset
|
177 |
{ |
5063 | 178 |
if (ShouldSendOpen (interface, peerAddress)) |
5129 | 179 |
{ |
5446
85d025cc5da4
Mesh: fixed HWMP sequence and metric filtering, added route discovery time
Kirill Andreev <andreev@iitp.ru>
parents:
5422
diff
changeset
|
180 |
peerLink = InitiateLink (interface, peerAddress, Mac48Address::GetBroadcast ()); |
5129 | 181 |
peerLink->MLMEActivePeerLinkOpen (); |
182 |
} |
|
5125
b90c6c0af6a3
Added max beacon loss to PeerManagementProtocol (for beacon timing), cosmetic
Kirill Andreev <andreev@iitp.ru>
parents:
5098
diff
changeset
|
183 |
} |
5446
85d025cc5da4
Mesh: fixed HWMP sequence and metric filtering, added route discovery time
Kirill Andreev <andreev@iitp.ru>
parents:
5422
diff
changeset
|
184 |
peerLink->SetBeaconInformation (Simulator::Now (), beaconInterval); |
85d025cc5da4
Mesh: fixed HWMP sequence and metric filtering, added route discovery time
Kirill Andreev <andreev@iitp.ru>
parents:
5422
diff
changeset
|
185 |
if (GetBeaconCollisionAvoidance ()) |
85d025cc5da4
Mesh: fixed HWMP sequence and metric filtering, added route discovery time
Kirill Andreev <andreev@iitp.ru>
parents:
5422
diff
changeset
|
186 |
{ |
85d025cc5da4
Mesh: fixed HWMP sequence and metric filtering, added route discovery time
Kirill Andreev <andreev@iitp.ru>
parents:
5422
diff
changeset
|
187 |
peerLink->SetBeaconTimingElement (*PeekPointer (timingElement)); |
85d025cc5da4
Mesh: fixed HWMP sequence and metric filtering, added route discovery time
Kirill Andreev <andreev@iitp.ru>
parents:
5422
diff
changeset
|
188 |
} |
4858
78437693dcc7
Peer manager restructure - unfinished
Kirill Andreev <andreev@iitp.ru>
parents:
4857
diff
changeset
|
189 |
} |
78437693dcc7
Peer manager restructure - unfinished
Kirill Andreev <andreev@iitp.ru>
parents:
4857
diff
changeset
|
190 |
|
78437693dcc7
Peer manager restructure - unfinished
Kirill Andreev <andreev@iitp.ru>
parents:
4857
diff
changeset
|
191 |
void |
5129 | 192 |
PeerManagementProtocol::ReceivePeerLinkFrame (uint32_t interface, Mac48Address peerAddress, |
7178
1a07cbb68308
mesh coding style changes
Josh Pelkey <jpelkey@gatech.edu>
parents:
6882
diff
changeset
|
193 |
Mac48Address peerMeshPointAddress, uint16_t aid, IePeerManagement peerManagementElement, |
1a07cbb68308
mesh coding style changes
Josh Pelkey <jpelkey@gatech.edu>
parents:
6882
diff
changeset
|
194 |
IeConfiguration meshConfig) |
4858
78437693dcc7
Peer manager restructure - unfinished
Kirill Andreev <andreev@iitp.ru>
parents:
4857
diff
changeset
|
195 |
{ |
5129 | 196 |
Ptr<PeerLink> peerLink = FindPeerLink (interface, peerAddress); |
4867
3a02e4e89292
Finished processing peer link frames on new architeture
Kirill Andreev <andreev@iitp.ru>
parents:
4866
diff
changeset
|
197 |
if (peerManagementElement.SubtypeIsOpen ()) |
3a02e4e89292
Finished processing peer link frames on new architeture
Kirill Andreev <andreev@iitp.ru>
parents:
4866
diff
changeset
|
198 |
{ |
5199
15fe1a24cd5b
Build fix for g++ 4.0.4 ('... may be used uninitialized in this function')
Pavel Boyko <boyko@iitp.ru>
parents:
5178
diff
changeset
|
199 |
PmpReasonCode reasonCode (REASON11S_RESERVED); |
5129 | 200 |
bool reject = !(ShouldAcceptOpen (interface, peerAddress, reasonCode)); |
5063 | 201 |
if (peerLink == 0) |
5125
b90c6c0af6a3
Added max beacon loss to PeerManagementProtocol (for beacon timing), cosmetic
Kirill Andreev <andreev@iitp.ru>
parents:
5098
diff
changeset
|
202 |
{ |
5446
85d025cc5da4
Mesh: fixed HWMP sequence and metric filtering, added route discovery time
Kirill Andreev <andreev@iitp.ru>
parents:
5422
diff
changeset
|
203 |
peerLink = InitiateLink (interface, peerAddress, peerMeshPointAddress); |
5125
b90c6c0af6a3
Added max beacon loss to PeerManagementProtocol (for beacon timing), cosmetic
Kirill Andreev <andreev@iitp.ru>
parents:
5098
diff
changeset
|
204 |
} |
b90c6c0af6a3
Added max beacon loss to PeerManagementProtocol (for beacon timing), cosmetic
Kirill Andreev <andreev@iitp.ru>
parents:
5098
diff
changeset
|
205 |
if (!reject) |
b90c6c0af6a3
Added max beacon loss to PeerManagementProtocol (for beacon timing), cosmetic
Kirill Andreev <andreev@iitp.ru>
parents:
5098
diff
changeset
|
206 |
{ |
5129 | 207 |
peerLink->OpenAccept (peerManagementElement.GetLocalLinkId (), meshConfig, peerMeshPointAddress); |
5125
b90c6c0af6a3
Added max beacon loss to PeerManagementProtocol (for beacon timing), cosmetic
Kirill Andreev <andreev@iitp.ru>
parents:
5098
diff
changeset
|
208 |
} |
5063 | 209 |
else |
5125
b90c6c0af6a3
Added max beacon loss to PeerManagementProtocol (for beacon timing), cosmetic
Kirill Andreev <andreev@iitp.ru>
parents:
5098
diff
changeset
|
210 |
{ |
5129 | 211 |
peerLink->OpenReject (peerManagementElement.GetLocalLinkId (), meshConfig, peerMeshPointAddress, |
7178
1a07cbb68308
mesh coding style changes
Josh Pelkey <jpelkey@gatech.edu>
parents:
6882
diff
changeset
|
212 |
reasonCode); |
5125
b90c6c0af6a3
Added max beacon loss to PeerManagementProtocol (for beacon timing), cosmetic
Kirill Andreev <andreev@iitp.ru>
parents:
5098
diff
changeset
|
213 |
} |
4867
3a02e4e89292
Finished processing peer link frames on new architeture
Kirill Andreev <andreev@iitp.ru>
parents:
4866
diff
changeset
|
214 |
} |
4877
f08902c42733
Added a method to find peer link, code cleanup
Kirill Andreev <andreev@iitp.ru>
parents:
4876
diff
changeset
|
215 |
if (peerLink == 0) |
5125
b90c6c0af6a3
Added max beacon loss to PeerManagementProtocol (for beacon timing), cosmetic
Kirill Andreev <andreev@iitp.ru>
parents:
5098
diff
changeset
|
216 |
{ |
b90c6c0af6a3
Added max beacon loss to PeerManagementProtocol (for beacon timing), cosmetic
Kirill Andreev <andreev@iitp.ru>
parents:
5098
diff
changeset
|
217 |
return; |
b90c6c0af6a3
Added max beacon loss to PeerManagementProtocol (for beacon timing), cosmetic
Kirill Andreev <andreev@iitp.ru>
parents:
5098
diff
changeset
|
218 |
} |
4877
f08902c42733
Added a method to find peer link, code cleanup
Kirill Andreev <andreev@iitp.ru>
parents:
4876
diff
changeset
|
219 |
if (peerManagementElement.SubtypeIsConfirm ()) |
5125
b90c6c0af6a3
Added max beacon loss to PeerManagementProtocol (for beacon timing), cosmetic
Kirill Andreev <andreev@iitp.ru>
parents:
5098
diff
changeset
|
220 |
{ |
5129 | 221 |
peerLink->ConfirmAccept (peerManagementElement.GetLocalLinkId (), |
7178
1a07cbb68308
mesh coding style changes
Josh Pelkey <jpelkey@gatech.edu>
parents:
6882
diff
changeset
|
222 |
peerManagementElement.GetPeerLinkId (), aid, meshConfig, peerMeshPointAddress); |
5125
b90c6c0af6a3
Added max beacon loss to PeerManagementProtocol (for beacon timing), cosmetic
Kirill Andreev <andreev@iitp.ru>
parents:
5098
diff
changeset
|
223 |
} |
4877
f08902c42733
Added a method to find peer link, code cleanup
Kirill Andreev <andreev@iitp.ru>
parents:
4876
diff
changeset
|
224 |
if (peerManagementElement.SubtypeIsClose ()) |
5125
b90c6c0af6a3
Added max beacon loss to PeerManagementProtocol (for beacon timing), cosmetic
Kirill Andreev <andreev@iitp.ru>
parents:
5098
diff
changeset
|
225 |
{ |
5129 | 226 |
peerLink->Close (peerManagementElement.GetLocalLinkId (), peerManagementElement.GetPeerLinkId (), |
7178
1a07cbb68308
mesh coding style changes
Josh Pelkey <jpelkey@gatech.edu>
parents:
6882
diff
changeset
|
227 |
peerManagementElement.GetReasonCode ()); |
5125
b90c6c0af6a3
Added max beacon loss to PeerManagementProtocol (for beacon timing), cosmetic
Kirill Andreev <andreev@iitp.ru>
parents:
5098
diff
changeset
|
228 |
} |
4858
78437693dcc7
Peer manager restructure - unfinished
Kirill Andreev <andreev@iitp.ru>
parents:
4857
diff
changeset
|
229 |
} |
4857
ddfb13420455
Added new peer manager class, an old one we keep without change
Kirill Andreev <andreev@iitp.ru>
parents:
diff
changeset
|
230 |
void |
4919
b8a0476c7e06
Added unicast PREQ, peer link status callback.
Kirill Andreev <andreev@iitp.ru>
parents:
4899
diff
changeset
|
231 |
PeerManagementProtocol::ConfigurationMismatch (uint32_t interface, Mac48Address peerAddress) |
4857
ddfb13420455
Added new peer manager class, an old one we keep without change
Kirill Andreev <andreev@iitp.ru>
parents:
diff
changeset
|
232 |
{ |
5125
b90c6c0af6a3
Added max beacon loss to PeerManagementProtocol (for beacon timing), cosmetic
Kirill Andreev <andreev@iitp.ru>
parents:
5098
diff
changeset
|
233 |
Ptr<PeerLink> peerLink = FindPeerLink (interface, peerAddress); |
b90c6c0af6a3
Added max beacon loss to PeerManagementProtocol (for beacon timing), cosmetic
Kirill Andreev <andreev@iitp.ru>
parents:
5098
diff
changeset
|
234 |
if (peerLink != 0) |
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 |
peerLink->MLMECancelPeerLink (REASON11S_MESH_CAPABILITY_POLICY_VIOLATION); |
b90c6c0af6a3
Added max beacon loss to PeerManagementProtocol (for beacon timing), cosmetic
Kirill Andreev <andreev@iitp.ru>
parents:
5098
diff
changeset
|
237 |
} |
4857
ddfb13420455
Added new peer manager class, an old one we keep without change
Kirill Andreev <andreev@iitp.ru>
parents:
diff
changeset
|
238 |
} |
5154
bb06787ed7fe
Added closing link due to transmission failure.
Kirill Andreev <andreev@iitp.ru>
parents:
5151
diff
changeset
|
239 |
void |
bb06787ed7fe
Added closing link due to transmission failure.
Kirill Andreev <andreev@iitp.ru>
parents:
5151
diff
changeset
|
240 |
PeerManagementProtocol::TransmissionFailure (uint32_t interface, Mac48Address peerAddress) |
bb06787ed7fe
Added closing link due to transmission failure.
Kirill Andreev <andreev@iitp.ru>
parents:
5151
diff
changeset
|
241 |
{ |
bb06787ed7fe
Added closing link due to transmission failure.
Kirill Andreev <andreev@iitp.ru>
parents:
5151
diff
changeset
|
242 |
NS_LOG_DEBUG("transmission failed between "<<GetAddress () << " and " << peerAddress << " failed, link will be colsed"); |
bb06787ed7fe
Added closing link due to transmission failure.
Kirill Andreev <andreev@iitp.ru>
parents:
5151
diff
changeset
|
243 |
Ptr<PeerLink> peerLink = FindPeerLink(interface, peerAddress); |
5155 | 244 |
if (peerLink != 0) |
5154
bb06787ed7fe
Added closing link due to transmission failure.
Kirill Andreev <andreev@iitp.ru>
parents:
5151
diff
changeset
|
245 |
{ |
bb06787ed7fe
Added closing link due to transmission failure.
Kirill Andreev <andreev@iitp.ru>
parents:
5151
diff
changeset
|
246 |
peerLink->TransmissionFailure (); |
bb06787ed7fe
Added closing link due to transmission failure.
Kirill Andreev <andreev@iitp.ru>
parents:
5151
diff
changeset
|
247 |
} |
bb06787ed7fe
Added closing link due to transmission failure.
Kirill Andreev <andreev@iitp.ru>
parents:
5151
diff
changeset
|
248 |
} |
bb06787ed7fe
Added closing link due to transmission failure.
Kirill Andreev <andreev@iitp.ru>
parents:
5151
diff
changeset
|
249 |
void |
bb06787ed7fe
Added closing link due to transmission failure.
Kirill Andreev <andreev@iitp.ru>
parents:
5151
diff
changeset
|
250 |
PeerManagementProtocol::TransmissionSuccess (uint32_t interface, Mac48Address peerAddress) |
bb06787ed7fe
Added closing link due to transmission failure.
Kirill Andreev <andreev@iitp.ru>
parents:
5151
diff
changeset
|
251 |
{ |
bb06787ed7fe
Added closing link due to transmission failure.
Kirill Andreev <andreev@iitp.ru>
parents:
5151
diff
changeset
|
252 |
NS_LOG_DEBUG("transmission success "<<GetAddress () << " and " << peerAddress << " failed, link will be colsed"); |
bb06787ed7fe
Added closing link due to transmission failure.
Kirill Andreev <andreev@iitp.ru>
parents:
5151
diff
changeset
|
253 |
Ptr<PeerLink> peerLink = FindPeerLink(interface, peerAddress); |
5155 | 254 |
if (peerLink != 0) |
5154
bb06787ed7fe
Added closing link due to transmission failure.
Kirill Andreev <andreev@iitp.ru>
parents:
5151
diff
changeset
|
255 |
{ |
bb06787ed7fe
Added closing link due to transmission failure.
Kirill Andreev <andreev@iitp.ru>
parents:
5151
diff
changeset
|
256 |
peerLink->TransmissionSuccess (); |
bb06787ed7fe
Added closing link due to transmission failure.
Kirill Andreev <andreev@iitp.ru>
parents:
5151
diff
changeset
|
257 |
} |
bb06787ed7fe
Added closing link due to transmission failure.
Kirill Andreev <andreev@iitp.ru>
parents:
5151
diff
changeset
|
258 |
} |
4866
564372fc5491
First management frame goes through new archotecture
Kirill Andreev <andreev@iitp.ru>
parents:
4865
diff
changeset
|
259 |
Ptr<PeerLink> |
5129 | 260 |
PeerManagementProtocol::InitiateLink (uint32_t interface, Mac48Address peerAddress, |
7178
1a07cbb68308
mesh coding style changes
Josh Pelkey <jpelkey@gatech.edu>
parents:
6882
diff
changeset
|
261 |
Mac48Address peerMeshPointAddress) |
4857
ddfb13420455
Added new peer manager class, an old one we keep without change
Kirill Andreev <andreev@iitp.ru>
parents:
diff
changeset
|
262 |
{ |
4866
564372fc5491
First management frame goes through new archotecture
Kirill Andreev <andreev@iitp.ru>
parents:
4865
diff
changeset
|
263 |
Ptr<PeerLink> new_link = CreateObject<PeerLink> (); |
4877
f08902c42733
Added a method to find peer link, code cleanup
Kirill Andreev <andreev@iitp.ru>
parents:
4876
diff
changeset
|
264 |
//find a peer link - it must not exist |
5129 | 265 |
if (FindPeerLink (interface, peerAddress) != 0) |
5063 | 266 |
{ |
5075 | 267 |
NS_FATAL_ERROR ("Peer link must not exist."); |
5063 | 268 |
} |
4881
cec7f8e2bbdf
Minor cosmetics. Peer management protocol is assumed to be implemented now.
Pavel Boyko <boyko@iitp.ru>
parents:
4880
diff
changeset
|
269 |
// Plugin must exist |
5087 | 270 |
PeerManagementProtocolMacMap::iterator plugin = m_plugins.find (interface); |
5129 | 271 |
NS_ASSERT (plugin != m_plugins.end ()); |
4868 | 272 |
PeerLinksMap::iterator iface = m_peerLinks.find (interface); |
5129 | 273 |
NS_ASSERT (iface != m_peerLinks.end ()); |
5446
85d025cc5da4
Mesh: fixed HWMP sequence and metric filtering, added route discovery time
Kirill Andreev <andreev@iitp.ru>
parents:
5422
diff
changeset
|
274 |
new_link->SetLocalAid (m_lastAssocId++); |
4869 | 275 |
new_link->SetInterface (interface); |
4866
564372fc5491
First management frame goes through new archotecture
Kirill Andreev <andreev@iitp.ru>
parents:
4865
diff
changeset
|
276 |
new_link->SetLocalLinkId (m_lastLocalLinkId++); |
564372fc5491
First management frame goes through new archotecture
Kirill Andreev <andreev@iitp.ru>
parents:
4865
diff
changeset
|
277 |
new_link->SetPeerAddress (peerAddress); |
4933
72f0481cfb2d
Peer link restructured to support multi-interface
Kirill Andreev <andreev@iitp.ru>
parents:
4926
diff
changeset
|
278 |
new_link->SetPeerMeshPointAddress (peerMeshPointAddress); |
4866
564372fc5491
First management frame goes through new archotecture
Kirill Andreev <andreev@iitp.ru>
parents:
4865
diff
changeset
|
279 |
new_link->SetMacPlugin (plugin->second); |
5129 | 280 |
new_link->MLMESetSignalStatusCallback (MakeCallback (&PeerManagementProtocol::PeerLinkStatus, this)); |
281 |
iface->second.push_back (new_link); |
|
4866
564372fc5491
First management frame goes through new archotecture
Kirill Andreev <andreev@iitp.ru>
parents:
4865
diff
changeset
|
282 |
return new_link; |
4857
ddfb13420455
Added new peer manager class, an old one we keep without change
Kirill Andreev <andreev@iitp.ru>
parents:
diff
changeset
|
283 |
} |
5446
85d025cc5da4
Mesh: fixed HWMP sequence and metric filtering, added route discovery time
Kirill Andreev <andreev@iitp.ru>
parents:
5422
diff
changeset
|
284 |
|
4877
f08902c42733
Added a method to find peer link, code cleanup
Kirill Andreev <andreev@iitp.ru>
parents:
4876
diff
changeset
|
285 |
Ptr<PeerLink> |
5129 | 286 |
PeerManagementProtocol::FindPeerLink (uint32_t interface, Mac48Address peerAddress) |
4877
f08902c42733
Added a method to find peer link, code cleanup
Kirill Andreev <andreev@iitp.ru>
parents:
4876
diff
changeset
|
287 |
{ |
f08902c42733
Added a method to find peer link, code cleanup
Kirill Andreev <andreev@iitp.ru>
parents:
4876
diff
changeset
|
288 |
PeerLinksMap::iterator iface = m_peerLinks.find (interface); |
5129 | 289 |
NS_ASSERT (iface != m_peerLinks.end ()); |
290 |
for (PeerLinksOnInterface::iterator i = iface->second.begin (); i != iface->second.end (); i++) |
|
291 |
{ |
|
292 |
if ((*i)->GetPeerAddress () == peerAddress) |
|
5125
b90c6c0af6a3
Added max beacon loss to PeerManagementProtocol (for beacon timing), cosmetic
Kirill Andreev <andreev@iitp.ru>
parents:
5098
diff
changeset
|
293 |
{ |
5129 | 294 |
if ((*i)->LinkIsIdle ()) |
295 |
{ |
|
296 |
(*i) = 0; |
|
297 |
(iface->second).erase (i); |
|
298 |
return 0; |
|
299 |
} |
|
300 |
else |
|
301 |
{ |
|
302 |
return (*i); |
|
303 |
} |
|
5125
b90c6c0af6a3
Added max beacon loss to PeerManagementProtocol (for beacon timing), cosmetic
Kirill Andreev <andreev@iitp.ru>
parents:
5098
diff
changeset
|
304 |
} |
5129 | 305 |
} |
4877
f08902c42733
Added a method to find peer link, code cleanup
Kirill Andreev <andreev@iitp.ru>
parents:
4876
diff
changeset
|
306 |
return 0; |
f08902c42733
Added a method to find peer link, code cleanup
Kirill Andreev <andreev@iitp.ru>
parents:
4876
diff
changeset
|
307 |
} |
4857
ddfb13420455
Added new peer manager class, an old one we keep without change
Kirill Andreev <andreev@iitp.ru>
parents:
diff
changeset
|
308 |
void |
5129 | 309 |
PeerManagementProtocol::SetPeerLinkStatusCallback ( |
7178
1a07cbb68308
mesh coding style changes
Josh Pelkey <jpelkey@gatech.edu>
parents:
6882
diff
changeset
|
310 |
Callback<void, Mac48Address, Mac48Address, uint32_t, bool> cb) |
4919
b8a0476c7e06
Added unicast PREQ, peer link status callback.
Kirill Andreev <andreev@iitp.ru>
parents:
4899
diff
changeset
|
311 |
{ |
b8a0476c7e06
Added unicast PREQ, peer link status callback.
Kirill Andreev <andreev@iitp.ru>
parents:
4899
diff
changeset
|
312 |
m_peerStatusCallback = cb; |
b8a0476c7e06
Added unicast PREQ, peer link status callback.
Kirill Andreev <andreev@iitp.ru>
parents:
4899
diff
changeset
|
313 |
} |
5446
85d025cc5da4
Mesh: fixed HWMP sequence and metric filtering, added route discovery time
Kirill Andreev <andreev@iitp.ru>
parents:
5422
diff
changeset
|
314 |
|
4919
b8a0476c7e06
Added unicast PREQ, peer link status callback.
Kirill Andreev <andreev@iitp.ru>
parents:
4899
diff
changeset
|
315 |
std::vector<Mac48Address> |
5446
85d025cc5da4
Mesh: fixed HWMP sequence and metric filtering, added route discovery time
Kirill Andreev <andreev@iitp.ru>
parents:
5422
diff
changeset
|
316 |
PeerManagementProtocol::GetPeers (uint32_t interface) const |
4919
b8a0476c7e06
Added unicast PREQ, peer link status callback.
Kirill Andreev <andreev@iitp.ru>
parents:
4899
diff
changeset
|
317 |
{ |
b8a0476c7e06
Added unicast PREQ, peer link status callback.
Kirill Andreev <andreev@iitp.ru>
parents:
4899
diff
changeset
|
318 |
std::vector<Mac48Address> retval; |
5446
85d025cc5da4
Mesh: fixed HWMP sequence and metric filtering, added route discovery time
Kirill Andreev <andreev@iitp.ru>
parents:
5422
diff
changeset
|
319 |
PeerLinksMap::const_iterator iface = m_peerLinks.find (interface); |
5129 | 320 |
NS_ASSERT (iface != m_peerLinks.end ()); |
5446
85d025cc5da4
Mesh: fixed HWMP sequence and metric filtering, added route discovery time
Kirill Andreev <andreev@iitp.ru>
parents:
5422
diff
changeset
|
321 |
for (PeerLinksOnInterface::const_iterator i = iface->second.begin (); i != iface->second.end (); i++) |
5125
b90c6c0af6a3
Added max beacon loss to PeerManagementProtocol (for beacon timing), cosmetic
Kirill Andreev <andreev@iitp.ru>
parents:
5098
diff
changeset
|
322 |
{ |
5129 | 323 |
if ((*i)->LinkIsEstab ()) |
324 |
{ |
|
325 |
retval.push_back ((*i)->GetPeerAddress ()); |
|
326 |
} |
|
5125
b90c6c0af6a3
Added max beacon loss to PeerManagementProtocol (for beacon timing), cosmetic
Kirill Andreev <andreev@iitp.ru>
parents:
5098
diff
changeset
|
327 |
} |
4919
b8a0476c7e06
Added unicast PREQ, peer link status callback.
Kirill Andreev <andreev@iitp.ru>
parents:
4899
diff
changeset
|
328 |
return retval; |
b8a0476c7e06
Added unicast PREQ, peer link status callback.
Kirill Andreev <andreev@iitp.ru>
parents:
4899
diff
changeset
|
329 |
} |
5446
85d025cc5da4
Mesh: fixed HWMP sequence and metric filtering, added route discovery time
Kirill Andreev <andreev@iitp.ru>
parents:
5422
diff
changeset
|
330 |
|
85d025cc5da4
Mesh: fixed HWMP sequence and metric filtering, added route discovery time
Kirill Andreev <andreev@iitp.ru>
parents:
5422
diff
changeset
|
331 |
std::vector< Ptr<PeerLink> > |
85d025cc5da4
Mesh: fixed HWMP sequence and metric filtering, added route discovery time
Kirill Andreev <andreev@iitp.ru>
parents:
5422
diff
changeset
|
332 |
PeerManagementProtocol::GetPeerLinks () const |
85d025cc5da4
Mesh: fixed HWMP sequence and metric filtering, added route discovery time
Kirill Andreev <andreev@iitp.ru>
parents:
5422
diff
changeset
|
333 |
{ |
85d025cc5da4
Mesh: fixed HWMP sequence and metric filtering, added route discovery time
Kirill Andreev <andreev@iitp.ru>
parents:
5422
diff
changeset
|
334 |
std::vector< Ptr<PeerLink> > links; |
85d025cc5da4
Mesh: fixed HWMP sequence and metric filtering, added route discovery time
Kirill Andreev <andreev@iitp.ru>
parents:
5422
diff
changeset
|
335 |
|
85d025cc5da4
Mesh: fixed HWMP sequence and metric filtering, added route discovery time
Kirill Andreev <andreev@iitp.ru>
parents:
5422
diff
changeset
|
336 |
for (PeerLinksMap::const_iterator iface = m_peerLinks.begin (); iface != m_peerLinks.end (); ++iface) |
85d025cc5da4
Mesh: fixed HWMP sequence and metric filtering, added route discovery time
Kirill Andreev <andreev@iitp.ru>
parents:
5422
diff
changeset
|
337 |
{ |
85d025cc5da4
Mesh: fixed HWMP sequence and metric filtering, added route discovery time
Kirill Andreev <andreev@iitp.ru>
parents:
5422
diff
changeset
|
338 |
for (PeerLinksOnInterface::const_iterator i = iface->second.begin (); |
7178
1a07cbb68308
mesh coding style changes
Josh Pelkey <jpelkey@gatech.edu>
parents:
6882
diff
changeset
|
339 |
i != iface->second.end (); i++) |
5446
85d025cc5da4
Mesh: fixed HWMP sequence and metric filtering, added route discovery time
Kirill Andreev <andreev@iitp.ru>
parents:
5422
diff
changeset
|
340 |
if ((*i)->LinkIsEstab ()) |
85d025cc5da4
Mesh: fixed HWMP sequence and metric filtering, added route discovery time
Kirill Andreev <andreev@iitp.ru>
parents:
5422
diff
changeset
|
341 |
links.push_back (*i); |
85d025cc5da4
Mesh: fixed HWMP sequence and metric filtering, added route discovery time
Kirill Andreev <andreev@iitp.ru>
parents:
5422
diff
changeset
|
342 |
} |
85d025cc5da4
Mesh: fixed HWMP sequence and metric filtering, added route discovery time
Kirill Andreev <andreev@iitp.ru>
parents:
5422
diff
changeset
|
343 |
return links; |
85d025cc5da4
Mesh: fixed HWMP sequence and metric filtering, added route discovery time
Kirill Andreev <andreev@iitp.ru>
parents:
5422
diff
changeset
|
344 |
} |
4870
79f9c2b6dffc
Uncommented destructor and cleaner
Kirill Andreev <andreev@iitp.ru>
parents:
4869
diff
changeset
|
345 |
bool |
4919
b8a0476c7e06
Added unicast PREQ, peer link status callback.
Kirill Andreev <andreev@iitp.ru>
parents:
4899
diff
changeset
|
346 |
PeerManagementProtocol::IsActiveLink (uint32_t interface, Mac48Address peerAddress) |
4857
ddfb13420455
Added new peer manager class, an old one we keep without change
Kirill Andreev <andreev@iitp.ru>
parents:
diff
changeset
|
347 |
{ |
5129 | 348 |
Ptr<PeerLink> peerLink = FindPeerLink (interface, peerAddress); |
5125
b90c6c0af6a3
Added max beacon loss to PeerManagementProtocol (for beacon timing), cosmetic
Kirill Andreev <andreev@iitp.ru>
parents:
5098
diff
changeset
|
349 |
if (peerLink != 0) |
b90c6c0af6a3
Added max beacon loss to PeerManagementProtocol (for beacon timing), cosmetic
Kirill Andreev <andreev@iitp.ru>
parents:
5098
diff
changeset
|
350 |
{ |
b90c6c0af6a3
Added max beacon loss to PeerManagementProtocol (for beacon timing), cosmetic
Kirill Andreev <andreev@iitp.ru>
parents:
5098
diff
changeset
|
351 |
return (peerLink->LinkIsEstab ()); |
b90c6c0af6a3
Added max beacon loss to PeerManagementProtocol (for beacon timing), cosmetic
Kirill Andreev <andreev@iitp.ru>
parents:
5098
diff
changeset
|
352 |
} |
4857
ddfb13420455
Added new peer manager class, an old one we keep without change
Kirill Andreev <andreev@iitp.ru>
parents:
diff
changeset
|
353 |
return false; |
ddfb13420455
Added new peer manager class, an old one we keep without change
Kirill Andreev <andreev@iitp.ru>
parents:
diff
changeset
|
354 |
} |
ddfb13420455
Added new peer manager class, an old one we keep without change
Kirill Andreev <andreev@iitp.ru>
parents:
diff
changeset
|
355 |
bool |
4919
b8a0476c7e06
Added unicast PREQ, peer link status callback.
Kirill Andreev <andreev@iitp.ru>
parents:
4899
diff
changeset
|
356 |
PeerManagementProtocol::ShouldSendOpen (uint32_t interface, Mac48Address peerAddress) |
4857
ddfb13420455
Added new peer manager class, an old one we keep without change
Kirill Andreev <andreev@iitp.ru>
parents:
diff
changeset
|
357 |
{ |
5098
13ded9ff11c4
XML reports simplified for better parsing
Pavel Boyko <boyko@iitp.ru>
parents:
5087
diff
changeset
|
358 |
return (m_stats.linksTotal <= m_maxNumberOfPeerLinks); |
4857
ddfb13420455
Added new peer manager class, an old one we keep without change
Kirill Andreev <andreev@iitp.ru>
parents:
diff
changeset
|
359 |
} |
5446
85d025cc5da4
Mesh: fixed HWMP sequence and metric filtering, added route discovery time
Kirill Andreev <andreev@iitp.ru>
parents:
5422
diff
changeset
|
360 |
|
4857
ddfb13420455
Added new peer manager class, an old one we keep without change
Kirill Andreev <andreev@iitp.ru>
parents:
diff
changeset
|
361 |
bool |
5129 | 362 |
PeerManagementProtocol::ShouldAcceptOpen (uint32_t interface, Mac48Address peerAddress, |
7178
1a07cbb68308
mesh coding style changes
Josh Pelkey <jpelkey@gatech.edu>
parents:
6882
diff
changeset
|
363 |
PmpReasonCode & reasonCode) |
4857
ddfb13420455
Added new peer manager class, an old one we keep without change
Kirill Andreev <andreev@iitp.ru>
parents:
diff
changeset
|
364 |
{ |
5098
13ded9ff11c4
XML reports simplified for better parsing
Pavel Boyko <boyko@iitp.ru>
parents:
5087
diff
changeset
|
365 |
if (m_stats.linksTotal > m_maxNumberOfPeerLinks) |
4857
ddfb13420455
Added new peer manager class, an old one we keep without change
Kirill Andreev <andreev@iitp.ru>
parents:
diff
changeset
|
366 |
{ |
ddfb13420455
Added new peer manager class, an old one we keep without change
Kirill Andreev <andreev@iitp.ru>
parents:
diff
changeset
|
367 |
reasonCode = REASON11S_MESH_MAX_PEERS; |
ddfb13420455
Added new peer manager class, an old one we keep without change
Kirill Andreev <andreev@iitp.ru>
parents:
diff
changeset
|
368 |
return false; |
ddfb13420455
Added new peer manager class, an old one we keep without change
Kirill Andreev <andreev@iitp.ru>
parents:
diff
changeset
|
369 |
} |
ddfb13420455
Added new peer manager class, an old one we keep without change
Kirill Andreev <andreev@iitp.ru>
parents:
diff
changeset
|
370 |
return true; |
ddfb13420455
Added new peer manager class, an old one we keep without change
Kirill Andreev <andreev@iitp.ru>
parents:
diff
changeset
|
371 |
} |
5446
85d025cc5da4
Mesh: fixed HWMP sequence and metric filtering, added route discovery time
Kirill Andreev <andreev@iitp.ru>
parents:
5422
diff
changeset
|
372 |
|
85d025cc5da4
Mesh: fixed HWMP sequence and metric filtering, added route discovery time
Kirill Andreev <andreev@iitp.ru>
parents:
5422
diff
changeset
|
373 |
void |
85d025cc5da4
Mesh: fixed HWMP sequence and metric filtering, added route discovery time
Kirill Andreev <andreev@iitp.ru>
parents:
5422
diff
changeset
|
374 |
PeerManagementProtocol::DoShiftBeacon (uint32_t interface) |
4857
ddfb13420455
Added new peer manager class, an old one we keep without change
Kirill Andreev <andreev@iitp.ru>
parents:
diff
changeset
|
375 |
{ |
5446
85d025cc5da4
Mesh: fixed HWMP sequence and metric filtering, added route discovery time
Kirill Andreev <andreev@iitp.ru>
parents:
5422
diff
changeset
|
376 |
if (!GetBeaconCollisionAvoidance ()) |
85d025cc5da4
Mesh: fixed HWMP sequence and metric filtering, added route discovery time
Kirill Andreev <andreev@iitp.ru>
parents:
5422
diff
changeset
|
377 |
{ |
85d025cc5da4
Mesh: fixed HWMP sequence and metric filtering, added route discovery time
Kirill Andreev <andreev@iitp.ru>
parents:
5422
diff
changeset
|
378 |
return; |
85d025cc5da4
Mesh: fixed HWMP sequence and metric filtering, added route discovery time
Kirill Andreev <andreev@iitp.ru>
parents:
5422
diff
changeset
|
379 |
} |
85d025cc5da4
Mesh: fixed HWMP sequence and metric filtering, added route discovery time
Kirill Andreev <andreev@iitp.ru>
parents:
5422
diff
changeset
|
380 |
// If beacon interval is equal to the neighbor's one and one o more beacons received |
85d025cc5da4
Mesh: fixed HWMP sequence and metric filtering, added route discovery time
Kirill Andreev <andreev@iitp.ru>
parents:
5422
diff
changeset
|
381 |
// by my neighbor coincide with my beacon - apply random uniformly distributed shift from |
85d025cc5da4
Mesh: fixed HWMP sequence and metric filtering, added route discovery time
Kirill Andreev <andreev@iitp.ru>
parents:
5422
diff
changeset
|
382 |
// [-m_maxBeaconShift, m_maxBeaconShift] except 0. |
85d025cc5da4
Mesh: fixed HWMP sequence and metric filtering, added route discovery time
Kirill Andreev <andreev@iitp.ru>
parents:
5422
diff
changeset
|
383 |
UniformVariable beaconShift (-m_maxBeaconShift, m_maxBeaconShift); |
4879 | 384 |
PeerLinksMap::iterator iface = m_peerLinks.find (interface); |
5129 | 385 |
NS_ASSERT (iface != m_peerLinks.end ()); |
5446
85d025cc5da4
Mesh: fixed HWMP sequence and metric filtering, added route discovery time
Kirill Andreev <andreev@iitp.ru>
parents:
5422
diff
changeset
|
386 |
PeerManagementProtocolMacMap::const_iterator plugin = m_plugins.find (interface); |
5129 | 387 |
NS_ASSERT (plugin != m_plugins.end ()); |
7228
0202763b3998
Bug 1160 - optimized build ‘plugin’ set but not used, g++4.6.0
John Abraham<john.abraham@gatech.edu>
parents:
7178
diff
changeset
|
388 |
// cast plugin to void, to suppress 'plugin' set but not used, compiler warning |
0202763b3998
Bug 1160 - optimized build ‘plugin’ set but not used, g++4.6.0
John Abraham<john.abraham@gatech.edu>
parents:
7178
diff
changeset
|
389 |
// in optimized builds |
0202763b3998
Bug 1160 - optimized build ‘plugin’ set but not used, g++4.6.0
John Abraham<john.abraham@gatech.edu>
parents:
7178
diff
changeset
|
390 |
(void) plugin; |
5446
85d025cc5da4
Mesh: fixed HWMP sequence and metric filtering, added route discovery time
Kirill Andreev <andreev@iitp.ru>
parents:
5422
diff
changeset
|
391 |
std::map<uint32_t, Time>::const_iterator lastBeacon = m_lastBeacon.find (interface); |
85d025cc5da4
Mesh: fixed HWMP sequence and metric filtering, added route discovery time
Kirill Andreev <andreev@iitp.ru>
parents:
5422
diff
changeset
|
392 |
std::map<uint32_t, Time>::const_iterator beaconInterval = m_beaconInterval.find (interface); |
85d025cc5da4
Mesh: fixed HWMP sequence and metric filtering, added route discovery time
Kirill Andreev <andreev@iitp.ru>
parents:
5422
diff
changeset
|
393 |
if ((lastBeacon == m_lastBeacon.end ()) || (beaconInterval == m_beaconInterval.end ())) |
5125
b90c6c0af6a3
Added max beacon loss to PeerManagementProtocol (for beacon timing), cosmetic
Kirill Andreev <andreev@iitp.ru>
parents:
5098
diff
changeset
|
394 |
{ |
5446
85d025cc5da4
Mesh: fixed HWMP sequence and metric filtering, added route discovery time
Kirill Andreev <andreev@iitp.ru>
parents:
5422
diff
changeset
|
395 |
return; |
85d025cc5da4
Mesh: fixed HWMP sequence and metric filtering, added route discovery time
Kirill Andreev <andreev@iitp.ru>
parents:
5422
diff
changeset
|
396 |
} |
85d025cc5da4
Mesh: fixed HWMP sequence and metric filtering, added route discovery time
Kirill Andreev <andreev@iitp.ru>
parents:
5422
diff
changeset
|
397 |
if (TuToTime (m_maxBeaconShift) > m_beaconInterval[interface]) |
85d025cc5da4
Mesh: fixed HWMP sequence and metric filtering, added route discovery time
Kirill Andreev <andreev@iitp.ru>
parents:
5422
diff
changeset
|
398 |
{ |
85d025cc5da4
Mesh: fixed HWMP sequence and metric filtering, added route discovery time
Kirill Andreev <andreev@iitp.ru>
parents:
5422
diff
changeset
|
399 |
NS_FATAL_ERROR ("Wrong beacon shift parameters"); |
85d025cc5da4
Mesh: fixed HWMP sequence and metric filtering, added route discovery time
Kirill Andreev <andreev@iitp.ru>
parents:
5422
diff
changeset
|
400 |
return; |
5125
b90c6c0af6a3
Added max beacon loss to PeerManagementProtocol (for beacon timing), cosmetic
Kirill Andreev <andreev@iitp.ru>
parents:
5098
diff
changeset
|
401 |
} |
4879 | 402 |
for (PeerLinksOnInterface::iterator i = iface->second.begin (); i != iface->second.end (); i++) |
4857
ddfb13420455
Added new peer manager class, an old one we keep without change
Kirill Andreev <andreev@iitp.ru>
parents:
diff
changeset
|
403 |
{ |
4876
d78f1b978dac
Rstructured file names: IeDot11s* no is Ie, because it is in namespace dot11s
Kirill Andreev <andreev@iitp.ru>
parents:
4873
diff
changeset
|
404 |
IeBeaconTiming::NeighboursTimingUnitsList neighbours; |
5129 | 405 |
neighbours = (*i)->GetBeaconTimingElement ().GetNeighboursTimingElementsList (); |
5075 | 406 |
//Going through all my timing elements and detecting future beacon collisions |
5129 | 407 |
for (IeBeaconTiming::NeighboursTimingUnitsList::const_iterator j = neighbours.begin (); j |
7178
1a07cbb68308
mesh coding style changes
Josh Pelkey <jpelkey@gatech.edu>
parents:
6882
diff
changeset
|
408 |
!= neighbours.end (); j++) |
5129 | 409 |
{ |
5446
85d025cc5da4
Mesh: fixed HWMP sequence and metric filtering, added route discovery time
Kirill Andreev <andreev@iitp.ru>
parents:
5422
diff
changeset
|
410 |
if ((*i)->GetPeerAid () == (*j)->GetAid ()) |
85d025cc5da4
Mesh: fixed HWMP sequence and metric filtering, added route discovery time
Kirill Andreev <andreev@iitp.ru>
parents:
5422
diff
changeset
|
411 |
{ |
85d025cc5da4
Mesh: fixed HWMP sequence and metric filtering, added route discovery time
Kirill Andreev <andreev@iitp.ru>
parents:
5422
diff
changeset
|
412 |
// I am present at neighbour's list of neighbors |
85d025cc5da4
Mesh: fixed HWMP sequence and metric filtering, added route discovery time
Kirill Andreev <andreev@iitp.ru>
parents:
5422
diff
changeset
|
413 |
continue; |
85d025cc5da4
Mesh: fixed HWMP sequence and metric filtering, added route discovery time
Kirill Andreev <andreev@iitp.ru>
parents:
5422
diff
changeset
|
414 |
} |
85d025cc5da4
Mesh: fixed HWMP sequence and metric filtering, added route discovery time
Kirill Andreev <andreev@iitp.ru>
parents:
5422
diff
changeset
|
415 |
//Beacon interval is stored in TU's |
5450 | 416 |
if (((*j)->GetBeaconInterval ()) != TimeToTu (beaconInterval->second)) |
4857
ddfb13420455
Added new peer manager class, an old one we keep without change
Kirill Andreev <andreev@iitp.ru>
parents:
diff
changeset
|
417 |
{ |
5446
85d025cc5da4
Mesh: fixed HWMP sequence and metric filtering, added route discovery time
Kirill Andreev <andreev@iitp.ru>
parents:
5422
diff
changeset
|
418 |
continue; |
85d025cc5da4
Mesh: fixed HWMP sequence and metric filtering, added route discovery time
Kirill Andreev <andreev@iitp.ru>
parents:
5422
diff
changeset
|
419 |
} |
85d025cc5da4
Mesh: fixed HWMP sequence and metric filtering, added route discovery time
Kirill Andreev <andreev@iitp.ru>
parents:
5422
diff
changeset
|
420 |
//Timing element keeps beacon receiving times in 256us units, TU=1024us |
7178
1a07cbb68308
mesh coding style changes
Josh Pelkey <jpelkey@gatech.edu>
parents:
6882
diff
changeset
|
421 |
if ((int)((int)(*j)->GetLastBeacon () / 4 - (int)TimeToTu (lastBeacon->second)) % TimeToTu ( |
1a07cbb68308
mesh coding style changes
Josh Pelkey <jpelkey@gatech.edu>
parents:
6882
diff
changeset
|
422 |
beaconInterval->second) |
5446
85d025cc5da4
Mesh: fixed HWMP sequence and metric filtering, added route discovery time
Kirill Andreev <andreev@iitp.ru>
parents:
5422
diff
changeset
|
423 |
!= 0) |
85d025cc5da4
Mesh: fixed HWMP sequence and metric filtering, added route discovery time
Kirill Andreev <andreev@iitp.ru>
parents:
5422
diff
changeset
|
424 |
{ |
85d025cc5da4
Mesh: fixed HWMP sequence and metric filtering, added route discovery time
Kirill Andreev <andreev@iitp.ru>
parents:
5422
diff
changeset
|
425 |
continue; |
85d025cc5da4
Mesh: fixed HWMP sequence and metric filtering, added route discovery time
Kirill Andreev <andreev@iitp.ru>
parents:
5422
diff
changeset
|
426 |
} |
7178
1a07cbb68308
mesh coding style changes
Josh Pelkey <jpelkey@gatech.edu>
parents:
6882
diff
changeset
|
427 |
int shift = 0; |
1a07cbb68308
mesh coding style changes
Josh Pelkey <jpelkey@gatech.edu>
parents:
6882
diff
changeset
|
428 |
do |
1a07cbb68308
mesh coding style changes
Josh Pelkey <jpelkey@gatech.edu>
parents:
6882
diff
changeset
|
429 |
{ |
1a07cbb68308
mesh coding style changes
Josh Pelkey <jpelkey@gatech.edu>
parents:
6882
diff
changeset
|
430 |
shift = (int) beaconShift.GetValue (); |
1a07cbb68308
mesh coding style changes
Josh Pelkey <jpelkey@gatech.edu>
parents:
6882
diff
changeset
|
431 |
} |
1a07cbb68308
mesh coding style changes
Josh Pelkey <jpelkey@gatech.edu>
parents:
6882
diff
changeset
|
432 |
while (shift == 0); |
1a07cbb68308
mesh coding style changes
Josh Pelkey <jpelkey@gatech.edu>
parents:
6882
diff
changeset
|
433 |
PeerManagementProtocolMacMap::iterator plugin = m_plugins.find (interface); |
1a07cbb68308
mesh coding style changes
Josh Pelkey <jpelkey@gatech.edu>
parents:
6882
diff
changeset
|
434 |
NS_ASSERT (plugin != m_plugins.end ()); |
1a07cbb68308
mesh coding style changes
Josh Pelkey <jpelkey@gatech.edu>
parents:
6882
diff
changeset
|
435 |
plugin->second->SetBeaconShift (TuToTime (shift)); |
1a07cbb68308
mesh coding style changes
Josh Pelkey <jpelkey@gatech.edu>
parents:
6882
diff
changeset
|
436 |
return; |
5129 | 437 |
} |
4857
ddfb13420455
Added new peer manager class, an old one we keep without change
Kirill Andreev <andreev@iitp.ru>
parents:
diff
changeset
|
438 |
} |
ddfb13420455
Added new peer manager class, an old one we keep without change
Kirill Andreev <andreev@iitp.ru>
parents:
diff
changeset
|
439 |
} |
5075 | 440 |
Time |
441 |
PeerManagementProtocol::TuToTime (uint32_t x) |
|
442 |
{ |
|
443 |
return MicroSeconds (x * 1024); |
|
444 |
} |
|
445 |
uint32_t |
|
446 |
PeerManagementProtocol::TimeToTu (Time x) |
|
447 |
{ |
|
7178
1a07cbb68308
mesh coding style changes
Josh Pelkey <jpelkey@gatech.edu>
parents:
6882
diff
changeset
|
448 |
return (uint32_t)(x.GetMicroSeconds () / 1024); |
5075 | 449 |
} |
5825
9e8c8a54772b
Mesh: PeerManagementProtocol: added trace sources for peer link change
Kirill Andreev <andreev@iitp.ru>
parents:
5450
diff
changeset
|
450 |
|
9e8c8a54772b
Mesh: PeerManagementProtocol: added trace sources for peer link change
Kirill Andreev <andreev@iitp.ru>
parents:
5450
diff
changeset
|
451 |
void |
9e8c8a54772b
Mesh: PeerManagementProtocol: added trace sources for peer link change
Kirill Andreev <andreev@iitp.ru>
parents:
5450
diff
changeset
|
452 |
PeerManagementProtocol::NotifyLinkOpen (Mac48Address peerMp, Mac48Address peerIface, Mac48Address myIface, uint32_t interface) |
9e8c8a54772b
Mesh: PeerManagementProtocol: added trace sources for peer link change
Kirill Andreev <andreev@iitp.ru>
parents:
5450
diff
changeset
|
453 |
{ |
9e8c8a54772b
Mesh: PeerManagementProtocol: added trace sources for peer link change
Kirill Andreev <andreev@iitp.ru>
parents:
5450
diff
changeset
|
454 |
NS_LOG_LOGIC ("link_open " << myIface << " " << peerIface); |
9e8c8a54772b
Mesh: PeerManagementProtocol: added trace sources for peer link change
Kirill Andreev <andreev@iitp.ru>
parents:
5450
diff
changeset
|
455 |
m_stats.linksOpened++; |
9e8c8a54772b
Mesh: PeerManagementProtocol: added trace sources for peer link change
Kirill Andreev <andreev@iitp.ru>
parents:
5450
diff
changeset
|
456 |
m_stats.linksTotal++; |
9e8c8a54772b
Mesh: PeerManagementProtocol: added trace sources for peer link change
Kirill Andreev <andreev@iitp.ru>
parents:
5450
diff
changeset
|
457 |
if (!m_peerStatusCallback.IsNull ()) |
9e8c8a54772b
Mesh: PeerManagementProtocol: added trace sources for peer link change
Kirill Andreev <andreev@iitp.ru>
parents:
5450
diff
changeset
|
458 |
{ |
9e8c8a54772b
Mesh: PeerManagementProtocol: added trace sources for peer link change
Kirill Andreev <andreev@iitp.ru>
parents:
5450
diff
changeset
|
459 |
m_peerStatusCallback (peerMp, peerIface, interface, true); |
9e8c8a54772b
Mesh: PeerManagementProtocol: added trace sources for peer link change
Kirill Andreev <andreev@iitp.ru>
parents:
5450
diff
changeset
|
460 |
} |
9e8c8a54772b
Mesh: PeerManagementProtocol: added trace sources for peer link change
Kirill Andreev <andreev@iitp.ru>
parents:
5450
diff
changeset
|
461 |
m_linkOpenTraceSrc (myIface, peerIface); |
9e8c8a54772b
Mesh: PeerManagementProtocol: added trace sources for peer link change
Kirill Andreev <andreev@iitp.ru>
parents:
5450
diff
changeset
|
462 |
} |
9e8c8a54772b
Mesh: PeerManagementProtocol: added trace sources for peer link change
Kirill Andreev <andreev@iitp.ru>
parents:
5450
diff
changeset
|
463 |
|
9e8c8a54772b
Mesh: PeerManagementProtocol: added trace sources for peer link change
Kirill Andreev <andreev@iitp.ru>
parents:
5450
diff
changeset
|
464 |
void |
9e8c8a54772b
Mesh: PeerManagementProtocol: added trace sources for peer link change
Kirill Andreev <andreev@iitp.ru>
parents:
5450
diff
changeset
|
465 |
PeerManagementProtocol::NotifyLinkClose (Mac48Address peerMp, Mac48Address peerIface, Mac48Address myIface, uint32_t interface) |
9e8c8a54772b
Mesh: PeerManagementProtocol: added trace sources for peer link change
Kirill Andreev <andreev@iitp.ru>
parents:
5450
diff
changeset
|
466 |
{ |
9e8c8a54772b
Mesh: PeerManagementProtocol: added trace sources for peer link change
Kirill Andreev <andreev@iitp.ru>
parents:
5450
diff
changeset
|
467 |
NS_LOG_LOGIC ("link_close " << myIface << " " << peerIface); |
9e8c8a54772b
Mesh: PeerManagementProtocol: added trace sources for peer link change
Kirill Andreev <andreev@iitp.ru>
parents:
5450
diff
changeset
|
468 |
m_stats.linksClosed++; |
9e8c8a54772b
Mesh: PeerManagementProtocol: added trace sources for peer link change
Kirill Andreev <andreev@iitp.ru>
parents:
5450
diff
changeset
|
469 |
m_stats.linksTotal--; |
9e8c8a54772b
Mesh: PeerManagementProtocol: added trace sources for peer link change
Kirill Andreev <andreev@iitp.ru>
parents:
5450
diff
changeset
|
470 |
if (!m_peerStatusCallback.IsNull ()) |
9e8c8a54772b
Mesh: PeerManagementProtocol: added trace sources for peer link change
Kirill Andreev <andreev@iitp.ru>
parents:
5450
diff
changeset
|
471 |
{ |
9e8c8a54772b
Mesh: PeerManagementProtocol: added trace sources for peer link change
Kirill Andreev <andreev@iitp.ru>
parents:
5450
diff
changeset
|
472 |
m_peerStatusCallback (peerMp, peerIface, interface, false); |
9e8c8a54772b
Mesh: PeerManagementProtocol: added trace sources for peer link change
Kirill Andreev <andreev@iitp.ru>
parents:
5450
diff
changeset
|
473 |
} |
9e8c8a54772b
Mesh: PeerManagementProtocol: added trace sources for peer link change
Kirill Andreev <andreev@iitp.ru>
parents:
5450
diff
changeset
|
474 |
m_linkCloseTraceSrc (myIface, peerIface); |
9e8c8a54772b
Mesh: PeerManagementProtocol: added trace sources for peer link change
Kirill Andreev <andreev@iitp.ru>
parents:
5450
diff
changeset
|
475 |
} |
9e8c8a54772b
Mesh: PeerManagementProtocol: added trace sources for peer link change
Kirill Andreev <andreev@iitp.ru>
parents:
5450
diff
changeset
|
476 |
|
4857
ddfb13420455
Added new peer manager class, an old one we keep without change
Kirill Andreev <andreev@iitp.ru>
parents:
diff
changeset
|
477 |
void |
5129 | 478 |
PeerManagementProtocol::PeerLinkStatus (uint32_t interface, Mac48Address peerAddress, |
7178
1a07cbb68308
mesh coding style changes
Josh Pelkey <jpelkey@gatech.edu>
parents:
6882
diff
changeset
|
479 |
Mac48Address peerMeshPointAddress, PeerLink::PeerState ostate, PeerLink::PeerState nstate) |
4857
ddfb13420455
Added new peer manager class, an old one we keep without change
Kirill Andreev <andreev@iitp.ru>
parents:
diff
changeset
|
480 |
{ |
5087 | 481 |
PeerManagementProtocolMacMap::iterator plugin = m_plugins.find (interface); |
5129 | 482 |
NS_ASSERT (plugin != m_plugins.end ()); |
483 |
NS_LOG_DEBUG ("Link between me:" << m_address << " my interface:" << plugin->second->GetAddress () |
|
7178
1a07cbb68308
mesh coding style changes
Josh Pelkey <jpelkey@gatech.edu>
parents:
6882
diff
changeset
|
484 |
<< " and peer mesh point:" << peerMeshPointAddress << " and its interface:" << peerAddress |
1a07cbb68308
mesh coding style changes
Josh Pelkey <jpelkey@gatech.edu>
parents:
6882
diff
changeset
|
485 |
<< ", at my interface ID:" << interface << ". State movement:" << ostate << " -> " << nstate); |
5125
b90c6c0af6a3
Added max beacon loss to PeerManagementProtocol (for beacon timing), cosmetic
Kirill Andreev <andreev@iitp.ru>
parents:
5098
diff
changeset
|
486 |
if ((nstate == PeerLink::ESTAB) && (ostate != PeerLink::ESTAB)) |
5063 | 487 |
{ |
5825
9e8c8a54772b
Mesh: PeerManagementProtocol: added trace sources for peer link change
Kirill Andreev <andreev@iitp.ru>
parents:
5450
diff
changeset
|
488 |
NotifyLinkOpen (peerMeshPointAddress, peerAddress, plugin->second->GetAddress (), interface); |
5063 | 489 |
} |
5125
b90c6c0af6a3
Added max beacon loss to PeerManagementProtocol (for beacon timing), cosmetic
Kirill Andreev <andreev@iitp.ru>
parents:
5098
diff
changeset
|
490 |
if ((ostate == PeerLink::ESTAB) && (nstate != PeerLink::ESTAB)) |
5063 | 491 |
{ |
5825
9e8c8a54772b
Mesh: PeerManagementProtocol: added trace sources for peer link change
Kirill Andreev <andreev@iitp.ru>
parents:
5450
diff
changeset
|
492 |
NotifyLinkClose (peerMeshPointAddress, peerAddress, plugin->second->GetAddress (), interface); |
5085
5cfc1e9372af
Fixed peer link status notification
Kirill Andreev <andreev@iitp.ru>
parents:
5077
diff
changeset
|
493 |
} |
5cfc1e9372af
Fixed peer link status notification
Kirill Andreev <andreev@iitp.ru>
parents:
5077
diff
changeset
|
494 |
if (nstate == PeerLink::IDLE) |
5cfc1e9372af
Fixed peer link status notification
Kirill Andreev <andreev@iitp.ru>
parents:
5077
diff
changeset
|
495 |
{ |
5129 | 496 |
Ptr<PeerLink> link = FindPeerLink (interface, peerAddress); |
5075 | 497 |
NS_ASSERT (link == 0); |
5063 | 498 |
} |
4857
ddfb13420455
Added new peer manager class, an old one we keep without change
Kirill Andreev <andreev@iitp.ru>
parents:
diff
changeset
|
499 |
} |
5017
a2a6accbc167
Restructured mesh configuration element
Kirill Andreev <andreev@iitp.ru>
parents:
5015
diff
changeset
|
500 |
uint8_t |
a2a6accbc167
Restructured mesh configuration element
Kirill Andreev <andreev@iitp.ru>
parents:
5015
diff
changeset
|
501 |
PeerManagementProtocol::GetNumberOfLinks () |
a2a6accbc167
Restructured mesh configuration element
Kirill Andreev <andreev@iitp.ru>
parents:
5015
diff
changeset
|
502 |
{ |
5098
13ded9ff11c4
XML reports simplified for better parsing
Pavel Boyko <boyko@iitp.ru>
parents:
5087
diff
changeset
|
503 |
return m_stats.linksTotal; |
5017
a2a6accbc167
Restructured mesh configuration element
Kirill Andreev <andreev@iitp.ru>
parents:
5015
diff
changeset
|
504 |
} |
5020
79e8178d69eb
Mesh ID is made separately from SSID
Kirill Andreev <andreev@iitp.ru>
parents:
5017
diff
changeset
|
505 |
Ptr<IeMeshId> |
79e8178d69eb
Mesh ID is made separately from SSID
Kirill Andreev <andreev@iitp.ru>
parents:
5017
diff
changeset
|
506 |
PeerManagementProtocol::GetMeshId () const |
79e8178d69eb
Mesh ID is made separately from SSID
Kirill Andreev <andreev@iitp.ru>
parents:
5017
diff
changeset
|
507 |
{ |
5024 | 508 |
NS_ASSERT (m_meshId != 0); |
5020
79e8178d69eb
Mesh ID is made separately from SSID
Kirill Andreev <andreev@iitp.ru>
parents:
5017
diff
changeset
|
509 |
return m_meshId; |
79e8178d69eb
Mesh ID is made separately from SSID
Kirill Andreev <andreev@iitp.ru>
parents:
5017
diff
changeset
|
510 |
} |
79e8178d69eb
Mesh ID is made separately from SSID
Kirill Andreev <andreev@iitp.ru>
parents:
5017
diff
changeset
|
511 |
void |
5129 | 512 |
PeerManagementProtocol::SetMeshId (std::string s) |
5020
79e8178d69eb
Mesh ID is made separately from SSID
Kirill Andreev <andreev@iitp.ru>
parents:
5017
diff
changeset
|
513 |
{ |
5049 | 514 |
m_meshId = Create<IeMeshId> (s); |
5020
79e8178d69eb
Mesh ID is made separately from SSID
Kirill Andreev <andreev@iitp.ru>
parents:
5017
diff
changeset
|
515 |
} |
4933
72f0481cfb2d
Peer link restructured to support multi-interface
Kirill Andreev <andreev@iitp.ru>
parents:
4926
diff
changeset
|
516 |
Mac48Address |
72f0481cfb2d
Peer link restructured to support multi-interface
Kirill Andreev <andreev@iitp.ru>
parents:
4926
diff
changeset
|
517 |
PeerManagementProtocol::GetAddress () |
72f0481cfb2d
Peer link restructured to support multi-interface
Kirill Andreev <andreev@iitp.ru>
parents:
4926
diff
changeset
|
518 |
{ |
72f0481cfb2d
Peer link restructured to support multi-interface
Kirill Andreev <andreev@iitp.ru>
parents:
4926
diff
changeset
|
519 |
return m_address; |
72f0481cfb2d
Peer link restructured to support multi-interface
Kirill Andreev <andreev@iitp.ru>
parents:
4926
diff
changeset
|
520 |
} |
5446
85d025cc5da4
Mesh: fixed HWMP sequence and metric filtering, added route discovery time
Kirill Andreev <andreev@iitp.ru>
parents:
5422
diff
changeset
|
521 |
void |
85d025cc5da4
Mesh: fixed HWMP sequence and metric filtering, added route discovery time
Kirill Andreev <andreev@iitp.ru>
parents:
5422
diff
changeset
|
522 |
PeerManagementProtocol::NotifyBeaconSent (uint32_t interface, Time beaconInterval) |
85d025cc5da4
Mesh: fixed HWMP sequence and metric filtering, added route discovery time
Kirill Andreev <andreev@iitp.ru>
parents:
5422
diff
changeset
|
523 |
{ |
85d025cc5da4
Mesh: fixed HWMP sequence and metric filtering, added route discovery time
Kirill Andreev <andreev@iitp.ru>
parents:
5422
diff
changeset
|
524 |
m_lastBeacon[interface] = Simulator::Now (); |
85d025cc5da4
Mesh: fixed HWMP sequence and metric filtering, added route discovery time
Kirill Andreev <andreev@iitp.ru>
parents:
5422
diff
changeset
|
525 |
m_beaconInterval[interface] = beaconInterval; |
85d025cc5da4
Mesh: fixed HWMP sequence and metric filtering, added route discovery time
Kirill Andreev <andreev@iitp.ru>
parents:
5422
diff
changeset
|
526 |
} |
5126
8e06088a785d
Statistics removed from headers
Kirill Andreev <andreev@iitp.ru>
parents:
5125
diff
changeset
|
527 |
PeerManagementProtocol::Statistics::Statistics (uint16_t t) : |
5129 | 528 |
linksTotal (t), linksOpened (0), linksClosed (0) |
529 |
{ |
|
530 |
} |
|
5012 | 531 |
void |
5013 | 532 |
PeerManagementProtocol::Statistics::Print (std::ostream & os) const |
533 |
{ |
|
5015 | 534 |
os << "<Statistics " |
7178
1a07cbb68308
mesh coding style changes
Josh Pelkey <jpelkey@gatech.edu>
parents:
6882
diff
changeset
|
535 |
"linksTotal=\"" << linksTotal << "\" " |
1a07cbb68308
mesh coding style changes
Josh Pelkey <jpelkey@gatech.edu>
parents:
6882
diff
changeset
|
536 |
"linksOpened=\"" << linksOpened << "\" " |
1a07cbb68308
mesh coding style changes
Josh Pelkey <jpelkey@gatech.edu>
parents:
6882
diff
changeset
|
537 |
"linksClosed=\"" << linksClosed << "\"/>" << std::endl; |
5013 | 538 |
} |
539 |
void |
|
5012 | 540 |
PeerManagementProtocol::Report (std::ostream & os) const |
541 |
{ |
|
5157
ace422ad12df
Cosmetics: '\n' was replaced with std::endl, Camel case for attributes
Kirill Andreev <andreev@iitp.ru>
parents:
5156
diff
changeset
|
542 |
os << "<PeerManagementProtocol>" << std::endl; |
5013 | 543 |
m_stats.Print (os); |
5129 | 544 |
for (PeerManagementProtocolMacMap::const_iterator plugins = m_plugins.begin (); plugins != m_plugins.end (); plugins++) |
5063 | 545 |
{ |
546 |
//Take statistics from plugin: |
|
547 |
plugins->second->Report (os); |
|
548 |
//Print all active peer links: |
|
549 |
PeerLinksMap::const_iterator iface = m_peerLinks.find (plugins->second->m_ifIndex); |
|
5129 | 550 |
NS_ASSERT (iface != m_peerLinks.end ()); |
551 |
for (PeerLinksOnInterface::const_iterator i = iface->second.begin (); i != iface->second.end (); i++) |
|
5125
b90c6c0af6a3
Added max beacon loss to PeerManagementProtocol (for beacon timing), cosmetic
Kirill Andreev <andreev@iitp.ru>
parents:
5098
diff
changeset
|
552 |
{ |
b90c6c0af6a3
Added max beacon loss to PeerManagementProtocol (for beacon timing), cosmetic
Kirill Andreev <andreev@iitp.ru>
parents:
5098
diff
changeset
|
553 |
(*i)->Report (os); |
b90c6c0af6a3
Added max beacon loss to PeerManagementProtocol (for beacon timing), cosmetic
Kirill Andreev <andreev@iitp.ru>
parents:
5098
diff
changeset
|
554 |
} |
5063 | 555 |
} |
5157
ace422ad12df
Cosmetics: '\n' was replaced with std::endl, Camel case for attributes
Kirill Andreev <andreev@iitp.ru>
parents:
5156
diff
changeset
|
556 |
os << "</PeerManagementProtocol>" << std::endl; |
5012 | 557 |
} |
5013 | 558 |
void |
559 |
PeerManagementProtocol::ResetStats () |
|
560 |
{ |
|
6157
e3f238a05acb
Fix build with g++-4.5.
Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
parents:
5825
diff
changeset
|
561 |
m_stats = Statistics (m_stats.linksTotal); // don't reset number of links |
5129 | 562 |
for (PeerManagementProtocolMacMap::const_iterator plugins = m_plugins.begin (); plugins != m_plugins.end (); plugins++) |
5125
b90c6c0af6a3
Added max beacon loss to PeerManagementProtocol (for beacon timing), cosmetic
Kirill Andreev <andreev@iitp.ru>
parents:
5098
diff
changeset
|
563 |
{ |
b90c6c0af6a3
Added max beacon loss to PeerManagementProtocol (for beacon timing), cosmetic
Kirill Andreev <andreev@iitp.ru>
parents:
5098
diff
changeset
|
564 |
plugins->second->ResetStats (); |
b90c6c0af6a3
Added max beacon loss to PeerManagementProtocol (for beacon timing), cosmetic
Kirill Andreev <andreev@iitp.ru>
parents:
5098
diff
changeset
|
565 |
} |
5013 | 566 |
} |
567 |
||
5446
85d025cc5da4
Mesh: fixed HWMP sequence and metric filtering, added route discovery time
Kirill Andreev <andreev@iitp.ru>
parents:
5422
diff
changeset
|
568 |
void |
85d025cc5da4
Mesh: fixed HWMP sequence and metric filtering, added route discovery time
Kirill Andreev <andreev@iitp.ru>
parents:
5422
diff
changeset
|
569 |
PeerManagementProtocol::SetBeaconCollisionAvoidance (bool enable) |
85d025cc5da4
Mesh: fixed HWMP sequence and metric filtering, added route discovery time
Kirill Andreev <andreev@iitp.ru>
parents:
5422
diff
changeset
|
570 |
{ |
85d025cc5da4
Mesh: fixed HWMP sequence and metric filtering, added route discovery time
Kirill Andreev <andreev@iitp.ru>
parents:
5422
diff
changeset
|
571 |
m_enableBca = enable; |
85d025cc5da4
Mesh: fixed HWMP sequence and metric filtering, added route discovery time
Kirill Andreev <andreev@iitp.ru>
parents:
5422
diff
changeset
|
572 |
} |
85d025cc5da4
Mesh: fixed HWMP sequence and metric filtering, added route discovery time
Kirill Andreev <andreev@iitp.ru>
parents:
5422
diff
changeset
|
573 |
bool |
85d025cc5da4
Mesh: fixed HWMP sequence and metric filtering, added route discovery time
Kirill Andreev <andreev@iitp.ru>
parents:
5422
diff
changeset
|
574 |
PeerManagementProtocol::GetBeaconCollisionAvoidance () const |
85d025cc5da4
Mesh: fixed HWMP sequence and metric filtering, added route discovery time
Kirill Andreev <andreev@iitp.ru>
parents:
5422
diff
changeset
|
575 |
{ |
85d025cc5da4
Mesh: fixed HWMP sequence and metric filtering, added route discovery time
Kirill Andreev <andreev@iitp.ru>
parents:
5422
diff
changeset
|
576 |
return m_enableBca; |
85d025cc5da4
Mesh: fixed HWMP sequence and metric filtering, added route discovery time
Kirill Andreev <andreev@iitp.ru>
parents:
5422
diff
changeset
|
577 |
} |
4872 | 578 |
} // namespace dot11s |
579 |
} //namespace ns3 |
|
580 |