implement WifiNetDevice::SendFrom

This commit is contained in:
Mathieu Lacage
2008-08-07 11:14:15 -07:00
parent 161adc2a4e
commit bfd084bde7
8 changed files with 28 additions and 15 deletions

View File

@@ -168,13 +168,13 @@ AdhocWifiMac::SetSsid (Ssid ssid)
}
void
AdhocWifiMac::Enqueue (Ptr<const Packet> packet, Mac48Address to)
AdhocWifiMac::Enqueue (Ptr<const Packet> packet, Mac48Address to, Mac48Address from)
{
NS_LOG_DEBUG ("enqueue size="<<packet->GetSize ()<<", to="<<to);
NS_LOG_FUNCTION (packet->GetSize () << to << from);
WifiMacHeader hdr;
hdr.SetType (WIFI_MAC_DATA);
hdr.SetAddr1 (to);
hdr.SetAddr2 (GetAddress ());
hdr.SetAddr2 (from);
hdr.SetAddr3 (GetBssid ());
hdr.SetDsNotFrom ();
hdr.SetDsNotTo ();

View File

@@ -61,7 +61,7 @@ public:
virtual Time GetEifsNoDifs (void) const;
virtual void SetWifiPhy (Ptr<WifiPhy> phy);
virtual void SetWifiRemoteStationManager (Ptr<WifiRemoteStationManager> stationManager);
virtual void Enqueue (Ptr<const Packet> packet, Mac48Address to);
virtual void Enqueue (Ptr<const Packet> packet, Mac48Address to, Mac48Address from);
virtual void SetForwardUpCallback (Callback<void,Ptr<Packet>, const Mac48Address &> upCallback);
virtual void SetLinkUpCallback (Callback<void> linkUp);
virtual void SetLinkDownCallback (Callback<void> linkDown);

View File

@@ -262,10 +262,10 @@ NqapWifiMac::ForwardDown (Ptr<const Packet> packet, Mac48Address from, Mac48Addr
m_dca->Queue (packet, hdr);
}
void
NqapWifiMac::Enqueue (Ptr<const Packet> packet, Mac48Address to)
NqapWifiMac::Enqueue (Ptr<const Packet> packet, Mac48Address to, Mac48Address from)
{
NS_LOG_FUNCTION (this << packet << to);
ForwardDown (packet, GetAddress (), to);
NS_LOG_FUNCTION (this << packet << to << from);
ForwardDown (packet, from, to);
}
SupportedRates
NqapWifiMac::GetSupportedRates (void) const

View File

@@ -67,7 +67,7 @@ public:
virtual Time GetEifsNoDifs (void) const;
virtual void SetWifiPhy (Ptr<WifiPhy> phy);
virtual void SetWifiRemoteStationManager (Ptr<WifiRemoteStationManager> stationManager);
virtual void Enqueue (Ptr<const Packet> packet, Mac48Address to);
virtual void Enqueue (Ptr<const Packet> packet, Mac48Address to, Mac48Address from);
virtual void SetForwardUpCallback (Callback<void,Ptr<Packet>, const Mac48Address &> upCallback);
virtual void SetLinkUpCallback (Callback<void> linkUp);
virtual void SetLinkDownCallback (Callback<void> linkDown);

View File

@@ -409,7 +409,7 @@ NqstaWifiMac::IsAssociated (void)
}
void
NqstaWifiMac::Enqueue (Ptr<const Packet> packet, Mac48Address to)
NqstaWifiMac::Enqueue (Ptr<const Packet> packet, Mac48Address to, Mac48Address from)
{
NS_LOG_FUNCTION (this << packet << to);
if (!IsAssociated ())
@@ -421,7 +421,7 @@ NqstaWifiMac::Enqueue (Ptr<const Packet> packet, Mac48Address to)
WifiMacHeader hdr;
hdr.SetTypeData ();
hdr.SetAddr1 (GetBssid ());
hdr.SetAddr2 (GetAddress ());
hdr.SetAddr2 (from);
hdr.SetAddr3 (to);
hdr.SetDsNotFrom ();
hdr.SetDsTo ();

View File

@@ -67,7 +67,7 @@ public:
virtual Time GetEifsNoDifs (void) const;
virtual void SetWifiPhy (Ptr<WifiPhy> phy);
virtual void SetWifiRemoteStationManager (Ptr<WifiRemoteStationManager> stationManager);
virtual void Enqueue (Ptr<const Packet> packet, Mac48Address to);
virtual void Enqueue (Ptr<const Packet> packet, Mac48Address to, Mac48Address from);
virtual void SetForwardUpCallback (Callback<void,Ptr<Packet>, const Mac48Address &> upCallback);
virtual void SetLinkUpCallback (Callback<void> linkUp);
virtual void SetLinkDownCallback (Callback<void> linkDown);

View File

@@ -148,7 +148,7 @@ private:
* dequeued as soon as the DCF function determines that
* access it granted to this MAC.
*/
virtual void Enqueue (Ptr<const Packet> packet, Mac48Address to) = 0;
virtual void Enqueue (Ptr<const Packet> packet, Mac48Address to, Mac48Address from) = 0;
/**
* \param phy the physical layer attached to this MAC.
*/

View File

@@ -280,7 +280,7 @@ WifiNetDevice::Send(Ptr<Packet> packet, const Address& dest, uint16_t protocolNu
m_txLogger (packet, realTo);
m_mac->Enqueue (packet, realTo);
m_mac->Enqueue (packet, realTo, m_mac->GetAddress ());
return true;
}
Ptr<Node>
@@ -335,8 +335,21 @@ WifiNetDevice::LinkDown (void)
bool
WifiNetDevice::SendFrom (Ptr<Packet> packet, const Address& source, const Address& dest, uint16_t protocolNumber)
{
NS_FATAL_ERROR ("TODO");
return false;
NS_ASSERT (Mac48Address::IsMatchingType (dest));
NS_ASSERT (Mac48Address::IsMatchingType (source));
Mac48Address realTo = Mac48Address::ConvertFrom (dest);
Mac48Address realFrom = Mac48Address::ConvertFrom (source);
LlcSnapHeader llc;
llc.SetType (protocolNumber);
packet->AddHeader (llc);
m_txLogger (packet, realTo);
m_mac->Enqueue (packet, realTo, realFrom);
return true;
}
void