Bug 1887 - Point-to-point traces should contain PPP headers
authorEugene Chemeritskiy <echemeritskiy@arccn.ru>
Tue, 25 Mar 2014 21:46:09 +0100
changeset 10678 cbaefda493be
parent 10677 220892372fec
child 10679 7efad0143a62
Bug 1887 - Point-to-point traces should contain PPP headers
RELEASE_NOTES
src/point-to-point/model/point-to-point-net-device.cc
--- a/RELEASE_NOTES	Sun Mar 23 16:56:59 2014 +0400
+++ b/RELEASE_NOTES	Tue Mar 25 21:46:09 2014 +0100
@@ -61,6 +61,7 @@
 - Bug 1874 - Ipv4L3Protocol::ProcessFragment: addressCombination and idProto identifiers not properly computed
 - Bug 1882 - int64x64 tests trigger valgrind bug
 - Bug 1883 - IPv6 don't consider the prefix and network when choosing output address
+- Bug 1887 - Point-to-point traces should contain PPP headers
 
 Release 3.19
 =============
--- a/src/point-to-point/model/point-to-point-net-device.cc	Sun Mar 23 16:56:59 2014 +0400
+++ b/src/point-to-point/model/point-to-point-net-device.cc	Tue Mar 25 21:46:09 2014 +0100
@@ -318,7 +318,7 @@
     {
       // 
       // Hit the trace hooks.  All of these hooks are in the same place in this 
-      // device becuase it is so simple, but this is not usually the case in 
+      // device because it is so simple, but this is not usually the case in
       // more complicated devices.
       //
       m_snifferTrace (packet);
@@ -326,6 +326,12 @@
       m_phyRxEndTrace (packet);
 
       //
+      // Trace sinks will expect complete packets, not packets without some of the
+      // headers.
+      //
+      Ptr<Packet> originalPacket = packet->Copy ();
+
+      //
       // Strip off the point-to-point protocol header and forward this packet
       // up the protocol stack.  Since this is a simple point-to-point link,
       // there is no difference in what the promisc callback sees and what the
@@ -335,11 +341,11 @@
 
       if (!m_promiscCallback.IsNull ())
         {
-          m_macPromiscRxTrace (packet);
+          m_macPromiscRxTrace (originalPacket);
           m_promiscCallback (this, packet, protocol, GetRemote (), GetAddress (), NetDevice::PACKET_HOST);
         }
 
-      m_macRxTrace (packet);
+      m_macRxTrace (originalPacket);
       m_rxCallback (this, packet, protocol, GetRemote ());
     }
 }