--- a/src/devices/mesh/dot11s/peer-link.cc Wed Jul 22 13:31:31 2009 +0400
+++ b/src/devices/mesh/dot11s/peer-link.cc Wed Jul 22 14:52:42 2009 +0400
@@ -1,7 +1,7 @@
/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
-/*
+/*
* Copyright (c) 2009 IITP RAS
- *
+ *
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License version 2 as
* published by the Free Software Foundation;
@@ -14,7 +14,7 @@
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- *
+ *
* Authors: Kirill Andreev <andreev@iitp.ru>
* Aleksey Kovalenko <kovalenko@iitp.ru>
* Pavel Boyko <boyko@iitp.ru>
@@ -27,55 +27,65 @@
NS_LOG_COMPONENT_DEFINE ("Dot11sPeerManagementProtocol");
-namespace ns3 {
-namespace dot11s {
+namespace ns3
+{
+namespace dot11s
+{
-NS_OBJECT_ENSURE_REGISTERED(PeerLink);
+NS_OBJECT_ENSURE_REGISTERED( PeerLink);
-TypeId
-PeerLink::GetTypeId()
+TypeId
+PeerLink::GetTypeId ()
{
static TypeId tid = TypeId ("ns3::dot11s::PeerLink")
.SetParent<Object> ()
.AddConstructor<PeerLink> ()
- .AddAttribute ("RetryTimeout", "Retry timeout",
- TimeValue (TimeValue (MicroSeconds (40 * 1024))),
- MakeTimeAccessor (&PeerLink::m_dot11MeshRetryTimeout),
- MakeTimeChecker ()
- )
- .AddAttribute ("HoldingTimeout", "Holding timeout",
- TimeValue (TimeValue (MicroSeconds (40 * 1024))),
- MakeTimeAccessor (&PeerLink::m_dot11MeshHoldingTimeout),
- MakeTimeChecker ()
- )
- .AddAttribute ("ConfirmTimeout", "Confirm timeout",
- TimeValue (TimeValue (MicroSeconds (40 * 1024))),
- MakeTimeAccessor (&PeerLink::m_dot11MeshConfirmTimeout),
- MakeTimeChecker ()
- )
- .AddAttribute ("MaxRetries", "Maximum number of retries",
- UintegerValue (4),
- MakeUintegerAccessor (&PeerLink::m_dot11MeshMaxRetries),
- MakeUintegerChecker<uint16_t> ()
- )
- .AddAttribute ("MaxBeaconLoss", "Maximum number of lost beacons before link will be closed",
- UintegerValue (2),
- MakeUintegerAccessor (&PeerLink::m_maxBeaconLoss),
- MakeUintegerChecker<uint16_t> (1)
- );
+ .AddAttribute ( "RetryTimeout",
+ "Retry timeout",
+ TimeValue (TimeValue (MicroSeconds (40 * 1024))),
+ MakeTimeAccessor (
+ &PeerLink::m_dot11MeshRetryTimeout),
+ MakeTimeChecker ()
+ )
+ .AddAttribute ( "HoldingTimeout",
+ "Holding timeout",
+ TimeValue (TimeValue (MicroSeconds (40 * 1024))),
+ MakeTimeAccessor (
+ &PeerLink::m_dot11MeshHoldingTimeout),
+ MakeTimeChecker ()
+ )
+ .AddAttribute ( "ConfirmTimeout",
+ "Confirm timeout",
+ TimeValue (TimeValue (MicroSeconds (40 * 1024))),
+ MakeTimeAccessor (
+ &PeerLink::m_dot11MeshConfirmTimeout),
+ MakeTimeChecker ()
+ )
+ .AddAttribute ( "MaxRetries",
+ "Maximum number of retries",
+ UintegerValue (4),
+ MakeUintegerAccessor (
+ &PeerLink::m_dot11MeshMaxRetries),
+ MakeUintegerChecker<uint16_t> ()
+ )
+ .AddAttribute ( "MaxBeaconLoss",
+ "Maximum number of lost beacons before link will be closed",
+ UintegerValue (2),
+ MakeUintegerAccessor (
+ &PeerLink::m_maxBeaconLoss),
+ MakeUintegerChecker<uint16_t> (1)
+ )
+ ;
return tid;
}
-
+
+
//-----------------------------------------------------------------------------
// PeerLink public interface
//-----------------------------------------------------------------------------
-PeerLink::PeerLink ():
- m_peerAddress (Mac48Address::GetBroadcast ()),
- m_peerMeshPointAddress (Mac48Address::GetBroadcast ()),
- m_localLinkId (0),
- m_peerLinkId (0),
- m_state (IDLE),
- m_retryCounter (0)
+PeerLink::PeerLink () :
+ m_peerAddress (Mac48Address::GetBroadcast ()), m_peerMeshPointAddress (Mac48Address::GetBroadcast ()),
+ m_localLinkId (0), m_peerLinkId (0), m_state (IDLE), m_retryCounter (0)
{
}
PeerLink::~PeerLink ()
@@ -96,7 +106,7 @@
m_peerAddress = macaddr;
}
void
-PeerLink::SetPeerMeshPointAddress(Mac48Address macaddr)
+PeerLink::SetPeerMeshPointAddress (Mac48Address macaddr)
{
m_peerMeshPointAddress = macaddr;
}
@@ -121,8 +131,8 @@
m_lastBeacon = lastBeacon;
m_beaconInterval = beaconInterval;
m_beaconLossTimer.Cancel ();
- Time delay = Seconds(beaconInterval.GetSeconds() * m_maxBeaconLoss);
- NS_ASSERT (delay.GetMicroSeconds() != 0);
+ Time delay = Seconds (beaconInterval.GetSeconds () * m_maxBeaconLoss);
+ NS_ASSERT (delay.GetMicroSeconds () != 0);
m_beaconLossTimer = Simulator::Schedule (delay, &PeerLink::BeaconLoss, this);
}
void
@@ -168,7 +178,7 @@
void
PeerLink::MLMECancelPeerLink (PmpReasonCode reason)
{
- StateMachine (CNCL,reason);
+ StateMachine (CNCL, reason);
}
void
PeerLink::MLMEActivePeerLinkOpen ()
@@ -191,7 +201,7 @@
{
m_peerLinkId = localLinkId;
}
- else
+ else
{
if (m_peerLinkId != localLinkId)
{
@@ -201,7 +211,7 @@
StateMachine (CLS_ACPT, reason);
}
void
-PeerLink::OpenAccept (uint16_t localLinkId, IeConfiguration conf, Mac48Address peerMp)
+PeerLink::OpenAccept (uint16_t localLinkId, IeConfiguration conf, Mac48Address peerMp)
{
if (m_peerLinkId == 0)
{
@@ -210,7 +220,7 @@
m_configuration = conf;
if (m_peerMeshPointAddress != Mac48Address::GetBroadcast ())
{
- NS_ASSERT(m_peerMeshPointAddress == peerMp);
+ NS_ASSERT (m_peerMeshPointAddress == peerMp);
}
else
{
@@ -219,16 +229,16 @@
StateMachine (OPN_ACPT);
}
void
-PeerLink::OpenReject (uint16_t localLinkId, IeConfiguration conf, Mac48Address peerMp, PmpReasonCode reason)
+PeerLink::OpenReject (uint16_t localLinkId, IeConfiguration conf, Mac48Address peerMp, PmpReasonCode reason)
{
- if ( m_peerLinkId == 0)
+ if (m_peerLinkId == 0)
{
m_peerLinkId = localLinkId;
}
m_configuration = conf;
if (m_peerMeshPointAddress != Mac48Address::GetBroadcast ())
{
- NS_ASSERT(m_peerMeshPointAddress == peerMp);
+ NS_ASSERT (m_peerMeshPointAddress == peerMp);
}
else
{
@@ -237,19 +247,20 @@
StateMachine (OPN_RJCT, reason);
}
void
-PeerLink::ConfirmAccept (uint16_t localLinkId, uint16_t peerLinkId, uint16_t peerAid, IeConfiguration conf, Mac48Address peerMp)
+PeerLink::ConfirmAccept (uint16_t localLinkId, uint16_t peerLinkId, uint16_t peerAid, IeConfiguration conf,
+ Mac48Address peerMp)
{
- if ( m_localLinkId != peerLinkId)
+ if (m_localLinkId != peerLinkId)
{
return;
}
- if ( m_peerLinkId == 0)
+ if (m_peerLinkId == 0)
{
m_peerLinkId = localLinkId;
}
else
{
- if ( m_peerLinkId != localLinkId )
+ if (m_peerLinkId != localLinkId)
{
return;
}
@@ -257,16 +268,18 @@
m_configuration = conf;
m_peerAssocId = peerAid;
if (m_peerMeshPointAddress != Mac48Address::GetBroadcast ())
- {
- NS_ASSERT(m_peerMeshPointAddress == peerMp);
- }
+ {
+ NS_ASSERT (m_peerMeshPointAddress == peerMp);
+ }
else
- m_peerMeshPointAddress = peerMp;
+ {
+ m_peerMeshPointAddress = peerMp;
+ }
StateMachine (CNF_ACPT);
}
void
-PeerLink::ConfirmReject (uint16_t localLinkId, uint16_t peerLinkId,
- IeConfiguration conf, Mac48Address peerMp, PmpReasonCode reason)
+PeerLink::ConfirmReject (uint16_t localLinkId, uint16_t peerLinkId, IeConfiguration conf,
+ Mac48Address peerMp, PmpReasonCode reason)
{
if (m_localLinkId != peerLinkId)
{
@@ -285,9 +298,9 @@
}
m_configuration = conf;
if (m_peerMeshPointAddress != Mac48Address::GetBroadcast ())
- {
- NS_ASSERT(m_peerMeshPointAddress == peerMp);
- }
+ {
+ NS_ASSERT (m_peerMeshPointAddress == peerMp);
+ }
m_peerMeshPointAddress = peerMp;
StateMachine (CNF_RJCT, reason);
}
@@ -302,7 +315,7 @@
return (m_state == IDLE);
}
void
-PeerLink::SetMacPlugin(Ptr<PeerManagementProtocolMac> plugin)
+PeerLink::SetMacPlugin (Ptr<PeerManagementProtocolMac> plugin)
{
m_macPlugin = plugin;
}
@@ -310,249 +323,249 @@
// Private
//-----------------------------------------------------------------------------
void
-PeerLink::StateMachine (PeerEvent event,PmpReasonCode reasoncode)
+PeerLink::StateMachine (PeerEvent event, PmpReasonCode reasoncode)
{
switch (m_state)
{
- case IDLE:
- switch (event)
- {
- case CNCL:
- case CLS_ACPT:
- m_state = IDLE;
- m_linkStatusCallback (m_interface, m_peerAddress, m_peerMeshPointAddress, IDLE, IDLE);
- break;
- case REQ_RJCT:
- SendPeerLinkClose (reasoncode);
- break;
- case ACTOPN:
- m_state = OPN_SNT;
- m_linkStatusCallback (m_interface, m_peerAddress, m_peerMeshPointAddress, IDLE, OPN_SNT);
- SendPeerLinkOpen ();
- SetRetryTimer ();
- break;
- case OPN_ACPT:
- m_state = OPN_RCVD;
- m_linkStatusCallback (m_interface, m_peerAddress, m_peerMeshPointAddress, IDLE, OPN_RCVD);
- SendPeerLinkConfirm ();
- SendPeerLinkOpen ();
- SetRetryTimer ();
- break;
- default:
- //11B.5.3.4 of 802.11s Draft D3.0
- //All other events shall be ignored in this state
- break;
- }
+ case IDLE:
+ switch (event)
+ {
+ case CNCL:
+ case CLS_ACPT:
+ m_state = IDLE;
+ m_linkStatusCallback (m_interface, m_peerAddress, m_peerMeshPointAddress, IDLE, IDLE);
+ break;
+ case REQ_RJCT:
+ SendPeerLinkClose (reasoncode);
+ break;
+ case ACTOPN:
+ m_state = OPN_SNT;
+ m_linkStatusCallback (m_interface, m_peerAddress, m_peerMeshPointAddress, IDLE, OPN_SNT);
+ SendPeerLinkOpen ();
+ SetRetryTimer ();
+ break;
+ case OPN_ACPT:
+ m_state = OPN_RCVD;
+ m_linkStatusCallback (m_interface, m_peerAddress, m_peerMeshPointAddress, IDLE, OPN_RCVD);
+ SendPeerLinkConfirm ();
+ SendPeerLinkOpen ();
+ SetRetryTimer ();
+ break;
+ default:
+ //11B.5.3.4 of 802.11s Draft D3.0
+ //All other events shall be ignored in this state
+ break;
+ }
+ break;
+ case OPN_SNT:
+ switch (event)
+ {
+ case TOR1:
+ SendPeerLinkOpen ();
+ m_retryCounter++;
+ SetRetryTimer ();
+ break;
+ case CNF_ACPT:
+ m_state = CNF_RCVD;
+ m_linkStatusCallback (m_interface, m_peerAddress, m_peerMeshPointAddress, OPN_SNT, CNF_RCVD);
+ ClearRetryTimer ();
+ SetConfirmTimer ();
+ break;
+ case OPN_ACPT:
+ m_state = OPN_RCVD;
+ m_linkStatusCallback (m_interface, m_peerAddress, m_peerMeshPointAddress, OPN_SNT, OPN_RCVD);
+ SendPeerLinkConfirm ();
+ break;
+ case CLS_ACPT:
+ m_state = HOLDING;
+ m_linkStatusCallback (m_interface, m_peerAddress, m_peerMeshPointAddress, OPN_SNT, HOLDING);
+ ClearRetryTimer ();
+ SendPeerLinkClose (REASON11S_MESH_CLOSE_RCVD);
+ SetHoldingTimer ();
break;
- case OPN_SNT:
- switch (event)
- {
- case TOR1:
- SendPeerLinkOpen ();
- m_retryCounter++;
- SetRetryTimer ();
- break;
- case CNF_ACPT:
- m_state = CNF_RCVD;
- m_linkStatusCallback (m_interface, m_peerAddress, m_peerMeshPointAddress, OPN_SNT, CNF_RCVD);
- ClearRetryTimer ();
- SetConfirmTimer ();
- break;
- case OPN_ACPT:
- m_state = OPN_RCVD;
- m_linkStatusCallback (m_interface, m_peerAddress, m_peerMeshPointAddress, OPN_SNT, OPN_RCVD);
- SendPeerLinkConfirm ();
- break;
- case CLS_ACPT:
- m_state = HOLDING;
- m_linkStatusCallback (m_interface, m_peerAddress, m_peerMeshPointAddress, OPN_SNT, HOLDING);
- ClearRetryTimer ();
- SendPeerLinkClose (REASON11S_MESH_CLOSE_RCVD);
- SetHoldingTimer ();
- break;
- case OPN_RJCT:
- case CNF_RJCT:
- m_state = HOLDING;
- m_linkStatusCallback (m_interface, m_peerAddress, m_peerMeshPointAddress, OPN_SNT, HOLDING);
- ClearRetryTimer ();
- SendPeerLinkClose (reasoncode);
- SetHoldingTimer ();
- break;
- case TOR2:
- m_state = HOLDING;
- m_linkStatusCallback (m_interface, m_peerAddress, m_peerMeshPointAddress, OPN_SNT, HOLDING);
- ClearRetryTimer ();
- SendPeerLinkClose (REASON11S_MESH_MAX_RETRIES);
- SetHoldingTimer ();
- break;
- case CNCL:
- m_state = HOLDING;
- m_linkStatusCallback (m_interface, m_peerAddress, m_peerMeshPointAddress, OPN_SNT, HOLDING);
- ClearRetryTimer ();
- SendPeerLinkClose (REASON11S_PEERING_CANCELLED);
- SetHoldingTimer ();
- break;
- default:
- //11B.5.3.5 of 802.11s Draft D3.0
- //All other events shall be ignored in this state
- break;
- }
+ case OPN_RJCT:
+ case CNF_RJCT:
+ m_state = HOLDING;
+ m_linkStatusCallback (m_interface, m_peerAddress, m_peerMeshPointAddress, OPN_SNT, HOLDING);
+ ClearRetryTimer ();
+ SendPeerLinkClose (reasoncode);
+ SetHoldingTimer ();
+ break;
+ case TOR2:
+ m_state = HOLDING;
+ m_linkStatusCallback (m_interface, m_peerAddress, m_peerMeshPointAddress, OPN_SNT, HOLDING);
+ ClearRetryTimer ();
+ SendPeerLinkClose (REASON11S_MESH_MAX_RETRIES);
+ SetHoldingTimer ();
+ break;
+ case CNCL:
+ m_state = HOLDING;
+ m_linkStatusCallback (m_interface, m_peerAddress, m_peerMeshPointAddress, OPN_SNT, HOLDING);
+ ClearRetryTimer ();
+ SendPeerLinkClose (REASON11S_PEERING_CANCELLED);
+ SetHoldingTimer ();
+ break;
+ default:
+ //11B.5.3.5 of 802.11s Draft D3.0
+ //All other events shall be ignored in this state
+ break;
+ }
+ break;
+ case CNF_RCVD:
+ switch (event)
+ {
+ case CNF_ACPT:
+ break;
+ case OPN_ACPT:
+ m_state = ESTAB;
+ m_linkStatusCallback (m_interface, m_peerAddress, m_peerMeshPointAddress, CNF_RCVD, ESTAB);
+ ClearConfirmTimer ();
+ SendPeerLinkConfirm ();
+ NS_ASSERT (m_peerMeshPointAddress != Mac48Address::GetBroadcast ());
+ break;
+ case CLS_ACPT:
+ m_state = HOLDING;
+ m_linkStatusCallback (m_interface, m_peerAddress, m_peerMeshPointAddress, CNF_RCVD, HOLDING);
+ ClearConfirmTimer ();
+ SendPeerLinkClose (REASON11S_MESH_CLOSE_RCVD);
+ SetHoldingTimer ();
+ break;
+ case CNF_RJCT:
+ case OPN_RJCT:
+ m_state = HOLDING;
+ m_linkStatusCallback (m_interface, m_peerAddress, m_peerMeshPointAddress, CNF_RCVD, HOLDING);
+ ClearConfirmTimer ();
+ SendPeerLinkClose (reasoncode);
+ SetHoldingTimer ();
+ break;
+ case CNCL:
+ m_state = HOLDING;
+ m_linkStatusCallback (m_interface, m_peerAddress, m_peerMeshPointAddress, CNF_RCVD, HOLDING);
+ ClearConfirmTimer ();
+ SendPeerLinkClose (REASON11S_PEERING_CANCELLED);
+ SetHoldingTimer ();
break;
- case CNF_RCVD:
- switch (event)
- {
- case CNF_ACPT:
- break;
- case OPN_ACPT:
- m_state = ESTAB;
- m_linkStatusCallback (m_interface, m_peerAddress, m_peerMeshPointAddress, CNF_RCVD, ESTAB);
- ClearConfirmTimer ();
- SendPeerLinkConfirm ();
- NS_ASSERT(m_peerMeshPointAddress != Mac48Address::GetBroadcast ());
- break;
- case CLS_ACPT:
- m_state = HOLDING;
- m_linkStatusCallback (m_interface, m_peerAddress, m_peerMeshPointAddress, CNF_RCVD, HOLDING);
- ClearConfirmTimer ();
- SendPeerLinkClose (REASON11S_MESH_CLOSE_RCVD);
- SetHoldingTimer ();
- break;
- case CNF_RJCT:
- case OPN_RJCT:
- m_state = HOLDING;
- m_linkStatusCallback (m_interface, m_peerAddress, m_peerMeshPointAddress, CNF_RCVD, HOLDING);
- ClearConfirmTimer ();
- SendPeerLinkClose (reasoncode);
- SetHoldingTimer ();
- break;
- case CNCL:
- m_state = HOLDING;
- m_linkStatusCallback (m_interface, m_peerAddress, m_peerMeshPointAddress, CNF_RCVD, HOLDING);
- ClearConfirmTimer ();
- SendPeerLinkClose (REASON11S_PEERING_CANCELLED);
- SetHoldingTimer ();
- break;
- case TOC:
- m_state = HOLDING;
- m_linkStatusCallback (m_interface, m_peerAddress, m_peerMeshPointAddress, CNF_RCVD, HOLDING);
- SendPeerLinkClose (REASON11S_MESH_CONFIRM_TIMEOUT);
- SetHoldingTimer ();
- break;
- default:
- //11B.5.3.6 of 802.11s Draft D3.0
- //All other events shall be ignored in this state
- break;
- }
+ case TOC:
+ m_state = HOLDING;
+ m_linkStatusCallback (m_interface, m_peerAddress, m_peerMeshPointAddress, CNF_RCVD, HOLDING);
+ SendPeerLinkClose (REASON11S_MESH_CONFIRM_TIMEOUT);
+ SetHoldingTimer ();
+ break;
+ default:
+ //11B.5.3.6 of 802.11s Draft D3.0
+ //All other events shall be ignored in this state
+ break;
+ }
+ break;
+ case OPN_RCVD:
+ switch (event)
+ {
+ case TOR1:
+ SendPeerLinkOpen ();
+ m_retryCounter++;
+ SetRetryTimer ();
+ break;
+ case CNF_ACPT:
+ m_state = ESTAB;
+ m_linkStatusCallback (m_interface, m_peerAddress, m_peerMeshPointAddress, OPN_RCVD, ESTAB);
+ ClearRetryTimer ();
+ NS_ASSERT (m_peerMeshPointAddress != Mac48Address::GetBroadcast ());
+ break;
+ case CLS_ACPT:
+ m_state = HOLDING;
+ m_linkStatusCallback (m_interface, m_peerAddress, m_peerMeshPointAddress, OPN_RCVD, HOLDING);
+ ClearRetryTimer ();
+ SendPeerLinkClose (REASON11S_MESH_CLOSE_RCVD);
+ SetHoldingTimer ();
+ break;
+ case OPN_RJCT:
+ case CNF_RJCT:
+ m_state = HOLDING;
+ m_linkStatusCallback (m_interface, m_peerAddress, m_peerMeshPointAddress, OPN_RCVD, HOLDING);
+ ClearRetryTimer ();
+ SendPeerLinkClose (reasoncode);
+ SetHoldingTimer ();
+ break;
+ case TOR2:
+ m_state = HOLDING;
+ m_linkStatusCallback (m_interface, m_peerAddress, m_peerMeshPointAddress, OPN_RCVD, HOLDING);
+ ClearRetryTimer ();
+ SendPeerLinkClose (REASON11S_MESH_MAX_RETRIES);
+ SetHoldingTimer ();
+ break;
+ case CNCL:
+ m_state = HOLDING;
+ m_linkStatusCallback (m_interface, m_peerAddress, m_peerMeshPointAddress, OPN_RCVD, HOLDING);
+ ClearRetryTimer ();
+ SendPeerLinkClose (REASON11S_PEERING_CANCELLED);
+ SetHoldingTimer ();
+ break;
+ default:
+ //11B.5.3.7 of 802.11s Draft D3.0
+ //All other events shall be ignored in this state
break;
- case OPN_RCVD:
- switch (event)
- {
- case TOR1:
- SendPeerLinkOpen ();
- m_retryCounter++;
- SetRetryTimer ();
- break;
- case CNF_ACPT:
- m_state = ESTAB;
- m_linkStatusCallback (m_interface, m_peerAddress, m_peerMeshPointAddress, OPN_RCVD, ESTAB);
- ClearRetryTimer ();
- NS_ASSERT (m_peerMeshPointAddress != Mac48Address::GetBroadcast ());
- break;
- case CLS_ACPT:
- m_state = HOLDING;
- m_linkStatusCallback (m_interface, m_peerAddress, m_peerMeshPointAddress, OPN_RCVD, HOLDING);
- ClearRetryTimer ();
- SendPeerLinkClose (REASON11S_MESH_CLOSE_RCVD);
- SetHoldingTimer ();
- break;
- case OPN_RJCT:
- case CNF_RJCT:
- m_state = HOLDING;
- m_linkStatusCallback (m_interface, m_peerAddress, m_peerMeshPointAddress, OPN_RCVD, HOLDING);
- ClearRetryTimer ();
- SendPeerLinkClose (reasoncode);
- SetHoldingTimer ();
- break;
- case TOR2:
- m_state = HOLDING;
- m_linkStatusCallback (m_interface, m_peerAddress, m_peerMeshPointAddress, OPN_RCVD, HOLDING);
- ClearRetryTimer ();
- SendPeerLinkClose (REASON11S_MESH_MAX_RETRIES);
- SetHoldingTimer ();
- break;
- case CNCL:
- m_state = HOLDING;
- m_linkStatusCallback (m_interface, m_peerAddress, m_peerMeshPointAddress, OPN_RCVD, HOLDING);
- ClearRetryTimer ();
- SendPeerLinkClose (REASON11S_PEERING_CANCELLED);
- SetHoldingTimer ();
- break;
- default:
- //11B.5.3.7 of 802.11s Draft D3.0
- //All other events shall be ignored in this state
- break;
- }
+ }
+ break;
+ case ESTAB:
+ switch (event)
+ {
+ case OPN_ACPT:
+ SendPeerLinkConfirm ();
+ break;
+ case CLS_ACPT:
+ m_state = HOLDING;
+ m_linkStatusCallback (m_interface, m_peerAddress, m_peerMeshPointAddress, ESTAB, HOLDING);
+ SendPeerLinkClose (REASON11S_MESH_CLOSE_RCVD);
+ SetHoldingTimer ();
+ break;
+ case OPN_RJCT:
+ case CNF_RJCT:
+ m_state = HOLDING;
+ m_linkStatusCallback (m_interface, m_peerAddress, m_peerMeshPointAddress, ESTAB, HOLDING);
+ ClearRetryTimer ();
+ SendPeerLinkClose (reasoncode);
+ SetHoldingTimer ();
+ break;
+ case CNCL:
+ m_state = HOLDING;
+ m_linkStatusCallback (m_interface, m_peerAddress, m_peerMeshPointAddress, ESTAB, HOLDING);
+ SendPeerLinkClose (REASON11S_PEERING_CANCELLED);
+ SetHoldingTimer ();
break;
- case ESTAB:
- switch (event)
- {
- case OPN_ACPT:
- SendPeerLinkConfirm ();
- break;
- case CLS_ACPT:
- m_state = HOLDING;
- m_linkStatusCallback (m_interface, m_peerAddress, m_peerMeshPointAddress, ESTAB, HOLDING);
- SendPeerLinkClose (REASON11S_MESH_CLOSE_RCVD);
- SetHoldingTimer ();
- break;
- case OPN_RJCT:
- case CNF_RJCT:
- m_state = HOLDING;
- m_linkStatusCallback (m_interface, m_peerAddress, m_peerMeshPointAddress, ESTAB, HOLDING);
- ClearRetryTimer ();
- SendPeerLinkClose (reasoncode);
- SetHoldingTimer ();
- break;
- case CNCL:
- m_state = HOLDING;
- m_linkStatusCallback (m_interface, m_peerAddress, m_peerMeshPointAddress, ESTAB, HOLDING);
- SendPeerLinkClose (REASON11S_PEERING_CANCELLED);
- SetHoldingTimer ();
- break;
- default:
- //11B.5.3.8 of 802.11s Draft D3.0
- //All other events shall be ignored in this state
- break;
- }
+ default:
+ //11B.5.3.8 of 802.11s Draft D3.0
+ //All other events shall be ignored in this state
+ break;
+ }
+ break;
+ case HOLDING:
+ switch (event)
+ {
+ case CLS_ACPT:
+ ClearHoldingTimer ();
+ case TOH:
+ m_state = IDLE;
+ m_linkStatusCallback (m_interface, m_peerAddress, m_peerMeshPointAddress, HOLDING, IDLE);
break;
- case HOLDING:
- switch (event)
- {
- case CLS_ACPT:
- ClearHoldingTimer ();
- case TOH:
- m_state = IDLE;
- m_linkStatusCallback (m_interface, m_peerAddress, m_peerMeshPointAddress, HOLDING, IDLE);
- break;
- case OPN_ACPT:
- case CNF_ACPT:
- m_state = HOLDING;
- m_linkStatusCallback (m_interface, m_peerAddress, m_peerMeshPointAddress, HOLDING, HOLDING);
- // reason not spec in D2.0
- SendPeerLinkClose (REASON11S_PEERING_CANCELLED);
- break;
- case OPN_RJCT:
- case CNF_RJCT:
- m_state = HOLDING;
- m_linkStatusCallback (m_interface, m_peerAddress, m_peerMeshPointAddress, HOLDING, HOLDING);
- SendPeerLinkClose (reasoncode);
- break;
- default:
- //11B.5.3.9 of 802.11s Draft D3.0
- //All other events shall be ignored in this state
- break;
- }
+ case OPN_ACPT:
+ case CNF_ACPT:
+ m_state = HOLDING;
+ m_linkStatusCallback (m_interface, m_peerAddress, m_peerMeshPointAddress, HOLDING, HOLDING);
+ // reason not spec in D2.0
+ SendPeerLinkClose (REASON11S_PEERING_CANCELLED);
break;
+ case OPN_RJCT:
+ case CNF_RJCT:
+ m_state = HOLDING;
+ m_linkStatusCallback (m_interface, m_peerAddress, m_peerMeshPointAddress, HOLDING, HOLDING);
+ SendPeerLinkClose (reasoncode);
+ break;
+ default:
+ //11B.5.3.9 of 802.11s Draft D3.0
+ //All other events shall be ignored in this state
+ break;
+ }
+ break;
}
}
void
@@ -575,7 +588,8 @@
{
IePeerManagement peerElement;
peerElement.SetPeerClose (m_localLinkId, m_peerLinkId, reasoncode);
- m_macPlugin->SendPeerLinkManagementFrame (m_peerAddress, m_peerMeshPointAddress, m_assocId, peerElement, m_configuration);
+ m_macPlugin->SendPeerLinkManagementFrame (m_peerAddress, m_peerMeshPointAddress, m_assocId, peerElement,
+ m_configuration);
}
void
PeerLink::SendPeerLinkOpen ()
@@ -583,19 +597,21 @@
IePeerManagement peerElement;
peerElement.SetPeerOpen (m_localLinkId);
NS_ASSERT (m_macPlugin != 0);
- m_macPlugin->SendPeerLinkManagementFrame (m_peerAddress, m_peerMeshPointAddress, m_assocId, peerElement, m_configuration);
+ m_macPlugin->SendPeerLinkManagementFrame (m_peerAddress, m_peerMeshPointAddress, m_assocId, peerElement,
+ m_configuration);
}
void
PeerLink::SendPeerLinkConfirm ()
{
IePeerManagement peerElement;
peerElement.SetPeerConfirm (m_localLinkId, m_peerLinkId);
- m_macPlugin->SendPeerLinkManagementFrame (m_peerAddress, m_peerMeshPointAddress, m_assocId, peerElement, m_configuration);
+ m_macPlugin->SendPeerLinkManagementFrame (m_peerAddress, m_peerMeshPointAddress, m_assocId, peerElement,
+ m_configuration);
}
void
PeerLink::SetHoldingTimer ()
{
- NS_ASSERT(m_dot11MeshHoldingTimeout.GetMicroSeconds() !=0);
+ NS_ASSERT (m_dot11MeshHoldingTimeout.GetMicroSeconds () != 0);
m_holdingTimer = Simulator::Schedule (m_dot11MeshHoldingTimeout, &PeerLink::HoldingTimeout, this);
}
void
@@ -606,13 +622,13 @@
void
PeerLink::SetRetryTimer ()
{
- NS_ASSERT(m_dot11MeshRetryTimeout.GetMicroSeconds() !=0);
+ NS_ASSERT (m_dot11MeshRetryTimeout.GetMicroSeconds () != 0);
m_retryTimer = Simulator::Schedule (m_dot11MeshRetryTimeout, &PeerLink::RetryTimeout, this);
}
void
PeerLink::RetryTimeout ()
{
- if ( m_retryCounter < m_dot11MeshMaxRetries)
+ if (m_retryCounter < m_dot11MeshMaxRetries)
{
StateMachine (TOR1);
}
@@ -624,7 +640,7 @@
void
PeerLink::SetConfirmTimer ()
{
- NS_ASSERT (m_dot11MeshConfirmTimeout.GetMicroSeconds() !=0);
+ NS_ASSERT (m_dot11MeshConfirmTimeout.GetMicroSeconds () != 0);
m_confirmTimer = Simulator::Schedule (m_dot11MeshConfirmTimeout, &PeerLink::ConfirmTimeout, this);
}
void
@@ -637,13 +653,13 @@
{
if (m_state != ESTAB)
{
- return;
+ return;
}
os << "<PeerLink\n"
"localAddress=\"" << m_macPlugin->GetAddress () << "\"\n"
"peerInterfaceAddress=\"" << m_peerAddress << "\"\n"
"peerMeshPointAddress=\"" << m_peerMeshPointAddress << "\"\n"
- "metric=\"" << m_macPlugin->GetLinkMetric(m_peerAddress) << "\"\n"
+ "metric=\"" << m_macPlugin->GetLinkMetric (m_peerAddress) << "\"\n"
"lastBeacon=\"" << m_lastBeacon.GetSeconds () << "\"\n"
"localLinkId=\"" << m_localLinkId << "\"\n"
"peerLinkId=\"" << m_peerLinkId << "\"\n"