Added max beacon loss to PeerManagementProtocol (for beacon timing), cosmetic
authorKirill Andreev <andreev@iitp.ru>
Tue, 21 Jul 2009 12:51:09 +0400
changeset 5125 b90c6c0af6a3
parent 5124 e206046b2e44
child 5126 8e06088a785d
Added max beacon loss to PeerManagementProtocol (for beacon timing), cosmetic changes: added {} and spaces befor '('
src/devices/mesh/dot11s/hwmp-protocol-mac.cc
src/devices/mesh/dot11s/ie-dot11s-rann.cc
src/devices/mesh/dot11s/ie-dot11s-rann.h
src/devices/mesh/dot11s/peer-link.cc
src/devices/mesh/dot11s/peer-management-protocol-mac.cc
src/devices/mesh/dot11s/peer-management-protocol.cc
src/devices/mesh/dot11s/peer-management-protocol.h
src/devices/mesh/mesh-point-device.cc
src/devices/mesh/mesh-wifi-interface-mac.cc
--- a/src/devices/mesh/dot11s/hwmp-protocol-mac.cc	Tue Jul 21 11:33:27 2009 +0400
+++ b/src/devices/mesh/dot11s/hwmp-protocol-mac.cc	Tue Jul 21 12:51:09 2009 +0400
@@ -56,12 +56,12 @@
 
   MeshHeader meshHdr;
   HwmpTag tag;
-  if(packet->PeekPacketTag (tag))
+  if (packet->PeekPacketTag (tag))
   {
     NS_FATAL_ERROR ("HWMP tag is not supposed to be received by network");
   }
   
-  packet->RemoveHeader(meshHdr);
+  packet->RemoveHeader (meshHdr);
   m_stats.rxData ++;
   m_stats.rxDataBytes += packet->GetSize ();
   
@@ -79,12 +79,12 @@
   };
   tag.SetSeqno (meshHdr.GetMeshSeqno ());
   tag.SetTtl (meshHdr.GetMeshTtl ());
-  packet->AddPacketTag(tag);
+  packet->AddPacketTag (tag);
  
-  if (destination == Mac48Address::GetBroadcast ())
-    if(m_protocol->DropDataFrame (meshHdr.GetMeshSeqno (), source))
+  if ((destination == Mac48Address::GetBroadcast ()) && (m_protocol->DropDataFrame (meshHdr.GetMeshSeqno (), source)))
+    {
       return false;
-  
+    } 
   return true;
 }
 
@@ -96,8 +96,10 @@
   WifiMeshActionHeader actionHdr;
   packet->RemoveHeader (actionHdr);
   WifiMeshActionHeader::ActionValue actionValue = actionHdr.GetAction ();
-  if(actionHdr.GetCategory () != WifiMeshActionHeader::MESH_PATH_SELECTION)
-    return true;
+  if (actionHdr.GetCategory () != WifiMeshActionHeader::MESH_PATH_SELECTION)
+    {
+      return true;
+    }
   IeRann rann;
   IePreq preq;
   IePrep prep;
@@ -110,9 +112,13 @@
   {
     m_stats.rxPreq ++;
     if (preq.GetOriginatorAddress () == m_protocol->GetAddress ())
-      continue;
+      {
+        continue;
+      }
     if (preq.GetTtl () == 0)
-      continue;
+      {
+        continue;
+      }
     preq.DecrementTtl ();
     m_protocol->ReceivePreq (preq, header.GetAddr2 (), m_ifIndex, header.GetAddr3 (), m_parent->GetLinkMetric(header.GetAddr2 ()));
   }
@@ -120,7 +126,9 @@
   {
     m_stats.rxPrep ++;
     if (prep.GetTtl () == 0)
-      continue;
+      {
+        continue;
+      }
     prep.DecrementTtl ();
     m_protocol->ReceivePrep (prep, header.GetAddr2 (), m_ifIndex, header.GetAddr3 (), m_parent->GetLinkMetric(header.GetAddr2 ()));
   }
@@ -133,7 +141,9 @@
       failedDestinations.push_back (*i);
   }
   if (failedDestinations.size () > 0)
-    m_protocol->ReceivePerr (failedDestinations, header.GetAddr2 (), m_ifIndex, header.GetAddr3 ());
+    {
+      m_protocol->ReceivePerr (failedDestinations, header.GetAddr2 (), m_ifIndex, header.GetAddr3 ());
+    }
   NS_ASSERT(packet->GetSize () == 0);
   return false;
 }
@@ -142,17 +152,28 @@
 HwmpProtocolMac::Receive (Ptr<Packet> packet, const WifiMacHeader & header)
 {
   if (header.IsData ())
-    return ReceiveData (packet, header);
-  else if (header.IsAction ())
-    return ReceiveAction (packet, header);
-  else
-    return true; // don't care
+    {
+      return ReceiveData (packet, header);
+    }
+  else 
+    {
+      if (header.IsAction ())
+        {
+          return ReceiveAction (packet, header);
+        }
+      else
+        {
+          return true; // don't care
+        }
+    }
 }
 bool
 HwmpProtocolMac::UpdateOutcomingFrame (Ptr<Packet> packet, WifiMacHeader & header, Mac48Address from, Mac48Address to)
 {
-  if(!header.IsData ())
-    return true;
+  if (!header.IsData ())
+    {
+      return true;
+    }
   HwmpTag tag;
   bool tagExists = packet->RemovePacketTag(tag);
   if (!tagExists)
@@ -162,7 +183,7 @@
   m_stats.txData ++;
   m_stats.txDataBytes += packet->GetSize ();
   MeshHeader meshHdr;
-  meshHdr.SetMeshSeqno (tag.GetSeqno());
+  meshHdr.SetMeshSeqno (tag.GetSeqno ());
   meshHdr.SetMeshTtl (tag.GetTtl());
   packet->AddHeader (meshHdr);
   header.SetAddr1 (tag.GetAddress());
@@ -178,7 +199,7 @@
   return actionHdr;
 }
 void
-HwmpProtocolMac::SendPreq(IePreq preq)
+HwmpProtocolMac::SendPreq (IePreq preq)
 {
   NS_LOG_FUNCTION_NOARGS ();
   std::vector<IePreq> preq_vector;
@@ -203,23 +224,25 @@
   hdr.SetAddr3 (m_protocol->GetAddress ());
   //Send Management frame
   std::vector <Mac48Address> receivers = m_protocol->GetPreqReceivers (m_ifIndex);
-  for(std::vector<Mac48Address>::const_iterator i = receivers.begin (); i != receivers.end (); i ++)
+  for (std::vector<Mac48Address>::const_iterator i = receivers.begin (); i != receivers.end (); i ++)
   {
     hdr.SetAddr1 (*i);
     m_stats.txPreq ++;
     m_stats.txMgt ++;
     m_stats.txMgtBytes += packet->GetSize ();
-    m_parent->SendManagementFrame(packet, hdr);
+    m_parent->SendManagementFrame (packet, hdr);
   }
 }
 void
 HwmpProtocolMac::RequestDestination (Mac48Address dst, uint32_t originator_seqno, uint32_t dst_seqno)
 {
   NS_LOG_FUNCTION_NOARGS ();
-  for(std::vector<IePreq>::iterator i = m_myPreq.begin (); i != m_myPreq.end(); i ++)
+  for (std::vector<IePreq>::iterator i = m_myPreq.begin (); i != m_myPreq.end(); i ++)
   {
-    if(i->IsFull ())
-      continue;
+    if (i->IsFull ())
+      {
+        continue;
+      }
     NS_ASSERT (i->GetDestCount () > 0);
     i->AddDestinationAddressElement (m_protocol->GetDoFlag(), m_protocol->GetRfFlag(), dst, dst_seqno);
   }
@@ -238,10 +261,14 @@
 HwmpProtocolMac::SendMyPreq ()
 {
   NS_LOG_FUNCTION_NOARGS ();
-  if(m_preqTimer.IsRunning ())
-    return;
-  if(m_myPreq.size () == 0)
-    return;
+  if (m_preqTimer.IsRunning ())
+    {
+      return;
+    }
+  if (m_myPreq.size () == 0)
+    {
+      return;
+    }
   //reschedule sending PREQ
   NS_ASSERT (!m_preqTimer.IsRunning());
   m_preqTimer = Simulator::Schedule (m_protocol->GetPreqMinInterval (), &HwmpProtocolMac::SendMyPreq, this);
@@ -276,18 +303,22 @@
   NS_LOG_FUNCTION_NOARGS ();
   Ptr<Packet> packet  = Create<Packet> ();
   IePerr perr;
-  for(std::vector<IePerr::FailedDestination>::const_iterator i = failedDestinations.begin (); i != failedDestinations.end (); i ++)
+  for (std::vector<IePerr::FailedDestination>::const_iterator i = failedDestinations.begin (); i != failedDestinations.end (); i ++)
   {
-    if(!perr.IsFull ())
-      perr.AddAddressUnit (*i);
+    if (!perr.IsFull ())
+      {
+        perr.AddAddressUnit (*i);
+      }
     else
+      {
+        packet->AddHeader (perr);
+        perr.ResetPerr ();
+      }
+  }
+  if (perr.GetNumOfDest () > 0)
     {
       packet->AddHeader (perr);
-      perr.ResetPerr ();
     }
-  }
-  if(perr.GetNumOfDest () > 0)
-    packet->AddHeader (perr);
   packet->AddHeader (GetWifiMeshActionHeader ());
   //create 802.11 header:
   WifiMacHeader hdr;
@@ -302,7 +333,7 @@
     receivers.push_back (Mac48Address::GetBroadcast ());
   }
   //Send Management frame
-  for(std::vector<Mac48Address>::const_iterator i = m_myPerr.receivers.begin (); i != m_myPerr.receivers.end (); i ++)
+  for (std::vector<Mac48Address>::const_iterator i = m_myPerr.receivers.begin (); i != m_myPerr.receivers.end (); i ++)
   {
     hdr.SetAddr1 (*i);
     m_stats.txPerr ++;
@@ -316,42 +347,52 @@
 {
   //All duplicates in PERR are checked here, and there is no reason to
   //check it at any athoer place
-  {
-    std::vector<Mac48Address>::const_iterator end = receivers.end();
-    for(std::vector<Mac48Address>::const_iterator i = receivers.begin (); i != end; i ++)
+{
+  std::vector<Mac48Address>::const_iterator end = receivers.end();
+  for(std::vector<Mac48Address>::const_iterator i = receivers.begin (); i != end; i ++)
     {
       bool should_add = true;
       for (std::vector<Mac48Address>::const_iterator j = m_myPerr.receivers.begin (); j != m_myPerr.receivers.end (); j ++)
+      {
         if ((*i) == (*j))
+        {
           should_add = false;
+        }
+      }
       if (should_add)
+      {
         m_myPerr.receivers.push_back(*i);
+      }
     }
-  }
-  {
-    std::vector<IePerr::FailedDestination>::const_iterator end =  failedDestinations.end ();
-    for(std::vector<IePerr::FailedDestination>::const_iterator i = failedDestinations.begin (); i != end; i ++)
+}
+{
+  std::vector<IePerr::FailedDestination>::const_iterator end =  failedDestinations.end ();
+  for(std::vector<IePerr::FailedDestination>::const_iterator i = failedDestinations.begin (); i != end; i ++)
     {
       bool should_add = true;
-      for
-        (
-         std::vector<IePerr::FailedDestination>::const_iterator j = m_myPerr.destinations.begin ();
-         j != m_myPerr.destinations.end ();
-         j ++)
-        if ( ((*i).destination == (*j).destination) && ((*j).seqnum > (*i).seqnum) )
-          should_add = false;
+      for (std::vector<IePerr::FailedDestination>::const_iterator j = m_myPerr.destinations.begin (); j != m_myPerr.destinations.end (); j ++)
+        {
+          if ( ((*i).destination == (*j).destination) && ((*j).seqnum > (*i).seqnum) )
+            {
+              should_add = false;
+            }
+        }
       if (should_add)
-        m_myPerr.destinations.push_back(*i);
+        {
+          m_myPerr.destinations.push_back(*i);
+        }
     }
-  }
+}
   SendMyPerr ();
 }
 void
 HwmpProtocolMac::SendMyPerr()
 {
   NS_LOG_FUNCTION_NOARGS ();
-  if(m_perrTimer.IsRunning ())
-    return;
+  if (m_perrTimer.IsRunning ())
+    {
+      return;
+    }
   m_perrTimer = Simulator::Schedule (m_protocol->GetPerrMinInterval (), &HwmpProtocolMac::SendMyPerr, this);
   ForwardPerr (m_myPerr.destinations, m_myPerr.receivers);
   m_myPerr.destinations.clear ();
@@ -360,7 +401,7 @@
 uint32_t
 HwmpProtocolMac::GetLinkMetric(Mac48Address peerAddress) const
 {
-  return m_parent->GetLinkMetric(peerAddress);
+  return m_parent->GetLinkMetric (peerAddress);
 }
 uint16_t
 HwmpProtocolMac::GetChannelId () const
--- a/src/devices/mesh/dot11s/ie-dot11s-rann.cc	Tue Jul 21 11:33:27 2009 +0400
+++ b/src/devices/mesh/dot11s/ie-dot11s-rann.cc	Tue Jul 21 12:51:09 2009 +0400
@@ -41,6 +41,12 @@
     m_metric (0)
 {
 }
+WifiElementId
+IeRann::ElementId () const
+{
+  return IE11S_RANN;
+}
+
 void
 IeRann::SetFlags (uint8_t flags)
 {
--- a/src/devices/mesh/dot11s/ie-dot11s-rann.h	Tue Jul 21 11:33:27 2009 +0400
+++ b/src/devices/mesh/dot11s/ie-dot11s-rann.h	Tue Jul 21 12:51:09 2009 +0400
@@ -52,9 +52,7 @@
   void IncrementMetric (uint32_t metric);
     
 private:
-  WifiElementId ElementId () const{
-    return IE11S_RANN;
-  }
+  WifiElementId ElementId () const;
   void SerializeInformation (Buffer::Iterator i) const;
   uint8_t DeserializeInformation (Buffer::Iterator start, uint8_t length);
   uint8_t GetInformationSize () const;
--- a/src/devices/mesh/dot11s/peer-link.cc	Tue Jul 21 11:33:27 2009 +0400
+++ b/src/devices/mesh/dot11s/peer-link.cc	Tue Jul 21 12:51:09 2009 +0400
@@ -184,53 +184,79 @@
 PeerLink::Close (uint16_t localLinkId, uint16_t peerLinkId, PmpReasonCode reason)
 {
   if (peerLinkId != 0 && m_localLinkId != peerLinkId)
-    return;
+    {
+      return;
+    }
   if (m_peerLinkId == 0)
-    m_peerLinkId = localLinkId;
-  else if (m_peerLinkId != localLinkId)
-    return;
+    {
+      m_peerLinkId = localLinkId;
+    }
+  else 
+    {
+      if (m_peerLinkId != localLinkId)
+        {
+          return;
+        }
+    }
   StateMachine (CLS_ACPT, reason);
 }
 void
 PeerLink::OpenAccept (uint16_t localLinkId, IeConfiguration  conf, Mac48Address peerMp)
 {
   if (m_peerLinkId == 0)
-    m_peerLinkId = localLinkId;
+    {
+      m_peerLinkId = localLinkId;
+    }
   m_configuration = conf;
-  if(m_peerMeshPointAddress != Mac48Address::GetBroadcast ())
-  {
-    NS_ASSERT(m_peerMeshPointAddress == peerMp);
-  }
+  if (m_peerMeshPointAddress != Mac48Address::GetBroadcast ())
+    {
+      NS_ASSERT(m_peerMeshPointAddress == peerMp);
+    }
   else
-    m_peerMeshPointAddress = peerMp;
+    {
+      m_peerMeshPointAddress = peerMp;
+    }
   StateMachine (OPN_ACPT);
 }
 void
 PeerLink::OpenReject (uint16_t localLinkId, IeConfiguration  conf, Mac48Address peerMp, PmpReasonCode reason)
 {
   if ( m_peerLinkId == 0)
-    m_peerLinkId = localLinkId;
+    {
+      m_peerLinkId = localLinkId;
+    }
   m_configuration = conf;
-  if(m_peerMeshPointAddress != Mac48Address::GetBroadcast ())
-  {
-    NS_ASSERT(m_peerMeshPointAddress == peerMp);
-  }
+  if (m_peerMeshPointAddress != Mac48Address::GetBroadcast ())
+    {
+      NS_ASSERT(m_peerMeshPointAddress == peerMp);
+    }
   else
-    m_peerMeshPointAddress = peerMp;
+    {
+      m_peerMeshPointAddress = peerMp;
+    }
   StateMachine (OPN_RJCT, reason);
 }
 void
 PeerLink::ConfirmAccept (uint16_t localLinkId, uint16_t peerLinkId, uint16_t peerAid, IeConfiguration conf, Mac48Address peerMp)
 {
   if ( m_localLinkId != peerLinkId)
-    return;
+    {
+      return;
+    }
   if ( m_peerLinkId == 0)
-    m_peerLinkId = localLinkId;
-  else if ( m_peerLinkId != localLinkId )
-    return;
+    {
+      m_peerLinkId = localLinkId;
+    }
+  else
+    {
+      if ( m_peerLinkId != localLinkId )
+        {
+          return;
+        }
+    }
   m_configuration = conf;
   m_peerAssocId = peerAid;
-  if(m_peerMeshPointAddress != Mac48Address::GetBroadcast ())
+  if (m_peerMeshPointAddress != Mac48Address::GetBroadcast ())
   {
     NS_ASSERT(m_peerMeshPointAddress == peerMp);
   }
@@ -243,13 +269,22 @@
     IeConfiguration  conf, Mac48Address peerMp, PmpReasonCode reason)
 {
   if (m_localLinkId != peerLinkId)
-    return;
+    {
+      return;
+    }
   if (m_peerLinkId == 0)
-    m_peerLinkId = localLinkId;
-  else if (m_peerLinkId != localLinkId)
-    return;
+    {
+      m_peerLinkId = localLinkId;
+    }
+  else
+    {
+      if (m_peerLinkId != localLinkId)
+        {
+          return;
+        }
+    }
   m_configuration = conf;
-  if(m_peerMeshPointAddress != Mac48Address::GetBroadcast ())
+  if (m_peerMeshPointAddress != Mac48Address::GetBroadcast ())
   {
     NS_ASSERT(m_peerMeshPointAddress == peerMp);
   }
@@ -421,7 +456,7 @@
           m_state = ESTAB;
           m_linkStatusCallback (m_interface, m_peerAddress, m_peerMeshPointAddress, OPN_RCVD, ESTAB);
           ClearRetryTimer ();
-          NS_ASSERT(m_peerMeshPointAddress != Mac48Address::GetBroadcast ());
+          NS_ASSERT (m_peerMeshPointAddress != Mac48Address::GetBroadcast ());
           break;
         case CLS_ACPT:
           m_state = HOLDING;
@@ -578,14 +613,18 @@
 PeerLink::RetryTimeout ()
 {
   if ( m_retryCounter < m_dot11MeshMaxRetries)
-    StateMachine (TOR1);
+    {
+      StateMachine (TOR1);
+    }
   else
-    StateMachine (TOR2);
+    {
+      StateMachine (TOR2);
+    }
 }
 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
@@ -596,8 +635,10 @@
 void
 PeerLink::Report (std::ostream & os) const
 {
-  if(m_state != ESTAB)
+  if (m_state != ESTAB)
+    {
     return;
+    }
   os << "<PeerLink\n"
     "localAddress=\"" << m_macPlugin->GetAddress () << "\"\n"
     "peerInterfaceAddress=\"" << m_peerAddress << "\"\n"
--- a/src/devices/mesh/dot11s/peer-management-protocol-mac.cc	Tue Jul 21 11:33:27 2009 +0400
+++ b/src/devices/mesh/dot11s/peer-management-protocol-mac.cc	Tue Jul 21 12:51:09 2009 +0400
@@ -64,8 +64,10 @@
         (beaconTiming.FindFirst(myBeacon)) &&
         (m_protocol->GetMeshId ()->IsEqual(meshId))
         )
-      meshBeacon = true;
-    m_protocol->UpdatePeerBeaconTiming(
+      {
+        meshBeacon = true;
+      }
+    m_protocol->UpdatePeerBeaconTiming (
         m_ifIndex,
         meshBeacon,
         beaconTiming,
@@ -76,7 +78,7 @@
     // Beacon shall not be dropeed. May be needed to another plugins
     return true;
   }
-  if(header.IsAction())
+  if (header.IsAction ())
   {
     WifiMeshActionHeader actionHdr;
     packet->RemoveHeader (actionHdr);
@@ -91,14 +93,14 @@
     PeerLinkFrameStart::PlinkFrameStartFields fields;
     {
       PeerLinkFrameStart peerFrame;
-      peerFrame.SetPlinkFrameSubtype((uint8_t)actionValue.peerLink);
+      peerFrame.SetPlinkFrameSubtype ((uint8_t) actionValue.peerLink);
       packet->RemoveHeader (peerFrame);
-      fields = peerFrame.GetFields();
-      NS_ASSERT(fields.subtype == actionValue.peerLink);
+      fields = peerFrame.GetFields ();
+      NS_ASSERT (fields.subtype == actionValue.peerLink);
     }
     if (
         (actionValue.peerLink != WifiMeshActionHeader::PEER_LINK_CLOSE) &&
-        !(m_parent->CheckSupportedRates(fields.rates))
+        !(m_parent->CheckSupportedRates (fields.rates))
         )
       {
         m_protocol->ConfigurationMismatch (m_ifIndex, peerAddress);
@@ -108,7 +110,7 @@
       }
     if (
         (actionValue.peerLink != WifiMeshActionHeader::PEER_LINK_CONFIRM) &&
-        !fields.meshId.IsEqual(*(m_protocol->GetMeshId()))
+        !fields.meshId.IsEqual (*(m_protocol->GetMeshId ()))
         )
       {
         m_protocol->ConfigurationMismatch (m_ifIndex, peerAddress);
@@ -117,34 +119,34 @@
         return false;
       }
     IePeerManagement peerElement;
-    packet->RemoveHeader(peerElement);
+    packet->RemoveHeader (peerElement);
     //Check taht frame subtype corresponds peer link subtype
-    if(peerElement.SubtypeIsOpen ())
+    if (peerElement.SubtypeIsOpen ())
     {
       m_stats.rxOpen ++;
-      NS_ASSERT(actionValue.peerLink == WifiMeshActionHeader::PEER_LINK_OPEN);
+      NS_ASSERT (actionValue.peerLink == WifiMeshActionHeader::PEER_LINK_OPEN);
     }
-    if(peerElement.SubtypeIsConfirm ())
+    if (peerElement.SubtypeIsConfirm ())
     {
       m_stats.rxConfirm ++;
-      NS_ASSERT(actionValue.peerLink == WifiMeshActionHeader::PEER_LINK_CONFIRM);
+      NS_ASSERT (actionValue.peerLink == WifiMeshActionHeader::PEER_LINK_CONFIRM);
     }
-    if(peerElement.SubtypeIsClose ())
+    if (peerElement.SubtypeIsClose ())
     {
       m_stats.rxClose ++;
-      NS_ASSERT(actionValue.peerLink == WifiMeshActionHeader::PEER_LINK_CLOSE);
+      NS_ASSERT (actionValue.peerLink == WifiMeshActionHeader::PEER_LINK_CLOSE);
     }
     //Deliver Peer link management frame to protocol:
-    m_protocol->ReceivePeerLinkFrame(m_ifIndex, peerAddress, peerMpAddress, fields.aid, peerElement, fields.config);
+    m_protocol->ReceivePeerLinkFrame (m_ifIndex, peerAddress, peerMpAddress, fields.aid, peerElement, fields.config);
     // if we can handle a frame - drop it
     return false;
   }
-  return m_protocol->IsActiveLink(m_ifIndex,header.GetAddr2());
+  return m_protocol->IsActiveLink (m_ifIndex,header.GetAddr2());
 }
 bool
 PeerManagementProtocolMac::UpdateOutcomingFrame (Ptr<Packet> packet, WifiMacHeader & header, Mac48Address from, Mac48Address to)
 {
-  if(header.IsAction ())
+  if (header.IsAction ())
   {
     WifiMeshActionHeader actionHdr;
     packet->PeekHeader (actionHdr);
@@ -152,12 +154,16 @@
     if(actionHdr.GetCategory () == WifiMeshActionHeader::MESH_PEERING_MGT)
       return true;
   }
-  if(header.GetAddr1 ().IsGroup ())
+  if (header.GetAddr1 ().IsGroup ())
+  {
     return true;
+  }
   else
   {
-    if(m_protocol->IsActiveLink(m_ifIndex,header.GetAddr1()))
+    if (m_protocol->IsActiveLink (m_ifIndex,header.GetAddr1()))
+    {
       return true;
+    }
     else
     {
       m_stats.dropped ++;
@@ -168,13 +174,13 @@
 void
 PeerManagementProtocolMac::UpdateBeacon (MeshWifiBeacon & beacon) const
 {
-  Ptr<IeBeaconTiming>  beaconTiming = m_protocol->GetBeaconTimingElement(m_ifIndex);
-  beacon.AddInformationElement(beaconTiming);
-  beacon.AddInformationElement(m_protocol->GetMeshId ());
+  Ptr<IeBeaconTiming>  beaconTiming = m_protocol->GetBeaconTimingElement (m_ifIndex);
+  beacon.AddInformationElement (beaconTiming);
+  beacon.AddInformationElement (m_protocol->GetMeshId ());
 }
 
 void
-PeerManagementProtocolMac::SendPeerLinkManagementFrame(
+PeerManagementProtocolMac::SendPeerLinkManagementFrame (
       Mac48Address peerAddress,
       Mac48Address peerMpAddress,
       uint16_t aid,
@@ -221,7 +227,7 @@
       fields.reasonCode = peerElement.GetReasonCode ();
       actionHdr.SetAction (WifiMeshActionHeader::MESH_PEERING_MGT, action);
     }
-  plinkFrame.SetPlinkFrameStart(fields);
+  plinkFrame.SetPlinkFrameStart (fields);
   packet->AddHeader (plinkFrame);
   packet->AddHeader (actionHdr);
   m_stats.txMgt ++;
@@ -235,15 +241,20 @@
   hdr.SetAddr3 (m_protocol->GetAddress ());
   hdr.SetDsNotFrom ();
   hdr.SetDsNotTo ();
-  m_parent->SendManagementFrame(packet, hdr);
+  m_parent->SendManagementFrame (packet, hdr);
 }
 
 Mac48Address
 PeerManagementProtocolMac::GetAddress () const
 {
-  if(m_parent !=  0)
-    return m_parent->GetAddress ();
-  else return Mac48Address::Mac48Address();
+  if (m_parent !=  0)
+    {
+      return m_parent->GetAddress ();
+    }
+  else
+    {
+      return Mac48Address::Mac48Address ();
+    }
 }
 std::pair<Time, Time> 
 PeerManagementProtocolMac::GetBeaconInfo() const
@@ -256,8 +267,10 @@
 void
 PeerManagementProtocolMac::SetBeaconShift(Time shift)
 {
-  if(shift != Seconds (0))
-    m_stats.beaconShift ++;
+  if (shift != Seconds (0))
+    {
+      m_stats.beaconShift ++;
+    }
   m_parent->ShiftTbtt (shift);
 }
 PeerManagementProtocolMac::Statistics::Statistics () :
--- a/src/devices/mesh/dot11s/peer-management-protocol.cc	Tue Jul 21 11:33:27 2009 +0400
+++ b/src/devices/mesh/dot11s/peer-management-protocol.cc	Tue Jul 21 12:51:09 2009 +0400
@@ -56,14 +56,21 @@
       UintegerValue (32),
       MakeUintegerAccessor (&PeerManagementProtocol::m_maxNumberOfPeerLinks),
       MakeUintegerChecker<uint8_t> ()
-  );
+      )
+  .AddAttribute ("MaxBeaconLossForBeaconTiming",
+      "If maximum number of beacons were lost, station will not included in beacon timing element",
+      UintegerValue (3),
+      MakeUintegerAccessor (&PeerManagementProtocol::m_maxBeaconLostForBeaconTiming),
+      MakeUintegerChecker<uint8_t> ()
+      )
+    ;
   return tid;
 }
 PeerManagementProtocol::PeerManagementProtocol ():
   m_lastAssocId (0),
-  m_lastLocalLinkId (1)
-  {
-  }
+  m_lastLocalLinkId (1),
+  m_maxBeaconLostForBeaconTiming (3)
+{}
 PeerManagementProtocol::~PeerManagementProtocol ()
 {
 }
@@ -75,12 +82,14 @@
   for (PeerLinksMap::iterator j = m_peerLinks.begin (); j != m_peerLinks.end (); j++)
     {
       for (PeerLinksOnInterface::iterator i = j->second.begin (); i != j->second.end(); i++)
-        (*i) = 0;
+        {
+          (*i) = 0;
+        }
       j->second.clear ();
     }
   m_peerLinks.clear ();
   //cleaning beacon structures:
-  for(BeaconInfoMap::iterator i =  m_neighbourBeacons.begin(); i != m_neighbourBeacons.end(); i ++)
+  for (BeaconInfoMap::iterator i =  m_neighbourBeacons.begin (); i != m_neighbourBeacons.end (); i ++)
     {
       i->second.clear();
     }
@@ -88,74 +97,77 @@
 }
 
 bool
-PeerManagementProtocol::Install(Ptr<MeshPointDevice> mp)
+PeerManagementProtocol::Install (Ptr<MeshPointDevice> mp)
 {
   std::vector<Ptr<NetDevice> > interfaces = mp->GetInterfaces ();
-  for(std::vector<Ptr<NetDevice> >::iterator i = interfaces.begin(); i != interfaces.end(); i ++)
+  for (std::vector<Ptr<NetDevice> >::iterator i = interfaces.begin (); i != interfaces.end (); i ++)
     {
       Ptr<WifiNetDevice> wifiNetDev = (*i)->GetObject<WifiNetDevice> ();
       if (wifiNetDev == 0)
-        return false;
+        {
+          return false;
+        }
       Ptr<MeshWifiInterfaceMac>  mac = wifiNetDev->GetMac ()->GetObject<MeshWifiInterfaceMac> ();
       if (mac == 0)
-        return false;
+        {
+          return false;
+        }
       Ptr<PeerManagementProtocolMac> plugin = Create<PeerManagementProtocolMac> ((*i)->GetIfIndex(), this);
-      mac->InstallPlugin(plugin);
-      m_plugins[(*i)->GetIfIndex()] = plugin;
+      mac->InstallPlugin (plugin);
+      m_plugins[(*i)->GetIfIndex ()] = plugin;
       PeerLinksOnInterface newmap;
-      m_peerLinks[(*i)->GetIfIndex()] = newmap;
+      m_peerLinks[(*i)->GetIfIndex ()] = newmap;
     }
   // Mesh point aggregates all installed protocols
-  m_address = Mac48Address::ConvertFrom(mp->GetAddress ());
-  mp->AggregateObject(this);
+  m_address = Mac48Address::ConvertFrom (mp->GetAddress ());
+  mp->AggregateObject (this);
   return true;
 }
 
 Ptr<IeBeaconTiming>
-PeerManagementProtocol::GetBeaconTimingElement(uint32_t interface)
+PeerManagementProtocol::GetBeaconTimingElement (uint32_t interface)
 {
   Ptr<IeBeaconTiming> retval = Create<IeBeaconTiming> ();
-  BeaconInfoMap::iterator i = m_neighbourBeacons.find(interface);
-  if(i == m_neighbourBeacons.end())
-    return retval;
+  BeaconInfoMap::iterator i = m_neighbourBeacons.find (interface);
+  if (i == m_neighbourBeacons.end ())
+    {
+      return retval;
+    }
   bool cleaned = false;
-  while(!cleaned)
+  while (!cleaned)
     {
-      for(BeaconsOnInterface::iterator j = i->second.begin(); j != i->second.end(); j++)
+      for (BeaconsOnInterface::iterator j = i->second.begin (); j != i->second.end (); j++)
         {
           //check beacon loss and make a timing element
-          //if last beacon was 3 beacons ago - we do not put it to the
+          //if last beacon was m_maxBeaconLostForBeaconTiming beacons ago - we do not put it to the
           //timing element
-          if(
-              (j->second.referenceTbtt.GetMicroSeconds() +
-                  (j->second.beaconInterval.GetMicroSeconds()* 3))
-                  <
-                  Simulator::Now().GetMicroSeconds()
-          )
+          if ((j->second.referenceTbtt + j->second.beaconInterval * Scalar (m_maxBeaconLostForBeaconTiming)) < Simulator::Now ())
             {
-              i->second.erase(j);
+              i->second.erase (j);
               break;
             }
         }
       cleaned = true;
     }
-  for(BeaconsOnInterface::const_iterator j = i->second.begin(); j != i->second.end(); j++)
-    retval->AddNeighboursTimingElementUnit(j->second.aid, j->second.referenceTbtt, j->second.beaconInterval);
+  for (BeaconsOnInterface::const_iterator j = i->second.begin (); j != i->second.end (); j++)
+    {
+      retval->AddNeighboursTimingElementUnit (j->second.aid, j->second.referenceTbtt, j->second.beaconInterval);
+    }
   return retval;
 }
 
 void
-PeerManagementProtocol::FillBeaconInfo(uint32_t interface, Mac48Address peerAddress, Time receivingTime, Time beaconInterval)
+PeerManagementProtocol::FillBeaconInfo (uint32_t interface, Mac48Address peerAddress, Time receivingTime, Time beaconInterval)
 {
-  BeaconInfoMap::iterator i = m_neighbourBeacons.find(interface);
-  if(i == m_neighbourBeacons.end())
+  BeaconInfoMap::iterator i = m_neighbourBeacons.find (interface);
+  if (i == m_neighbourBeacons.end ())
     {
       BeaconsOnInterface newMap;
       m_neighbourBeacons[interface] = newMap;
     }
-  i = m_neighbourBeacons.find(interface);
-  BeaconsOnInterface::iterator j = i->second.find(peerAddress);
-  if(j == i->second.end())
+  i = m_neighbourBeacons.find (interface);
+  BeaconsOnInterface::iterator j = i->second.find (peerAddress);
+  if (j == i->second.end ())
     {
       BeaconInfo newInfo;
       newInfo.referenceTbtt = receivingTime;
@@ -173,7 +185,7 @@
 }
 
 void
-PeerManagementProtocol::UpdatePeerBeaconTiming(
+PeerManagementProtocol::UpdatePeerBeaconTiming (
     uint32_t interface,
     bool meshBeacon,
     IeBeaconTiming timingElement,
@@ -181,33 +193,43 @@
     Time receivingTime,
     Time beaconInterval)
 {
-  FillBeaconInfo(interface, peerAddress, receivingTime, beaconInterval);
-  if(!meshBeacon)
-    return;
+  FillBeaconInfo (interface, peerAddress, receivingTime, beaconInterval);
+  if (!meshBeacon)
+    {
+      return;
+    }
   //BCA:
   PeerManagementProtocolMacMap::iterator plugin = m_plugins.find (interface);
-  NS_ASSERT(plugin != m_plugins.end ());
-  Time shift = GetNextBeaconShift(interface);
-  if(TimeToTu (shift) != 0)
-    plugin->second->SetBeaconShift(shift);
+  NS_ASSERT (plugin != m_plugins.end ());
+  Time shift = GetNextBeaconShift (interface);
+  if (TimeToTu (shift) != 0)
+    {
+      plugin->second->SetBeaconShift(shift);
+    }
   //PM STATE Machine
   //Check that a given beacon is not from our interface
-  for(PeerManagementProtocolMacMap::const_iterator i = m_plugins.begin (); i != m_plugins.end (); i ++)
-    if(i->second->GetAddress () == peerAddress)
-      return;
-  Ptr<PeerLink> peerLink = FindPeerLink(interface, peerAddress);
-  if(peerLink !=0)  
+  for (PeerManagementProtocolMacMap::const_iterator i = m_plugins.begin (); i != m_plugins.end (); i ++)
+    {
+      if (i->second->GetAddress () == peerAddress)
+        {
+          return;
+        }
+    }
+  Ptr<PeerLink> peerLink = FindPeerLink (interface, peerAddress);
+  if (peerLink !=0)  
     {
       peerLink->SetBeaconTimingElement (timingElement);
       peerLink->SetBeaconInformation (receivingTime, beaconInterval);
     }
   else
+    {
       if (ShouldSendOpen (interface, peerAddress))
       {
         peerLink = InitiateLink (interface, peerAddress, Mac48Address::GetBroadcast (), receivingTime, beaconInterval);
         peerLink->SetBeaconTimingElement (timingElement);
         peerLink->MLMEActivePeerLinkOpen ();
       }
+    }
 }
 
 void
@@ -226,35 +248,48 @@
       PmpReasonCode reasonCode;
       bool reject = ! (ShouldAcceptOpen (interface, peerAddress,reasonCode));
       if (peerLink == 0)
-        peerLink = InitiateLink (interface, peerAddress, peerMeshPointAddress, Simulator::Now (), Seconds(1.0));
-      if(!reject)
-        peerLink->OpenAccept (peerManagementElement.GetLocalLinkId(), meshConfig, peerMeshPointAddress);
+        {
+          peerLink = InitiateLink (interface, peerAddress, peerMeshPointAddress, Simulator::Now (), Seconds(1.0));
+        }
+      if (!reject)
+        {
+          peerLink->OpenAccept (peerManagementElement.GetLocalLinkId(), meshConfig, peerMeshPointAddress);
+        }
       else
-        peerLink->OpenReject (peerManagementElement.GetLocalLinkId(), meshConfig, peerMeshPointAddress, reasonCode);
+        {
+          peerLink->OpenReject (peerManagementElement.GetLocalLinkId(), meshConfig, peerMeshPointAddress, reasonCode);
+        }
     }
   if (peerLink == 0)
-    return;
+    {
+      return;
+    }
   if (peerManagementElement.SubtypeIsConfirm ())
-    peerLink->ConfirmAccept (
-        peerManagementElement.GetLocalLinkId(),
-        peerManagementElement.GetPeerLinkId(),
-        aid,
-        meshConfig,
-        peerMeshPointAddress);
+    {
+      peerLink->ConfirmAccept (
+          peerManagementElement.GetLocalLinkId(),
+          peerManagementElement.GetPeerLinkId(),
+          aid,
+          meshConfig,
+          peerMeshPointAddress);
+    }
   if (peerManagementElement.SubtypeIsClose ())
-    peerLink->Close (
-        peerManagementElement.GetLocalLinkId(),
-        peerManagementElement.GetPeerLinkId(),
-        peerManagementElement.GetReasonCode()
-    );
+    {
+      peerLink->Close (
+          peerManagementElement.GetLocalLinkId(),
+          peerManagementElement.GetPeerLinkId(),
+          peerManagementElement.GetReasonCode()
+          );
+    }
 }
-
 void
 PeerManagementProtocol::ConfigurationMismatch (uint32_t interface, Mac48Address peerAddress)
 {
-  Ptr<PeerLink> peerLink = FindPeerLink(interface, peerAddress);
-  if(peerLink != 0)
-    peerLink->MLMECancelPeerLink (REASON11S_MESH_CAPABILITY_POLICY_VIOLATION);
+  Ptr<PeerLink> peerLink = FindPeerLink (interface, peerAddress);
+  if (peerLink != 0)
+    {
+      peerLink->MLMECancelPeerLink (REASON11S_MESH_CAPABILITY_POLICY_VIOLATION);
+    }
 }
 
 Ptr<PeerLink>
@@ -267,18 +302,24 @@
 {
   Ptr<PeerLink> new_link = CreateObject<PeerLink> ();
   if (m_lastLocalLinkId == 0xff)
-    m_lastLocalLinkId = 0;
+    {
+      m_lastLocalLinkId = 0;
+    }
   //find a beacon entry
   BeaconInfoMap::iterator beaconsOnInterface = m_neighbourBeacons.find (interface);
-  if(beaconsOnInterface == m_neighbourBeacons.end())
-    FillBeaconInfo(interface, peerAddress, lastBeacon, beaconInterval);
+  if (beaconsOnInterface == m_neighbourBeacons.end())
+    {
+      FillBeaconInfo(interface, peerAddress, lastBeacon, beaconInterval);
+    }
   beaconsOnInterface = m_neighbourBeacons.find (interface);
   BeaconsOnInterface::iterator beacon = beaconsOnInterface->second.find (peerAddress);
-  if(beacon == beaconsOnInterface->second.end ())
-    FillBeaconInfo(interface, peerAddress, lastBeacon, beaconInterval);
+  if (beacon == beaconsOnInterface->second.end ())
+    {
+      FillBeaconInfo(interface, peerAddress, lastBeacon, beaconInterval);
+    }
   beacon = beaconsOnInterface->second.find (peerAddress);
   //find a peer link  - it must not exist
-  if(FindPeerLink(interface, peerAddress) != 0)
+  if (FindPeerLink(interface, peerAddress) != 0)
     {
       NS_FATAL_ERROR ("Peer link must not exist.");
     }
@@ -304,6 +345,7 @@
   PeerLinksMap::iterator iface = m_peerLinks.find (interface);
   NS_ASSERT (iface != m_peerLinks.end());
   for (PeerLinksOnInterface::iterator i = iface->second.begin (); i != iface->second.end(); i++)
+  {
     if ((*i)->GetPeerAddress () == peerAddress)
       {
         if((*i)->LinkIsIdle ())
@@ -313,8 +355,11 @@
             return 0;
           }
         else
+        {
           return (*i);
+        }
       }
+  }
   return 0;
 }
 void
@@ -323,22 +368,28 @@
   m_peerStatusCallback = cb;
 }
 std::vector<Mac48Address>
-PeerManagementProtocol::GetActiveLinks(uint32_t interface)
+PeerManagementProtocol::GetActiveLinks (uint32_t interface)
 {
   std::vector<Mac48Address> retval;
   PeerLinksMap::iterator iface = m_peerLinks.find (interface);
   NS_ASSERT (iface != m_peerLinks.end());
   for (PeerLinksOnInterface::iterator i = iface->second.begin (); i != iface->second.end(); i++)
-    if((*i)->LinkIsEstab ())
+  {
+    if ((*i)->LinkIsEstab ())
+    {
       retval.push_back((*i)->GetPeerAddress ());
+    }
+  }
   return retval;
 }
 bool
 PeerManagementProtocol::IsActiveLink (uint32_t interface, Mac48Address peerAddress)
 {
   Ptr<PeerLink> peerLink = FindPeerLink(interface, peerAddress);
-  if(peerLink != 0)
-    return (peerLink->LinkIsEstab ());
+  if (peerLink != 0)
+    {
+      return (peerLink->LinkIsEstab ());
+    }
   return false;
 }
 bool
@@ -373,16 +424,20 @@
   PeerManagementProtocolMacMap::iterator plugin = m_plugins.find (interface);
   NS_ASSERT (plugin != m_plugins.end());
   std::pair<Time, Time> myBeacon = plugin->second->GetBeaconInfo ();
-  if(Simulator::Now () + TuToTime (maxShift) > myBeacon.first + myBeacon.second)
-    return MicroSeconds (0);
+  if (Simulator::Now () + TuToTime (maxShift) > myBeacon.first + myBeacon.second)
+    {
+      return MicroSeconds (0);
+    }
   for (PeerLinksOnInterface::iterator i = iface->second.begin (); i != iface->second.end (); i++)
     {
       IeBeaconTiming::NeighboursTimingUnitsList neighbours;
-      if((*i)->LinkIsIdle ())
-        continue;
+      if ((*i)->LinkIsIdle ())
+        {
+          continue;
+        }
       neighbours = (*i)->GetBeaconTimingElement ().GetNeighboursTimingElementsList();
       //Going through all my timing elements and detecting future beacon collisions
-      for (IeBeaconTiming::NeighboursTimingUnitsList::const_iterator j = neighbours.begin (); j != neighbours.end(); j++)
+      for (IeBeaconTiming::NeighboursTimingUnitsList::const_iterator j = neighbours.begin (); j != neighbours.end (); j++)
           //We apply MBAC only if beacon Intervals are equal
           if ((*j)->GetBeaconInterval () == TimeToTu (myBeacon.second))
             {
@@ -394,7 +449,7 @@
                 int beaconShift = randomShift.GetInteger (minShift,maxShift) * ((randomSign.GetValue () >= 0) ? 1 : -1);
                 NS_LOG_DEBUG ("Apply MBCA: Shift value = " << beaconShift << " beacon TUs");
                 //Do not shift to the past!
-                return (TuToTime (beaconShift) + Simulator::Now() < myBeacon.first) ? TuToTime (beaconShift) : TuToTime (0);
+                return (TuToTime (beaconShift) + Simulator::Now () < myBeacon.first) ? TuToTime (beaconShift) : TuToTime (0);
               }
             }
     }
@@ -408,33 +463,37 @@
 uint32_t
 PeerManagementProtocol::TimeToTu (Time x)
 {
-  return (uint32_t) (x.GetMicroSeconds ()/1024);
+  return (uint32_t) (x.GetMicroSeconds () / 1024);
 }
 void
 PeerManagementProtocol::PeerLinkStatus (uint32_t interface, Mac48Address peerAddress, Mac48Address peerMeshPointAddress, PeerLink::PeerState ostate, PeerLink::PeerState nstate)
 {
   PeerManagementProtocolMacMap::iterator plugin = m_plugins.find (interface);
-  NS_ASSERT(plugin != m_plugins.end());
-  NS_LOG_DEBUG(
+  NS_ASSERT (plugin != m_plugins.end());
+  NS_LOG_DEBUG (
       "Link between me:" << m_address <<
       " my interface:" << plugin->second->GetAddress() <<
       " and peer mesh point:" << peerMeshPointAddress <<
       " and its interface:" << peerAddress <<
       ", at my interface ID:" << interface <<
       ". State movement:" << ostate << " -> " << nstate);
-  if((nstate == PeerLink::ESTAB) && (ostate != PeerLink::ESTAB))
+  if ((nstate == PeerLink::ESTAB) && (ostate != PeerLink::ESTAB))
     {
       m_stats.linksOpened ++;
       m_stats.linksTotal++;
-      if(!m_peerStatusCallback.IsNull ())
-        m_peerStatusCallback (peerMeshPointAddress, peerAddress, interface, true);
+      if (!m_peerStatusCallback.IsNull ())
+        {
+          m_peerStatusCallback (peerMeshPointAddress, peerAddress, interface, true);
+        }
     }
-  if((ostate == PeerLink::ESTAB) && (nstate != PeerLink::ESTAB))
+  if ((ostate == PeerLink::ESTAB) && (nstate != PeerLink::ESTAB))
     {
       m_stats.linksClosed ++;
       m_stats.linksTotal--;
-      if(!m_peerStatusCallback.IsNull ())
-        m_peerStatusCallback (peerMeshPointAddress, peerAddress, interface, false);
+      if (!m_peerStatusCallback.IsNull ())
+        {
+          m_peerStatusCallback (peerMeshPointAddress, peerAddress, interface, false);
+        }
     }
   if (nstate == PeerLink::IDLE)
     {
@@ -476,7 +535,7 @@
 {
   os << "<PeerManagementProtocol>\n";
   m_stats.Print (os);
-  for(PeerManagementProtocolMacMap::const_iterator plugins = m_plugins.begin (); plugins != m_plugins.end (); plugins ++)
+  for (PeerManagementProtocolMacMap::const_iterator plugins = m_plugins.begin (); plugins != m_plugins.end (); plugins ++)
     {
       //Take statistics from plugin:
       plugins->second->Report (os);
@@ -484,7 +543,9 @@
       PeerLinksMap::const_iterator iface = m_peerLinks.find (plugins->second->m_ifIndex);
       NS_ASSERT (iface != m_peerLinks.end());
       for (PeerLinksOnInterface::const_iterator i = iface->second.begin (); i != iface->second.end(); i++)
-        (*i)->Report (os);
+        {
+          (*i)->Report (os);
+        }
     }
   os << "</PeerManagementProtocol>\n";
 }
@@ -492,8 +553,10 @@
 PeerManagementProtocol::ResetStats ()
 {
   m_stats = Statistics::Statistics (m_stats.linksTotal); // don't reset number of links
-  for(PeerManagementProtocolMacMap::const_iterator plugins = m_plugins.begin (); plugins != m_plugins.end (); plugins ++)
-    plugins->second->ResetStats ();
+  for (PeerManagementProtocolMacMap::const_iterator plugins = m_plugins.begin (); plugins != m_plugins.end (); plugins ++)
+    {
+      plugins->second->ResetStats ();
+    }
 }
 
 } // namespace dot11s
--- a/src/devices/mesh/dot11s/peer-management-protocol.h	Tue Jul 21 11:33:27 2009 +0400
+++ b/src/devices/mesh/dot11s/peer-management-protocol.h	Tue Jul 21 12:51:09 2009 +0400
@@ -213,6 +213,7 @@
   uint16_t m_lastAssocId;
   uint16_t m_lastLocalLinkId;
   uint8_t m_maxNumberOfPeerLinks;
+  uint8_t m_maxBeaconLostForBeaconTiming;
   /**
    * Peer Links
    * \{
--- a/src/devices/mesh/mesh-point-device.cc	Tue Jul 21 11:33:27 2009 +0400
+++ b/src/devices/mesh/mesh-point-device.cc	Tue Jul 21 12:51:09 2009 +0400
@@ -38,14 +38,14 @@
 MeshPointDevice::GetTypeId ()
 {
   static TypeId tid = TypeId ("ns3::MeshPointDevice")
-                      .SetParent<NetDevice> ()
-                      .AddConstructor<MeshPointDevice> ()
-                      .AddAttribute ("RoutingProtocol", "The mesh routing protocol used by this mesh point.",
-                          PointerValue (),
-                          MakePointerAccessor (&MeshPointDevice::GetRoutingProtocol,
-                                               &MeshPointDevice::SetRoutingProtocol),
-                          MakePointerChecker<MeshL2RoutingProtocol> ())
-                      ;
+    .SetParent<NetDevice> ()
+    .AddConstructor<MeshPointDevice> ()
+    .AddAttribute ("RoutingProtocol", "The mesh routing protocol used by this mesh point.",
+        PointerValue (),
+        MakePointerAccessor (&MeshPointDevice::GetRoutingProtocol,
+          &MeshPointDevice::SetRoutingProtocol),
+        MakePointerChecker<MeshL2RoutingProtocol> ())
+    ;
   return tid;
 }
 
@@ -65,7 +65,9 @@
 {
   NS_LOG_FUNCTION_NOARGS ();
   for (std::vector< Ptr<NetDevice> >::iterator iter = m_ifaces.begin (); iter != m_ifaces.end (); iter++)
-    *iter = 0;
+    {
+      *iter = 0;
+    }
   m_ifaces.clear ();
   m_node = 0;
   NetDevice::DoDispose ();
@@ -87,7 +89,9 @@
   uint16_t& realProtocol = protocol;
   NS_LOG_DEBUG ("SRC="<<src48<<", DST = "<<dst48<<", I am: "<<m_address);
   if (!m_promiscRxCallback.IsNull ())
+  {
     m_promiscRxCallback (this, packet, protocol, src, dst, packetType);
+  }
   if(dst48.IsGroup ())
   {
     Ptr<Packet> packet_copy = packet->Copy ();
@@ -323,10 +327,13 @@
 Ptr<NetDevice>
 MeshPointDevice::GetInterface (uint32_t n) const
 {
-  for(std::vector< Ptr<NetDevice> >::const_iterator i = m_ifaces.begin (); i != m_ifaces.end (); i ++)
-    if((*i)->GetIfIndex() == n)
+  for (std::vector< Ptr<NetDevice> >::const_iterator i = m_ifaces.begin (); i != m_ifaces.end (); i ++)
+  {
+    if ((*i)->GetIfIndex() == n)
+    {
       return (*i);
-  
+    }
+  }
   NS_FATAL_ERROR ("Mesh point interface is not found by index");
   return 0;
 }
@@ -351,17 +358,20 @@
   }
   
   // Mesh point has MAC address of it's first interface
-  if (m_ifaces.empty()) 
+  if (m_ifaces.empty ())
+  {
     m_address = Mac48Address::ConvertFrom (iface->GetAddress ());
-  
+  }
   const WifiNetDevice * wifiNetDev = dynamic_cast<const WifiNetDevice *> (PeekPointer (iface));
   if (wifiNetDev == 0)
+  {
     NS_FATAL_ERROR ("Device is not a WiFi NIC: cannot be used as a mesh point interface.");
-      
+  }   
   MeshWifiInterfaceMac * ifaceMac = dynamic_cast<MeshWifiInterfaceMac *> (PeekPointer (wifiNetDev->GetMac ()));
   if (ifaceMac == 0)
+  {
     NS_FATAL_ERROR ("WiFi device doesn't have correct MAC installed: cannot be used as a mesh point interface.");
-
+  }
   ifaceMac->SetMeshPointAddress (m_address);
   
   // Receive frames from this interface
@@ -420,10 +430,16 @@
   
   // Send
   if (outIface != 0xffffffff)
+  {
     GetInterface (outIface)->SendFrom(packet, src, dst, protocol);
+  }
   else
+  {
     for (std::vector<Ptr<NetDevice> >::iterator i = m_ifaces.begin (); i != m_ifaces.end(); i++)
+    {
       (*i) -> SendFrom (packet->Copy (), src, dst, protocol);
+    }
+  }
 }
 
 void
--- a/src/devices/mesh/mesh-wifi-interface-mac.cc	Tue Jul 21 11:33:27 2009 +0400
+++ b/src/devices/mesh/mesh-wifi-interface-mac.cc	Tue Jul 21 12:51:09 2009 +0400
@@ -190,7 +190,9 @@
   NS_LOG_FUNCTION (this << stationManager);
   m_stationManager = stationManager;
   for (Queues::const_iterator i = m_queues.begin (); i != m_queues.end (); i ++)
+  {
     i->second->SetWifiRemoteStationManager (stationManager);
+  }
   m_beaconDca->SetWifiRemoteStationManager (stationManager);
   m_low->SetWifiRemoteStationManager (stationManager);
 }
@@ -310,9 +312,13 @@
 
   Ptr<YansWifiPhy> phy = m_phy->GetObject<YansWifiPhy> ();
   if (phy != 0)
-    return phy->GetChannelNumber ();
+    {
+      return phy->GetChannelNumber ();
+    }
   else
-    return 0;
+    {
+      return 0;
+    }
 }
 
 void MeshWifiInterfaceMac::SwitchFrequencyChannel (uint16_t new_id)
@@ -371,7 +377,10 @@
   for (PluginList::const_iterator i = m_plugins.end()-1; i != m_plugins.begin()-1; i--)
     {
       bool drop = ! ((*i)->UpdateOutcomingFrame(packet, hdr, from, to));
-      if (drop) return; // plugin drops frame
+      if (drop)
+        {
+          return; // plugin drops frame
+        }
     }
 
   // Assert that address1 is set. Assert will fail e.g. if there is no installed routing plugin.
@@ -394,8 +403,10 @@
   // Get Qos tag:
   AccessClass ac = AC_BE;
   QosTag tag;
-  if(packet->RemovePacketTag (tag))
-    ac = QosUtilsMapTidToAc (tag.Get ());
+  if (packet->RemovePacketTag (tag))
+    {
+      ac = QosUtilsMapTidToAc (tag.Get ());
+    }
   m_stats.sentFrames ++;
   m_stats.sentBytes += packet->GetSize ();
   NS_ASSERT(m_queues.find(ac) != m_queues.end ());
@@ -410,7 +421,10 @@
   for (PluginList::const_iterator i = m_plugins.end()-1; i != m_plugins.begin()-1; i--)
     {
       bool drop = ! ((*i)->UpdateOutcomingFrame(packet, header, Mac48Address (), Mac48Address ()));
-      if (drop) return; // plugin drops frame
+      if (drop)
+        {
+          return; // plugin drops frame
+        }
     }
   m_stats.sentFrames ++;
   m_stats.sentBytes += packet->GetSize ();
@@ -448,7 +462,9 @@
   {
     WifiMode mode = m_stationManager->GetBasicMode (i);
     if (!rates.IsSupportedRate (mode.GetDataRate ()))
-      return false;
+      {
+        return false;
+      }
   }
   return true;
 }
@@ -490,8 +506,10 @@
       m_tbtt = Simulator::Now() + randomStart;
     }
   else
-    // stop sending beacons
-    m_beaconSendEvent.Cancel ();
+    {
+      // stop sending beacons
+      m_beaconSendEvent.Cancel ();
+    }
 }
 
 bool
@@ -538,8 +556,9 @@
 
   // Ask all plugins to add their specific information elements to beacon
   for (PluginList::const_iterator i = m_plugins.begin(); i != m_plugins.end(); ++i)
-    (*i)->UpdateBeacon (beacon);
-
+    {
+      (*i)->UpdateBeacon (beacon);
+    }
   m_beaconDca->Queue (beacon.CreatePacket(), beacon.CreateHeader(GetAddress (), GetMeshPointAddress ()));
 
   ScheduleNextBeacon ();
@@ -549,8 +568,10 @@
 MeshWifiInterfaceMac::Receive (Ptr<Packet> packet, WifiMacHeader const *hdr)
 {
   // Process beacon
-  if((hdr->GetAddr1() != GetAddress()) && (hdr->GetAddr1() != Mac48Address::GetBroadcast()))
-    return;
+  if ((hdr->GetAddr1() != GetAddress()) && (hdr->GetAddr1() != Mac48Address::GetBroadcast()))
+    {
+      return;
+    }
   if (hdr->IsBeacon ())
     {
       m_stats.recvBeacons ++;
@@ -577,7 +598,9 @@
               {
                 peerSta->AddSupportedMode (mode);
                 if (rates.IsBasicRate (mode.GetDataRate ()))
-                  m_stationManager->AddBasicMode (mode);
+                  {
+                    m_stationManager->AddBasicMode (mode);
+                  }
               }
           }
         }
@@ -591,23 +614,32 @@
   for (PluginList::iterator i = m_plugins.begin (); i != m_plugins.end(); ++i)
     {
       bool drop = ! ((*i)->Receive(packet, *hdr));
-      if (drop) return; // plugin drops frame
+      if (drop)
+        {
+          return; // plugin drops frame
+        }
     }
 
   // Check if QoS tag exists and add it:
   if (hdr->IsQosData ())
-    packet->AddPacketTag (QosTag (hdr->GetQosTid ()));
+    {
+      packet->AddPacketTag (QosTag (hdr->GetQosTid ()));
+    }
   // Forward data up
   if (hdr->IsData ())
+    {
       ForwardUp (packet, hdr->GetAddr4(), hdr->GetAddr3());
+    }
 }
 
 uint32_t
 MeshWifiInterfaceMac::GetLinkMetric (Mac48Address peerAddress)
 {
   uint32_t metric = 1;
-  if(!m_linkMetricCallback.IsNull ())
-    metric = m_linkMetricCallback(peerAddress, this);
+  if (!m_linkMetricCallback.IsNull ())
+    {
+      metric = m_linkMetricCallback(peerAddress, this);
+    }
   return metric;
 }
 
@@ -665,7 +697,7 @@
 MeshWifiInterfaceMac::SetQueue (Ptr<DcaTxop> queue, AccessClass ac)
 {
   Queues::iterator i = m_queues.find(ac);
-  if(i != m_queues.end ())
+  if (i != m_queues.end ())
   {
     NS_LOG_WARN("Queue is already set!");
     return;
@@ -677,7 +709,7 @@
 Ptr<DcaTxop>
 MeshWifiInterfaceMac::GetQueue (AccessClass ac)
 {
-  Queues::iterator i = m_queues.find(ac);
+  Queues::iterator i = m_queues.find (ac);
   if(i != m_queues.end ())
   {
     NS_LOG_WARN("Queue is not found! Check access class!");