2005-09-12 Paul Jakma <paul.jakma@sun.com>

	* (general) RTM_CHANGE and implicit withdraw on RTM_NEWADDR
	  support.
	* connected.c: (connected_withdraw) new function. withdraw a
	  connected subnet address set from zebra, and pass information
	  along to clients.
	  (connected_announce) similar, but to announce a new connected
	  subnet address set.
	  (connected_check_ipv4) renamed to connected_check, as its
	  AFI independent.
	  (connected_add_ipv{4,6}) Remove the connected address announce
	  stuff, use connected_announce instead.
	  If connected_check indicates address is already present,
	  treat it as an implicit withdraw of the existing address, ie
	  remove the old address details and replace with the new
	  details.
	  (connected_delete_ipv{4,6}) Use connected_withdraw.
	  (connected_check_ipv6) deleted in favour of connected_check.
	* connected.h: Rename connected_check_ipv4 to connected_check.
	  delete connected_check_ipv6.
	* interface.c: Use connected_check rather than the AFI specific
	  symbols.
	* kernel_socket.c: (rtm_read) RTM_CHANGE support. Create a
	  rib delete event for the existing route, before adding route
	  again.
	  (kernel_read) we can handle RTM_CHANGE now.
diff --git a/zebra/connected.h b/zebra/connected.h
index 726092a..73166eb 100644
--- a/zebra/connected.h
+++ b/zebra/connected.h
@@ -24,7 +24,7 @@
 #define _ZEBRA_CONNECTED_H
 
 extern struct connected *
-connected_check_ipv4 (struct interface *ifp, struct prefix *p);
+connected_check (struct interface *ifp, struct prefix *p);
 
 extern void
 connected_add_ipv4 (struct interface *ifp, int flags, struct in_addr *addr, 
@@ -38,9 +38,6 @@
 extern void connected_down_ipv4 (struct interface *, struct connected *);
 
 #ifdef HAVE_IPV6
-extern struct connected *
-connected_check_ipv6 (struct interface *ifp, struct prefix *p);
-
 extern void
 connected_add_ipv6 (struct interface *ifp, struct in6_addr *address,
 		    u_char prefixlen, struct in6_addr *broad);