bug 2063: FdNetDevice::SendFrom() Assert does not take into account the size of the headers. (fix due Rubén Martínez and Tom Henderson)
authorAlina Quereilhac <alina.quereilhac@inria.fr>
Tue, 17 Feb 2015 03:38:14 +0100
changeset 11219 c97ef876d98c
parent 11218 94c2675383e6
child 11220 018b26ee77e7
bug 2063: FdNetDevice::SendFrom() Assert does not take into account the size of the headers. (fix due Rubén Martínez and Tom Henderson)
src/fd-net-device/model/fd-net-device.cc
--- 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);