implement WifiNetDevice::SendFrom
authorMathieu Lacage <mathieu.lacage@sophia.inria.fr>
Thu Aug 07 11:14:15 2008 -0700 (18 months ago)
changeset 35335ba130a7f519
parent 3515 88e9cee20461
child 3534 e101960f06de
implement WifiNetDevice::SendFrom
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
     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