[zebra] Bug #351: Don't redistribute routes to ipv4 link-local prefixes

2007-04-07 Paul Jakma <paul.jakma@sun.com>

	* lib/prefix.h: Add define to match IPv4 Link-Local addresses
	* zebra/redistribute.c: (zebra_check_addr) Don't redistribute routes
	  to IPv4 link-local prefixes, fixes bug #351.
	* zebra/redistribute.h: Export zebra_check_addr.
	* zebra/router-id.c: (router_id_bad_address) re-use zebra_check_addr
	  rather than implementing similar logic.
diff --git a/zebra/router-id.c b/zebra/router-id.c
index c73b65b..41bab54 100644
--- a/zebra/router-id.c
+++ b/zebra/router-id.c
@@ -39,6 +39,7 @@
 
 #include "zebra/zserv.h"
 #include "zebra/router-id.h"
+#include "zebra/redistribute.h"
 
 static struct list rid_all_sorted_list;
 static struct list rid_lo_sorted_list;
@@ -63,18 +64,13 @@
 static int
 router_id_bad_address (struct connected *ifc)
 {
-  struct prefix n;
-
   if (ifc->address->family != AF_INET)
     return 1;
-
-  n.u.prefix4.s_addr = htonl (INADDR_LOOPBACK);
-  n.prefixlen = 8;
-  n.family = AF_INET;
-
-  if (prefix_match (&n, ifc->address))
+  
+  /* non-redistributable addresses shouldn't be used for RIDs either */
+  if (!zebra_check_addr (ifc->address))
     return 1;
-
+  
   return 0;
 }