--- 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)
{