diff --git a/bindings/python/ns3_module_helper.py b/bindings/python/ns3_module_helper.py index 1caea62b9..4c29797c2 100644 --- a/bindings/python/ns3_module_helper.py +++ b/bindings/python/ns3_module_helper.py @@ -168,6 +168,10 @@ def register_Ns3InternetStackHelper_methods(root_module, cls): cls.add_method('Install', 'void', [param('ns3::NodeContainer', 'c')]) + ## internet-stack-helper.h: void ns3::InternetStackHelper::SetNscStack(std::string soname) [member function] + cls.add_method('SetNscStack', + 'void', + [param('std::string', 'soname')]) ## internet-stack-helper.h: static void ns3::InternetStackHelper::EnablePcapAll(std::string filename) [member function] cls.add_method('EnablePcapAll', 'void', diff --git a/bindings/python/ns3_module_internet_stack.py b/bindings/python/ns3_module_internet_stack.py index 521058075..0dd1dfbf3 100644 --- a/bindings/python/ns3_module_internet_stack.py +++ b/bindings/python/ns3_module_internet_stack.py @@ -627,6 +627,10 @@ def register_functions(root_module): module.add_function('AddInternetStack', 'void', [param('ns3::Ptr< ns3::Node >', 'node')]) + ## internet-stack.h: extern void ns3::AddNscInternetStack(ns3::Ptr node, std::string const & soname) [free function] + module.add_function('AddNscInternetStack', + 'void', + [param('ns3::Ptr< ns3::Node >', 'node'), param('std::string const &', 'soname')]) register_functions_ns3_internal(module.get_submodule('internal'), root_module) register_functions_ns3_TimeStepPrecision(module.get_submodule('TimeStepPrecision'), root_module) register_functions_ns3_Config(module.get_submodule('Config'), root_module) diff --git a/bindings/python/ns3_module_wifi.py b/bindings/python/ns3_module_wifi.py index f957884d7..dbb091e42 100644 --- a/bindings/python/ns3_module_wifi.py +++ b/bindings/python/ns3_module_wifi.py @@ -1013,15 +1013,18 @@ def register_Ns3WifiMac_methods(root_module, cls): ## wifi-mac.h: void ns3::WifiMac::SetPifs(ns3::Time pifs) [member function] cls.add_method('SetPifs', 'void', - [param('ns3::Time', 'pifs')]) + [param('ns3::Time', 'pifs')], + is_pure_virtual=True, is_virtual=True) ## wifi-mac.h: void ns3::WifiMac::SetCtsTimeout(ns3::Time ctsTimeout) [member function] cls.add_method('SetCtsTimeout', 'void', - [param('ns3::Time', 'ctsTimeout')]) + [param('ns3::Time', 'ctsTimeout')], + is_pure_virtual=True, is_virtual=True) ## wifi-mac.h: void ns3::WifiMac::SetAckTimeout(ns3::Time ackTimeout) [member function] cls.add_method('SetAckTimeout', 'void', - [param('ns3::Time', 'ackTimeout')]) + [param('ns3::Time', 'ackTimeout')], + is_pure_virtual=True, is_virtual=True) ## wifi-mac.h: void ns3::WifiMac::SetMaxPropagationDelay(ns3::Time delay) [member function] cls.add_method('SetMaxPropagationDelay', 'void', @@ -1030,7 +1033,7 @@ def register_Ns3WifiMac_methods(root_module, cls): cls.add_method('GetPifs', 'ns3::Time', [], - is_const=True) + is_pure_virtual=True, is_const=True, is_virtual=True) ## wifi-mac.h: ns3::Time ns3::WifiMac::GetSifs() const [member function] cls.add_method('GetSifs', 'ns3::Time', @@ -1050,12 +1053,12 @@ def register_Ns3WifiMac_methods(root_module, cls): cls.add_method('GetCtsTimeout', 'ns3::Time', [], - is_const=True) + is_pure_virtual=True, is_const=True, is_virtual=True) ## wifi-mac.h: ns3::Time ns3::WifiMac::GetAckTimeout() const [member function] cls.add_method('GetAckTimeout', 'ns3::Time', [], - is_const=True) + is_pure_virtual=True, is_const=True, is_virtual=True) ## wifi-mac.h: ns3::Time ns3::WifiMac::GetMsduLifetime() const [member function] cls.add_method('GetMsduLifetime', 'ns3::Time', @@ -1081,11 +1084,6 @@ def register_Ns3WifiMac_methods(root_module, cls): 'ns3::Ssid', [], is_pure_virtual=True, is_const=True, is_virtual=True) - ## wifi-mac.h: ns3::Mac48Address ns3::WifiMac::GetBssid() const [member function] - cls.add_method('GetBssid', - 'ns3::Mac48Address', - [], - is_pure_virtual=True, is_const=True, is_virtual=True) ## wifi-mac.h: void ns3::WifiMac::SetAddress(ns3::Mac48Address address) [member function] cls.add_method('SetAddress', 'void', @@ -1151,6 +1149,21 @@ def register_Ns3NqapWifiMac_methods(root_module, cls): 'void', [param('ns3::Time', 'eifsNoDifs')], is_virtual=True) + ## nqap-wifi-mac.h: void ns3::NqapWifiMac::SetAckTimeout(ns3::Time ackTimeout) [member function] + cls.add_method('SetAckTimeout', + 'void', + [param('ns3::Time', 'ackTimeout')], + is_virtual=True) + ## nqap-wifi-mac.h: void ns3::NqapWifiMac::SetCtsTimeout(ns3::Time ctsTimeout) [member function] + cls.add_method('SetCtsTimeout', + 'void', + [param('ns3::Time', 'ctsTimeout')], + is_virtual=True) + ## nqap-wifi-mac.h: void ns3::NqapWifiMac::SetPifs(ns3::Time pifs) [member function] + cls.add_method('SetPifs', + 'void', + [param('ns3::Time', 'pifs')], + is_virtual=True) ## nqap-wifi-mac.h: ns3::Time ns3::NqapWifiMac::GetSlot() const [member function] cls.add_method('GetSlot', 'ns3::Time', @@ -1166,6 +1179,21 @@ def register_Ns3NqapWifiMac_methods(root_module, cls): 'ns3::Time', [], is_const=True, is_virtual=True) + ## nqap-wifi-mac.h: ns3::Time ns3::NqapWifiMac::GetAckTimeout() const [member function] + cls.add_method('GetAckTimeout', + 'ns3::Time', + [], + is_const=True, is_virtual=True) + ## nqap-wifi-mac.h: ns3::Time ns3::NqapWifiMac::GetCtsTimeout() const [member function] + cls.add_method('GetCtsTimeout', + 'ns3::Time', + [], + is_const=True, is_virtual=True) + ## nqap-wifi-mac.h: ns3::Time ns3::NqapWifiMac::GetPifs() const [member function] + cls.add_method('GetPifs', + 'ns3::Time', + [], + is_const=True, is_virtual=True) ## nqap-wifi-mac.h: void ns3::NqapWifiMac::SetWifiPhy(ns3::Ptr phy) [member function] cls.add_method('SetWifiPhy', 'void', @@ -1206,11 +1234,6 @@ def register_Ns3NqapWifiMac_methods(root_module, cls): 'ns3::Ssid', [], is_const=True, is_virtual=True) - ## nqap-wifi-mac.h: ns3::Mac48Address ns3::NqapWifiMac::GetBssid() const [member function] - cls.add_method('GetBssid', - 'ns3::Mac48Address', - [], - is_const=True, is_virtual=True) ## nqap-wifi-mac.h: void ns3::NqapWifiMac::SetAddress(ns3::Mac48Address address) [member function] cls.add_method('SetAddress', 'void', @@ -1347,6 +1370,21 @@ def register_Ns3AdhocWifiMac_methods(root_module, cls): 'void', [param('ns3::Time', 'eifsNoDifs')], is_virtual=True) + ## adhoc-wifi-mac.h: void ns3::AdhocWifiMac::SetAckTimeout(ns3::Time ackTimeout) [member function] + cls.add_method('SetAckTimeout', + 'void', + [param('ns3::Time', 'ackTimeout')], + is_virtual=True) + ## adhoc-wifi-mac.h: void ns3::AdhocWifiMac::SetCtsTimeout(ns3::Time ctsTimeout) [member function] + cls.add_method('SetCtsTimeout', + 'void', + [param('ns3::Time', 'ctsTimeout')], + is_virtual=True) + ## adhoc-wifi-mac.h: void ns3::AdhocWifiMac::SetPifs(ns3::Time pifs) [member function] + cls.add_method('SetPifs', + 'void', + [param('ns3::Time', 'pifs')], + is_virtual=True) ## adhoc-wifi-mac.h: ns3::Time ns3::AdhocWifiMac::GetSlot() const [member function] cls.add_method('GetSlot', 'ns3::Time', @@ -1362,6 +1400,21 @@ def register_Ns3AdhocWifiMac_methods(root_module, cls): 'ns3::Time', [], is_const=True, is_virtual=True) + ## adhoc-wifi-mac.h: ns3::Time ns3::AdhocWifiMac::GetAckTimeout() const [member function] + cls.add_method('GetAckTimeout', + 'ns3::Time', + [], + is_const=True, is_virtual=True) + ## adhoc-wifi-mac.h: ns3::Time ns3::AdhocWifiMac::GetCtsTimeout() const [member function] + cls.add_method('GetCtsTimeout', + 'ns3::Time', + [], + is_const=True, is_virtual=True) + ## adhoc-wifi-mac.h: ns3::Time ns3::AdhocWifiMac::GetPifs() const [member function] + cls.add_method('GetPifs', + 'ns3::Time', + [], + is_const=True, is_virtual=True) ## adhoc-wifi-mac.h: void ns3::AdhocWifiMac::SetWifiPhy(ns3::Ptr phy) [member function] cls.add_method('SetWifiPhy', 'void', @@ -1402,11 +1455,6 @@ def register_Ns3AdhocWifiMac_methods(root_module, cls): 'ns3::Ssid', [], is_const=True, is_virtual=True) - ## adhoc-wifi-mac.h: ns3::Mac48Address ns3::AdhocWifiMac::GetBssid() const [member function] - cls.add_method('GetBssid', - 'ns3::Mac48Address', - [], - is_const=True, is_virtual=True) ## adhoc-wifi-mac.h: void ns3::AdhocWifiMac::SetAddress(ns3::Mac48Address address) [member function] cls.add_method('SetAddress', 'void', @@ -2171,6 +2219,21 @@ def register_Ns3NqstaWifiMac_methods(root_module, cls): 'void', [param('ns3::Time', 'eifsNoDifs')], is_virtual=True) + ## nqsta-wifi-mac.h: void ns3::NqstaWifiMac::SetAckTimeout(ns3::Time ackTimeout) [member function] + cls.add_method('SetAckTimeout', + 'void', + [param('ns3::Time', 'ackTimeout')], + is_virtual=True) + ## nqsta-wifi-mac.h: void ns3::NqstaWifiMac::SetCtsTimeout(ns3::Time ctsTimeout) [member function] + cls.add_method('SetCtsTimeout', + 'void', + [param('ns3::Time', 'ctsTimeout')], + is_virtual=True) + ## nqsta-wifi-mac.h: void ns3::NqstaWifiMac::SetPifs(ns3::Time pifs) [member function] + cls.add_method('SetPifs', + 'void', + [param('ns3::Time', 'pifs')], + is_virtual=True) ## nqsta-wifi-mac.h: ns3::Time ns3::NqstaWifiMac::GetSlot() const [member function] cls.add_method('GetSlot', 'ns3::Time', @@ -2186,6 +2249,21 @@ def register_Ns3NqstaWifiMac_methods(root_module, cls): 'ns3::Time', [], is_const=True, is_virtual=True) + ## nqsta-wifi-mac.h: ns3::Time ns3::NqstaWifiMac::GetAckTimeout() const [member function] + cls.add_method('GetAckTimeout', + 'ns3::Time', + [], + is_const=True, is_virtual=True) + ## nqsta-wifi-mac.h: ns3::Time ns3::NqstaWifiMac::GetCtsTimeout() const [member function] + cls.add_method('GetCtsTimeout', + 'ns3::Time', + [], + is_const=True, is_virtual=True) + ## nqsta-wifi-mac.h: ns3::Time ns3::NqstaWifiMac::GetPifs() const [member function] + cls.add_method('GetPifs', + 'ns3::Time', + [], + is_const=True, is_virtual=True) ## nqsta-wifi-mac.h: void ns3::NqstaWifiMac::SetWifiPhy(ns3::Ptr phy) [member function] cls.add_method('SetWifiPhy', 'void', @@ -2226,11 +2304,6 @@ def register_Ns3NqstaWifiMac_methods(root_module, cls): 'ns3::Ssid', [], is_const=True, is_virtual=True) - ## nqsta-wifi-mac.h: ns3::Mac48Address ns3::NqstaWifiMac::GetBssid() const [member function] - cls.add_method('GetBssid', - 'ns3::Mac48Address', - [], - is_const=True, is_virtual=True) ## nqsta-wifi-mac.h: void ns3::NqstaWifiMac::SetAddress(ns3::Mac48Address address) [member function] cls.add_method('SetAddress', 'void', diff --git a/src/devices/wifi/adhoc-wifi-mac.cc b/src/devices/wifi/adhoc-wifi-mac.cc index a925db7c0..6957ab9ba 100644 --- a/src/devices/wifi/adhoc-wifi-mac.cc +++ b/src/devices/wifi/adhoc-wifi-mac.cc @@ -50,7 +50,7 @@ AdhocWifiMac::AdhocWifiMac () m_low = CreateObject (); m_low->SetRxCallback (MakeCallback (&MacRxMiddle::Receive, m_rxMiddle)); - m_low->SetMac (this); + m_low->SetBssid (GetBssid ()); m_dcfManager = new DcfManager (); m_dcfManager->SetupLowListener (m_low); diff --git a/src/devices/wifi/adhoc-wifi-mac.h b/src/devices/wifi/adhoc-wifi-mac.h index b9b0532fd..8a90bc365 100644 --- a/src/devices/wifi/adhoc-wifi-mac.h +++ b/src/devices/wifi/adhoc-wifi-mac.h @@ -73,7 +73,6 @@ public: virtual void SetLinkDownCallback (Callback linkDown); virtual Mac48Address GetAddress (void) const; virtual Ssid GetSsid (void) const; - virtual Mac48Address GetBssid (void) const; virtual void SetAddress (Mac48Address address); virtual void SetSsid (Ssid ssid); @@ -84,6 +83,7 @@ private: /* invoked by the MacLows. */ void ForwardUp (Ptr packet, WifiMacHeader const*hdr); AdhocWifiMac (const AdhocWifiMac & ctor_arg); + Mac48Address GetBssid (void) const; Ptr m_dca; Callback,const Mac48Address &> m_upCallback; diff --git a/src/devices/wifi/dca-txop.cc b/src/devices/wifi/dca-txop.cc index 1ab34bee6..24e3f64a2 100644 --- a/src/devices/wifi/dca-txop.cc +++ b/src/devices/wifi/dca-txop.cc @@ -37,7 +37,7 @@ NS_LOG_COMPONENT_DEFINE ("DcaTxop"); #define MY_DEBUG(x) \ - NS_LOG_DEBUG (m_low->GetMac ()->GetAddress () << " " << x) + NS_LOG_DEBUG (m_low->GetAddress () << " " << x) namespace ns3 { diff --git a/src/devices/wifi/mac-low.cc b/src/devices/wifi/mac-low.cc index a36bea3eb..3e23deca4 100644 --- a/src/devices/wifi/mac-low.cc +++ b/src/devices/wifi/mac-low.cc @@ -273,7 +273,6 @@ MacLow::DoDispose (void) NS_LOG_FUNCTION (this); CancelAllEvents (); m_phy = 0; - m_mac = 0; m_stationManager = 0; } @@ -341,21 +340,11 @@ MacLow::SetPhy (Ptr phy) m_phy->SetReceiveOkCallback (MakeCallback (&MacLow::ReceiveOk, this)); m_phy->SetReceiveErrorCallback (MakeCallback (&MacLow::ReceiveError, this)); } -void -MacLow::SetMac (Ptr mac) -{ - m_mac = mac; -} void MacLow::SetWifiRemoteStationManager (Ptr manager) { m_stationManager = manager; } -Ptr -MacLow::GetMac (void) -{ - return m_mac; -} void MacLow::SetAddress (Mac48Address ad) @@ -387,6 +376,11 @@ MacLow::SetPifs (Time pifs) { m_pifs = pifs; } +void +MacLow::SetBssid (Mac48Address bssid) +{ + m_bssid = bssid; +} Mac48Address MacLow::GetAddress (void) const { @@ -417,6 +411,11 @@ MacLow::GetPifs (void) const { return m_pifs; } +Mac48Address +MacLow::GetBssid (void) const +{ + return m_bssid; +} void MacLow::SetRxCallback (Callback,const WifiMacHeader *> callback) @@ -751,7 +750,7 @@ MacLow::NotifyNav (const WifiMacHeader &hdr, WifiMode txMode, WifiPreamble pream Time duration = hdr.GetDuration (); if (hdr.IsCfpoll () && - hdr.GetAddr2 () == m_mac->GetBssid ()) + hdr.GetAddr2 () == m_bssid) { // see section 9.3.2.2 802.11-1999 DoNavResetNow (duration); diff --git a/src/devices/wifi/mac-low.h b/src/devices/wifi/mac-low.h index 8c3521e68..400438f72 100644 --- a/src/devices/wifi/mac-low.h +++ b/src/devices/wifi/mac-low.h @@ -279,23 +279,22 @@ public: virtual ~MacLow (); void SetPhy (Ptr phy); - void SetMac (Ptr mac); void SetWifiRemoteStationManager (Ptr manager); - Ptr GetMac (void); - void SetAddress (Mac48Address ad); void SetAckTimeout (Time ackTimeout); void SetCtsTimeout (Time ctsTimeout); void SetSifs (Time sifs); void SetSlotTime (Time slotTime); void SetPifs (Time pifs); + void SetBssid (Mac48Address ad); Mac48Address GetAddress (void) const; Time GetAckTimeout (void) const; Time GetCtsTimeout (void) const; Time GetSifs (void) const; Time GetSlotTime (void) const; Time GetPifs (void) const; + Mac48Address GetBssid (void) const; /** * \param callback the callback which receives every incoming packet. @@ -397,7 +396,6 @@ private: virtual void DoDispose (void); Ptr m_phy; - Ptr m_mac; Ptr m_stationManager; MacLowRxCallback m_rxCallback; typedef std::vector::const_iterator NavListenersCI; @@ -420,6 +418,7 @@ private: MacLowTransmissionParameters m_txParams; MacLowTransmissionListener *m_listener; Mac48Address m_self; + Mac48Address m_bssid; Time m_ackTimeout; Time m_ctsTimeout; Time m_sifs; diff --git a/src/devices/wifi/nqap-wifi-mac.cc b/src/devices/wifi/nqap-wifi-mac.cc index b47f8969c..9fd52e9a3 100644 --- a/src/devices/wifi/nqap-wifi-mac.cc +++ b/src/devices/wifi/nqap-wifi-mac.cc @@ -65,7 +65,6 @@ NqapWifiMac::NqapWifiMac () m_low = CreateObject (); m_low->SetRxCallback (MakeCallback (&MacRxMiddle::Receive, m_rxMiddle)); - m_low->SetMac (this); m_dcfManager = new DcfManager (); m_dcfManager->SetupLowListener (m_low); @@ -239,16 +238,12 @@ NqapWifiMac::GetSsid (void) const { return m_ssid; } -Mac48Address -NqapWifiMac::GetBssid (void) const -{ - return m_address; -} void NqapWifiMac::SetAddress (Mac48Address address) { NS_LOG_FUNCTION (address); m_low->SetAddress (address); + m_low->SetBssid (address); } void NqapWifiMac::SetSsid (Ssid ssid) diff --git a/src/devices/wifi/nqap-wifi-mac.h b/src/devices/wifi/nqap-wifi-mac.h index 8eb08da88..2b8e4095e 100644 --- a/src/devices/wifi/nqap-wifi-mac.h +++ b/src/devices/wifi/nqap-wifi-mac.h @@ -79,7 +79,6 @@ public: virtual void SetLinkDownCallback (Callback linkDown); virtual Mac48Address GetAddress (void) const; virtual Ssid GetSsid (void) const; - virtual Mac48Address GetBssid (void) const; virtual void SetAddress (Mac48Address address); virtual void SetSsid (Ssid ssid); @@ -122,7 +121,6 @@ private: DcfManager *m_dcfManager; MacRxMiddle *m_rxMiddle; Ptr m_low; - Mac48Address m_address; Ssid m_ssid; EventId m_beaconEvent; Time m_eifsNoDifs; diff --git a/src/devices/wifi/nqsta-wifi-mac.cc b/src/devices/wifi/nqsta-wifi-mac.cc index b3237c717..599eabd82 100644 --- a/src/devices/wifi/nqsta-wifi-mac.cc +++ b/src/devices/wifi/nqsta-wifi-mac.cc @@ -97,7 +97,6 @@ NqstaWifiMac::NqstaWifiMac () m_low = CreateObject (); m_low->SetRxCallback (MakeCallback (&MacRxMiddle::Receive, m_rxMiddle)); - m_low->SetMac (this); m_dcfManager = new DcfManager (); m_dcfManager->SetupLowListener (m_low); @@ -235,7 +234,7 @@ NqstaWifiMac::GetSsid (void) const Mac48Address NqstaWifiMac::GetBssid (void) const { - return m_bssid; + return m_low->GetBssid (); } void NqstaWifiMac::SetAddress (Mac48Address address) @@ -286,7 +285,7 @@ void NqstaWifiMac::SetBssid (Mac48Address bssid) { NS_LOG_FUNCTION (this << bssid); - m_bssid = bssid; + m_low->SetBssid (bssid); } void NqstaWifiMac::SetActiveProbing (bool enable) diff --git a/src/devices/wifi/nqsta-wifi-mac.h b/src/devices/wifi/nqsta-wifi-mac.h index 7dbe8cf88..40fd454e7 100644 --- a/src/devices/wifi/nqsta-wifi-mac.h +++ b/src/devices/wifi/nqsta-wifi-mac.h @@ -79,7 +79,6 @@ public: virtual void SetLinkDownCallback (Callback linkDown); virtual Mac48Address GetAddress (void) const; virtual Ssid GetSsid (void) const; - virtual Mac48Address GetBssid (void) const; virtual void SetAddress (Mac48Address address); virtual void SetSsid (Ssid ssid); @@ -125,6 +124,7 @@ private: void MissedBeacons (void); void RestartBeaconWatchdog (Time delay); SupportedRates GetSupportedRates (void) const; + Mac48Address GetBssid (void) const; virtual void DoDispose (void); NqstaWifiMac (const NqstaWifiMac & ctor_arg); @@ -145,7 +145,6 @@ private: Ptr m_dca; EventId m_beaconWatchdog; Time m_beaconWatchdogEnd; - Mac48Address m_bssid; uint32_t m_maxMissedBeacons; Ptr m_phy; diff --git a/src/devices/wifi/wifi-mac.h b/src/devices/wifi/wifi-mac.h index a07294750..0e3505bc7 100644 --- a/src/devices/wifi/wifi-mac.h +++ b/src/devices/wifi/wifi-mac.h @@ -121,14 +121,6 @@ public: * \returns the ssid which this MAC layer is going to try to stay in. */ virtual Ssid GetSsid (void) const = 0; - /** - * \returns the BSSID associated to the current SSID. - * - * If we are an AP, this is the address of the AP itself. - * If are a STA, this is the address of the AP with which - * the STA is associated. - */ - virtual Mac48Address GetBssid (void) const = 0; /** * \param address the current address of this MAC layer. */