bug 2063: FdNetDevice::SendFrom() Assert does not take into account the size of the headers. (fix due Rubén Martínez and Tom Henderson)
--- a/src/fd-net-device/model/fd-net-device.cc Fri Feb 06 18:14:38 2015 -0800
+++ b/src/fd-net-device/model/fd-net-device.cc Tue Feb 17 03:38:14 2015 +0100
@@ -246,7 +246,7 @@
m_nodeId = GetNode ()->GetId ();
m_fdReader = Create<FdNetDeviceFdReader> ();
- m_fdReader->SetBufferSize(m_mtu);
+ m_fdReader->SetBufferSize(m_mtu + 22);
m_fdReader->Start (m_fd, MakeCallback (&FdNetDevice::ReceiveCallback, this));
NotifyLinkUp ();
@@ -513,6 +513,8 @@
header.SetSource (source);
header.SetDestination (destination);
+ NS_ASSERT_MSG (packet->GetSize () <= m_mtu, "FdNetDevice::SendFrom(): Packet too big " << packet->GetSize ());
+
if (m_encapMode == LLC)
{
LlcSnapHeader llc;
@@ -540,7 +542,6 @@
NS_LOG_LOGIC ("calling write");
- NS_ASSERT_MSG (packet->GetSize () <= m_mtu, "FdNetDevice::SendFrom(): Packet too big " << packet->GetSize ());
ssize_t len = (ssize_t) packet->GetSize ();
uint8_t *buffer = (uint8_t*)malloc (len);