summaryrefslogtreecommitdiffstats
path: root/zebra/ChangeLog
Commit message (Collapse)AuthorAgeFilesLines
* + fix bug#326 by rib_lookup_and_pushup()pilot2008-02-261-0/+6
|
* [link-detect] Improve BSD support.ajs2008-01-111-0/+7
| | | | | | | | | | | | 2008-01-11 Andrew J. Schorr <ajschorr@alumni.princeton.edu> * lib/zebra.h: Revert previous change, no need to include <net/if_media.h> here. * zebra/ioctl.c: If HAVE_BSD_LINK_DETECT is defined, include <net/if_media.h> (if_get_flags) Remove debug messages about BSD link state. * zebra/kernel_socket.c: (bsd_linkdetect_translate) If link state is unknown, we should set the IFF_RUNNING flag.
* [link-detect] Try to get BSD link-detect to work properly.ajs2008-01-101-0/+9
| | | | | | | | | | | | | | | 2008-01-10 Ingo Flaschberger <if@xip.at> * configure.ac: Define HAVE_BSD_LINK_DETECT if <net/if_media.h> is present. * lib/zebra.h: If HAVE_BSD_LINK_DETECT is defined, include <net/if_media.h>. * zebra/ioctl.c: (if_get_flags) If HAVE_BSD_LINK_DETECT, use the SIOCGIFMEDIA ioctl to ascertain link state. * zebra/kernel_socket.c: (bsd_linkdetect_translate) New function to map the ifm_data.ifi_link_state value into the IFF_RUNNING flag. (ifm_read) Call bsd_linkdetect_translate to fix the IFF_RUNNING flag before calling if_flags_update.
* [link-detect] Static interface routes should behave properly with link-detect.ajs2008-01-081-0/+6
| | | | | | | | 2008-01-08 Michael Larson <mike@vyatta.com> * zebra_rib.c: (nexthop_active_check) Replace if_is_up with if_is_operative to solve problems with static interface routes not behaving properly with link-detect.
* + fixed bug #418 (changing address on an existing interface doesn't cause ↵pilot2007-11-121-0/+7
| | | | existing static routes to be revalidated)
* + fix the bug reported by Milan Kocian (IPv6 route handling was broken by ↵pilot2007-10-241-0/+6
| | | | | | the RIB debug changeset). after
* + rib_process() speedup for multi-nexthop route nodespilot2007-10-041-0/+5
|
* + Minor bugfix: IPv6 prefixes were logged incorrectly in RIB debugging ↵pilot2007-10-031-1/+7
| | | | calls. Fixed.
* + sayonara old_pid!pilot2007-09-141-0/+5
|
* + fixed bug #402: now the second zebra process doesn't destroy routespilot2007-09-141-0/+2
| | | | | | | of the first one before dying + we are not going to receive routing messages originated by old_pid, because rib_sweep_route() is called after damon() now. This will allow to drop old_pid completely soon.
* Switch from LOOKUP() to lookup() for rtm_type (see bug #401 for details).pilot2007-09-141-0/+8
|
* * rt_socket.c: (kernel_rtm_ipv4) prefix_buf could be passedpilot2007-09-121-0/+5
| | | | to zlog_err() uninitialized with debug disabled. Fixed.
* + fixed bug #400: adjusted rtread_sysctl.c:route_read()pilot2007-09-061-0/+6
|
* Looks like bug #320 is finally fixed now.pilot2007-08-211-0/+2
|
* Fixed ioctl_solaris.c:if_get_mtu() for IPv6'less operationpilot2007-08-211-0/+6
|
* Fixed bug #394 "RTF_DONE is ignored in rtm_read()"pilot2007-08-171-0/+5
|
* Merged own patch for bug #390 (rewrite ↵pilot2007-08-141-0/+5
| | | | zebra/zebra_rib.c:nexthop_active_update())
* Merged own patch for the bug #391 (debugging and comments mostly).pilot2007-08-131-0/+16
|
* Use the proper field length for the peer's address (netlink_interface_addr)vize2007-08-101-0/+5
|
* [zebra] Add extra debug logging for RIB and RIB queueingpaul2007-08-061-0/+5
| | | | | | | 2007-08-06 Denis Ovsienko * zebra_rib.c: (general) Add extra debug logging for RIB and RIB queue.
* Bugzilla #384.gdt2007-08-021-0/+6
| | | | | | | | | | | 2007-08-02 Denis Ovsienko * rt_socket.c (kernel_rtm_ipv4): Only call rtm_write when changes are intended. Don't set FIB flag on failed additions (such as occur with multiple paths. http://bugzilla.quagga.net/attachment.cgi?id=235&action=view
* [zebra] rib loop check for RIB_ENTRY_REMOVED checks wrong varpaul2007-06-271-0/+7
| | | | | | | | | 2007-06-25 Denis Ovsienko * zebra_rib.c: (rib_add_ipv4_multipath) Loop through RIB is using 'same' variable, but RIB_ENTRY_REMOVED check is testing the constant 'rib' variable, fix. Impact unknown at this point.
* [zebra] Trivial patches so we can compile when IPv6 is not enabledajs2007-05-301-0/+9
| | | | | | | | | | | 2007-05-30 Andrew J. Schorr <ajschorr@alumni.princeton.edu> * zebra_routemap.c: (route_set_src_compile) Use '#ifdef HAVE_IPV6' as needed. * zebra_vty.c: (vty_show_ip_route_detail, vty_show_ip_route) Use '#ifdef HAVE_IPV6' as needed. (show_ip_protocol) Move function definition outside of '#ifdef HAVE_IPV6' section.
* [PtP] Fix BSD problems with PtP interfaces: must treat RTA_BRD as peer addressajs2007-05-171-0/+9
| | | | | | | | | | | 2007-05-17 Andrew J. Schorr <ajschorr@alumni.princeton.edu> * kernel_socket.c: (ifam_read_mesg) Grab RTA_DST and RTA_GATEWAY addresses from the message (if present, which seems unlikely on current BSD platforms), and show them in the debug messages. Also, add ifam_flags to the debug messages. (ifam_read) If the interface is point-to-point, then the RTA_BRD address should be treated as a peer address.
* [zebra] Routemap support on received routes, with 'set src' command (linux)paul2007-05-021-0/+36
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 2007-05-01 David L Stevens <dlstevens@us.ibm.com> * (general) These changes collectively add route-map and prefix-list support to zebra and fix a bug in "show route-map" (with no argument). * doc/main.texi: added route-map, prefix-list, ip protocol and set src documentation * lib/command.h: added PROTOCOL_NODE type * lib/log.c: (proto_name2num) new function, protocol name to number translation. * lib/routemap.c: (vty_show_route_map) fixed "show route-map" without route-map name * lib/routemap.h: added RMAP_ZEBRA type * lib/zebra.h: added proto_name2num() prototype * vtysh/extract.pl.in: added VTYSH_ZEBRA flag for route-map and plist * vtysh/Makefile.am: added zebra_routemap.c * vtysh/vtysh.h: added VTYSH_ZEBRA flag to VTYSH_RMAP * zebra/connected.c: (connected_up_ipv4) added src preference argument to rib_add_ipv4() * zebra/kernel_socket.c: (rtm_read) ditto * zebra/main.c: added prefix list initialization * zebra/Makefile.am: added zebra_routemap.c source file * zebra/rib.h: added generic address union "g_addr" and use in existing places that had an explicit union. Added "src" to struct nexthop. Added preferred src arg to nexthop_ipv4_add and rib_add_ipv4. * zebra/rt_netlink.c: (netlink_routing_table) set preferred source on netlink messages. (netlink_route_change) ditto (netlink_route_multipath) ditto. * zebra/rtread_getmsg.c: (handle_route_entry) added (NULL) src to rib_add_ipv4() call. * zebra/rtread_proc.c: (proc_route_read) ditto * zebra/zebra_rib.c: (nexthop_ipv4_add) add src argument. (nexthop_ipv4_ifindex_add) ditto (rib_add_ipv4) ditto (nexthop_active_check) Add route-map processing. * zebra/zebra_routemap.c: new file for zebra route-map commands. * zebra/zebra_vty.c: (ip_protocol_cmd) Apply route-map to protocol (vty_show_ip_route_detail) added "src" printing (vty_show_ip_route) ditto (show_ip_protocol_cmd) new command, list routemaps. (config_write_protocol) write out routemap protocl config. (zebra_vty_init) Install the new routemap protocol commands. * zebra/zserv.c: (zread_ipv4_add) added (NULL) src arg (zebra_init) init zebra route-maps. * zebra/zserv.h: add zebra_route_map_init
* [zebra/solaris] fix if_get_index passing wrong arg to lifreq_set_namepaul2007-04-291-0/+2
| | | | | | | 2007-04-29 Paul Jakma <paul.jakma@sun.com> * if_ioctl_solaris.c: (if_get_index) Fix bogus argument passed to lifreq_set_name().
* [zebra] Fix merge error in previous solaris changesetpaul2007-04-291-0/+4
| | | | | | 2007-04-29 Paul Jakma <paul.jakma@sun.com> * ioctl{_solaris,}.c: (if_get_mtu) Fix missing ; in last commit.
* [zebra] MTU change should propogate to zserv client on BSD/Solarispaul2007-04-101-0/+5
| | | | | | | 2007-04-10 Paul Jakma <paul.jakma@sun.com> * ioctl{_solaris,}.c: (if_get_mtu) Ping clients via zebra_interface_up_update if MTU is changed.
* [zebra] Retain configured IPv4 address upon removal by kernelpaul2007-04-101-0/+3
| | | | | | | | 2007-04-08 Paul Jakma <paul.jakma@sun.com> * interface.c: (if_delete_update) Address removal triggered by kernel shouldn't remove configured IPv4 address from connected list.
* [testzebra] stubs should call kernel_address_add on IP address installpaul2007-04-101-0/+6
| | | | | | | | 2007-04-08 Paul Jakma <paul.jakma@sun.com> * {ioctl,kernel}_null.c: Install of IP address should reflect back to zebra via kernel_address_add..., makes testzebra more useful.
* [zebra] Bug #351: Don't redistribute routes to ipv4 link-local prefixespaul2007-04-101-0/+8
| | | | | | | | | | | 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.
* [zebra] Fix interface metric bug on BSDpaul2007-03-061-0/+7
| | | | | | | | | 2007-03-06 Paul Jakma <paul.jakma@sun.com> * kernel_socket.c: (ifam_read) Do not update interface metric on receipt of NEW/DEL ADDR messages, bogus as: a) some systems dont include iface metric for address events b) we didn't update clients either. Initial diagnosis by Eugene Grosbein.
* [zebra] IRDP should ignore non-IPv4 addressespaul2007-02-261-0/+6
| | | | | | | | 2007-02-26 Robert Olsson <Robert.Olsson@data.slu.se> * irdp_main.c: (irdp_send_thread) Skip non-AF_INET addresses, i.e. do not try interpret IPv6 addresses as IPv4 addresses to broadcast in IRDP announcements..
* [zebra] For solaris IPv6 PtP interfaces, try to support prefixlen != 128ajs2006-12-131-0/+7
| | | | | | | | | 2006-12-13 Andrew J. Schorr <ajschorr@alumni.princeton.edu> * if_ioctl_solaris.c: (if_get_addr) For IPv6, stop assuming that all IFF_POINTOPOINT have prefixlen of IPV6_MAX_BITLEN. Instead, always try the SIOCGLIFSUBNET ioctl; if that fails, then we fall back to IPV6_MAX_BITLEN for PtP interfaces.
* [PtP over ethernet] New peer flag allows much more addressing flexibilityajs2006-12-121-0/+50
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 2006-12-12 Andrew J. Schorr <ajschorr@alumni.princeton.edu> * if.h: (struct connected) Add new ZEBRA_IFA_PEER flag indicating whether a peer address has been configured. Comment now shows the new interpretation of the destination addr: if ZEBRA_IFA_PEER is set, then it must contain the destination address, otherwise it may contain the broadcast address or be NULL. (CONNECTED_DEST_HOST,CONNECTED_POINTOPOINT_HOST) Remove obsolete macros that were specific to IPv4 and not fully general. (CONNECTED_PEER) New macro to check ZEBRA_IFA_PEER flag. (CONNECTED_PREFIX) New macro giving the prefix to insert into the RIB: if CONNECTED_PEER, then use the destination (peer) address, else use the address field. (CONNECTED_ID) New macro to come up with an identifying address for the struct connected. * if.c: (if_lookup_address, connected_lookup_address) Streamline logic with new CONNECTED_PREFIX macro. * prefix.h: (PREFIX_COPY_IPV4, PREFIX_COPY_IPV6) New macros for better performance than the general prefix_copy function. * zclient.c: (zebra_interface_address_read) For non-null destination addresses, set prefixlen to equal the address prefixlen. This is needed to get the new CONNECTED_PREFIX macro to work properly. * connected.c: (connected_up_ipv4, connected_down_ipv4, connected_up_ipv6, connected_down_ipv6) Simplify logic using the new CONNECTED_PREFIX macro. (connected_add_ipv4) Set prefixlen in destination addresses (required by the CONNECTED_PREFIX macro). Use CONNECTED_PEER macro instead of testing for IFF_POINTOPOINT. Delete invalid warning message. Warn about cases where the ZEBRA_IFA_PEER is set but no destination address has been supplied (and turn off the flag). (connected_add_ipv6) Add new flags argument so callers may set the ZEBRA_IFA_PEER flag. If peer/broadcast address satisfies IN6_IS_ADDR_UNSPECIFIED, then reject it with a warning. Set prefixlen in destination address so CONNECTED_PREFIX will work. * connected.h: (connected_add_ipv6) Add new flags argument so callers may set the ZEBRA_IFA_PEER flag. * interface.c: (connected_dump_vty) Use CONNECTED_PEER macro to decide whether the destination address is a peer or broadcast address (instead of checking IFF_BROADCAST and IFF_POINTOPOINT). * if_ioctl.c: (if_getaddrs) Instead of setting a peer address only when the IFF_POINTOPOINT is set, we now accept a peer address whenever it is available and not the same as the local address. Otherwise (no peer address assigned), we check for a broadcast address (regardless of the IFF_BROADCAST flag). And must now pass a flags value of ZEBRA_IFA_PEER to connected_add_ipv4 when a peer address is assigned. The same new logic is used with the IPv6 code as well (and we pass the new flags argument to connected_add_ipv6). (if_get_addr) Do not bother to check IFF_POINTOPOINT: just issue the SIOCGIFDSTADDR ioctl and see if we get back a peer address not matching the local address (and set the ZEBRA_IFA_PEER in that case). If there's no peer address, try to grab SIOCGIFBRDADDR regardless of whether IFF_BROADCAST is set. * if_ioctl_solaris.c: (if_get_addr) Just try the SIOCGLIFDSTADDR ioctl without bothering to check the IFF_POINTOPOINT flag. And if no peer address was found, just try the SIOCGLIFBRDADDR ioctl without checking the IFF_BROADCAST flag. Call connected_add_ipv4 and connected_add_ipv6 with appropriate flags. * if_proc.c: (ifaddr_proc_ipv6) Must pass new flags argument to connected_add_ipv6. * kernel_socket.c: (ifam_read) Must pass new flags argument to connected_add_ipv6. * rt_netlink.c: (netlink_interface_addr) Copy logic from iproute2 to determine local and possible peer address (so there's no longer a test for IFF_POINTOPOINT). Set ZEBRA_IFA_PEER flag appropriately. Pass new flags argument to connected_add_ipv6. (netlink_address) Test !CONNECTED_PEER instead of if_is_broadcast to determine whether the connected destination address is a broadcast address. * bgp_nexthop.c: (bgp_connected_add, bgp_connected_delete) Simplify logic by using new CONNECTED_PREFIX macro. * ospf_interface.c: (ospf_if_is_configured, ospf_if_lookup_by_prefix, ospf_if_lookup_recv_if) Simplify logic using new CONNECTED_PREFIX macro. * ospf_lsa.c: (lsa_link_ptop_set) Using the new CONNECTED_PREFIX macro, both options collapse into the same code. * ospf_snmp.c: (ospf_snmp_if_update) Simplify logic using new CONNECTED_ID macro. (ospf_snmp_is_if_have_addr) Simplify logic using new CONNECTED_PREFIX macro. * ospf_vty.c: (show_ip_ospf_interface_sub) Use new CONNECTED_PEER macro instead of testing the IFF_POINTOPOINT flag. * ospfd.c: (ospf_network_match_iface) Use new CONNECTED_PEER macro instead of testing with if_is_pointopoint. And add commented-out code to implement alternative (in my opinion) more elegant behavior that has no special-case treatment for PtP addresses. (ospf_network_run) Use new CONNECTED_ID macro to simplify logic. * rip_interface.c: (rip_interface_multicast_set) Use new CONNECTED_ID macro to simplify logic. (rip_request_interface_send) Fix minor bug: ipv4_broadcast_addr does not give a useful result if prefixlen is 32 (we require a peer address in such cases). * ripd.c: (rip_update_interface) Fix same bug as above.
* [zebra] Changes of nexthops of static routes didnt take effectpaul2006-12-081-0/+6
| | | | | | | | 2006-12-08 Piotr Chytla <pch@packetconsulting.pl> * zebra_rib.c: (static_install_ipv{4,6}) Case where existing RIB is updated must explicitely rib_addqueue the route_node, to ensure the update actually takes effect.
* 2006-09-13 Tom Everett <tom@khubla.com>gdt2006-09-131-0/+5
| | | | | * kernel_socket.c (rtm_type_str): ifdef RTM_OLD{ADD,DEL} to compile on systems that no longer define them.
* [zebra] trivial: rtadv.h depends on interface.hpaul2006-08-061-0/+1
| | | | | | 2006-08-06 Paul Jakma <paul.jakma@sun.com> * rtadv.h: depends on interface.h, so should include it.
* [zebra] fix inconsistencies in ifstat_update_* declarations and definitionspaul2006-08-061-0/+9
| | | | | | | | | | | 2006-08-06 Paul Jakma <paul.jakma@sun.com> * interface.h: (ifstat_update_proc) declaration should match ifstat_update_sysctl really, which is to not return status, as such status is not used anywhere. * if_{proc,sysctl}.c: Make ifstat_update_* definitions and return values consistent with each other and their declarations, ie: (void) (*) (void).
* [zebra] IRDP: Move stream_free to where its created, probably fixing a leakpaul2006-08-041-0/+10
| | | | | | | | | | | | 2006-08-01 Paul Jakma <paul.jakma@sun.com> * irdp_main.c: (irdp_advertisement) free the stream here, when done, right under where it was allocated so it's blindingly obvious it's correct. This possibly fixes a very slow leak of streams in zebra. * irdp_packet.c: (send_packet) don't free the stream here as it's hard to tell if right, plus an error case seemed to returning before free anyway.
* [zebra] add more stuff to misc_null to avoid compile breakagespaul2006-08-041-0/+5
| | | | | | | 2006-08-04 Paul Jakma <paul.jakma@sun.com> * misc_null.c: Add ifstat_update_sysctl, add another required header.
* [testzebra] Patch to misc_null.c to get older gcc to recognize #pragma tricksajs2006-08-021-0/+5
| | | | | | | 2006-08-02 Andrew J. Schorr <ajschorr@alumni.princeton.edu> * misc_null.c: Must include header files to get older versions of gcc to process the #pragma statements properly.
* [zebra] Bug #268, Fix race between add/delete of routes, sanitise rib queueingpaul2006-07-271-1/+31
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 2006-07-27 Paul Jakma <paul.jakma@sun.com> * rib.h: (struct rib) Add a route_node rn_status flag field, this has to be copied every time head RIB of a route_node changes. Remove the rib lock field, not needed - see below. Add a status field for RIB-private flags. * zebra_rib.c: Add a global for the workqueue hold time, useful for testing. (general) Fix for bug #268. Problem originally detailed by Simon Bryden in [quagga-dev 4001]. Essentially, add/delete of a RIB must happen /before/ the queue. Best-path selection (ie rib_process) and reaping of freed RIBs can then be done after queueing. Only the route_node is queued - no important RIB state (i.e. whether a RIB is to be deleted) is queued. (struct zebra_queue_node_t) Disappears, no longer need to track multiple things on the queue, only the route_node. (rib_{lock,unlock}) removed, RIBs no longer need to be refcounted, no longer queued. (rib_queue_qnode_del) Removed, deleted RIBs no longer deleted via the queue. (rib_queue_add_qnode) deleted (rib_queue_add) Only the route_node is queued for best-path selection, we can check whether it is already queued or not and avoid queueing same node twice - struct rib * argument is not needed. (rib_link/unlink) (un)link RIB from route_node. (rib_{add,del}node) Front-end to updates of a RIB. (rib_process) Reap any deleted RIBs via rib_unlink. Unset the route_node 'QUEUED' flag. (General) Remove calls to rib_queue_add where add/del node was called - not needed, update calls where not. Ignore RIB_ENTRY_REMOVEd ribs in loops through route_nodes
* [zebra] Add 'debug zebra rib' commandspaul2006-07-271-0/+1
| | | | | | 2006-07-27 Paul Jakma <paul.jakma@sun.com> * debug.{c,h}: Add 'debug zebra rib' and 'debug zebra rib queue'.
* [zebra] Add test rig code, for testing the zebra RIBpaul2006-07-271-0/+12
| | | | | | | | | | | | | | 2006-07-27 Paul Jakma <paul.jakma@sun.com> * {ioctl,kernel}_null.c: Dummy/Null kernel method implementations, useful for testing zebra code that calls such methods. * {redistribute,misc}_null.c: Dummy/Null methods, as above. But for zclient, and for various misc functions. * test_main.c: Test harness for zebra, currently just to test the RIB. * Makefile.am: Build testzebra using above. * zebra_rib.c: Add a global for the workqueue hold time, useful for testing.
* [zebra] Connected routes must always be added to main tablepaul2006-07-271-0/+8
| | | | | | | | | | 2006-07-27 Rumen Svobodnikov <rumen@telecoms.bg> * connected.c: (connected_up_ipv4) interface connected routes always go to table main (or otherwise they cannot be used by linux as nexthops) * zserv.c: (zread_ipv4_add) send route to the correct routing table * zebra_rib.c (static_install_ipv4) set routing table
* [zebra] Fix CID #104, check addr for null, and #18, check nexthop type argspaul2006-07-021-0/+7
| | | | | | | | | 2006-07-02 Paul Jakma <paul.jakma@sun.com> * rt_netlink.c: (netlink_interface_addr) Fix CID #104, can not proceed if addr is NULL. * zebra_rib.c: (static_add_ipv6) Fix CID #18, double check required arguments are supplied for the given nexthop type.
* [zebra] Fix forgetfulness wrt configured address on FreeBSDpaul2006-06-151-0/+10
| | | | | | | | | | | | | | | | 2006-06-15 Paul Jakma <paul.jakma@sun.com> * (general) The key fixes are actually Andrew Schorr's. * interface.c: (ip_address_uninstall) Unset the configured flag. * connected.c: (connected_same) new helper, check whether two connected are same. (connected_implicit_withdraw) new helper, consolidation of existing code in connected_add_ipv{4,6}. Try filter out unneeded Zserv address delete/adds when address is exact same. Where old address is implicitely removed, be sure to preserve the IFC_CONFIGURED flag if set, fixes bug where configured addresses were being lost on FreeBSD.
* [zebra] remove internal if_flag_dump, use libzebras version.paul2006-06-151-0/+5
| | | | | | | | | 2006-06-15 Paul Jakma <paul.jakma@sun.com> * lib/if.c: (if_flag_dump) remove the whitespace indentation, callers should provide. * zebra/interface.c: (if_flag_dump_vty) redundant code, remove. (if_dump_vty) use libzebra if_flag_dump.
* [interface configuration] Try to avoid losing address info after shutdown.ajs2006-05-211-0/+8
| | | | | | | | | | | | 2006-05-21 Andrew J. Schorr <ajschorr@alumni.princeton.edu> * if.h: (struct connected) Document the meaning of the ZEBRA_IFC_REAL and ZEBRA_IFC_CONFIGURED flags. * connected.c: (connected_withdraw) Do not delete the connected address if the ZEBRA_IFC_CONFIGURED flag is set. (connected_add_ipv4,connected_add_ipv6) Before calling connected_withdraw, unset the ZEBRA_IFC_CONFIGURED flag on the superseded connected structure.