Moving to IEEE 802.11s Draft 3.0:
authorAndrey Mazo <mazo@iitp.ru>
Fri, 22 May 2009 22:53:10 +0400
changeset 5023 fce378307409
parent 5022 f217c634bbd4
child 5024 e3d4c6402844
Moving to IEEE 802.11s Draft 3.0: changed Reason Codes; changed Element IDs. Added Capability field initialization.
src/devices/mesh/dot11s/ie-dot11s-peer-management.cc
src/devices/mesh/dot11s/ie-dot11s-peer-management.h
src/devices/mesh/dot11s/ie-dot11s-peering-protocol.h
src/devices/mesh/dot11s/peer-link-frame.cc
src/devices/mesh/dot11s/peer-link.cc
src/devices/mesh/dot11s/peer-management-plugin.cc
src/devices/mesh/dot11s/peer-management-protocol.cc
src/devices/mesh/wifi-information-element.h
--- a/src/devices/mesh/dot11s/ie-dot11s-peer-management.cc	Fri May 22 17:47:50 2009 +0400
+++ b/src/devices/mesh/dot11s/ie-dot11s-peer-management.cc	Fri May 22 22:53:10 2009 +0400
@@ -183,7 +183,7 @@
   }
   {
     IePeerManagement a;
-    a.SetPeerClose (1, 2, REASON11S_MESH_CONFIGURATION_POLICY_VIOLATION);
+    a.SetPeerClose (1, 2, REASON11S_MESH_CAPABILITY_POLICY_VIOLATION);
     result = result && TestRoundtripSerialization (a);
   }
   return result;
--- a/src/devices/mesh/dot11s/ie-dot11s-peer-management.h	Fri May 22 17:47:50 2009 +0400
+++ b/src/devices/mesh/dot11s/ie-dot11s-peer-management.h	Fri May 22 22:53:10 2009 +0400
@@ -33,19 +33,15 @@
  * \brief Codes used by 802.11s Peer Management Protocol 
  */
 enum PmpReasonCode {
-  REASON11S_PEER_LINK_CANCELLED,
+  REASON11S_PEERING_CANCELLED = 2, // according to open80211s
   REASON11S_MESH_MAX_PEERS,
   REASON11S_MESH_CAPABILITY_POLICY_VIOLATION,
   REASON11S_MESH_CLOSE_RCVD,
   REASON11S_MESH_MAX_RETRIES,
   REASON11S_MESH_CONFIRM_TIMEOUT,
-  REASON11S_MESH_SECURITY_ROLE_NEGOTIATION_DIFFERS,
-  REASON11S_MESH_SECURITY_AUTHENTICATION_IMPOSSIBLE,
-  REASON11S_MESH_SECURITY_FAILED_VERIFICATION,
   REASON11S_MESH_INVALID_GTK,
-  REASON11S_MESH_MISMATCH_GTK,
   REASON11S_MESH_INCONSISTENT_PARAMETERS,
-  REASON11S_MESH_CONFIGURATION_POLICY_VIOLATION,
+  REASON11S_MESH_INVALID_SECURITY_CAPABILITY,
   REASON11S_RESERVED,
 };
   
@@ -75,7 +71,7 @@
   uint8_t GetSubtype() const { return m_subtype;};
 private:
   WifiElementId ElementId () const{
-    return IE11S_PEER_LINK_MANAGEMENT;
+    return IE11S_PEERING_MANAGEMENT;
   }
   uint8_t  GetInformationSize (void) const;
   void SerializeInformation (Buffer::Iterator i) const;
--- a/src/devices/mesh/dot11s/ie-dot11s-peering-protocol.h	Fri May 22 17:47:50 2009 +0400
+++ b/src/devices/mesh/dot11s/ie-dot11s-peering-protocol.h	Fri May 22 22:53:10 2009 +0400
@@ -36,7 +36,7 @@
 private:
   WifiElementId ElementId () const
   {
-    return IE11S_PEERING_PROTOCOL;
+    return IE11S_MESH_PEERING_PROTOCOL_VERSION;
   }
   uint8_t  GetInformationSize () const;
   void SerializeInformation (Buffer::Iterator i) const;
--- a/src/devices/mesh/dot11s/peer-link-frame.cc	Fri May 22 17:47:50 2009 +0400
+++ b/src/devices/mesh/dot11s/peer-link-frame.cc	Fri May 22 22:53:10 2009 +0400
@@ -201,6 +201,7 @@
     PeerLinkFrameStart a;
     PeerLinkFrameStart::PlinkFrameStartFields fields;
     fields.subtype = (uint8_t)(WifiMeshActionHeader::PEER_LINK_OPEN);
+    fields.capability = 0;
     fields.aid = 101;
     fields.reasonCode = 12;
     fields.meshId = IeMeshId("qwertyuiop", 10);
@@ -216,6 +217,7 @@
     PeerLinkFrameStart a;
     PeerLinkFrameStart::PlinkFrameStartFields fields;
     fields.subtype = (uint8_t)(WifiMeshActionHeader::PEER_LINK_CONFIRM);
+    fields.capability = 0;
     fields.aid = 1234;
     fields.reasonCode = 12;
     fields.meshId = IeMeshId("qwerty", 6);
@@ -231,6 +233,7 @@
     PeerLinkFrameStart a;
     PeerLinkFrameStart::PlinkFrameStartFields fields;
     fields.subtype = (uint8_t)(WifiMeshActionHeader::PEER_LINK_CLOSE);
+    fields.capability = 0;
     fields.aid = 10;
     fields.meshId = IeMeshId("qqq", 3);
     fields.reasonCode = 12;
--- a/src/devices/mesh/dot11s/peer-link.cc	Fri May 22 17:47:50 2009 +0400
+++ b/src/devices/mesh/dot11s/peer-link.cc	Fri May 22 22:53:10 2009 +0400
@@ -183,7 +183,7 @@
 void
 PeerLink::MLMEPeeringRequestReject ()
 {
-  StateMachine (REQ_RJCT, REASON11S_PEER_LINK_CANCELLED);
+  StateMachine (REQ_RJCT, REASON11S_PEERING_CANCELLED);
 }
 void
 PeerLink::Close (uint16_t localLinkId, uint16_t peerLinkId, PmpReasonCode reason)
@@ -349,7 +349,7 @@
         case CNCL:
           m_state = HOLDING;
           ClearRetryTimer ();
-          SendPeerLinkClose (REASON11S_PEER_LINK_CANCELLED);
+          SendPeerLinkClose (REASON11S_PEERING_CANCELLED);
           SetHoldingTimer ();
           break;
         default:
@@ -385,7 +385,7 @@
         case CNCL:
           m_state = HOLDING;
           ClearConfirmTimer ();
-          SendPeerLinkClose (REASON11S_PEER_LINK_CANCELLED);
+          SendPeerLinkClose (REASON11S_PEERING_CANCELLED);
           SetHoldingTimer ();
           break;
         case TOC:
@@ -434,7 +434,7 @@
         case CNCL:
           m_state = HOLDING;
           ClearRetryTimer ();
-          SendPeerLinkClose (REASON11S_PEER_LINK_CANCELLED);
+          SendPeerLinkClose (REASON11S_PEERING_CANCELLED);
           SetHoldingTimer ();
           break;
         default:
@@ -463,7 +463,7 @@
           break;
         case CNCL:
           m_state = HOLDING;
-          SendPeerLinkClose (REASON11S_PEER_LINK_CANCELLED);
+          SendPeerLinkClose (REASON11S_PEERING_CANCELLED);
           SetHoldingTimer ();
           m_linkStatusCallback (m_interface, m_peerAddress, m_peerMeshPointAddress, false);
           break;
@@ -484,7 +484,7 @@
         case CNF_ACPT:
           m_state = HOLDING;
           // reason not spec in D2.0
-          SendPeerLinkClose (REASON11S_PEER_LINK_CANCELLED);
+          SendPeerLinkClose (REASON11S_PEERING_CANCELLED);
           break;
         case OPN_RJCT:
         case CNF_RJCT:
--- a/src/devices/mesh/dot11s/peer-management-plugin.cc	Fri May 22 17:47:50 2009 +0400
+++ b/src/devices/mesh/dot11s/peer-management-plugin.cc	Fri May 22 22:53:10 2009 +0400
@@ -188,6 +188,7 @@
   packet->AddHeader (peerElement);
   PeerLinkFrameStart::PlinkFrameStartFields fields;
   fields.rates = m_parent->GetSupportedRates ();
+  fields.capability = 0;
   fields.meshId = *(m_protocol->GetMeshId ());
   fields.config = meshConfig;
   PeerLinkFrameStart plinkFrame;
--- a/src/devices/mesh/dot11s/peer-management-protocol.cc	Fri May 22 17:47:50 2009 +0400
+++ b/src/devices/mesh/dot11s/peer-management-protocol.cc	Fri May 22 22:53:10 2009 +0400
@@ -259,7 +259,7 @@
 {
   Ptr<PeerLink> peerLink = FindPeerLink(interface, peerAddress);
   if(peerLink != 0)
-      peerLink->MLMECancelPeerLink (REASON11S_MESH_CONFIGURATION_POLICY_VIOLATION);
+      peerLink->MLMECancelPeerLink (REASON11S_MESH_CAPABILITY_POLICY_VIOLATION);
 }
 
 Ptr<PeerLink>
--- a/src/devices/mesh/wifi-information-element.h	Fri May 22 17:47:50 2009 +0400
+++ b/src/devices/mesh/wifi-information-element.h	Fri May 22 22:53:10 2009 +0400
@@ -40,33 +40,35 @@
  * compatible with open80211s (http://o11s.org/) implementation.   
  */
 enum WifiElementId {
-  IE11S_LINK_METRIC_REPORT              = 20,
-  IE11S_CONGESTION_NOTIFICATION         = 21,
-  IE11S_MESH_CHANNEL_SWITCH_ANNOUNCEMENT= 23,
-  IE11S_MESH_TIM                        = 24,
-  IE11S_AWAKE_WINDOW                    = 25,
-  IE11S_SYNCHRONIZATION_PROTOCOL        = 26,
-  IE11S_BEACON_TIMING                   = 27,
-  IE11S_MDAOP_SETUP_REQUEST             = 28,
-  IE11S_MDAOP_SETUP_REPLY               = 29,
-  IE11S_MDAOP_ADVERTISEMENT             = 30,
-  IE11S_MDAOP_SET_TEARDOWN              = 31,
-  IE11S_CONNECTIVITY_REPORT             = 32,
-  IE11S_PORTAL_ANNOUNCEMENT             = 33,
-  IE11S_RANN                            = 34,
-  IE11S_PROXY_UPDATE                    = 38,
-  IE11S_PROXY_UPDATE_CONFIRMATION       = 39,
-  IE11S_MSCIE                           = 40,
-  IE11S_MSAIE                           = 41,
-  IE11S_PEERING_PROTOCOL                = 74,
-  /* this ID are compatible with open80211s implementation */
+  /* begin of open80211s-compatible IDs */
   IE11S_MESH_CONFIGURATION              = 51,
   IE11S_MESH_ID                         = 52,
-  IE11S_PEER_LINK_MANAGEMENT            = 55,
-  /* 54 - 67 */
+  /* end of open80211s-compatible IDs */
+  IE11S_LINK_METRIC_REPORT              = 20,
+  IE11S_CONGESTION_NOTIFICATION,
+  /* begin of open80211s-compatible IDs */
+  IE11S_PEERING_MANAGEMENT              = 55,
+  /* end of open80211s-compatible IDs */
+  IE11S_SUPP_MBSS_REG_CLASSES_CHANNELS  = 23,
+  IE11S_MESH_CHANNEL_SWITCH_ANNOUNCEMENT,
+  IE11S_MESH_TIM,
+  IE11S_AWAKE_WINDOW,
+  IE11S_BEACON_TIMING,
+  IE11S_MCCAOP_SETUP_REQUEST,
+  IE11S_MCCAOP_SETUP_REPLY,
+  IE11S_MCCAOP_ADVERTISEMENT,
+  IE11S_MCCAOP_RESERVATION_TEARDOWN,
+  IE11S_PORTAL_ANNOUNCEMENT,
+  IE11S_RANN                            = 67,
+  /* begin of open80211s-compatible IDs */
   IE11S_PREQ                            = 68,
   IE11S_PREP                            = 69,
   IE11S_PERR                            = 70, 
+  /* end of open80211s-compatible IDs */
+  IE11S_PROXY_UPDATE                    = 37,
+  IE11S_PROXY_UPDATE_CONFIRMATION,
+  IE11S_ABBREVIATED_HANDSHAKE,
+  IE11S_MESH_PEERING_PROTOCOL_VERSION   = 74,
 };  
   
 /**