+2005-11-23 Paul Jakma <paul.jakma@sun.com>
+
+ * (general) fix some small compile errors, and mark several
+ functions as static.
+ * kernel_socket.c: (ifan_read) should be static.
+ fix missing brackets.
+ (ifm_read,ifam_read,rtm_read_mesg,kernel_read) Make static
+ (ifam_read_mesg) make static. fix incorrect variable name.
+ (rtm_read) make static. Fix call to rib_delete_ipv4 which
+ should be rib_delete_ipv6.
+ (routing_socket,kernel_init) should be static. Void argument
+ should be specified as such, not left incomplete.
+ * rt_netlink.c: rt.h should be included, contains prototypes of
+ exported functions.
+ (kernel_delete_ipv6_old) fix sign of index argument.
+ * rt_socket.c: Exact same as previous. Also, make various
+ functions static.
+ * rtread_getmsg.c: Include zserv.h, which prototypes
+ route_read. Make static.
+ * rtread_sysctl.c: zserv.h and rt.h should be included.
+ fix definition of route_read.
+
+2005-11-14 Paul Jakma <paul.jakma@sun.com>
+
+ * zebra_rib.c: (rib_process) convert to new workqueue specs and
+ shut up gcc, which complains about cast from void via
+ function parameters, for some dumb reason. Do the cast
+ inside the function instead.
+ (rib_queue_qnode_del) ditto.
+ (rib_queue_init) no need for the casts anymore.
+
+2005-11-12 Alexander Gall <gall@switch.ch>
+
+ * See [quagga-dev 1815]
+ * kernel_socket.c: (rtm_write) Use SAROUNDUP when HAVE_SIN_LEN
+ is not available.
+ * rt_socket.c: (kernel_rtm_ipv6(_multipath)) set family to
+ AF_INET6 on ipv6 routes.
+
+2005-11-12 Paul Jakma <paul.jakma@sun.com>
+
+ * kernel_socket.c: Add RTA_NAME_GET macro to extract name from
+ sockaddr_dl. Add some more RTF_ flags.
+ * (ifan_read) Add some debug messages.
+ * (ifm_read) Add more debug messages. More robust cross-checks
+ of index against name.
+ Fall back to by-name lookup if the index lookup fails, future
+ proofing more than anything else.
+ (ifam_read_mesg) Read RTA_IFP. Add debug messages.
+ (ifam_read) More debug. If there's an RTA_IFP and it isn't
+ the name of the interface, save it as the label.
+ (rtm_read_mesg) Read RTA_IFP.
+ (rtm_read) allow name to be retrieved.
+ (rtmsg_debug) expand on the debug message.
+
+2005-11-11 Paul Jakma <paul.jakma@sun.com>
+
+ * kernel_socket.c: (ifm_read) arithmetic on void pointer
+ warning.
+ (ifam_read) Fix error from connected-with-label merge,
+ something crept in from the pending Solaris kernel_socket.c
+ patch which shouldn't have.
+
+2005-11-03 Paul Jakma <paul.jakma@sun.com>
+
+ * connected.{c,h}: Include memory.h
+ (connected_add_ipv4) Use MTYPE for ifc label.
+ (connected_add_ipv6) Also should accept label. Store it in ifp.
+ (connected_del_ipv4) Taking label as argument is pointless.
+ * rt_netlink.c: (netlink_interface_addr) update label usage
+ for connected_{add,delete} functions.
+ * if_ioctl.c: (if_getaddrs) NULL label for connected_add_ipv6.
+ * if_ioctl_solaris.c: (interface_list_ioctl) Pass LIFC_NOXMIT
+ so we also find out about NOXMIT interfaces like VNI.
+ Bit of hackery to turn interface names into the primary
+ interface name, later with routing socket messages we only
+ will about primary interfaces anyway, so we must normalise
+ the name.
+ (if_get_addr) take label as argument, so it can
+ be passed to connected_add.
+ If label is provided, then it is interface name to issue the
+ ioctl for address information on, not the ifp name.
+ (interface_list) List AF_UNSPEC too, just in case.
+ * if_proc.c: (ifaddr_proc_ipv6) label for connected_add_ipv6.
+ * interface.c: (if_addr_wakeup) Some very bogus code - sets
+ IFF_RUNNING - add comment.
+ (if_refresh)
+ (ip_address_install) Use MTYPE for ifc label.
+ * ioctl_solaris.c: (if_mangle_up) New function. Hackery to make
+ IFF_UP reflect whether any addresses are left on the
+ interface, as we get signalled for IFF_UP flags change on the
+ primary interface only. Logical interfaces dont generate
+ IFINFO, but we do get an RTM_DELADDR.
+ (if_get_flags) Call if_mangle_up before return.
+ * kernel_socket.c: (ifam_read) Fixup calls to
+ connected_{add,delete} to match above changes. Rename gate
+ variable to brd, less confusing.
+ Pass the interface name as a label, if it is not same name
+ as ifp->name.
+
+2005-10-11 Paul Jakma <paul.jakma@sun.com>
+
+ * connected.{c,h}: (connected_{add,delete}_ipv4) label should
+ be const qualified.
+
+2005-10-01 Andrew J. Schorr <ajschorr@alumni.princeton.edu>
+
+ * zebra_vty.c: (route_type_str) Remove obsolete function: use new
+ library function zebra_route_string() instead. Note that there
+ are a few differences: for IPv6 routes, we now get "ripng" and
+ "ospf6" instead of the old behavior ("rip" and "ospf").
+ (route_type_char) Remove obsolete function: ues new library function
+ zebra_route_char() instead. Note that there is one difference:
+ the old function returned 'S' for a ZEBRA_ROUTE_SYSTEM route,
+ whereas the new one returns 'X'.
+ (vty_show_ip_route_detail,vty_show_ipv6_route_detail) Replace
+ route_type_str() with zebra_route_string().
+ (vty_show_ip_route,vty_show_ipv6_route) Replace route_type_char()
+ with zebra_route_char().
+
+2005-10-01 Andrew J. Schorr <ajschorr@alumni.princeton.edu>
+
+ * rt_netlink.c: (netlink_request) Use memset to clear structure
+ before calling sendto (eliminates a valgrind error message about
+ uninitialized data).
+
+2005-09-28 Alain Ritoux <alain.ritoux@6wind.com>
+
+ * zserv.c: Always provied distance for route add
+
+2005-09-28 Alain Ritoux <alain.ritoux@6wind.com>
+
+ * connected.c: flag connected_up_ipv6() and connected_down_ipv6()
+ usage with HAVE_IPV6
+
+2005-09-24 Hasso Tepper <hasso at quagga.net>
+
+ * rib.h: Add note about behaviour of rib_add_ipv[46]* functions -
+ add is treated as implicit withdraw.
+
+2005-09-21 David Young <dyoung@ojctech.com>
+
+ * zebra_rib.c: Reduce the height of some staircases. Fix
+ rib_delete_ipv6() to match routes in the RIB by their gateway as
+ well as by destination.
+
+2005-09-21 Paul Jakma <paul.jakma@sun.com>
+
+ * zebra_rib.c: (static_uninstall_ipv{4,6}) Fix regression wrt
+ removal of static routes with multiple-hops introduced with
+ the workqueue conversion. We should free the relevant
+ nexthop and then get rib_process to run, otherwise we just
+ get same static route back again (with no way to unconfigure
+ it, because its already deleted from configuration).
+
+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.
+
+2005-08-27 Hasso Tepper <hasso at quagga.net>
+
+ * zebra_rib.c, rib.h: Add distance and metric arguments to the
+ rib_add_ipv6() function so that IPv6 routes in RIB can have correct
+ metric. No IPv6 routing daemon uses distance yet though.
+ * zserv.c, connected.c, kernel_socket.c, rt_netlink.c,
+ rtread_proc.c,zserv.c: Pass metric and distance info to the
+ rib_add_ipv6().
+
+2005-07-29 Paul Jakma <paul.jakma@sun.com>
+
+ * interface.c: (if_delete_update) should always be available, not
+ just on RTM_IFANNOUNCE/NETLINK systems.
+ * kernel_socket.c: (ifan_read) only call if_delete_update when
+ interface departs, dont if_delete, because we wish to retain
+ interface configuration state even when interfaces are removed.
+ (ifm_read) If we dont have RTM_IFANNOUNCE, then transitioning
+ to down state is only chance we have to clean up interface in case
+ it is deleted (eg Solaris down -> unplumb -> plumb up).
+ * redistribute.c: (zebra_interface_delete_update) should always be
+ available, we /will/ call it now on all systems, via
+ if_delete_update.
+ * zserv.c: (zsend_interface_delete) ditto
+ (zsend_interface_address) Update the call-flow diagramme, to
+ reflect that if_delete_update /is/ now called on all systems,
+ potentially.
+ * zserv.h: (zsend_interface_delete) unconditionally exported, as
+ above.
+
+2005-06-28 Paul Jakma <paul.jakma@sun.com>
+
+ * (global) Extern and static'ification, with related fixups
+ of declarations, ensuring files include their own headers, etc.
+ * if_ioctl.c: (interface_info_ioctl) fix obvious arg mis-order in
+ list loop
+ * kernel_socket.c: (RTA_{ADDR,ATTR}_GET) fix mistake, NULL check
+ should be on DEST argument
+
+2005-06-14 Paul Jakma <paul.jakma@sun.com>
+
+ * kernel_socket.c: consolidate the IFAM{ADDR,MASK}GET and
+ RTM{ADDR,MASK}GET macros into generic rta_addrs macros,
+ RTA_{ADDR,ATTR}_GET.
+ (af_check) could use 'inline' attribute
+ (ifam_read_mesg) remove IFAM{ADDR,MASK}GET macro, change to
+ generic macro.
+ (rtm_read_mesg) similar
+
+2005-06-12 Hasso Tepper <hasso at quagga.net>
+
+ * rt_netlink.c: Remove netlink-addr socket declaration, it's not used.
+ * rt_netlink.c (netlink_parse_info): Fix debug messages - nlmsg_pid is
+ unsigned and one zlog call had swapped arguments.
+ * rt_netlink.c (netlink_route_multipath): Fix compile with disabled
+ IPv6 support.
+
+2005-05-31 Paul Jakma <paul.jakma@sun.com>
+
+ * zserv.c: (zsend_route_multipath) Fix bug if route is sent
+ with no NEXTHOP_FLAG_FIB nexthops. As ZAPI_MESSAGE_IFINDEX
+ and ZAPI_MESSAGE_NEXTHOP are always set, clients would try
+ read non-existent nexthop information and hit stream assert.
+ Zserv is still broken for multi-nexthop messages, but it always was.
+
+2005-05-06 Paul Jakma <paul.jakma@sun.com>
+
+ * zserv.h: Remove ZEBRA_PORT definition, its in lib/zebra.h now
+
+2005-04-28 Paul Jakma <paul.jakma@sun.com>
+
+ * rib.h: (struct rib) Add lock field for refcounting.
+ * zserv.h: (struct zebra_t) Add a ribq workqueue to the zebra
+ 'master' struct.
+ * zserv.c: (zread_ipv4_add) XMALLOC then memset should be XCALLOC.
+ * zebra_rib.c: Clean up refcounting of route_node, make struct rib
+ refcounted and convert rib_process to work-queue. In general,
+ rib's should be rib_addnode'd and delnode'd to route_nodes, and
+ these symmetrical functions will manage the locking of referenced
+ route_node and freeing of struct rib - rather than having users
+ manage each seperately - with much scope for bugs..
+ (newrib_free) removed and replaced with rib_lock
+ (rib_lock) new function, check state of lock and increment.
+ (rib_unlock) new function, check lock state and decrement. Free
+ struct rib if refcount hits 0, freeing struct nexthop's, as
+ newrib_free did.
+ (rib_addnode) Add RIB to route_node, locking both.
+ (rib_delnode) Delete RIB from route_node, unlocking each.
+ (rib_process) Converted to a work-queue work function.
+ Functional changes are minimal, just arguments, comments and
+ whitespace.
+ (rib_queue_add_qnode) Helper function to setup a ribq item.
+ (rib_queue_add) Helper function, same arguments as old
+ rib_process, to replace in callers of rib_process.
+ (rib_queue_qnode_del) ribq deconstructor.
+ (rib_queue_init) Create the ribq.
+ (rib_init) call rib_queue_init.
+ (remainder) Sanitise refcounting of route_node's. Convert to
+ rib_queue_add, rib_addnode and rib_delnode. Change XMALLOC/memset
+ to XCALLOC. Remove calls to nexthop_delete and nexthop_free.
+
+2005-04-10 Paul Jakma <paul@dishone.st>
+
+ * if_ioctl_solaris.c: (if_lookup_linklocal) fix order of args
+ in ALL_LIST_ELEMENTS_RO macro.
+
+2005-04-10 Andrew J. Schorr <ajschorr@alumni.princeton.edu>
+
+ * zserv.c (zebra_client_read): Fix bug: first read attempt should
+ read ZEBRA_HEADER_SIZE minus the number of bytes already read.
+ Improve efficiency by maintaining a calculation of the number
+ of bytes read instead of calling stream_get_endp multiple times.
+ If message length is too small, issue a warning message (not debug)
+ before closing the connection. And also check that message length
+ is not too big.
+
+2005-04-09 Hasso Tepper <hasso at quagga.net>
+
+ * rt_netlink.c: One tiny missing comma caused pointless debug messages
+ about IPv6 nexthops.
+
+2005-04-09 Hasso Tepper <hasso at quagga.net>
+
+ * rt_netlink.c (netlink_parse_info): Fix warning. It's safe to cast
+ status to unsigned here, because we already checked that it isn't
+ negative or 0.
+ * rt_netlink.c (netlink_interface_addr): Prefix length belongs to the
+ address, not to the interface.
+ * rt_netlink.c (netlink_route_multipath): Fix debug. No useless info
+ is printed out now and IPv6 info is handeled.
+
+2005-04-05 Paul Jakma <paul@dishone.st>
+
+ * zserv.c: print more helpful errors when we fail to successfully
+ bind and listen on zserv socket. Closes bugzilla #163.
+
+2005-04-02 Andrew J. Schorr <ajschorr@alumni.princeton.edu>
+
+ * if_ioctl.c: (interface_list_ioctl) Use if_get_by_name_len.
+ * if_proc.c: (ifaddr_proc_ipv6) Increase size of ifname buffer to
+ avoid overflow.
+ * kernel_socket.c: (ifan_read) Use if_get_by_name_len.
+
+2005-04-02 Andrew J. Schorr <ajschorr@alumni.princeton.edu>
+
+ * kernel_socket.c: (ifm_read) Use new if_lookup_by_name_len function
+ to save a memcpy.
+ * if_ioctl_solaris.c: (interface_list_ioctl) Fix subtle bug with new
+ if_get_by_name_len function.
+
+2005-04-02 Andrew J. Schorr <ajschorr@alumni.princeton.edu>
+
+ * interface.c: (if_new_intern_ifindex) Remove obsolete function.
+ (if_delete_update) After distributing the interface deletion message,
+ set ifp->ifindex to IFINDEX_INTERNAL.
+ (if_dump_vty) Detect pseudo interface by checking if ifp->ifindex is
+ IFINDEX_INTERNAL.
+ (zebra_interface) Check return code from interface_cmd.func.
+ Do not set internal ifindex values to if_new_intern_ifindex(),
+ since we now use IFINDEX_INTERNAL for all pseudo interfaces.
+ * kernel_socket.c: (ifm_read) Fix code and comments to reflect that
+ all internal interfaces now have ifp->ifindex set to IFINDEX_INTERNAL.
+ * rt_netlink.c: (set_ifindex) New function used to update ifp->ifindex.
+ Detects interface rename events by checking if that ifindex is already
+ being used. If it is, delete the old interface before assigning
+ the ifindex to the new interface.
+ (netlink_interface, netlink_link_change) Call set_ifindex to update
+ the ifindex.
+
+2005-03-31 Hasso Tepper <hasso at quagga.net>
+
+ * rt_netlink.c (netlink_talk_filter): Show always warning message,
+ it's not for debug.
+ * rt_netlink.c (netlink_talk): Don't assume we use netlink_cmd
+ although we do now actually.
+ * rt_netlink.c (netlink_route, netlink_route_multipath): Always use
+ netlink_cmd to send messages to the kernel.
+
+2005-03-30 Andrew J. Schorr <ajschorr@alumni.princeton.edu>
+
+ * irdp.h: Add prototype for irdp_sock_init, and fix protos for
+ other irdp_* functions.
+ * irdp_interface.c: (irdp_if_start) If irdp_sock is negative,
+ call irdp_sock_init to create the IRDP socket.
+ (irdp_if_init) Rename to irdp_init().
+ (get_iflist_ifp) Remove function that is a duplicate of
+ if_lookup_by_index.
+ (*) Make many functions static. And remove superfluous "\n" from
+ several zlog messages.
+ * irdp_main.c: (irdp_init) Remove function that used to call
+ irdp_if_init() and irdp_sock_init(), since we will now create
+ the socket only upon first use.
+ (irdp_sock_init) Do not update global irdp_sock variable, just
+ return the fd and assume that the caller will do so. If setsockopt
+ calls fail, close the socket before returning -1.
+ (*) Make many functions static.
+ * irdp_packet.c: Initialize irdp_sock to -1.
+ (irdp_read_raw) Call standard library function if_lookup_by_index
+ instead of get_iflist_ifp.
+ (irdp_recvmsg) Should be static, not global.
+
+2005-03-29 Andrew J. Schorr <ajschorr@alumni.princeton.edu>
+
+ * rt_netlink.c: (netlink_link_change) If the status of an
+ operative interface changes (e.g. MTU changes), the client
+ daemons should be notified by calling zebra_interface_up_update.
+ Previously, the information was being updated in zebra's
+ interface structure, but the clients were not notified of
+ changes to an operative interface.
+
+2005-03-25 Jean-Mickael Guerin <jean-mickael.guerin@6wind.com>
+ * interface.c, interface.h, rtadv.c, rtadv.h: modifications to
+ IPv6 Neighbor Discovery according to RFC3775, section 7:
+ o 1-bit Home Agent flag management in Router Advertisement (7.1).
+ o 1-bit Router Address flag management in Prefix Information
+ Option (7.2).
+ o Advertisement Interval Option (7.3)
+ o Home Agent Information Option (7.4)
+ o Changes to Sending Router Advertisements more frequently (7.5)
+
+2005-03-13 Hasso Tepper <hasso at quagga.net>
+
+ * zebra/interaface.c: "show interface description" command
+ implemented.
+
+2005-03-12 Paul Jakma <paul@dishone.st>
+
+ * rt_netlink.c: (netlink_route_multipath) dont set equalise flag.
+ No stock Linux kernel has ever supported it, and even if it had
+ it's not generally a good idea.
+
+2005-03-07 Michael Sandee <voidptr@voidptr.sboost.org>
+
+ * if_proc.c, ipforward_proc.c, rtread_proc.c: Fix fd leaks.
+
+2005-03-06 Hasso Tepper <hasso at quagga.net>
+
+ * interface.c: Fix CRC and frame errors statistics in Linux.
+
+2005-02-28 Andrew J. Schorr <ajschorr@alumni.princeton.edu>
+
+ * zserv.c: Must include network.h and buffer.h for non-blocking I/O.
+ Remove global message_queue and t_write (need separate buffering for
+ each client).
+ (zebra_server_dequeue,zebra_server_enqueue) Remove functions
+ related to old buggy buffering code.
+ (zserv_delayed_close) New thread callback function to delete a client.
+ (zserv_flush_data) New thread callback function to flush buffered
+ data to client.
+ (zebra_server_send_message) Rewritten to use buffer_write (so
+ buffering of writes and non-blocking I/O work properly).
+ (zsend_interface_add,zsend_interface_delete,zsend_interface_address,
+ zsend_interface_update) Return 0 instead of -1 if !client->ifinfo
+ (this is not really an error). Return value from
+ zebra_server_send_message.
+ (zsend_route_multipath,zsend_ipv4_nexthop_lookup,
+ zsend_ipv4_import_lookup) Return value from zebra_server_send_message.
+ (zsend_ipv6_nexthop_lookup) Fix scope to static, and return value
+ from zebra_server_send_message.
+ (zsend_router_id_update) Must use zebra_server_send_message instead
+ of deprecated writen function. Return 0 instead of -1 if this client
+ is not subscribed to router-id updates (since this is not really
+ an error).
+ (zread_interface_add) Change type to static int. If
+ zsend_interface_add fails or zsend_interface_address fails, return -1
+ immediately (since the client has had an I/O error).
+ (zread_interface_delete,zread_ipv4_add,zread_ipv4_delete,
+ zread_ipv6_add,zread_ipv6_delete,zread_router_id_delete) Return 0
+ to indicate success.
+ (zread_ipv4_nexthop_lookup) Return value from
+ zsend_ipv4_nexthop_lookup.
+ (zread_ipv4_import_lookup) Return value from zsend_ipv4_import_lookup.
+ (zebra_read_ipv6) Remove unused function.
+ (zread_ipv6_nexthop_lookup) Return value from
+ zsend_ipv6_nexthop_lookup.
+ (zread_router_id_add) Return value from zsend_router_id_update.
+ (zebra_client_close) Call buffer_free(client->wb) and
+ thread_cancel(client->t_suicide).
+ (zebra_client_create) Allocate client->wb using buffer_new.
+ (zebra_client_read) Support non-blocking I/O by using stream_read_try.
+ Use ZEBRA_HEADER_SIZE instead of 3.
+ (zebra_accept) Fix bug: reset accept thread at top. Make client
+ socket non-blocking using the set_nonblocking function.
+ (config_write_forwarding) Fix scope to static.
+ (zebra_init) Remove initialization code for old buggy write buffering.
+ * zserv.h: Add 2 new fields to struct zserv: struct buffer *wb
+ (to enable buffered writes with non-blocking I/), and
+ struct thread *t_suicide to support delayed close on I/O
+ errors.
+ * router-id.h: Remove prototypes for zread_router_id_add and
+ zread_router_id_delete (their scope should be static to zserv.c).
+
+2005-02-24 Andrew J. Schorr <ajschorr@alumni.princeton.edu>
+
+ * redistribute.c: (zebra_check_addr,is_default,
+ zebra_redistribute_default,zebra_redistribute) Fix scope to be static.
+
+2005-02-20 Hasso Tepper <hasso at quagga.net>
+
+ * rt_netlink.c: Don't show messages "ignoring message type 0x001[89]"
+ if we are not debugging.
+
+2005-02-19 Paul Jakma <paul@dishone.st>
+
+ * zserv.c: (zebra_read_ipv6) replace the char * arithmetic with
+ STREAM_READABLE.
+
+2005-02-14 Paul Jakma <paul@dishone.st>
+
+ * Not all Linux netlink systems have IFLA_WIRELESS
+
+2005-01-30 Andrew J. Schorr <ajschorr@alumni.princeton.edu>
+
+ * ioctl.c: (if_ioctl,if_ioctl_ipv6,if_get_flags) Replace perror with
+ zlog_err.
+ * ioctl_solaris.c: (if_ioctl,if_ioctl_ipv6) Replace perror with
+ zlog_err.
+
+2005-01-29 Andrew J. Schorr <ajschorr@alumni.princeton.edu>
+
+ * if_ioctl_solaris.c: (interface_list_ioctl) Save errno before calling
+ zserv_privs.change.
+ * ioctl{,_solaris}.c: (if_ioctl,if_ioctl_ipv6) Save errno before calling
+ zserv_privs.change.
+ * ipforward_solaris.c: (solaris_nd) Save errno before calling
+ zserv_privs.change.
+ * irdp_main.c: (irdp_sock_init) Save errno before calling
+ zserv_privs.change.
+
+2005-01-29 Andrew J. Schorr <ajschorr@alumni.princeton.edu>
+
+ * rt_netlink.c: (netlink_socket,netlink_request,netlink_parse_info,
+ netlink_talk) Save errno before calling zserv_privs.change.
+
+2005-01-24 Martin Pot <mpot at martybugs.net>
+
+ * zebra/rt_netlink.c: ignore wireless newlink netlink messages.
+
+2005-01-18 Hasso Tepper <hasso at quagga.net>
+
+ * interface.c: Better statistics output in "show interface" command in
+ case of /proc being used.
+
+2005-01-17 Hasso Tepper <hasso at quagga.net>
+
+ * main.c: With --nl-bufsize argument is required.
+
+2005-01-05 Paul Jakma <paul@dishone.st>
+
+ * zserv.c: (zebra_accept) Comment out setting of socket to NONBLOCK
+ for now, as we dont actually deal with with resending.... See
+ bugzilla #122, fix from wawa@yandex-team.ru (Vladimir Ivanov).
+ * kernel_socket.c: (routing_socket) ditto.
+
+2005-01-04 Andrew J. Schorr <ajschorr@alumni.princeton.edu>
+
+ * rtadv.c: (rtadv_recv_packet,rtadv_send_packet) Use ZCMSG_FIRSTHDR
+ instead of CMSG_FIRSTHDR.
+
+2004-12-22 Andrew J. Schorr <ajschorr@alumni.princeton.edu>
+
+ * connected.c: (connected_add_ipv4) Limit warning about /32 addresses
+ with no peer specified to PtP interfaces only.
+
+2004-12-18 Hasso Tepper <hasso at quagga.net>
+
+ * zebra_vty.c: Fix "show ipv6 route <proto>" command help and make it
+ work for isis routes.
+
+2004-12-09 Greg Troxel <gdt@fnord.ir.bbn.com>
+
+ * kernel_socket.c (rtmsg_debug): char * => const char *
+
+2004-12-07 Andrew J. Schorr <ajschorr@alumni.princeton.edu>
+
+ * *.c: Change level of debug messages to LOG_DEBUG.
+
+2004-12-07 Andrew J. Schorr <ajschorr@alumni.princeton.edu>
+
+ * main.c: (main) The 2nd argument to openzlog has been removed.
+ So stdout logging will no longer be enabled by default.
+ * irdp_main.c: (irdp_finish) Reduce severity of shutdown message
+ from LOG_WARNING to LOG_INFO.
+
+2004-12-03 Andrew J. Schorr <ajschorr@alumni.princeton.edu>
+
+ * main.c: (sigint) Use zlog_notice for termination message.
+ (main) Add a startup announcement using zlog_notice.
+
2004-11-25 Hasso Tepper <hasso at quagga.net>
* irdp_interface.c: Remove comment from DEFUN, it breaks vtysh because