Subtracting UDP header from interface buffer sizes
authorAndreas Tonnesen <andreto@olsr.org>
Mon, 28 Feb 2005 18:08:57 +0000 (18:08 +0000)
committerAndreas Tonnesen <andreto@olsr.org>
Mon, 28 Feb 2005 18:08:57 +0000 (18:08 +0000)
src/defs.h
src/unix/ifnet.c

index 096af73..d4b0f93 100644 (file)
@@ -36,7 +36,7 @@
  * to the project. For more information see the website or contact
  * the copyright holders.
  *
- * $Id: defs.h,v 1.41 2005/02/28 09:52:13 kattemat Exp $
+ * $Id: defs.h,v 1.42 2005/02/28 18:08:54 kattemat Exp $
  */
 
 #ifndef OLSR_PLUGIN
@@ -69,7 +69,8 @@
 
 #define        HOPCNT_MAX              32      /* maximum hops number */
 #define        MAXMESSAGESIZE          1500    /* max broadcast size */
-#define UDP_IP_HDRSIZE          28
+#define UDP_IPV4_HDRSIZE        28
+#define UDP_IPV6_HDRSIZE        48
 #define MAX_IFS                 16
 
 /* Debug helper macro */
index f4284a3..155d286 100644 (file)
@@ -36,7 +36,7 @@
  * to the project. For more information see the website or contact
  * the copyright holders.
  *
- * $Id: ifnet.c,v 1.20 2005/02/27 18:39:43 kattemat Exp $
+ * $Id: ifnet.c,v 1.21 2005/02/28 18:08:57 kattemat Exp $
  */
 
 
@@ -214,6 +214,7 @@ chk_if_changed(struct olsr_if *iface)
     ifp->int_mtu = 0;
   else
     {
+      ifp->int_mtu -= (olsr_cnf->ip_version == AF_INET6) ? UDP_IPV6_HDRSIZE : UDP_IPV4_HDRSIZE;
       if(ifp->int_mtu != ifr.ifr_mtu)
        {
          ifp->int_mtu = ifr.ifr_mtu;
@@ -659,10 +660,12 @@ chk_if_up(struct olsr_if *iface, int debuglvl)
   else
     ifs.int_mtu = ifr.ifr_mtu;
 
+  ifs.int_mtu -= (olsr_cnf->ip_version == AF_INET6) ? UDP_IPV6_HDRSIZE : UDP_IPV4_HDRSIZE;
+
   /* Set up buffer */
   net_add_buffer(&ifs);
               
-  OLSR_PRINTF(1, "\tMTU: %d\n", ifs.int_mtu)
+  OLSR_PRINTF(1, "\tMTU - IPhdr: %d\n", ifs.int_mtu)
 
   olsr_syslog(OLSR_LOG_INFO, "Adding interface %s\n", iface->name);
   OLSR_PRINTF(1, "\tIndex %d\n", ifs.if_nr)