Make TTL index a per-interface value.
authorThomas Lopatic <thomas@lopatic.de>
Wed, 11 Oct 2006 20:58:45 +0000 (20:58 +0000)
committerThomas Lopatic <thomas@lopatic.de>
Wed, 11 Oct 2006 20:58:45 +0000 (20:58 +0000)
src/interfaces.h
src/lq_packet.c
src/unix/ifnet.c
src/win32/ifnet.c

index 1413e25..0ccd4f2 100644 (file)
@@ -36,7 +36,7 @@
  * to the project. For more information see the website or contact
  * the copyright holders.
  *
- * $Id: interfaces.h,v 1.33 2006/04/17 18:31:09 kattemat Exp $
+ * $Id: interfaces.h,v 1.34 2006/10/11 20:58:45 tlopatic Exp $
  */
 
 
@@ -142,6 +142,8 @@ struct interface
 
   struct        if_gen_property *gen_properties;/* Generic interface properties */
 
+  int           ttl_index; /* index in TTL array for fish-eye */
+
   struct       interface *int_next;
 };
 
index 711f0da..f267338 100644 (file)
@@ -37,7 +37,7 @@
  * to the project. For more information see the website or contact
  * the copyright holders.
  *
- * $Id: lq_packet.c,v 1.20 2006/01/07 08:16:20 kattemat Exp $
+ * $Id: lq_packet.c,v 1.21 2006/10/11 20:58:45 tlopatic Exp $
  */
 
 #include "olsr_protocol.h"
@@ -151,7 +151,6 @@ create_lq_tc(struct lq_tc_message *lq_tc, struct interface *outif)
   struct neighbor_entry *walker;
   struct link_entry *link;
   static int ttl_list[] = { MAX_TTL, 3, 2, 1, 2, 1, 1, 3, 2, 1, 2, 1, 1, 0 };
-  static int ttl_index = 0;
 
   // remember that we have generated an LQ TC message; this is
   // checked in net_output()
@@ -168,10 +167,10 @@ create_lq_tc(struct lq_tc_message *lq_tc, struct interface *outif)
 
   if (olsr_cnf->lq_fish > 0)
   {
-    if (ttl_list[ttl_index] == 0)
-      ttl_index = 0;
+    if (ttl_list[outif->ttl_index] == 0)
+      outif->ttl_index = 0;
 
-    lq_tc->comm.ttl = ttl_list[ttl_index++];
+    lq_tc->comm.ttl = ttl_list[outif->ttl_index++];
 
     OLSR_PRINTF(3, "Creating LQ TC with TTL %d.\n", lq_tc->comm.ttl);
   }
index 20d386e..0f0d644 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.38 2006/04/17 18:31:09 kattemat Exp $
+ * $Id: ifnet.c,v 1.39 2006/10/11 20:58:45 tlopatic Exp $
  */
 
 
@@ -887,6 +887,8 @@ chk_if_up(struct olsr_if *iface, int debuglvl)
 
   ifs.int_mtu -= (olsr_cnf->ip_version == AF_INET6) ? UDP_IPV6_HDRSIZE : UDP_IPV4_HDRSIZE;
 
+  ifs.ttl_index = 0;
+
   /* Set up buffer */
   net_add_buffer(&ifs);
               
index 639ddb6..a8e9703 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.31 2006/10/11 20:18:36 tlopatic Exp $
+ * $Id: ifnet.c,v 1.32 2006/10/11 20:58:45 tlopatic Exp $
  */
 
 #include "interfaces.h"
@@ -914,6 +914,8 @@ int chk_if_up(struct olsr_if *IntConf, int DebugLevel)
     New->int_metric = IsWlan;
 
   New->olsr_seqnum = random() & 0xffff;
+
+  New->ttl_index = 0;
     
   OLSR_PRINTF(1, "\tInterface %s set up for use with index %d\n\n",
               IntConf->name, New->if_nr)