--- a/src/devices/point-to-point/point-to-point-net-device.cc Fri Jul 27 20:45:07 2007 +0200
+++ b/src/devices/point-to-point/point-to-point-net-device.cc Fri Jul 27 20:45:18 2007 +0200
@@ -28,6 +28,7 @@
#include "ns3/composite-trace-resolver.h"
#include "point-to-point-net-device.h"
#include "point-to-point-channel.h"
+#include "ns3/llc-snap-header.h"
NS_DEBUG_COMPONENT_DEFINE ("PointToPointNetDevice");
@@ -65,13 +66,30 @@
m_queue = 0;
}
+void PointToPointNetDevice::AddHeader(Packet& p, const MacAddress& dest,
+ uint16_t protocolNumber)
+{
+ LlcSnapHeader llc;
+ llc.SetType (protocolNumber);
+ p.AddHeader (llc);
+}
+
+bool PointToPointNetDevice::ProcessHeader(Packet& p, int& param)
+{
+ LlcSnapHeader llc;
+ p.RemoveHeader (llc);
+
+ param = llc.GetType ();
+
+ return true;
+}
+
void PointToPointNetDevice::DoDispose()
{
m_channel = 0;
NetDevice::DoDispose ();
}
-
void PointToPointNetDevice::SetDataRate(const DataRate& bps)
{
m_bps = bps;
@@ -82,7 +100,8 @@
m_tInterframeGap = t;
}
-bool PointToPointNetDevice::SendTo (Packet& p, const MacAddress& dest)
+bool PointToPointNetDevice::SendTo (Packet& p, const MacAddress& dest,
+ uint16_t protocolNumber)
{
NS_DEBUG ("PointToPointNetDevice::SendTo (" << &p << ", " << &dest << ")");
NS_DEBUG ("PointToPointNetDevice::SendTo (): UID is " << p.GetUid () << ")");
@@ -91,6 +110,7 @@
// "go down" during the simulation? Shouldn't we just wait for it
// to come back up?
NS_ASSERT (IsLinkUp ());
+ AddHeader(p, dest, protocolNumber);
//
// This class simulates a point to point device. In the case of a serial
@@ -198,9 +218,12 @@
void PointToPointNetDevice::Receive (Packet& p)
{
NS_DEBUG ("PointToPointNetDevice::Receive (" << &p << ")");
+ int param = 0;
+ Packet packet = p;
- m_rxTrace (p);
- ForwardUp (p);
+ ProcessHeader(packet, param);
+ m_rxTrace (packet);
+ ForwardUp (packet, param);
}
Ptr<Queue> PointToPointNetDevice::GetQueue(void) const