1.1 --- a/src/devices/wifi/adhoc-wifi-mac.cc Wed Aug 06 11:37:52 2008 +0100
1.2 +++ b/src/devices/wifi/adhoc-wifi-mac.cc Thu Aug 07 11:14:15 2008 -0700
1.3 @@ -168,13 +168,13 @@
1.4 }
1.5
1.6 void
1.7 -AdhocWifiMac::Enqueue (Ptr<const Packet> packet, Mac48Address to)
1.8 +AdhocWifiMac::Enqueue (Ptr<const Packet> packet, Mac48Address to, Mac48Address from)
1.9 {
1.10 - NS_LOG_DEBUG ("enqueue size="<<packet->GetSize ()<<", to="<<to);
1.11 + NS_LOG_FUNCTION (packet->GetSize () << to << from);
1.12 WifiMacHeader hdr;
1.13 hdr.SetType (WIFI_MAC_DATA);
1.14 hdr.SetAddr1 (to);
1.15 - hdr.SetAddr2 (GetAddress ());
1.16 + hdr.SetAddr2 (from);
1.17 hdr.SetAddr3 (GetBssid ());
1.18 hdr.SetDsNotFrom ();
1.19 hdr.SetDsNotTo ();
2.1 --- a/src/devices/wifi/adhoc-wifi-mac.h Wed Aug 06 11:37:52 2008 +0100
2.2 +++ b/src/devices/wifi/adhoc-wifi-mac.h Thu Aug 07 11:14:15 2008 -0700
2.3 @@ -61,7 +61,7 @@
2.4 virtual Time GetEifsNoDifs (void) const;
2.5 virtual void SetWifiPhy (Ptr<WifiPhy> phy);
2.6 virtual void SetWifiRemoteStationManager (Ptr<WifiRemoteStationManager> stationManager);
2.7 - virtual void Enqueue (Ptr<const Packet> packet, Mac48Address to);
2.8 + virtual void Enqueue (Ptr<const Packet> packet, Mac48Address to, Mac48Address from);
2.9 virtual void SetForwardUpCallback (Callback<void,Ptr<Packet>, const Mac48Address &> upCallback);
2.10 virtual void SetLinkUpCallback (Callback<void> linkUp);
2.11 virtual void SetLinkDownCallback (Callback<void> linkDown);
3.1 --- a/src/devices/wifi/nqap-wifi-mac.cc Wed Aug 06 11:37:52 2008 +0100
3.2 +++ b/src/devices/wifi/nqap-wifi-mac.cc Thu Aug 07 11:14:15 2008 -0700
3.3 @@ -262,10 +262,10 @@
3.4 m_dca->Queue (packet, hdr);
3.5 }
3.6 void
3.7 -NqapWifiMac::Enqueue (Ptr<const Packet> packet, Mac48Address to)
3.8 +NqapWifiMac::Enqueue (Ptr<const Packet> packet, Mac48Address to, Mac48Address from)
3.9 {
3.10 - NS_LOG_FUNCTION (this << packet << to);
3.11 - ForwardDown (packet, GetAddress (), to);
3.12 + NS_LOG_FUNCTION (this << packet << to << from);
3.13 + ForwardDown (packet, from, to);
3.14 }
3.15 SupportedRates
3.16 NqapWifiMac::GetSupportedRates (void) const
4.1 --- a/src/devices/wifi/nqap-wifi-mac.h Wed Aug 06 11:37:52 2008 +0100
4.2 +++ b/src/devices/wifi/nqap-wifi-mac.h Thu Aug 07 11:14:15 2008 -0700
4.3 @@ -67,7 +67,7 @@
4.4 virtual Time GetEifsNoDifs (void) const;
4.5 virtual void SetWifiPhy (Ptr<WifiPhy> phy);
4.6 virtual void SetWifiRemoteStationManager (Ptr<WifiRemoteStationManager> stationManager);
4.7 - virtual void Enqueue (Ptr<const Packet> packet, Mac48Address to);
4.8 + virtual void Enqueue (Ptr<const Packet> packet, Mac48Address to, Mac48Address from);
4.9 virtual void SetForwardUpCallback (Callback<void,Ptr<Packet>, const Mac48Address &> upCallback);
4.10 virtual void SetLinkUpCallback (Callback<void> linkUp);
4.11 virtual void SetLinkDownCallback (Callback<void> linkDown);
5.1 --- a/src/devices/wifi/nqsta-wifi-mac.cc Wed Aug 06 11:37:52 2008 +0100
5.2 +++ b/src/devices/wifi/nqsta-wifi-mac.cc Thu Aug 07 11:14:15 2008 -0700
5.3 @@ -409,7 +409,7 @@
5.4 }
5.5
5.6 void
5.7 -NqstaWifiMac::Enqueue (Ptr<const Packet> packet, Mac48Address to)
5.8 +NqstaWifiMac::Enqueue (Ptr<const Packet> packet, Mac48Address to, Mac48Address from)
5.9 {
5.10 NS_LOG_FUNCTION (this << packet << to);
5.11 if (!IsAssociated ())
5.12 @@ -421,7 +421,7 @@
5.13 WifiMacHeader hdr;
5.14 hdr.SetTypeData ();
5.15 hdr.SetAddr1 (GetBssid ());
5.16 - hdr.SetAddr2 (GetAddress ());
5.17 + hdr.SetAddr2 (from);
5.18 hdr.SetAddr3 (to);
5.19 hdr.SetDsNotFrom ();
5.20 hdr.SetDsTo ();
6.1 --- a/src/devices/wifi/nqsta-wifi-mac.h Wed Aug 06 11:37:52 2008 +0100
6.2 +++ b/src/devices/wifi/nqsta-wifi-mac.h Thu Aug 07 11:14:15 2008 -0700
6.3 @@ -67,7 +67,7 @@
6.4 virtual Time GetEifsNoDifs (void) const;
6.5 virtual void SetWifiPhy (Ptr<WifiPhy> phy);
6.6 virtual void SetWifiRemoteStationManager (Ptr<WifiRemoteStationManager> stationManager);
6.7 - virtual void Enqueue (Ptr<const Packet> packet, Mac48Address to);
6.8 + virtual void Enqueue (Ptr<const Packet> packet, Mac48Address to, Mac48Address from);
6.9 virtual void SetForwardUpCallback (Callback<void,Ptr<Packet>, const Mac48Address &> upCallback);
6.10 virtual void SetLinkUpCallback (Callback<void> linkUp);
6.11 virtual void SetLinkDownCallback (Callback<void> linkDown);
7.1 --- a/src/devices/wifi/wifi-mac.h Wed Aug 06 11:37:52 2008 +0100
7.2 +++ b/src/devices/wifi/wifi-mac.h Thu Aug 07 11:14:15 2008 -0700
7.3 @@ -148,7 +148,7 @@
7.4 * dequeued as soon as the DCF function determines that
7.5 * access it granted to this MAC.
7.6 */
7.7 - virtual void Enqueue (Ptr<const Packet> packet, Mac48Address to) = 0;
7.8 + virtual void Enqueue (Ptr<const Packet> packet, Mac48Address to, Mac48Address from) = 0;
7.9 /**
7.10 * \param phy the physical layer attached to this MAC.
7.11 */
8.1 --- a/src/devices/wifi/wifi-net-device.cc Wed Aug 06 11:37:52 2008 +0100
8.2 +++ b/src/devices/wifi/wifi-net-device.cc Thu Aug 07 11:14:15 2008 -0700
8.3 @@ -280,7 +280,7 @@
8.4
8.5 m_txLogger (packet, realTo);
8.6
8.7 - m_mac->Enqueue (packet, realTo);
8.8 + m_mac->Enqueue (packet, realTo, m_mac->GetAddress ());
8.9 return true;
8.10 }
8.11 Ptr<Node>
8.12 @@ -335,8 +335,21 @@
8.13 bool
8.14 WifiNetDevice::SendFrom (Ptr<Packet> packet, const Address& source, const Address& dest, uint16_t protocolNumber)
8.15 {
8.16 - NS_FATAL_ERROR ("TODO");
8.17 - return false;
8.18 + NS_ASSERT (Mac48Address::IsMatchingType (dest));
8.19 + NS_ASSERT (Mac48Address::IsMatchingType (source));
8.20 +
8.21 + Mac48Address realTo = Mac48Address::ConvertFrom (dest);
8.22 + Mac48Address realFrom = Mac48Address::ConvertFrom (source);
8.23 +
8.24 + LlcSnapHeader llc;
8.25 + llc.SetType (protocolNumber);
8.26 + packet->AddHeader (llc);
8.27 +
8.28 + m_txLogger (packet, realTo);
8.29 +
8.30 + m_mac->Enqueue (packet, realTo, realFrom);
8.31 +
8.32 + return true;
8.33 }
8.34
8.35 void