--- a/src/devices/mesh/mesh-wifi-peer-manager.cc Thu Mar 19 14:31:47 2009 +0300
+++ b/src/devices/mesh/mesh-wifi-peer-manager.cc Thu Mar 19 17:28:37 2009 +0300
@@ -29,9 +29,9 @@
NS_LOG_COMPONENT_DEFINE ("WifiPeerManager");
namespace ns3 {
/***************************************************
- * PeerLinkDescriptor
+ * PeerLinkDescriptorDUP
***************************************************/
-WifiPeerLinkDescriptor::WifiPeerLinkDescriptor ():
+WifiPeerLinkDescriptorDUP::WifiPeerLinkDescriptorDUP ():
m_localLinkId (0),
m_peerLinkId (0),
m_state (IDLE),
@@ -40,134 +40,134 @@
{}
void
-WifiPeerLinkDescriptor::SetPeerAddress (Mac48Address macaddr)
+WifiPeerLinkDescriptorDUP::SetPeerAddress (Mac48Address macaddr)
{
m_peerAddress = macaddr;
}
void
-WifiPeerLinkDescriptor::SetLocalAddress (Mac48Address macaddr)
+WifiPeerLinkDescriptorDUP::SetLocalAddress (Mac48Address macaddr)
{
m_localAddress = macaddr;
}
void
-WifiPeerLinkDescriptor::SetLocalLinkId (uint16_t id)
+WifiPeerLinkDescriptorDUP::SetLocalLinkId (uint16_t id)
{
m_localLinkId = id;
}
void
-WifiPeerLinkDescriptor::SetLocalAid (uint16_t aid)
+WifiPeerLinkDescriptorDUP::SetLocalAid (uint16_t aid)
{
m_assocId = aid;
}
void
-WifiPeerLinkDescriptor::SetBeaconInformation (Time lastBeacon, Time beaconInterval)
+WifiPeerLinkDescriptorDUP::SetBeaconInformation (Time lastBeacon, Time beaconInterval)
{
m_lastBeacon = lastBeacon;
m_beaconInterval = beaconInterval;
m_beaconLossTimer.Cancel ();
Time delay = Seconds (beaconInterval.GetSeconds()*m_maxBeaconLoss);
NS_ASSERT (delay.GetMicroSeconds() != 0);
- m_beaconLossTimer = Simulator::Schedule (delay, &WifiPeerLinkDescriptor::BeaconLoss, this);
+ m_beaconLossTimer = Simulator::Schedule (delay, &WifiPeerLinkDescriptorDUP::BeaconLoss, this);
}
void
-WifiPeerLinkDescriptor::SetMaxBeaconLoss (uint8_t maxBeaconLoss)
+WifiPeerLinkDescriptorDUP::SetMaxBeaconLoss (uint8_t maxBeaconLoss)
{
m_maxBeaconLoss = maxBeaconLoss;
}
void
-WifiPeerLinkDescriptor::SetLinkStatusCallback (Callback<void, Mac48Address, Mac48Address, bool> cb)
+WifiPeerLinkDescriptorDUP::SetLinkStatusCallback (Callback<void, Mac48Address, Mac48Address, bool> cb)
{
m_linkStatusCallback = cb;
}
void
-WifiPeerLinkDescriptor::BeaconLoss ()
+WifiPeerLinkDescriptorDUP::BeaconLoss ()
{
StateMachine (CNCL);
}
void
-WifiPeerLinkDescriptor::SetBeaconTimingElement (IeDot11sBeaconTiming beaconTiming)
+WifiPeerLinkDescriptorDUP::SetBeaconTimingElement (IeDot11sBeaconTiming beaconTiming)
{
m_beaconTiming = beaconTiming;
}
Mac48Address
-WifiPeerLinkDescriptor::GetPeerAddress () const
+WifiPeerLinkDescriptorDUP::GetPeerAddress () const
{
return m_peerAddress;
}
Mac48Address
-WifiPeerLinkDescriptor::GetLocalAddress () const
+WifiPeerLinkDescriptorDUP::GetLocalAddress () const
{
return m_localAddress;
}
uint16_t
-WifiPeerLinkDescriptor::GetLocalAid () const
+WifiPeerLinkDescriptorDUP::GetLocalAid () const
{
return m_assocId;
}
Time
-WifiPeerLinkDescriptor::GetLastBeacon () const
+WifiPeerLinkDescriptorDUP::GetLastBeacon () const
{
return m_lastBeacon;
}
Time
-WifiPeerLinkDescriptor::GetBeaconInterval () const
+WifiPeerLinkDescriptorDUP::GetBeaconInterval () const
{
return m_beaconInterval;
}
IeDot11sBeaconTiming
-WifiPeerLinkDescriptor::GetBeaconTimingElement () const
+WifiPeerLinkDescriptorDUP::GetBeaconTimingElement () const
{
return m_beaconTiming;
}
void
-WifiPeerLinkDescriptor::ClearTimingElement ()
+WifiPeerLinkDescriptorDUP::ClearTimingElement ()
{
m_beaconTiming.ClearTimingElement ();
}
-void WifiPeerLinkDescriptor::MLMECancelPeerLink (dot11sReasonCode reason)
+void WifiPeerLinkDescriptorDUP::MLMECancelPeerLink (dot11sReasonCode reason)
{
StateMachine (CNCL,reason);
}
-void WifiPeerLinkDescriptor::MLMEPassivePeerLinkOpen ()
+void WifiPeerLinkDescriptorDUP::MLMEPassivePeerLinkOpen ()
{
StateMachine (PASOPN);
}
-void WifiPeerLinkDescriptor::MLMEActivePeerLinkOpen ()
+void WifiPeerLinkDescriptorDUP::MLMEActivePeerLinkOpen ()
{
StateMachine (ACTOPN);
}
-void WifiPeerLinkDescriptor::MLMEPeeringRequestReject ()
+void WifiPeerLinkDescriptorDUP::MLMEPeeringRequestReject ()
{
StateMachine (REQ_RJCT, REASON11S_PEER_LINK_CANCELLED);
}
#if 0
-void WifiPeerLinkDescriptor::MLMEBindSecurityAssociation ()
+void WifiPeerLinkDescriptorDUP::MLMEBindSecurityAssociation ()
{
StateMachine (BNDSA);
}
#endif
void
-WifiPeerLinkDescriptor::SetMac (Ptr<MeshWifiMac> mac)
+WifiPeerLinkDescriptorDUP::SetMac (Ptr<MeshWifiMac> mac)
{
m_mac = mac;
}
-void WifiPeerLinkDescriptor::PeerLinkClose (uint16_t localLinkId,uint16_t peerLinkId, dot11sReasonCode reason)
+void WifiPeerLinkDescriptorDUP::PeerLinkClose (uint16_t localLinkId,uint16_t peerLinkId, dot11sReasonCode reason)
{
if (peerLinkId != 0 && m_localLinkId != peerLinkId)
return;
@@ -178,7 +178,7 @@
StateMachine (CLS_ACPT, reason);
}
-void WifiPeerLinkDescriptor::PeerLinkOpenAccept (uint16_t localLinkId, IeDot11sConfiguration conf)
+void WifiPeerLinkDescriptorDUP::PeerLinkOpenAccept (uint16_t localLinkId, IeDot11sConfiguration conf)
{
if (m_peerLinkId == 0)
m_peerLinkId = localLinkId;
@@ -186,7 +186,7 @@
StateMachine (OPN_ACPT);
}
-void WifiPeerLinkDescriptor::PeerLinkOpenReject (uint16_t localLinkId, IeDot11sConfiguration conf,dot11sReasonCode reason)
+void WifiPeerLinkDescriptorDUP::PeerLinkOpenReject (uint16_t localLinkId, IeDot11sConfiguration conf,dot11sReasonCode reason)
{
if ( m_peerLinkId == 0)
m_peerLinkId = localLinkId;
@@ -195,7 +195,7 @@
}
void
-WifiPeerLinkDescriptor::PeerLinkConfirmAccept (uint16_t localLinkId,uint16_t peerLinkId, uint16_t peerAid, IeDot11sConfiguration conf)
+WifiPeerLinkDescriptorDUP::PeerLinkConfirmAccept (uint16_t localLinkId,uint16_t peerLinkId, uint16_t peerAid, IeDot11sConfiguration conf)
{
if ( m_localLinkId != peerLinkId)
return;
@@ -208,7 +208,7 @@
StateMachine (CNF_ACPT);
}
-void WifiPeerLinkDescriptor:: PeerLinkConfirmReject (uint16_t localLinkId, uint16_t peerLinkId,
+void WifiPeerLinkDescriptorDUP:: PeerLinkConfirmReject (uint16_t localLinkId, uint16_t peerLinkId,
IeDot11sConfiguration conf,dot11sReasonCode reason)
{
if (m_localLinkId != peerLinkId)
@@ -222,7 +222,7 @@
}
bool
-WifiPeerLinkDescriptor::LinkIsEstab () const
+WifiPeerLinkDescriptorDUP::LinkIsEstab () const
{
if (m_state == ESTAB)
return true;
@@ -230,7 +230,7 @@
}
bool
-WifiPeerLinkDescriptor::LinkIsIdle () const
+WifiPeerLinkDescriptorDUP::LinkIsIdle () const
{
if (m_state == IDLE)
return true;
@@ -238,7 +238,7 @@
}
void
-WifiPeerLinkDescriptor::StateMachine (PeerEvent event,dot11sReasonCode reasoncode)
+WifiPeerLinkDescriptorDUP::StateMachine (PeerEvent event,dot11sReasonCode reasoncode)
{
switch (m_state)
{
@@ -481,29 +481,29 @@
}
}
-void WifiPeerLinkDescriptor::ClearRetryTimer ()
+void WifiPeerLinkDescriptorDUP::ClearRetryTimer ()
{
m_retryTimer.Cancel ();
}
-void WifiPeerLinkDescriptor::ClearConfirmTimer ()
+void WifiPeerLinkDescriptorDUP::ClearConfirmTimer ()
{
m_confirmTimer.Cancel ();
}
-void WifiPeerLinkDescriptor::ClearHoldingTimer ()
+void WifiPeerLinkDescriptorDUP::ClearHoldingTimer ()
{
m_holdingTimer.Cancel ();
}
-void WifiPeerLinkDescriptor::SendPeerLinkClose (dot11sReasonCode reasoncode)
+void WifiPeerLinkDescriptorDUP::SendPeerLinkClose (dot11sReasonCode reasoncode)
{
IeDot11sPeerManagement peerElement;
peerElement.SetPeerClose (m_localLinkId, m_peerLinkId, reasoncode);
m_mac->SendPeerLinkClose (peerElement,m_peerAddress);
}
-void WifiPeerLinkDescriptor::SendPeerLinkOpen ()
+void WifiPeerLinkDescriptorDUP::SendPeerLinkOpen ()
{
IeDot11sPeerManagement peerElement;
peerElement.SetPeerOpen (m_localLinkId);
@@ -511,29 +511,29 @@
m_mac->SendPeerLinkOpen (peerElement, m_peerAddress);
}
-void WifiPeerLinkDescriptor::SendPeerLinkConfirm ()
+void WifiPeerLinkDescriptorDUP::SendPeerLinkConfirm ()
{
IeDot11sPeerManagement peerElement;
peerElement.SetPeerConfirm (m_localLinkId, m_peerLinkId);
m_mac->SendPeerLinkConfirm (peerElement, m_peerAddress, m_assocId);
}
-void WifiPeerLinkDescriptor::SetHoldingTimer ()
+void WifiPeerLinkDescriptorDUP::SetHoldingTimer ()
{
- m_holdingTimer = Simulator::Schedule (dot11sParameters::dot11MeshHoldingTimeout, &WifiPeerLinkDescriptor::HoldingTimeout, this);
+ m_holdingTimer = Simulator::Schedule (dot11sParameters::dot11MeshHoldingTimeout, &WifiPeerLinkDescriptorDUP::HoldingTimeout, this);
}
-void WifiPeerLinkDescriptor::HoldingTimeout ()
+void WifiPeerLinkDescriptorDUP::HoldingTimeout ()
{
StateMachine (TOH);
}
-void WifiPeerLinkDescriptor::SetRetryTimer ()
+void WifiPeerLinkDescriptorDUP::SetRetryTimer ()
{
- m_retryTimer = Simulator::Schedule (dot11sParameters::dot11MeshRetryTimeout, &WifiPeerLinkDescriptor::RetryTimeout, this);
+ m_retryTimer = Simulator::Schedule (dot11sParameters::dot11MeshRetryTimeout, &WifiPeerLinkDescriptorDUP::RetryTimeout, this);
}
-void WifiPeerLinkDescriptor::RetryTimeout ()
+void WifiPeerLinkDescriptorDUP::RetryTimeout ()
{
if ( m_retryCounter < dot11sParameters::dot11MeshMaxRetries)
StateMachine (TOR1);
@@ -541,12 +541,12 @@
StateMachine (TOR2);
}
-void WifiPeerLinkDescriptor::SetConfirmTimer ()
+void WifiPeerLinkDescriptorDUP::SetConfirmTimer ()
{
- m_confirmTimer = Simulator::Schedule (dot11sParameters::dot11MeshConfirmTimeout, &WifiPeerLinkDescriptor::ConfirmTimeout, this);
+ m_confirmTimer = Simulator::Schedule (dot11sParameters::dot11MeshConfirmTimeout, &WifiPeerLinkDescriptorDUP::ConfirmTimeout, this);
}
-void WifiPeerLinkDescriptor::ConfirmTimeout ()
+void WifiPeerLinkDescriptorDUP::ConfirmTimeout ()
{
StateMachine (TOC);
}
@@ -604,7 +604,7 @@
j++)
{
int to_delete = 0;
- for (std::vector<Ptr<WifiPeerLinkDescriptor> >::iterator i = j->second.begin (); i != j->second.end(); i++)
+ for (std::vector<Ptr<WifiPeerLinkDescriptorDUP> >::iterator i = j->second.begin (); i != j->second.end(); i++)
{
to_delete ++;
(*i)->ClearTimingElement ();
@@ -641,7 +641,7 @@
{
PeerDescriptorsMap::iterator port = m_peerDescriptors.find (portAddress);
NS_ASSERT (port != m_peerDescriptors.end());
- for (std::vector<Ptr<WifiPeerLinkDescriptor> >::iterator i = port->second.begin (); i != port->second.end(); i++)
+ for (std::vector<Ptr<WifiPeerLinkDescriptorDUP> >::iterator i = port->second.begin (); i != port->second.end(); i++)
{
if ((*i)->GetPeerAddress () == peerAddress)
{
@@ -650,7 +650,7 @@
return;
}
}
- Ptr<WifiPeerLinkDescriptor> new_descriptor =
+ Ptr<WifiPeerLinkDescriptorDUP> new_descriptor =
AddDescriptor (portAddress, peerAddress, Simulator::Now(), beaconInterval);
new_descriptor->SetBeaconTimingElement (beaconTiming);
}
@@ -668,7 +668,7 @@
//Add a mac pointer:
m_macPointers[meshWifiMac->GetAddress ()] = meshWifiMac;
//Add descriptor array:
- std::vector<Ptr<WifiPeerLinkDescriptor> > descriptors;
+ std::vector<Ptr<WifiPeerLinkDescriptorDUP> > descriptors;
m_peerDescriptors[meshWifiMac->GetAddress ()] = descriptors;
//Add beacon timers:
struct BeaconInfo myBeacon;
@@ -681,7 +681,7 @@
{
PeerDescriptorsMap::iterator port = m_peerDescriptors.find (portAddress);
NS_ASSERT (port != m_peerDescriptors.end());
- for (std::vector<Ptr<WifiPeerLinkDescriptor> >::iterator i = port->second.begin (); i != port->second.end(); i++)
+ for (std::vector<Ptr<WifiPeerLinkDescriptorDUP> >::iterator i = port->second.begin (); i != port->second.end(); i++)
if ((*i)->GetPeerAddress () == peerAddress)
{
if (ShouldSendOpen (portAddress, peerAddress))
@@ -703,7 +703,7 @@
return;
PeerDescriptorsMap::iterator port = m_peerDescriptors.find (portAddress);
NS_ASSERT (port != m_peerDescriptors.end());
- for (std::vector<Ptr<WifiPeerLinkDescriptor> >::iterator i = port->second.begin (); i != port->second.end(); i++)
+ for (std::vector<Ptr<WifiPeerLinkDescriptorDUP> >::iterator i = port->second.begin (); i != port->second.end(); i++)
if ((*i)->GetPeerAddress () == peerAddress)
{
(*i)->PeerLinkOpenAccept (peerMan.GetLocalLinkId(), conf);
@@ -711,7 +711,7 @@
}
BeaconInfoMap::iterator myBeacon = m_myBeaconInfo.find (portAddress);
NS_ASSERT (myBeacon != m_myBeaconInfo.end());
- Ptr<WifiPeerLinkDescriptor>new_descriptor = AddDescriptor (
+ Ptr<WifiPeerLinkDescriptorDUP>new_descriptor = AddDescriptor (
portAddress,
peerAddress,
Simulator::Now (),
@@ -730,7 +730,7 @@
{
PeerDescriptorsMap::iterator port = m_peerDescriptors.find (portAddress);
NS_ASSERT (port != m_peerDescriptors.end());
- for (std::vector<Ptr<WifiPeerLinkDescriptor> >::iterator i = port->second.begin (); i != port->second.end(); i++)
+ for (std::vector<Ptr<WifiPeerLinkDescriptorDUP> >::iterator i = port->second.begin (); i != port->second.end(); i++)
if ((*i)->GetPeerAddress () == peerAddress)
(*i)->PeerLinkConfirmAccept (peerMan.GetLocalLinkId(), peerMan.GetPeerLinkId(), peerAid, meshConfig);
}
@@ -744,7 +744,7 @@
{
PeerDescriptorsMap::iterator port = m_peerDescriptors.find (portAddress);
NS_ASSERT (port != m_peerDescriptors.end());
- for (std::vector<Ptr<WifiPeerLinkDescriptor> >::iterator i = port->second.begin (); i != port->second.end(); i++)
+ for (std::vector<Ptr<WifiPeerLinkDescriptorDUP> >::iterator i = port->second.begin (); i != port->second.end(); i++)
if ((*i)->GetPeerAddress () == peerAddress)
{
(*i)->PeerLinkClose (peerMan.GetLocalLinkId(), peerMan.GetPeerLinkId(), peerMan.GetReasonCode());
@@ -760,7 +760,7 @@
{
PeerDescriptorsMap::iterator port = m_peerDescriptors.find (portAddress);
NS_ASSERT (port != m_peerDescriptors.end());
- for (std::vector<Ptr<WifiPeerLinkDescriptor> >::iterator i = port->second.begin (); i != port->second.end(); i++)
+ for (std::vector<Ptr<WifiPeerLinkDescriptorDUP> >::iterator i = port->second.begin (); i != port->second.end(); i++)
if ((*i)->GetPeerAddress () == peerAddress)
{
(*i)->MLMECancelPeerLink (REASON11S_MESH_CONFIGURATION_POLICY_VIOLATION);
@@ -775,7 +775,7 @@
PeerDescriptorsMap::iterator port = m_peerDescriptors.find (portAddress);
NS_ASSERT (port != m_peerDescriptors.end());
IeDot11sBeaconTiming return_val;
- for (std::vector<Ptr<WifiPeerLinkDescriptor> >::iterator i = port->second.begin (); i != port->second.end(); i++)
+ for (std::vector<Ptr<WifiPeerLinkDescriptorDUP> >::iterator i = port->second.begin (); i != port->second.end(); i++)
{
//Just go through all neighbor entries and add it to timing element:
return_val.AddNeighboursTimingElementUnit (
@@ -795,19 +795,19 @@
PeerDescriptorsMap::iterator port = m_peerDescriptors.find (portAddress);
NS_ASSERT (port != m_peerDescriptors.end());
IeDot11sBeaconTiming return_val;
- for (std::vector<Ptr<WifiPeerLinkDescriptor> >::iterator i = port->second.begin (); i != port->second.end(); i++)
+ for (std::vector<Ptr<WifiPeerLinkDescriptorDUP> >::iterator i = port->second.begin (); i != port->second.end(); i++)
if ((*i)->GetPeerAddress () == addr)
return_val = (*i)->GetBeaconTimingElement ();
return return_val;
}
-Ptr<WifiPeerLinkDescriptor>
+Ptr<WifiPeerLinkDescriptorDUP>
WifiPeerManager::AddDescriptor (
Mac48Address portAddress,
Mac48Address peerAddress,
Time lastBeacon,
Time beaconInterval)
{
- Ptr<WifiPeerLinkDescriptor> new_descriptor = Create<WifiPeerLinkDescriptor> ();
+ Ptr<WifiPeerLinkDescriptorDUP> new_descriptor = Create<WifiPeerLinkDescriptorDUP> ();
if (m_assocId == 0xff)
m_assocId = 0;
if (m_localLinkId == 0xff)
@@ -863,7 +863,7 @@
PeerDescriptorsMap::iterator port = m_peerDescriptors.find (portAddress);
NS_ASSERT (port != m_peerDescriptors.end());
std::vector<Mac48Address> return_value;
- for (std::vector<Ptr<WifiPeerLinkDescriptor> >::iterator i = port->second.begin (); i != port->second.end(); i++)
+ for (std::vector<Ptr<WifiPeerLinkDescriptorDUP> >::iterator i = port->second.begin (); i != port->second.end(); i++)
return_value.push_back ((*i)->GetPeerAddress());
return return_value;
}
@@ -873,7 +873,7 @@
{
PeerDescriptorsMap::iterator port = m_peerDescriptors.find (portAddress);
NS_ASSERT (port != m_peerDescriptors.end());
- for (std::vector<Ptr<WifiPeerLinkDescriptor> >::iterator i = port->second.begin (); i != port->second.end(); i++)
+ for (std::vector<Ptr<WifiPeerLinkDescriptorDUP> >::iterator i = port->second.begin (); i != port->second.end(); i++)
if ((*i)->GetPeerAddress () == peerAddress)
return ((*i)->LinkIsEstab ());
return false;
@@ -916,7 +916,7 @@
NS_ASSERT (port != m_peerDescriptors.end());
BeaconInfoMap::iterator myBeacon = m_myBeaconInfo.find (portAddress);
NS_ASSERT (myBeacon != m_myBeaconInfo.end());
- for (std::vector<Ptr<WifiPeerLinkDescriptor> >::iterator i = port->second.begin (); i != port->second.end(); i++)
+ for (std::vector<Ptr<WifiPeerLinkDescriptorDUP> >::iterator i = port->second.begin (); i != port->second.end(); i++)
{
IeDot11sBeaconTiming::NeighboursTimingUnitsList neighbours;
neighbours = (*i)->GetBeaconTimingElement ().GetNeighboursTimingElementsList();