Debug output table format now also works for IPv6. Output updated tables
authorThomas Lopatic <thomas@lopatic.de>
Wed, 10 Nov 2004 11:54:28 +0000 (11:54 +0000)
committerThomas Lopatic <thomas@lopatic.de>
Wed, 10 Nov 2004 11:54:28 +0000 (11:54 +0000)
if the quality of a link has changed by more than 10 percent.

src/link_set.c
src/neighbor_table.c
src/process_package.c
src/two_hop_neighbor_table.c

index 7a01ade..f87aaad 100644 (file)
@@ -19,7 +19,7 @@
  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
  * 
  * 
- * $Id: link_set.c,v 1.22 2004/11/08 23:25:57 tlopatic Exp $
+ * $Id: link_set.c,v 1.23 2004/11/10 11:54:28 tlopatic Exp $
  *
  */
 
@@ -909,13 +909,28 @@ olsr_time_out_hysteresis()
 void olsr_print_link_set(void)
 {
   struct link_entry *walker;
+  char *fstr;
 
-  olsr_printf(1, "\n-------------------------------------------------- LINKS\n\n");
-  olsr_printf(1, "IP address       hyst   LQ     lost   total  NLQ\n");
+  olsr_printf(1, "\n--- %02d:%02d:%02d ---------------------------------------------------------- LINKS\n\n",
+              nowtm->tm_hour,
+              nowtm->tm_min,
+              nowtm->tm_sec,
+              now.tv_usec);
+
+  if (olsr_cnf->ip_version == AF_INET)
+  {
+    olsr_printf(1, "IP address       hyst   LQ     lost   total  NLQ\n");
+    fstr = "%-15s  %5.3f  %5.3f  %-3d    %-3d    %5.3f\n";
+  }
+
+  else
+  {
+    olsr_printf(1, "IP address                               hyst   LQ     lost   total  NLQ\n");
+    fstr = "%-39s  %5.3f  %5.3f  %-3d    %-3d    %5.3f\n";
+  }
 
   for (walker = link_set; walker != NULL; walker = walker->next)
-    olsr_printf(1, "%-15s  %5.3f  %5.3f  %-3d    %-3d    %5.3f\n",
-                olsr_ip_to_string(&walker->neighbor_iface_addr),
+    olsr_printf(1, fstr, olsr_ip_to_string(&walker->neighbor_iface_addr),
                 walker->L_link_quality, walker->loss_link_quality,
                 walker->lost_packets, walker->total_packets,
                 walker->neigh_link_quality);
@@ -925,6 +940,7 @@ static void update_packet_loss_worker(struct link_entry *entry, int lost)
 {
   unsigned char mask = 1 << (entry->loss_index & 7);
   int index = entry->loss_index >> 3;
+  double saved_lq, rel_lq;
 
   if (lost == 0)
     {
@@ -968,10 +984,22 @@ static void update_packet_loss_worker(struct link_entry *entry, int lost)
   if (entry->total_packets < entry->loss_window_size)
     entry->total_packets++;
 
-  // calculate the link quality
+  // memorize the current link quality
+
+  saved_lq = entry->loss_link_quality;
+
+  // calculate the new link quality
 
   entry->loss_link_quality = 1.0 - (float)entry->lost_packets /
     (float)entry->total_packets;
+
+  // if the link quality has changed by more than 10 percent,
+  // print the new link quality table
+
+  rel_lq = entry->loss_link_quality / saved_lq;
+
+  if (rel_lq > 1.1 || rel_lq < 0.9)
+    changes_neighborhood = OLSR_TRUE;
 }
 
 void olsr_update_packet_loss_hello_int(struct link_entry *entry,
index 5e069b1..fdae6f8 100644 (file)
@@ -19,7 +19,7 @@
  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
  * 
  * 
- * $Id: neighbor_table.c,v 1.11 2004/11/08 23:25:57 tlopatic Exp $
+ * $Id: neighbor_table.c,v 1.12 2004/11/10 11:54:28 tlopatic Exp $
  *
  */
 
@@ -464,9 +464,25 @@ olsr_print_neighbor_table()
   struct link_entry *link;
 #endif
   double best_lq, inv_best_lq, total_lq;
+  char *fstr;
 
-  olsr_printf(1, "\n---------------------------------------------- NEIGHBORS\n\n");
-  olsr_printf(1, "IP address       LQ     NLQ    TLQ    SYM  MPR  will\n");
+  olsr_printf(1, "\n--- %02d:%02d:%02d ------------------------------------------------------ NEIGHBORS\n\n",
+              nowtm->tm_hour,
+              nowtm->tm_min,
+              nowtm->tm_sec,
+              now.tv_usec);
+
+  if (olsr_cnf->ip_version == AF_INET)
+  {
+    olsr_printf(1, "IP address       LQ     NLQ    TLQ    SYM  MPR  will\n");
+    fstr = "%-15s  %5.3f  %5.3f  %5.3f  %s  %s  %d\n";
+  }
+
+  else
+  {
+    olsr_printf(1, "IP address                               LQ     NLQ    TLQ    SYM  MPR  will\n");
+    fstr = "%-39s  %5.3f  %5.3f  %5.3f  %s  %s  %d\n";
+  }
 
   for (i = 0; i < HASHSIZE; i++)
     {
@@ -486,8 +502,7 @@ olsr_print_neighbor_table()
 
           total_lq = best_lq * inv_best_lq;
 
-          olsr_printf(1, "%-15s  %5.3f  %5.3f  %5.3f  %s  %s  %d\n",
-                      olsr_ip_to_string(&neigh->neighbor_main_addr),
+          olsr_printf(1, fstr, olsr_ip_to_string(&neigh->neighbor_main_addr),
                       best_lq, inv_best_lq, total_lq,
                       (neigh->status == SYM) ? "SYM" : "   ",
                       neigh->is_mpr ? "MPR" : "   ",
index 48168d7..2dce79a 100644 (file)
@@ -19,7 +19,7 @@
  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
  * 
  * 
- * $Id: process_package.c,v 1.16 2004/11/07 20:09:11 tlopatic Exp $
+ * $Id: process_package.c,v 1.17 2004/11/10 11:54:28 tlopatic Exp $
  *
  */
 
@@ -74,6 +74,8 @@ olsr_hello_tap(struct hello_message *message, struct interface *in_if,
   struct neighbor_entry     *neighbor;
 #if defined USE_LINK_QUALITY
   struct hello_neighbor *walker;
+  double saved_lq;
+  double rel_lq;
 #endif
 
   /*
@@ -94,6 +96,10 @@ olsr_hello_tap(struct hello_message *message, struct interface *in_if,
         if (COMP_IP(&walker->address, &in_if->ip_addr))
           break;
 
+      // memorize the currently stored link quality value
+
+      saved_lq = link->neigh_link_quality;
+
       // memorize our neighbour's idea of the link quality, so that we
       // know the link quality in both directions
 
@@ -102,6 +108,14 @@ olsr_hello_tap(struct hello_message *message, struct interface *in_if,
 
       else
         link->neigh_link_quality = 0.0;
+
+      // if the link quality has changed by more than 10 percent,
+      // print the new link quality table
+
+      rel_lq = link->neigh_link_quality / saved_lq;
+
+      if (rel_lq > 1.1 || rel_lq < 0.9)
+        changes_neighborhood = OLSR_TRUE;
     }
 #endif
   
index 5d1c61b..6722170 100644 (file)
@@ -19,7 +19,7 @@
  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
  * 
  * 
- * $Id: two_hop_neighbor_table.c,v 1.7 2004/11/08 23:25:57 tlopatic Exp $
+ * $Id: two_hop_neighbor_table.c,v 1.8 2004/11/10 11:54:28 tlopatic Exp $
  *
  */
 
@@ -235,7 +235,12 @@ olsr_print_two_hop_neighbor_table()
   olsr_bool first;
   double total_lq;
 
-  olsr_printf(1, "\n-------------------------------------- TWO-HOP NEIGHBORS\n\n");
+  olsr_printf(1, "\n--- %02d:%02d:%02d -------------------------- TWO-HOP NEIGHBORS\n\n",
+              nowtm->tm_hour,
+              nowtm->tm_min,
+              nowtm->tm_sec,
+              now.tv_usec);
+
   olsr_printf(1, "IP addr (2-hop)  IP addr (1-hop)  TLQ\n");
 
   for (i = 0; i < HASHSIZE; i++)