[bug 806] Remove CSMA padding from IP datagrams

This commit is contained in:
Bill Roome
2010-02-08 22:44:12 -08:00
parent 4e80fd7879
commit 986a3741d8
2 changed files with 12 additions and 0 deletions

View File

@@ -463,6 +463,12 @@ Ipv4L3Protocol::Receive( Ptr<NetDevice> device, Ptr<const Packet> p, uint16_t pr
}
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);

View File

@@ -695,6 +695,12 @@ void Ipv6L3Protocol::Receive (Ptr<NetDevice> device, Ptr<const Packet> p, uint16
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)
{