+2008-07-01 Paul Jakma <paul.jakma@sun.com>
+
+ * ioctl.c: (if_get_flags) Deal more gracefully with failure
+ of the BSD link-state SIOCGIFMEDIA ioctl, as some interfaces
+ apparently don't implement it (e.g. tun).
+ Also, make BSD link-state checking be conditional on the
+ 'link-detect' interface configuration flag, as it should be.
+ Fixes bug #465.
+
+2008-06-02 Denis Ovsienko
+
+ * connected.c: (connected_up_ipv4, connected_down_ipv4,
+ connected_up_ipv6, connected_down_ipv6): don't call
+ work_queue_aim_head()
+ * rib.h: adjust RIB_ROUTE_QUEUED macro for meta_queue,
+ declare meta_queue structure
+ * zebra_rib.c: (process_subq, meta_queue_process, rib_meta_queue_add,
+ meta_queue_new) new functions; (rib_queue_add) don't try checking
+ RIB_QUEUE_ADDED flag, rib_meta_queue_add() does it better, take care
+ of the meta queue instead; (rib_queue_init) initialize the meta queue
+ as well; (rib_lookup_and_pushup) don't call work_queue_aim_head();
+ (rib_process) only do actual processing, don't do deallocation;
+ * zserv.h: include meta_queue field into zebra_t structure
+
+2008-05-29 Stephen Hemminger <stephen.hemminger@vyatta.com>
+
+ * rt_netlink.c: (netlink_install_filter) BPF filter to catch and
+ drop responses to zebra's own route messages.
+ (kernel_init) add BPF filter on the netlink socket.
+
+2008-02-26 Denis Ovsienko
+ * zebra_rib.[ch]: (rib_lookup_and_pushup) New function, which makes sure,
+ that if_set_prefix() has nothing in its way of assigning an address.
+ * ioctl.c: (if_set_prefix) Use rib_lookup_and_pushup() to resolve
+ bug #326.
+
+2008-01-11 Andrew J. Schorr <ajschorr@alumni.princeton.edu>
+
+ * ioctl.c: If HAVE_BSD_LINK_DETECT is defined, include <net/if_media.h>
+ (if_get_flags) Remove debug messages about BSD link state.
+ * kernel_socket.c: (bsd_linkdetect_translate) If link state
+ is unknown, we should set the IFF_RUNNING flag.
+
+2008-01-10 Ingo Flaschberger <if@xip.at>
+
+ * ioctl.c: (if_get_flags) If HAVE_BSD_LINK_DETECT, use the SIOCGIFMEDIA
+ ioctl to ascertain link state.
+ * 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.
+
+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.
+
+2007-11-12 Denis Ovsienko
+
+ * connected.c: (connected_up_ipv4, connected_down_ipv4,
+ connected_up_ipv6, connected_down_ipv6) Collect all changed
+ connected routes closest possible to the RIB work queue, so
+ that the rest can be revalidated correctly.
+
+2007-10-24 Denis Ovsienko
+
+ * kernel_socket.c: (rtm_read) we used to ignore own messages,
+ but the RIB debug commit broke it for IPv6 case (reported
+ by Milan Kocian). Fixed.
+
+2007-10-04 Denis Ovsienko
+
+ * zebra_rib.c: (rib_process) escape from the nexthop
+ iteration cycle earliest possible to save CPU time.
+
+2007-10-03 Denis Ovsienko
+
+ * zebra_rib.c: (rib_process, rib_link, rib_addnode,
+ rib_unlink, rib_delnode) log IPv6 prefixes same well
+ as IPv4 ones are logged.
+
+2007-09-14 Denis Ovsienko
+
+ * rt_socket.c: (kernel_rtm_ipv4) Use lookup() instead of
+ LOOKUP/mes_lookup() for rtm_type_str, as this is more
+ appropriate for sparse code-spaces (#401).
+ * kernel_socket.c: (rtm_read, rtmsg_debug): Idem.
+ * kernel_socket.[ch]: We don't need rtm_type_str_max any more.
+ * main.c: (main) Don't call rib_sweep_route() before the
+ pidfile is acquired, this fixes bug #402.
+ * zserv.h: Dropped old_pid, since it's useless now. This
+ fixes bug #381.
+ * main.c: (main) Idem.
+ * test_main.c: (main) Idem.
+ * kernel_socket.c: (rtm_read) Idem.
+
+2007-09-12 Denis Ovsienko
+
+ * rt_socket.c: (kernel_rtm_ipv4) prefix_buf could be passed
+ to zlog_err() uninitialized with debug disabled. Fixed.
+
+2007-09-06 Denis Ovsienko
+
+ * rtread_sysctl.c: (route_read) Set RTF_DONE on the routing
+ messages when fetching initial kernel FIB, so rtm_read()
+ doesn't skip them.
+
+2007-08-21 Denis Ovsienko
+
+ * ioctl_solaris.c: (if_get_mtu) Don't break things if either
+ IPv6 was disabled at compile time or the current interface
+ hasn't it enabled.
+ * kernel_socket.c: (ifm_read) Don't forget to call if_get_mtu()
+ for updated interfaces.
+
+2007-08-17 Denis Ovsienko
+
+ * kernel_socket.c: (rtm_read) Ignore any routing socket messages
+ without RTF_DONE flag set, as they are just noise for us.
+
+2007-08-14 Denis Ovsienko
+
+ * zebra_rib.c: (nexthop_active_update) Added a comment
+ and rewrote nexthop iteration.
+
+2007-08-13 Denis Ovsienko
+
+ * kernel_socket.c: normalize rtm_type_str so it can be handled
+ by LOOKUP macro
+ * kernel_socket.c: (rtm_read) don't ignore self-generated
+ routing messages, so we can debug them; make use of
+ ZEBRA_ERR_RTNOEXIST; output more details in debug log.
+ * kernel_socket.c: (rtmsg_debug) make use of LOOKUP macro
+ * kernel_socket.h: let the world know about rtm_type_str[_max]
+ * rib.h: 3 more debugging functions and 5 return codes
+ * rt_socket.c: (kernel_rtm_ipv4) dump IP prefix and masklen;
+ complain about strange rtm_write() return values
+ * zebra_rib.c: (rib_lookup_ipv4_route, rib_dump,
+ rib_lookup_and_dump) --- new functions; more comments;
+ more debug logging
+
+2007-08-10 Emmanuel Vize <emmanuel.vize@6wind.com>
+
+ * rt_netlink.c: (netlink_interface_addr) Use the appropriate field length for the address
+ (acknowledge Andy's comment).
+
+2007-08-06 Denis Ovsienko
+
+ * zebra_rib.c: (general) Add extra debug logging for RIB and
+ RIB queue.
+
+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.
+
+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.
+
+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.
+
+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.
+
+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).
+ * connected.c: (connected_up_ipv4) added src preference argument
+ to rib_add_ipv4()
+ * kernel_socket.c: (rtm_read) ditto
+ * main.c: added prefix list initialization
+ * Makefile.am: added zebra_routemap.c source file
+ * 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.
+ * rt_netlink.c: (netlink_routing_table) set preferred source on
+ netlink messages.
+ (netlink_route_change) ditto
+ (netlink_route_multipath) ditto.
+ * rtread_getmsg.c: (handle_route_entry) added (NULL) src to
+ rib_add_ipv4() call.
+ * rtread_proc.c: (proc_route_read) ditto
+ * 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_routemap.c: new file for zebra route-map commands.
+ * 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.
+ * zserv.c: (zread_ipv4_add) added (NULL) src arg
+ (zebra_init) init zebra route-maps.
+ * zserv.h: add zebra_route_map_init
+
+2007-04-29 Paul Jakma <paul.jakma@sun.com>
+
+ * ioctl{_solaris,}.c: (if_get_mtu) Fix missing ; in last commit.
+ * if_ioctl_solaris.c: (if_get_index) Fix bogus argument passed
+ to lifreq_set_name().
+
+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.
+
+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.
+ * interface.c: (if_delete_update) Address removal triggered
+ by kernel shouldn't remove configured IPv4 address from connected
+ list.
+
+2007-04-07 Paul Jakma <paul.jakma@sun.com>
+
+ * redistribute.c: (zebra_check_addr) Don't redistribute routes
+ to IPv4 link-local prefixes, fixes bug #351.
+ * redistribute.h: Export zebra_check_addr.
+ * router-id.c: (router_id_bad_address) re-use zebra_check_addr
+ rather than implementing similar logic.
+
+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.
+
+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..
+
+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.
+
+2006-12-12 Andrew J. Schorr <ajschorr@alumni.princeton.edu>
+
+ * 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.
+
+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>
+
+ * kernel_socket.c (rtm_type_str): ifdef RTM_OLD{ADD,DEL} to
+ compile on systems that no longer define them.
+
+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).
+ * rtadv.h: depends on interface.h, so should include it.
+
+2006-08-04 Paul Jakma <paul.jakma@sun.com>
+
+ * misc_null.c: Add ifstat_update_sysctl, add another required
+ header.
+
+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.
+
+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.
+
2006-07-27 Paul Jakma <paul.jakma@sun.com>
* {ioctl,kernel}_null.c: Dummy/Null kernel method implementations,