Bugfixes for ansn handling
authorHenning Rogge <hrogge@googlemail.com>
Thu, 17 Mar 2011 14:33:05 +0000 (15:33 +0100)
committerHenning Rogge <hrogge@googlemail.com>
Thu, 17 Mar 2011 14:33:05 +0000 (15:33 +0100)
src/link_set.c
src/lq_mpr.c
src/olsr.c
src/olsr_protocol.h
src/tc_set.c

index d38ddab..3368aff 100644 (file)
@@ -668,7 +668,7 @@ olsr_print_link_set(void)
 
   OLSR_INFO(LOG_LINKS, "\n--- %s ---------------------------------------------------- LINKS\n\n",
       olsr_clock_getWallclockString(&timebuf));
-  OLSR_INFO_NH(LOG_LINKS, "%-*s  %-6s %s %s\n", addrsize, "IP address", "hyst", totaltxt , olsr_get_linklabel(0));
+  OLSR_INFO_NH(LOG_LINKS, "%-*s %s %s\n", addrsize, "IP address", totaltxt , olsr_get_linklabel(0));
 
   OLSR_FOR_ALL_LINK_ENTRIES(walker, iterator) {
     struct ipaddr_str buf;
index 0f5fb5b..30eeceb 100644 (file)
@@ -65,6 +65,16 @@ olsr_calculate_lq_mpr(void)
     neigh->was_mpr = neigh->is_mpr;
 
     /* Clear current MPR status. */
+    neigh->is_mpr = true;
+  }
+  return;
+
+  OLSR_FOR_ALL_NBR_ENTRIES(neigh, neigh_iterator) {
+
+    /* Memorize previous MPR status. */
+    neigh->was_mpr = neigh->is_mpr;
+
+    /* Clear current MPR status. */
     neigh->is_mpr = false;
 
     /* In this pass we are only interested in WILL_ALWAYS neighbours */
index c91fbe2..7ea2314 100644 (file)
@@ -125,6 +125,7 @@ olsr_process_changes(void)
   }
 
   if (changes_neighborhood) {
+    increase_local_ansn_number();
     olsr_calculate_lq_mpr();
   }
 
index aa23ebc..9361841 100644 (file)
@@ -141,7 +141,7 @@ enum olsr_neigh_types {
  *Redundancy defaults
  */
 #define TC_REDUNDANCY         2
-#define MPR_COVERAGE          1
+#define MPR_COVERAGE          5
 
 /*
  *Misc. Constants
index d23eff6..10ee3cc 100644 (file)
@@ -146,6 +146,9 @@ olsr_init_tc(void)
   tc_validity_timer_info = olsr_timer_add("TC validity", &olsr_expire_tc_entry, false);
 
   tc_mem_cookie = olsr_memcookie_add("tc_entry", sizeof(struct tc_entry));
+
+  /* start with a random answer set number */
+  local_ansn_number = random() & 0xffff;
 }
 
 /**
@@ -298,10 +301,11 @@ olsr_tc_edge_to_string(struct tc_edge_entry *tc_edge)
   char lqbuffer[LQTEXT_MAXLENGTH];
 
   snprintf(buf, sizeof(buf),
-           "%s > %s, cost %s",
+           "%s > %s, cost %s, ansn %04x",
            olsr_ip_to_string(&addrbuf, &tc_edge->tc->addr),
            olsr_ip_to_string(&dstbuf, &tc_edge->T_dest_addr),
-           olsr_get_linkcost_text(tc_edge->cost, false, lqbuffer, sizeof(lqbuffer)));
+           olsr_get_linkcost_text(tc_edge->cost, false, lqbuffer, sizeof(lqbuffer)),
+           tc_edge->ansn);
   return buf;
 }
 #endif
@@ -558,7 +562,6 @@ olsr_delete_revoked_tc_edges(struct tc_entry *tc, uint16_t ansn, union olsr_ip_a
   return retval;
 }
 
-
 /**
  * Update an edge registered on an entry.
  * Creates new edge-entries if not registered.