[interface configuration] Preserve flag indicating address was set by quagga.
2006-05-19 Andrew J. Schorr <ajschorr@alumni.princeton.edu>

	* connected.c: (connected_add_ipv4,connected_add_ipv6) If the
	  new struct connected matches an already existing one
	  (that will consequently be removed by connected_withdraw),
	  then be sure to preserve the ZEBRA_IFC_CONFIGURED flag.
diff --git a/zebra/ChangeLog b/zebra/ChangeLog
index 6235071..3ad0e83 100644
--- a/zebra/ChangeLog
+++ b/zebra/ChangeLog
@@ -1,3 +1,10 @@
+2006-05-19 Andrew J. Schorr <ajschorr@alumni.princeton.edu>
+
+	* connected.c: (connected_add_ipv4,connected_add_ipv6) If the
+	  new struct connected matches an already existing one
+	  (that will consequently be removed by connected_withdraw),
+	  then be sure to preserve the ZEBRA_IFC_CONFIGURED flag.
+
 2006-05-17 Andrew J. Schorr <ajschorr@alumni.princeton.edu>
 
 	* kernel_socket.c: (ifam_read_mesg) Improve debug message
diff --git a/zebra/connected.c b/zebra/connected.c
index 7e4f0fc..39f4780 100644
--- a/zebra/connected.c
+++ b/zebra/connected.c
@@ -225,7 +225,11 @@
 
   /* Check same connected route. */
   if ((current = connected_check (ifp, (struct prefix *) ifc->address)))
-    connected_withdraw (current); /* implicit withdraw - freebsd does this */
+    {
+      if (CHECK_FLAG(current->conf, ZEBRA_IFC_CONFIGURED))
+	SET_FLAG(ifc->conf, ZEBRA_IFC_CONFIGURED);
+      connected_withdraw (current); /* implicit withdraw - freebsd does this */
+    }
   
   connected_announce (ifp, ifc);
 }
@@ -364,7 +368,11 @@
     ifc->label = XSTRDUP (MTYPE_CONNECTED_LABEL, label);
   
   if ((current = connected_check (ifp, (struct prefix *) ifc->address)))
-    connected_withdraw (current); /* implicit update of existing address */
+    {
+      if (CHECK_FLAG(current->conf, ZEBRA_IFC_CONFIGURED))
+	SET_FLAG(ifc->conf, ZEBRA_IFC_CONFIGURED);
+      connected_withdraw (current); /* implicit update of existing address */
+    }
   
   connected_announce (ifp, ifc);
 }