2005-09-29 Alain Ritoux <alain.ritoux@6wind.com>

    * lib/filer.c: show protocol name in filter_show()
    * lib/plist.c: show protocol name in vty_show_prefix_entry()
    * routemap.c: show protocol name in vty_show_route_map_entry()
    * lib/vty.c: in vty_command(), show protocol name if command unknown

    * zebra/zserv.c: Always provide distance fo route add

    * ripd/rip_snmp.c: rip2IfConfReceive() sends values in conformance
      with RFC. Also PeerDomain is now set to a STRING type.
    * ripd/ripd.h: rip_redistribute_add() API includes metric and distance
    * ripd/ripd.c: rip_redistribute_add() API i.e. stores metric and distance
      Now allows a RIP-route to overcome a redistributed route coming
      from a protocol with worse (higher) administrative distance
      Metrics from redistribution are shown in show ip rip
    * ripd/rip_zebra.c: adapt to the rip_redistribute_add() API, i.e.
      provide distance and metric
    * ripd/rip_interface.c: adapt to the rip_redistribute_add() API
    * ripd/rip_routemap.c: no RMAP_COMPILE_ERROR on (metric > 16) usage
      rather a CMD_WARNING, because set metric ius shared with other
      protocols using larger values (such as OSPF)
      The match metric action takes first external metric if present
      (from redistribution) then RIP metric.
diff --git a/lib/ChangeLog b/lib/ChangeLog
index 8a92df3..e060502 100644
--- a/lib/ChangeLog
+++ b/lib/ChangeLog
@@ -1,3 +1,10 @@
+2005-09-29 Alain Ritoux <alain.ritoux@6wind.com>
+
+	* filer.c: show protocol name in filter_show()
+	* plist.c: show protocol name in vty_show_prefix_entry()
+	* routemap.c: show protocol name in vty_show_route_map_entry()
+	* vty.c: in vty_command(), show protocol name if command unknown
+	
 2005-09-28 Alain Ritoux <alain.ritoux@6wind.com>
 
 	* md5-gnu.h: removed
diff --git a/lib/filter.c b/lib/filter.c
index 55bcdf4..069919b 100644
--- a/lib/filter.c
+++ b/lib/filter.c
@@ -27,6 +27,7 @@
 #include "command.h"
 #include "sockunion.h"
 #include "buffer.h"
+#include "log.h"
 
 struct filter_cisco
 {
@@ -1580,6 +1581,11 @@
   if (master == NULL)
     return 0;
 
+  /* Print the name of the protocol */
+  if (zlog_default)
+      vty_out (vty, "%s:%s",
+      zlog_proto_names[zlog_default->protocol], VTY_NEWLINE);
+
   for (access = master->num.head; access; access = access->next)
     {
       if (name && strcmp (access->name, name) != 0)
diff --git a/lib/plist.c b/lib/plist.c
index 97d254f..83c5aa0 100644
--- a/lib/plist.c
+++ b/lib/plist.c
@@ -28,6 +28,7 @@
 #include "sockunion.h"
 #include "buffer.h"
 #include "stream.h"
+#include "log.h"
 
 /* Each prefix-list's entry. */
 struct prefix_list_entry
@@ -918,6 +919,10 @@
 {
   struct prefix_list_entry *pentry;
 
+  /* Print the name of the protocol */
+  if (zlog_default)
+      vty_out (vty, "%s: ", zlog_proto_names[zlog_default->protocol]);
+                                                                           
   if (dtype == normal_display)
     {
       vty_out (vty, "ip%s prefix-list %s: %d entries%s",
diff --git a/lib/routemap.c b/lib/routemap.c
index 0a4eeb9..a9d94f2 100644
--- a/lib/routemap.c
+++ b/lib/routemap.c
@@ -205,6 +205,11 @@
   struct route_map_index *index;
   struct route_map_rule *rule;
 
+  /* Print the name of the protocol */
+  if (zlog_default)
+    vty_out (vty, "%s:%s", zlog_proto_names[zlog_default->protocol],
+             VTY_NEWLINE);
+
   for (index = map->head; index; index = index->next)
     {
       vty_out (vty, "route-map %s, %s, sequence %d%s",
diff --git a/lib/vty.c b/lib/vty.c
index 540f7b9..2f0bd3f 100644
--- a/lib/vty.c
+++ b/lib/vty.c
@@ -388,6 +388,7 @@
 {
   int ret;
   vector vline;
+  const char *protocolname;
 
   /* Split readline string up into the vector */
   vline = cmd_make_strvec (buf);
@@ -406,6 +407,12 @@
 
   ret = cmd_execute_command (vline, vty, NULL, 0);
 
+  /* Get the name of the protocol if any */
+  if (zlog_default)
+      protocolname = zlog_proto_names[zlog_default->protocol];
+  else
+      protocolname = zlog_proto_names[ZLOG_NONE];
+                                                                           
 #ifdef CONSUMED_TIME_CHECK
     GETRUSAGE(&after);
     if ((realtime = thread_consumed_time(&after, &before, &cputime)) >
@@ -427,7 +434,7 @@
 	vty_out (vty, "%% Ambiguous command.%s", VTY_NEWLINE);
 	break;
       case CMD_ERR_NO_MATCH:
-	vty_out (vty, "%% Unknown command.%s", VTY_NEWLINE);
+	vty_out (vty, "%% [%s] Unknown command: %s%s", protocolname, buf, VTY_NEWLINE);
 	break;
       case CMD_ERR_INCOMPLETE:
 	vty_out (vty, "%% Command incomplete.%s", VTY_NEWLINE);