Revert my http://hasso.linux.ee/zebra/ht-ifrmap-14042003.patch patch. Used
same idea as in lib/distribute.c to allow extract.pl to pick up commands
for vtysh.
diff --git a/lib/Makefile.am b/lib/Makefile.am
index 7576cc8..0268060 100644
--- a/lib/Makefile.am
+++ b/lib/Makefile.am
@@ -10,7 +10,7 @@
 	print_version.c checksum.c vector.c linklist.c vty.c command.c \
 	sockunion.c prefix.c thread.c if.c memory.c buffer.c table.c hash.c \
 	filter.c routemap.c distribute.c stream.c str.c log.c plist.c \
-	zclient.c sockopt.c smux.c md5.c keychain.c
+	zclient.c sockopt.c smux.c md5.c if_rmap.c keychain.c
 
 libzebra_a_DEPENDENCIES = @LIB_REGEX@
 
@@ -20,7 +20,7 @@
 	buffer.h command.h filter.h getopt.h hash.h if.h linklist.h log.h \
 	memory.h network.h prefix.h routemap.h distribute.h sockunion.h \
 	str.h stream.h table.h thread.h vector.h version.h vty.h zebra.h \
-	plist.h zclient.h sockopt.h smux.h md5-gnu.h keychain.h
+	plist.h zclient.h sockopt.h smux.h md5-gnu.h if_rmap.h keychain.h
 
 EXTRA_DIST = regex.c regex-gnu.h
 
diff --git a/ripngd/ripng_ifrmap.c b/lib/if_rmap.c
similarity index 95%
rename from ripngd/ripng_ifrmap.c
rename to lib/if_rmap.c
index d358690..4227102 100644
--- a/ripngd/ripng_ifrmap.c
+++ b/lib/if_rmap.c
@@ -25,7 +25,7 @@
 #include "command.h"
 #include "memory.h"
 #include "if.h"
-#include "ripng_ifrmap.h"
+#include "if_rmap.h"
 
 struct hash *ifrmaphash;
 
@@ -194,8 +194,8 @@
   return 1;
 }
 
-DEFUN (ripng_if_rmap,
-       ripng_if_rmap_cmd,
+DEFUN (if_rmap,
+       if_rmap_cmd,
        "route-map RMAP_NAME (in|out) IFNAME",
        "Route map set\n"
        "Route map name\n"
@@ -221,8 +221,8 @@
   return CMD_SUCCESS;
 }       
 
-DEFUN (no_ripng_if_rmap,
-       no_ripng_if_rmap_cmd,
+DEFUN (no_if_rmap,
+       no_if_rmap_cmd,
        "no route-map ROUTEMAP_NAME (in|out) IFNAME",
        NO_STR
        "Route map unset\n"
@@ -296,10 +296,11 @@
 }
 
 void
-if_rmap_init (void)
+if_rmap_init (int node)
 {
   ifrmaphash = hash_create (if_rmap_hash_make, if_rmap_hash_cmp);
-
-  install_element (RIPNG_NODE, &ripng_if_rmap_cmd);
-  install_element (RIPNG_NODE, &no_ripng_if_rmap_cmd);
+  if (node == RIPNG_NODE) {
+    install_element (RIPNG_NODE, &if_rmap_cmd);
+    install_element (RIPNG_NODE, &no_if_rmap_cmd);
+  }
 }
diff --git a/ripngd/ripng_ifrmap.h b/lib/if_rmap.h
similarity index 97%
rename from ripngd/ripng_ifrmap.h
rename to lib/if_rmap.h
index c8bc223..a9355ab 100644
--- a/ripngd/ripng_ifrmap.h
+++ b/lib/if_rmap.h
@@ -37,7 +37,7 @@
   char *routemap[IF_RMAP_MAX];
 };
 
-void if_rmap_init (void);
+void if_rmap_init (int);
 void if_rmap_reset (void);
 void if_rmap_hook_add (void (*) (struct if_rmap *));
 void if_rmap_hook_delete (void (*) (struct if_rmap *));
diff --git a/ripngd/Makefile.am b/ripngd/Makefile.am
index 90b8b65..2835aa2 100644
--- a/ripngd/Makefile.am
+++ b/ripngd/Makefile.am
@@ -9,10 +9,10 @@
 
 libripng_a_SOURCES = \
 	ripng_interface.c ripngd.c ripng_zebra.c ripng_route.c ripng_debug.c \
-	ripng_routemap.c ripng_ifrmap.c
+	ripng_routemap.c
 
 noinst_HEADERS = \
-	ripng_debug.h ripng_route.h ripngd.h ripng_ifrmap.h
+	ripng_debug.h ripng_route.h ripngd.h
 
 ripngd_SOURCES = \
 	ripng_main.c $(libripng_a_SOURCES)
diff --git a/ripngd/ripngd.c b/ripngd/ripngd.c
index d8c34e8..e7cefaf 100644
--- a/ripngd/ripngd.c
+++ b/ripngd/ripngd.c
@@ -37,11 +37,11 @@
 #include "distribute.h"
 #include "plist.h"
 #include "routemap.h"
+#include "if_rmap.h"
 
 #include "ripngd/ripngd.h"
 #include "ripngd/ripng_route.h"
 #include "ripngd/ripng_debug.h"
-#include "ripngd/ripng_ifrmap.h"
 
 #define min(a, b) ((a) < (b) ? (a) : (b))
 
@@ -2520,7 +2520,7 @@
   route_map_add_hook (ripng_routemap_update);
   route_map_delete_hook (ripng_routemap_update);
 
-  if_rmap_init ();
+  if_rmap_init (RIPNG_NODE);
   if_rmap_hook_add (ripng_if_rmap_update);
   if_rmap_hook_delete (ripng_if_rmap_update);
 }
diff --git a/vtysh/Makefile.am b/vtysh/Makefile.am
index e6e92f1..89156f9 100644
--- a/vtysh/Makefile.am
+++ b/vtysh/Makefile.am
@@ -16,9 +16,9 @@
 EXTRA_DIST = extract.pl vtysh.conf.sample
 
 rebuild4:
-	./extract.pl ../zebra/*.c ../ripd/*.c ../ospfd/*.c ../bgpd/*.c ../lib/keychain.c ../lib/routemap.c ../lib/filter.c ../lib/plist.c ../lib/distribute.c > vtysh_cmd.c
+	./extract.pl ../zebra/*.c ../ripd/*.c ../ospfd/*.c ../bgpd/*.c ../lib/keychain.c ../lib/routemap.c ../lib/filter.c ../lib/plist.c ../lib/distribute.c ../lib/if_rmap.c > vtysh_cmd.c
 
 rebuild:
-	./extract.pl ../zebra/*.c ../ripd/*.c ../ripngd/*.c ../ospfd/*.c ../ospf6d/*.c ../bgpd/*.c ../lib/keychain.c ../lib/routemap.c ../lib/filter.c ../lib/plist.c ../lib/distribute.c > vtysh_cmd.c
+	./extract.pl ../zebra/*.c ../ripd/*.c ../ripngd/*.c ../ospfd/*.c ../ospf6d/*.c ../bgpd/*.c ../lib/keychain.c ../lib/routemap.c ../lib/filter.c ../lib/plist.c ../lib/distribute.c ../lib/if_rmap.c > vtysh_cmd.c
 
 vtysh_cmd.c: rebuild
diff --git a/vtysh/extract.pl b/vtysh/extract.pl
index 4a49a62..ca88cf7 100755
--- a/vtysh/extract.pl
+++ b/vtysh/extract.pl
@@ -108,6 +108,9 @@
                  $protocol = "VTYSH_RIPD";
               }
            }
+           if ($file =~ /if_rmap.c/) {
+              $protocol = "VTYSH_RIPNGD";
+           }
         } else {
            ($protocol) = ($file =~ /\/([a-z0-9]+)/);
            $protocol = "VTYSH_" . uc $protocol;