[bug 806] Remove CSMA padding from IP datagrams
authorBill Roome <wdr@bell-labs.com>
Mon, 08 Feb 2010 22:44:12 -0800
changeset 5977 288416b082a4
parent 5976 dba5c9b69c3b
child 5978 36c591bbdabd
[bug 806] Remove CSMA padding from IP datagrams
src/internet-stack/ipv4-l3-protocol.cc
src/internet-stack/ipv6-l3-protocol.cc
--- a/src/internet-stack/ipv4-l3-protocol.cc	Mon Feb 08 22:35:08 2010 +0100
+++ b/src/internet-stack/ipv4-l3-protocol.cc	Mon Feb 08 22:44:12 2010 -0800
@@ -463,6 +463,12 @@
     }
   packet->RemoveHeader (ipHeader);
 
+  // Trim any residual frame padding from underlying devices
+  if (ipHeader.GetPayloadSize () < packet->GetSize ())
+    {
+      packet->RemoveAtEnd (packet->GetSize () - ipHeader.GetPayloadSize ());
+    }
+
   if (!ipHeader.IsChecksumOk ()) 
     {
       m_dropTrace (ipHeader, packet, DROP_BAD_CHECKSUM, interface);
--- a/src/internet-stack/ipv6-l3-protocol.cc	Mon Feb 08 22:35:08 2010 +0100
+++ b/src/internet-stack/ipv6-l3-protocol.cc	Mon Feb 08 22:44:12 2010 -0800
@@ -695,6 +695,12 @@
   Ipv6Header hdr;
   packet->RemoveHeader (hdr);
 
+  // Trim any residual frame padding from underlying devices
+  if (hdr.GetPayloadLength () < packet->GetSize ())
+    {
+      packet->RemoveAtEnd (packet->GetSize () - hdr.GetPayloadLength ());
+    }
+
   /* forward up to IPv6 raw sockets */
   for (SocketList::iterator it = m_sockets.begin () ; it != m_sockets.end () ; ++it)
     {