olsr_ip_to_string() now only overwrites the buffer after four ivocations.
authorThomas Lopatic <thomas@lopatic.de>
Mon, 15 Nov 2004 14:59:39 +0000 (14:59 +0000)
committerThomas Lopatic <thomas@lopatic.de>
Mon, 15 Nov 2004 14:59:39 +0000 (14:59 +0000)
TC set debug output is now formatted as a table. Dijkstra uses ETX and
prints nicer debug information.

src/lq_route.c
src/neighbor_table.c
src/net.c
src/tc_set.c

index 38ff0dc..1751d4f 100644 (file)
@@ -18,7 +18,7 @@
  * along with olsr.org; if not, write to the Free Software
  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
  *
- * $Id: lq_route.c,v 1.10 2004/11/15 11:14:06 tlopatic Exp $
+ * $Id: lq_route.c,v 1.11 2004/11/15 14:59:38 tlopatic Exp $
  *
  */
 
@@ -267,6 +267,17 @@ static void relax(struct dijk_vertex *vert)
   }
 }
 
+static char *etx_to_string(int etx)
+{
+  static char buff[10];
+
+  if (etx == INFINITE_ETX)
+    return "INF";
+
+  sprintf(buff, "%d", etx);
+  return buff;
+}
+
 void olsr_calculate_lq_routing_table(void)
 {
   struct list vertex_list;
@@ -372,7 +383,11 @@ void olsr_calculate_lq_routing_table(void)
   
   myself = node->data;
 
-  fprintf(stderr, "Dijkstra results:\n");
+  olsr_printf(2, "\n--- %02d:%02d:%02d.%02d ------------------------------------------------- DIJKSTRA\n\n",
+              nowtm->tm_hour,
+              nowtm->tm_min,
+              nowtm->tm_sec,
+              now.tv_usec/10000);
 
   for (node = list_get_next(node); node != NULL; node = list_get_next(node))
   {
@@ -385,22 +400,21 @@ void olsr_calculate_lq_routing_table(void)
 
     for (walker = vert; walker != NULL && walker->prev != myself;
          walker = walker->prev)
-      {
-        fprintf(stderr, " %s", olsr_ip_to_string(&walker->addr));
-        hops++;
-      }
-
-    if (walker != NULL && walker->prev == myself)
-      fprintf(stderr, " %s (one-hop) - OK", olsr_ip_to_string(&walker->addr));
+    {
+      olsr_printf(2, "%s:%s <- ", olsr_ip_to_string(&walker->addr),
+                  etx_to_string(walker->path_etx));
+      hops++;
+    }
 
-    fprintf(stderr, "\n");
+    // if no path to a one-hop neighbour was found, ignore this node
 
-    // no path found to a one-hop neighbour, ignore this node
+    if (walker != NULL)
+      olsr_printf(2, "%s:%s (one-hop)\n", olsr_ip_to_string(&walker->addr),
+                  etx_to_string(walker->path_etx));
 
-    if (walker == NULL)
+    else
     {
-      fprintf(stderr, "No path found for %s.\n",
-              olsr_ip_to_string(&vert->addr));
+      olsr_printf(2, "FAILED\n", olsr_ip_to_string(&vert->addr));
       continue;
     }
 
index 2156b3d..5a8cd21 100644 (file)
@@ -19,7 +19,7 @@
  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
  * 
  * 
- * $Id: neighbor_table.c,v 1.15 2004/11/14 13:58:49 kattemat Exp $
+ * $Id: neighbor_table.c,v 1.16 2004/11/15 14:59:39 tlopatic Exp $
  *
  */
 
@@ -480,7 +480,7 @@ olsr_print_neighbor_table()
 
   else
   {
-    olsr_printf(1, "IP address                               LQ     NLQ    TLQ    SYM  MPR  will\n");
+    olsr_printf(1, "IP address                               LQ     NLQ    SYM  MPR  will\n");
     fstr = "%-39s  %5.3f  %5.3f  %s  %s  %d\n";
   }
 
index d43ec27..c83bd72 100644 (file)
--- a/src/net.c
+++ b/src/net.c
@@ -20,7 +20,7 @@
  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
  * 
  * 
- * $Id: net.c,v 1.19 2004/11/05 14:33:31 tlopatic Exp $
+ * $Id: net.c,v 1.20 2004/11/15 14:59:39 tlopatic Exp $
  *
  */
 
@@ -601,7 +601,8 @@ ip6_to_string(struct in6_addr *addr6)
 char *
 olsr_ip_to_string(union olsr_ip_addr *addr)
 {
-
+  static int index = 0;
+  static char buff[4][100];
   char *ret;
   struct in_addr in;
   
@@ -616,5 +617,11 @@ olsr_ip_to_string(union olsr_ip_addr *addr)
       ret = (char *)inet_ntop(AF_INET6, &addr->v6, ipv6_buf, sizeof(ipv6_buf));
     }
 
+  strcpy(buff[index], ret);
+
+  ret = buff[index];
+
+  index = (index + 1) & 3;
+
   return ret;
 }
index c9e459b..1eeae09 100644 (file)
@@ -19,7 +19,7 @@
  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
  * 
  * 
- * $Id: tc_set.c,v 1.11 2004/11/10 14:53:21 tlopatic Exp $
+ * $Id: tc_set.c,v 1.12 2004/11/15 14:59:39 tlopatic Exp $
  *
  */
 
@@ -412,32 +412,57 @@ olsr_time_out_tc_set()
 int
 olsr_print_tc_table()
 {
-  int index;
+  int i;
   struct tc_entry *entry;
   struct topo_dst *dst_entry;
+  char *fstr;
+  double lq, ilq;
   
-  olsr_printf(1, "topology table: %02d:%02d:%02d.%06lu\n",nowtm->tm_hour, nowtm->tm_min, nowtm->tm_sec, now.tv_usec);
-
-  for(index=0;index<HASHSIZE;index++)
+  olsr_printf(2, "\n--- %02d:%02d:%02d.%02d ------------------------------------------------- TOPOLOGY\n\n",
+              nowtm->tm_hour,
+              nowtm->tm_min,
+              nowtm->tm_sec,
+              now.tv_usec / 10000);
+
+  if (olsr_cnf->ip_version == AF_INET)
+  {
+    olsr_printf(1, "Source IP addr   Dest IP addr     LQ     ILQ\n");
+    fstr = "%-15s  %-15s  %5.3f  %5.3f\n";
+  }
+
+  else
+  {
+    olsr_printf(1, "Source IP addr                Dest IP addr                    LQ     ILQ\n");
+    fstr = "%-30s%-30s  %5.3f  %5.3f\n";
+  }
+
+  for (i = 0; i < HASHSIZE; i++)
+  {
+    entry = tc_table[i].next;
+
+    while (entry != &tc_table[i])
     {
-      /* For all TC entries */
-      entry = tc_table[index].next;
-      while(entry != &tc_table[index])
-       {
-         /* For all destination entries of that TC entry */
-         dst_entry = entry->destinations.next;
-         while(dst_entry != &entry->destinations)
-           {
-             olsr_printf(1, "%s", olsr_ip_to_string(&entry->T_last_addr));
-             olsr_printf(1, " -> %s\n", olsr_ip_to_string(&dst_entry->T_dest_addr));
-             dst_entry = dst_entry->next;
-           }
-         entry = entry->next;
-       }
-      
+      dst_entry = entry->destinations.next;
+
+      while(dst_entry != &entry->destinations)
+      {
+#if defined USE_LINK_QUALITY
+        lq = dst_entry->link_quality;
+        ilq = dst_entry->inverse_link_quality;
+#else
+        lq = 0.0;
+        ilq = 0.0;
+#endif
+        olsr_printf(1, fstr, olsr_ip_to_string(&entry->T_last_addr),
+                    olsr_ip_to_string(&dst_entry->T_dest_addr),
+                    dst_entry->link_quality, dst_entry->inverse_link_quality);
+
+        dst_entry = dst_entry->next;
+      }
+
+      entry = entry->next;
     }
+  }
 
-  olsr_printf(1, "\n");
-  
   return 1;
 }