implement SendFrom correctly
authorMathieu Lacage <mathieu.lacage@sophia.inria.fr>
Tue, 02 Sep 2008 13:16:34 -0700
changeset 3602 e8e41feee205
parent 3601 b179502b5ec6
child 3603 da21b3e410b6
implement SendFrom correctly
src/devices/wifi/adhoc-wifi-mac.cc
src/devices/wifi/adhoc-wifi-mac.h
src/devices/wifi/nqap-wifi-mac.cc
src/devices/wifi/nqap-wifi-mac.h
src/devices/wifi/nqsta-wifi-mac.cc
src/devices/wifi/nqsta-wifi-mac.h
src/devices/wifi/wifi-mac.h
src/devices/wifi/wifi-net-device.cc
--- a/src/devices/wifi/adhoc-wifi-mac.cc	Tue Sep 02 13:16:14 2008 -0700
+++ b/src/devices/wifi/adhoc-wifi-mac.cc	Tue Sep 02 13:16:34 2008 -0700
@@ -199,11 +199,16 @@
 void 
 AdhocWifiMac::Enqueue (Ptr<const Packet> packet, Mac48Address to, Mac48Address from)
 {
-  NS_LOG_FUNCTION (packet->GetSize () << to << from);
+  NS_FATAL_ERROR ("Adhoc does not support a from != m_low->GetAddress ()");
+}
+void 
+AdhocWifiMac::Enqueue (Ptr<const Packet> packet, Mac48Address to)
+{
+  NS_LOG_FUNCTION (packet->GetSize () << to);
   WifiMacHeader hdr;
   hdr.SetType (WIFI_MAC_DATA);
   hdr.SetAddr1 (to);
-  hdr.SetAddr2 (from);
+  hdr.SetAddr2 (m_low->GetAddress ());
   hdr.SetAddr3 (GetBssid ());
   hdr.SetDsNotFrom ();
   hdr.SetDsNotTo ();
--- a/src/devices/wifi/adhoc-wifi-mac.h	Tue Sep 02 13:16:14 2008 -0700
+++ b/src/devices/wifi/adhoc-wifi-mac.h	Tue Sep 02 13:16:34 2008 -0700
@@ -68,6 +68,7 @@
   virtual void SetWifiPhy (Ptr<WifiPhy> phy);
   virtual void SetWifiRemoteStationManager (Ptr<WifiRemoteStationManager> stationManager);
   virtual void Enqueue (Ptr<const Packet> packet, Mac48Address to, Mac48Address from);
+  virtual void Enqueue (Ptr<const Packet> packet, Mac48Address to);
   virtual void SetForwardUpCallback (Callback<void,Ptr<Packet>, const Mac48Address &> upCallback);
   virtual void SetLinkUpCallback (Callback<void> linkUp);
   virtual void SetLinkDownCallback (Callback<void> linkDown);
--- a/src/devices/wifi/nqap-wifi-mac.cc	Tue Sep 02 13:16:14 2008 -0700
+++ b/src/devices/wifi/nqap-wifi-mac.cc	Tue Sep 02 13:16:34 2008 -0700
@@ -290,6 +290,12 @@
   NS_LOG_FUNCTION (this << packet << to << from);
   ForwardDown (packet, from, to);
 }
+void 
+NqapWifiMac::Enqueue (Ptr<const Packet> packet, Mac48Address to)
+{
+  NS_LOG_FUNCTION (this << packet << to);
+  ForwardDown (packet, to, m_low->GetAddress ());
+}
 SupportedRates
 NqapWifiMac::GetSupportedRates (void) const
 {
--- a/src/devices/wifi/nqap-wifi-mac.h	Tue Sep 02 13:16:14 2008 -0700
+++ b/src/devices/wifi/nqap-wifi-mac.h	Tue Sep 02 13:16:34 2008 -0700
@@ -74,6 +74,7 @@
   virtual void SetWifiPhy (Ptr<WifiPhy> phy);
   virtual void SetWifiRemoteStationManager (Ptr<WifiRemoteStationManager> stationManager);
   virtual void Enqueue (Ptr<const Packet> packet, Mac48Address to, Mac48Address from);
+  virtual void Enqueue (Ptr<const Packet> packet, Mac48Address to);
   virtual void SetForwardUpCallback (Callback<void,Ptr<Packet>, const Mac48Address &> upCallback);
   virtual void SetLinkUpCallback (Callback<void> linkUp);
   virtual void SetLinkDownCallback (Callback<void> linkDown);
--- a/src/devices/wifi/nqsta-wifi-mac.cc	Tue Sep 02 13:16:14 2008 -0700
+++ b/src/devices/wifi/nqsta-wifi-mac.cc	Tue Sep 02 13:16:34 2008 -0700
@@ -440,6 +440,11 @@
 void 
 NqstaWifiMac::Enqueue (Ptr<const Packet> packet, Mac48Address to, Mac48Address from)
 {
+  NS_FATAL_ERROR ("Qsta does not support enqueue");
+}
+void 
+NqstaWifiMac::Enqueue (Ptr<const Packet> packet, Mac48Address to)
+{
   NS_LOG_FUNCTION (this << packet << to);
   if (!IsAssociated ()) 
     {
@@ -450,12 +455,14 @@
   WifiMacHeader hdr;
   hdr.SetTypeData ();
   hdr.SetAddr1 (GetBssid ());
-  hdr.SetAddr2 (from);
+  hdr.SetAddr2 (m_low->GetAddress ());
   hdr.SetAddr3 (to);
   hdr.SetDsNotFrom ();
   hdr.SetDsTo ();
   m_dca->Queue (packet, hdr);
 }
+  
+
 
 void 
 NqstaWifiMac::Receive (Ptr<Packet> packet, WifiMacHeader const *hdr)
--- a/src/devices/wifi/nqsta-wifi-mac.h	Tue Sep 02 13:16:14 2008 -0700
+++ b/src/devices/wifi/nqsta-wifi-mac.h	Tue Sep 02 13:16:34 2008 -0700
@@ -74,6 +74,7 @@
   virtual void SetWifiPhy (Ptr<WifiPhy> phy);
   virtual void SetWifiRemoteStationManager (Ptr<WifiRemoteStationManager> stationManager);
   virtual void Enqueue (Ptr<const Packet> packet, Mac48Address to, Mac48Address from);
+  virtual void Enqueue (Ptr<const Packet> packet, Mac48Address to);
   virtual void SetForwardUpCallback (Callback<void,Ptr<Packet>, const Mac48Address &> upCallback);
   virtual void SetLinkUpCallback (Callback<void> linkUp);
   virtual void SetLinkDownCallback (Callback<void> linkDown);
--- a/src/devices/wifi/wifi-mac.h	Tue Sep 02 13:16:14 2008 -0700
+++ b/src/devices/wifi/wifi-mac.h	Tue Sep 02 13:16:34 2008 -0700
@@ -141,6 +141,7 @@
    * access it granted to this MAC.
    */
   virtual void Enqueue (Ptr<const Packet> packet, Mac48Address to, Mac48Address from) = 0;
+  virtual void Enqueue (Ptr<const Packet> packet, Mac48Address to) = 0;
   /**
    * \param phy the physical layer attached to this MAC.
    */
--- a/src/devices/wifi/wifi-net-device.cc	Tue Sep 02 13:16:14 2008 -0700
+++ b/src/devices/wifi/wifi-net-device.cc	Tue Sep 02 13:16:34 2008 -0700
@@ -280,7 +280,7 @@
 
   m_txLogger (packet, realTo);
 
-  m_mac->Enqueue (packet, realTo, m_mac->GetAddress ());
+  m_mac->Enqueue (packet, realTo);
   return true;
 }
 Ptr<Node>