2005-10-01 Andrew J. Schorr <ajschorr@alumni.princeton.edu>

	* zebra.h: Declare new functions zebra_route_string() and
	  zebra_route_char().
	* log.c: (zroute_lookup,zebra_route_string,zebra_route_char) New
	  functions to map zebra route numbers to strings.
	* zebra_vty.c: (route_type_str) Remove obsolete function: use new
	  library function zebra_route_string() instead.  Note that there
	  are a few differences: for IPv6 routes, we now get "ripng" and
	  "ospf6" instead of the old behavior ("rip" and "ospf").
	  (route_type_char) Remove obsolete function: ues new library function
	  zebra_route_char() instead.  Note that there is one difference:
	  the old function returned 'S' for a ZEBRA_ROUTE_SYSTEM route,
	  whereas the new one returns 'X'.
	  (vty_show_ip_route_detail,vty_show_ipv6_route_detail) Replace
	  route_type_str() with zebra_route_string().
	  (vty_show_ip_route,vty_show_ipv6_route) Replace route_type_char()
	  with zebra_route_char().
	* bgp_vty.c: (bgp_config_write_redistribute) Use new library function
	  zebra_route_string instead of a local hard-coded table.
	* ospf6_asbr.c: Remove local hard-coded tables zroute_name and
	  zroute_abname. Change the ZROUTE_NAME macro to use new library
	  function zebra_route_string().  Remove the ZROUTE_ABNAME macro.
	  (ospf6_asbr_external_route_show): Replace ZROUTE_ABNAME() with
	  a call to zebra_route_char(), and be sure to fix the format string,
	  since we now have a char instead of a char *.
	* ospf6_zebra.c: Remove local hard-coded tables zebra_route_name and
	  zebra_route_abname.  Note that the zebra_route_name[] table
	  contained mixed-case strings, whereas the zebra_route_string()
	  function returns lower-case strings.
	  (ospf6_zebra_read_ipv6): Change debug message to use new library
	  function zebra_route_string() instead of zebra_route_name[].
	  (show_zebra): Use new library function zebra_route_string() instead
	  of zebra_route_name[].
	* ospf_dump.c: Remove local hard-coded table ospf_redistributed_proto.
	  (ospf_redist_string) New function implemented using new library
	  function zebra_route_string().  Note that there are a few differences
	  in the output that will result: the new function returns strings
	  that are lower-case, whereas the old table was mixed case.  Also,
	  the old table mapped ZEBRA_ROUTE_OSPF6 to "OSPFv3", whereas the
	  new function returns "ospf6".
	* ospfd.h: Remove extern struct message ospf_redistributed_proto[],
	  and add extern const char *ospf_redist_string(u_int route_type)
	  instead.
	* ospf_asbr.c: (ospf_external_info_add) In two messages, use
	  ospf_redist_string instead of LOOKUP(ospf_redistributed_proto).
	* ospf_vty.c: Remove local hard-coded table distribute_str.
	  (config_write_ospf_redistribute,config_write_ospf_distribute): Use
	  new library function zebra_route_string() instead of distribute_str[].
	* ospf_zebra.c: (ospf_redistribute_set,ospf_redistribute_unset,
	  ospf_redistribute_default_set,ospf_redistribute_check)
	  In debug messages, use ospf_redist_string() instead of
	  LOOKUP(ospf_redistributed_proto).
	* rip_zebra.c: (config_write_rip_redistribute): Remove local hard-coded
	  table str[]. Replace str[] with calls to new library function
	  zebra_route_string().
	* ripd.c: Remove local hard-coded table route_info[].
	  (show_ip_rip) Replace uses of str[] with calls to new library
	  functions zebra_route_char and zebra_route_string.
	* ripng_zebra.c: (ripng_redistribute_write) Remove local hard-coded
	  table str[].  Replace str[i] with new library function
	  zebra_route_string(i).
	* ripngd.c: Remove local hard-coded table route_info[].
	  (show_ipv6_ripng) Use new library function zebra_route_char() instead
	  of table route_info[].
diff --git a/ripngd/ChangeLog b/ripngd/ChangeLog
index 84c3ea0..46d4f9f 100644
--- a/ripngd/ChangeLog
+++ b/ripngd/ChangeLog
@@ -1,3 +1,12 @@
+2005-10-01 Andrew J. Schorr <ajschorr@alumni.princeton.edu>
+
+	* ripng_zebra.c: (ripng_redistribute_write) Remove local hard-coded
+	  table str[].  Replace str[i] with new library function
+	  zebra_route_string(i).
+	* ripngd.c: Remove local hard-coded table route_info[].
+	  (show_ipv6_ripng) Use new library function zebra_route_char() instead
+	  of table route_info[].
+
 2005-08-27 Hasso Tepper <hasso at quagga.net>
 
 	* ripng_zebra.c, ripngd.[ch]: Pass metric info to the zebra daemon.
diff --git a/ripngd/ripng_zebra.c b/ripngd/ripng_zebra.c
index 7744fd5..1f9bee0 100644
--- a/ripngd/ripng_zebra.c
+++ b/ripngd/ripng_zebra.c
@@ -486,8 +486,6 @@
 ripng_redistribute_write (struct vty *vty, int config_mode)
 {
   int i;
-  const char *str[] = { "system", "kernel", "connected", "static", "rip",
-			"ripng", "ospf", "ospf6", "isis", "bgp"};
 
   for (i = 0; i < ZEBRA_ROUTE_MAX; i++)
     if (i != zclient->redist_default && zclient->redist[i])
@@ -498,23 +496,26 @@
 	    {
 	      if (ripng->route_map[i].name)
 		vty_out (vty, " redistribute %s metric %d route-map %s%s",
-			 str[i], ripng->route_map[i].metric,
+			 zebra_route_string(i), ripng->route_map[i].metric,
 			ripng->route_map[i].name, VTY_NEWLINE);
 	      else
 		vty_out (vty, " redistribute %s metric %d%s",
-			str[i], ripng->route_map[i].metric, VTY_NEWLINE);
+			zebra_route_string(i), ripng->route_map[i].metric,
+			VTY_NEWLINE);
 	    }
 	  else
 	    {
 	      if (ripng->route_map[i].name)
 		vty_out (vty, " redistribute %s route-map %s%s",
-			 str[i], ripng->route_map[i].name, VTY_NEWLINE);
+			 zebra_route_string(i), ripng->route_map[i].name,
+			 VTY_NEWLINE);
 	      else
-		vty_out (vty, " redistribute %s%s", str[i], VTY_NEWLINE);
+		vty_out (vty, " redistribute %s%s", zebra_route_string(i),
+			 VTY_NEWLINE);
 	    }
 	}
       else
-	vty_out (vty, "    %s", str[i]);
+	vty_out (vty, "    %s", zebra_route_string(i));
       }
 }
 
diff --git a/ripngd/ripngd.c b/ripngd/ripngd.c
index cf0d578..a5bc28d 100644
--- a/ripngd/ripngd.c
+++ b/ripngd/ripngd.c
@@ -1922,26 +1922,6 @@
     }
 }
 
-/* Each route type's strings and default preference.
- * FIXME: ISIS? What are these distance values? */
-struct
-{  
-  int key;
-  const char *str;
-  const char *str_long;
-  int distance;
-} route_info[] =
-{
-  { ZEBRA_ROUTE_SYSTEM,  "X", "system",    10},
-  { ZEBRA_ROUTE_KERNEL,  "K", "kernel",    20},
-  { ZEBRA_ROUTE_CONNECT, "C", "connected", 30},
-  { ZEBRA_ROUTE_STATIC,  "S", "static",    40},
-  { ZEBRA_ROUTE_RIP,     "R", "rip",       50},
-  { ZEBRA_ROUTE_RIPNG,   "R", "ripng",     50},
-  { ZEBRA_ROUTE_OSPF,    "O", "ospf",      60},
-  { ZEBRA_ROUTE_OSPF6,   "O", "ospf6",     60},
-  { ZEBRA_ROUTE_BGP,     "B", "bgp",       70},
-};
 
 /* Print out routes update time. */
 static void
@@ -2059,14 +2039,14 @@
 	  p = (struct prefix_ipv6 *) &rp->p;
 
 #ifdef DEBUG
-	  len = vty_out (vty, "%s(%s) 0/%d %s/%d ",
-			 route_info[rinfo->type].str,
+	  len = vty_out (vty, "%c(%s) 0/%d %s/%d ",
+			 zebra_route_char(rinfo->type),
 			 ripng_route_subtype_print(rinfo),
 			 rinfo->suppress,
 			 inet6_ntoa (p->prefix), p->prefixlen);
 #else
-	  len = vty_out (vty, "%s(%s) %s/%d ",
-			 route_info[rinfo->type].str,
+	  len = vty_out (vty, "%c(%s) %s/%d ",
+			 zebra_route_char(rinfo->type),
 			 ripng_route_subtype_print(rinfo),
 			 inet6_ntoa (p->prefix), p->prefixlen);
 #endif /* DEBUG */