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
	  it confuses extract.pl.
	* main.c: Make group to run as configurable.

2004-10-28 Hasso Tepper <hasso at quagga.net>

	* interface.c: Remove dead "ip tunnel" command.

2004-10-22 Paul Jakma <paul@dishone.st>

	* irdp_main.c: change setsockopt_pktinfo to setsockopt_ifindex

2004-10-19 Andrew J. Schorr <aschorr@telemetry-investments.com>

	* rt_netlink.c: (netlink_interface_addr) For PtP interfaces, ignore
	  tb[IFA_ADDRESS] if it's the same as tb[IFA_LOCAL].
	* interface.c: (ip_address_install) Use new ipv4_broadcast_addr
	  function.
	* connected.c: (connected_up_ipv4) Use CONNECTED_POINTOPOINT_HOST
	  macro.
	  (connected_down_ipv4) ditto.
	  (connected_add_ipv4) Validate destination address, print warnings
	  if it does not make sense.

2004-10-19 Hasso Tepper <hasso at quagga.net>

	* zserv.c: Fix regression introduced with zserv cleanup.

2004-10-13 Hasso Tepper <hasso at quagga.net>

	* zebra_snmp.c: Remove defaults used to initialize smux connection to
	  snmpd. Connection is initialized only if smux peer is configured.
	* zserv.c: Remove useless warnings "forwarding is already on".

2004-10-12 Hasso Tepper <hasso at quagga.net>

	* zebra_vty.c: Unbreak "show ip route" command help and make it work
	  for isis routes.
	* interface.c(if_dump_vty): Show IPv6 addresses in "show interface"
	  output. Fixes Bugzilla #119.
	* *.c: Make some strings const and some (unsigned) casts to fix
	  compiler warnings.

2004-10-07 Hasso Tepper <hasso at quagga.net>

	* connected.c, main.c, rt_netlink.c, rtadv.c, zebra_rib.c, zserv.c:
	  Fix warnings: make strings const, signed -> unsigned.

2004-10-05 Paul Jakma <paul@dishone.st>

	* irdp_packet.c: (parse_irdp_packet) style issues.
	  Use sockopt_iphdrincl_swab_systoh.
          Try unbork the code. Checksum the ICMP data and actually 
          compare it to received checksum. Check data length against
          claimed length in header.
	  Always use ntoh.. when accessing addresses, even when the
          comparison happens to be endian-safe.
	  (send_packet) minor style isues. Use
          sockopt_iphdrincl_swab_htosys.
	  (irdp_iph_hton/ntoh) IP header to/from network/host order.

2004-10-03 Gilad Arnold <gilad.arnold at terayon.com>

	* interface.c, interface.h: A new prefix tree of connected subnets is
	  associated with each interface structure in zebra, in which each
	  live (ie, non-synthetic) node holds a list of installed addresses
	  that belong to that prefix. Remove secondary address logic from cli.
	  See [quagga-dev 872] for detailed explanation.
	* connected.c: Use if_subnet_add() and if_subnet_delete().

2004-10-03 James R. Leu <jleu at mindspring.com>

	* router-id.c, router-id.h: New files. Router id selection process. If
	  there is non 127.x.x.x address in loopack interface, lowest of them
	  is chosen. If there isn't, lowest from other interfaces addresses
	  are chosen. "router-id x.x.x.x" vty command to manual override.
	* Makefile.am: Compile new files.
	* main.c: Initialize router id.
	* redistribute.c: Add interface addresses into router id selection
	  lists as they (dis)appear.
	* zserv.c, zserv.h: Sending router id related messages to daemons.

2004-09-26 Hasso Tepper <hasso at quagga.net>

	* irdp_interface.c, irdp_main.c, irdp_packet.c, rt_netlink.c,
	  rtadv.c, zebra_vty.c: Fix compiler warnings.

2004-09-24 Paul Jakma <paul@dishone.st>

	* irdp_interface.c: (no_ip_irdp_address_preference_cmd)
          add missing listnode declaration.

2004-09-24 Paul Jakma <paul@dishone.st>

        * irdp_{interface,main}.c: lists typedef removal cleanup.        
          update some list loops to LIST_LOOP. some miscellaneous style
          and indent fixups.
          (no_ip_irdp_address_preference_cmd) Fix delete of referenced node    
          in loop.
        * irdp_packet.c: (irdp_recvmsg) Fix buggy assignment of integer
          to pointer.
        * if_ioctl{,_solaris}.c: lists typedef removal cleanup. 
          update some list loops to LIST_LOOP.

2004-09-23 Hasso Tepper <hasso at quagga.net>

	* *.[c|h]: list -> struct list *, listnode -> struct listnode *.

2004-09-22 Paul Jakma <paul.jakma@sun.com>

	* zserv.c: (zsend_route_multipath) fix nasty bad memset of struct
	  in_addr to sizeof(struct in6_addr), causing odd and hard to debug
          crash.

2004-08-31 Hasso Tepper <hasso at quagga.net>

	* main.c, rt_netlink.c: Added -s command line switch for tuning
	  netlink receive buffer size in Linux to avoid buffer overruns.

2004-08-26  Miles Nordin  <carton@Ivy.NET>

	* ipforward_sysctl.c (mib_ipv6): Use size_t for len, per
	  sysctl(3), rather than int.  (Needed on NetBSD/alpha to display
	  forwarding status correctly.)

2004-08-23 Paul Jakma <paul@dishone.st>

	* zserv.c: (zebra_init) remove implicit ip forward enabling
	
2004-08-19 Paul Jakma <paul@dishone.st>

        * irdp_main.c: update to match sockopt renames.
        * irdp_packet.c: include sockopt.h and update to match sockopt
	  renames.
                
2004-08-11  Greg Troxel  <gdt@fnord.ir.bbn.com>

	* rtadv.c (rtadv_send_packet): Allocate space for control messages
	more carefully; it was wrong on NetBSD/sparc where CMSG alignment
	is to 8 bytes instead of 4, and overwriting the address.  Use the
	provided macros for determining lengths.

2004-07-23 Sowmini Varadhan <Sowmini.Varadhan@Sun.COM>

        * if_ioctl_solaris.c: HAVE_IPV6 ifdef fixups
        * zserv.c: ditto
        * ioctl_solaris.c: ditto.
        * interface.c: cast for LLADDR
        * interface.h: Add guards, include redistribute.h and remove
          extraneous definitions of zebra_interface_{up,down}_update
        * ioctl.h: Add AF_IOCTL define for non SOLARIS_IPV6
        * redistribute.h: include dependent header, zserv.h
        * zserv.h: include dependent header, rib.h

2004-07-23 Paul Jakma <paul@dishone.st>

	* irdp_main.c: use setsockopt_pktinfo_ipv4
	* irdp_packet.c: use SOPT_SIZE_CMSG_PKTINFO_IPV4 and 
	  getsockopt_pktinfo_ifindex()

2004-07-13  David Wiggins <dwiggins@bbn.com

	* kernel_socket.c (rtm_flag_dump): terminate buffer with '\0', not '0'.

2004-07-13 Hasso Tepper <hasso@estpak.ee>

	* irdp_main.c: Add privilege change.

2004-07-12  Hasso Tepper <hasso@estpak.ee>

	* irdp_interface.c: follow common style while naming vty command
	  functions. Avoids confusion in extract.pl.

2004-06-30  Greg Troxel  <gdt@poblano.ir.bbn.com>

	* main.c: define thread_master variable so that linking with
	libzebra.so doesn't fail.  Arguably zclient.o should be in a
	separate library, but this is far less disruptive.

2004-06-12 Robert Olsson <Robert.Olsson at data.slu.se>

        * Added IRDP support.

2004-05-18 Hasso Tepper <hasso@estpak.ee>

	* rtadv.c: Removed "[no] ipv6 nd send-ra" command. Replaced "ipv6 nd
	  prefix-advertisement" with "ipv6 nd prefix". Rewrite syntax of
	  "ipv6 nd prefix" command to allow various combinations of parameters
	  and flags. No defaults in configuration. Replaced on-link and
	  autoconfig with off-link and no-autoconfig flags in command syntax.
	  Cosmetic fixes in all commands. Documentation to reflect all changes.

2004-05-11 Paul Jakma <paul@dishone.st>

	* Makefile.am: support for IOCTL_METHOD, as per Sowmini's patch.
	* if_ioctl_solaris.c: Fixup some erroneous privilege changes and
	  add privs.h header.
	* ioctl_solaris.c: ditto
	* ioctl.h: Add if_ioctl_ipv6 prototype and AF_IOCTL for SOLARIS_IPV6
	* kernel_socket.c: Fix SAROUNDUP, compiler doesnt like do..while
	  RHS in assignments :)
	* redistribute.c: (zebra_interface_delete_update) only used
	  if RTM_IFANNOUNCE and NETLINK is available.
		 
2004-05-09 Paul Jakma <paul@dishone.st>

	* zserv.c: (zsend_route_multipath) Set the nexthop_num
	  field correctly. Add NEXTHOP_TYPE_IPV6_IFNAME for v6.
	  Conditionally set ZAPI_MESSAGE_METRIC flag - only for adds.
	  (zsend_ipv4_add) cruft, deleted.
	  (zsend_ipv4_delete) ditto.
	  (zsend_ipv6_add) ditto.
	  (zsend_ipv6_delete) ditto.
	* ioctl.c: (if_get_mtu) set mtu6 to mtu
	* mtu_kvm.c: (if_kvm_get_mtu) set mtu6 to mtu
	* rt_netlink.c: (netlink_interface) set mtu6 to mtu
	  (netlink_link_change) ditto 
	* ipforward_solaris.c: fix typo of ND variable.
	* if_ioctl_solaris.c: Add zprivs support.
	* ioctl_solaris.c: ditto.
		  
2004-05-09 Sowmini Varadhan <sowmini.varadhan@sun.com>

	* zserv.c: (zsend_ipv{4,6}_{add,delete}_multipath) collapsed
	  into single zsend_route_multipath function.
	  (zsend_interface_{up,down}) collapsed into zsend_interface_update.
	  (zsend_interface_address_{add,delete}) collapsed into 
	  zsend_interface_address.
	  (zsend_interface_add) send mtu6.
	  (zsend_interface_delete) ditto.
	  (zebra_write) remove unused function.
	  (various) Apply static qualifier. Add comments.
	* zserv.h: Definitions changed as per above.
	* redistribute.c: Changes as per zserv.c.
	* interface.c: (if_delete_update) only used with HAVE_NETLINK
	  and RTM_IFANNOUNCE.
	  (if_flag_dump_vty) Solaris IFF_IPV4 and IFF_IPV6 if flags
	  (if_dump_vty) print mtu6 if not same as mtu	  
	* if_ioctl_solaris.c: New file, Solaris interface ioctl methods.
	* ioctl_solaris.c: New file, Common solaris ioctl methods.
	
2004-04-06  Krzysztof Oledzki <oleq@ans.pl>

	* rt_netlink.c: Do not ignore metric when reading kernel routing
	  table on Linux with rt_netlink interface.

2004-03-18  Hasso Tepper <hasso@estpak.ee>

	* interface.c: Temporary fix for handling secondary addresses
	  with label.

2004-02-12  Hasso Tepper  <hasso@estpak.ee>

	* zserv.c: Added "ipv6 forwarding" command.

2004-01-08  Greg Troxel  <gdt@fnord.ir.bbn.com>

	* kernel_socket.c (kernel_read): Use sockaddr_storage in buffer
	for reading kernel messages to ensure enough space (necessary on
	Solaris due to sockaddr_dl being large).  Thanks to Sowmini
	Varadhan for help with this change.

2004-01-06  Greg Troxel  <gdt@t1.ir.bbn.com>

	* rtadv.c (rtadv_send_packet): Change perror to zlog_err.

2004-01-05  Greg Troxel  <gdt@fnord.ir.bbn.com>
	* kernel_socket.c (ifm_read): Major cleanup.  Use Sowmini's code
	to find the sockaddr_dl in all cases, narrowing the Solaris ifdef
	to just the accomodation of broken kernels.  Check sockaddr_dl
	carefully up front, and later assume any non-NULL sdl pointer is
	valid.  Clean up types and variable declarations, and rename
	WRAPUP to SAROUNDUP to make the name fit the behavior.

2004-01-05  Greg Troxel  <gdt@fnord.ir.bbn.com>

	* kernel_socket.c (kernel_read): Add a sockaddr_dl to the ifmsg
	structure, because on Solaris sockaddr_dl is far larger than the
	base sockaddr structure.  (The code had previously been failing to
	read all the data.)
	
2004-01-05  Greg Troxel  <gdt@ahi.ir.bbn.com>

	* kernel_socket.c (kernel_read): Look up interfaces by index
	first, so that state changes which do not include a sockaddr_dl
	now work.  Add many sanity checks.  In
	particular, do not assume that a sockaddr_dl follows a message
	without checking the ifm_addrs flags, and do not trust the length
	in a sockaddr_dl.  Add/clarify many comments.

2003-12-03  Greg Troxel  <gdt@poblano.ir.bbn.com>

	* rtadv.c: reorder includes to avoid compiler warning (define
	structs before using them in prototypes)

2003-05-25 Jim Crumpler <Jim.Crumpler@edion.com>

  * zserv.c: Add "ip forwarding" command.

2003-05-16 Gilad Arnold <gilad.arnold@terayon.com>

	* zebra_rib.c: Fix memory leaks for ifname nexthops

2003-04-19 Israel Keys <ikeys@agile.tv>

	* rt_netlink.c: BLOCK on netlink while initialising

2003-02-06  Francois Deppierraz <francois@ctrlaltdel.ch>

	* rt_netlink.c (netlink_route_multipath): Set RTM_F_EQUALIZE when
	it exists.

2002-09-28  Akihiro Mizutani <mizutani@net-chef.net>

	* zebra_rib.c (static_add_ipv4): Null0 static route is added.

2002-09-10  Jochen Friedrich <chris+zebra@scram.de>

	* rt_netlink.c: Add check for EAGAIN.
	* kernel_socket.c: Likewise

2002-06-12  Israel Keys <ikeys@oz.agile.tv>

	* rt_netlink.c: Setting the NLM_F_ACK flag on the netlink command
	  message so that we get an ACK for successful netlink commands.
	  Change the netlink socket to BLOCKING while we wait for a
	  response; be it an ACK or an NLMSG_ERROR.  Change
	  netlink_parse_info to deal with ACK messages.

2001-11-01  Jun-ichiro itojun Hagino <itojun@iijlab.net>

	* rtadv.c (rtadv_make_socket): setsockopt(IPV6_CHECKSUM) does not
	work for ICMPv6 socket.

2001-10-24  Kunihiro Ishiguro  <kunihiro@ipinfusion.com>

	* rib.c (rib_process): Select connected route any case.

2001-10-23  Kunihiro Ishiguro  <kunihiro@ipinfusion.com>

	* interface.c (no_ip_address_secondary): Add "no" to command.

2001-10-18  NOGUCHI Kay  <kay@v6.access.co.jp>

	* ioctl.c (if_prefix_add_ipv6): Set the prefered and valid lifetime
	to infinity as the freebsd4.4 workaroud.

2001-08-26  mihail.balikov@interbgc.com

	* zebra_snmp.c: Fix snmpwalk problem such as IPv4 address
	A.B.C.255.

2001-08-22  NOGUCHI Kay <kay@v6.access.co.jp>

	* rtadv.c: Do not send RA to loopback interface.

2001-08-20  Kunihiro Ishiguro  <kunihiro@ipinfusion.com>

	* ioctl.c (if_set_prefix): Remove Linux 2.0 specific connected
	route treatment.

2001-08-19  Kunihiro Ishiguro  <kunihiro@ipinfusion.com>

	* zebra-0.92a released.

2001-08-17  Kunihiro Ishiguro  <kunihiro@ipinfusion.com>

	* rib.c: Kernel route is treated as EGP routes in nexthop active
	check.

2001-08-15  Kunihiro Ishiguro  <kunihiro@ipinfusion.com>

	* zebra-0.92 released.

2001-08-08  "Akihiro Mizutani" <mizutani@dml.com>

	* rib.c (show_ip_route_prefix_longer): Add longer-prefix option to
	show route commands.

2001-07-29  Yon Uriarte <havanna_moon@gmx.net>

	* zserv.c (zsend_ipv4_add_multipath): Add
	NEXTHOP_TYPE_IPV4_IFINDEX check.

2001-07-29  NOGUCHI Kay <kay@v6.access.co.jp>

	* rtadv.c: Apply valid lifetime, preferred lifetime, onilnk flag,
	autonomous address-configuration flag patch.
	(no_ipv6_nd_suppress_ra): Change "ipv6 nd send-ra" to "no ipv6 nd
	suppress-ra".

2001-07-24  NOGUCHI Kay <kay@v6.access.co.jp>

	* rtadv.c (ipv6_nd_ra_interval): Add "ipv6 nd ra-interval SECONDS"
	command.

2001-07-24  Jun-ichiro itojun Hagino <itojun@iijlab.net>

	* rt_socket.c (kernel_rtm_ipv4): Add KAME/NetBSD151 equal cost
	multicast FIB support both IPv4 and IPv6.

2001-07-24  Hal Snyder <hal@vailsys.com>

	* if_ioctl.c (interface_list_ioctl): Fix bug of failing to get the
	full list of interfaces on some configurations of OpenBSD.

2001-07-23  NOGUCHI Kay <kay@v6.access.co.jp>

	* rtadv.c (ipv6_nd_send_ra): Apply [zebra 9320] to fix "ipv6 nd
	send-ra" bug.
	(ipv6_nd_ra_lifetime): "ipv6 nd ra-lifetime 0" for default router
	availability.
	(ipv6_nd_managed_config_flag): "ipv6 nd managed-config-flag" is
	added.
	(ipv6_nd_other_config_flag): "ipv6 nd other-config-flag" is added.
	
2001-07-23  Jun-ichiro itojun Hagino <itojun@iijlab.net>

	* ioctl.c (if_ioctl): Change ioctl argument from int to u_long.

	* rt_ioctl.c: Likewise.

2001-07-23  Jun-ichiro itojun Hagino <itojun@iijlab.net>

	* kernel_socket.c (rtm_write): Only set RTF_CLONING when the
	interface is not p2p.

2001-04-23  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* ioctl.c (if_prefix_add_ipv6): Fix argument type.

2001-04-06  Toshiaki Takada  <takada@zebra.org>

	* zserv.c (zsend_interface_delete): Use client->obuf instead of
	allocating new stream.

2001-03-10  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* rt_netlink.c: Revert RTPROT_BOOT change.

2001-03-08  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* rt_netlink.c (netlink_route_change): Skip RTPROT_BOOT route.
	(netlink_routing_table): Likewise.

2001-03-07  "Akihiro Mizutani" <mizutani@dml.com>

	* zserv.c (zsend_ipv4_add_multipath): Send metric value to
	protocol daemons.

2001-02-18  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* rt_netlink.c (netlink_routing_table): Do not return
	tb[RTA_GATEWAY] is NULL.  Reported by: "Michael O'Keefe"
	<mokeefe@qualcomm.com>.

2001-02-08  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* if_ioctl.c (interface_list_ioctl): Call if_add_update().
	Suggested by: Chris Dunlop <chris@onthe.net.au>.

2001-02-01  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* rib.c (nexthop_active_ipv4): When nexthop type is
	NEXTHOP_TYPE_IPV4_IFINDEX, propery set the ifindex to rifindex.

	* zserv.c: Initialize rtm_table_default with 0.

	* zebra-0.91 is released.

2001-01-31  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* kernel_socket.c (rtm_read): Filter cloned route.  Suggested by:
	Jun-ichiro itojun Hagino <itojun@iijlab.net>

2001-01-30  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* connected.c (connected_up_ipv6): When point-to-point destination
	address is ::, use local address for connected network.
	(connected_down_ipv6): Likewise.

2001-01-25  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* zserv.c (zebra_serv): Add missing close() call.  Reported by:
	David Waitzman <djw@vineyard.net>.

2001-01-24  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* rib.c (rib_lookup_ipv4): New function for checking exact match
	IGP route.

2001-01-23  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* rib.c (show_ipv6_route_protocol): Fix bug of "show ip route
	route-type".

2001-01-22  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* interface.c (zebra_interface): Do not call
	zebra_interface_add_update for inactive interface.

	* zserv.c (zsend_interface_address_add): Send interface address
	flag.
	(zsend_interface_address_delete): Likewise.

2001-01-19  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* interface.c (if_addr_add):  Add flags.

	* connected.c (ifa_add_ipv4): Add new function for interface
	address handling.
	(ifa_delete_ipv4): Likewise.

2001-01-16  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* rib.c (rib_update): Update IPv6 RIB.

	* kernel_socket.c (ifam_read): Call if_refresh() for update
	interface flag status.  This is for implicit interface up on *BSD.

	* interface.c (if_refresh): Add interface flag refresh function.

	* kernel_socket.c (rtm_read): Fetch link-local address interface
	index.
	(ifan_read): We need to fetch interface information.  Suggested
	by: Yasuhiro Ohara <yasu@sfc.wide.ad.jp>.

	* rib.c (static_ipv6_nexthop_same): Add check for
	NEXTHOP_TYPE_IPV6_IFNAME.

2001-01-15  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* rib.h (NEW_RIB): Turn on NEW_RIB flag.  IPv6 new RIB code are
	taken into place.

2001-01-14  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* rib.c (static_ipv6_write): Display STATIC_IPV6_GATEWAY_IFNAME
	configuration.
	(rib_delete_ipv6): Handle same route conter for IPv6 connected
	route.
	(show_ipv6_route_protocol): New command.
	(show_ipv6_route_addr): Likewise.
	(show_ipv6_route_prefix): Likewise.
	(rib_update): Sweep kernel route when it is cleaned up.

	* rt_socket.c (kernel_add_ipv6): Add NEXTHOP_IPV6_IFNAME
	treatmenet.

	* rt_netlink.c (kernel_init): Likewise.

	* rt_ioctl.c (kernel_ioctl_ipv6_multipath): Likewise.

	* rib.c (rib_add_ipv4): Cope with same connected route on a
	interface.  Suggested by: Matthew Grant <grantma@anathoth.gen.nz>.
	(nexthop_ipv6_ifname_add): Add NEXTHOP_IPV6_IFNAME treatmenet.

	* rib.h (struct new_rib): Add refcnt to keep track on the
	reference of same connected route.

	* ioctl.c (if_set_prefix): Add check for GNU_LINUX.

2001-01-13  Yasuhiro Ohara <yasu@sfc.wide.ad.jp>

	* kernel_socket.c (ifan_read, rtm_type_str): Add RTM_OIFINFO check.
	(rtm_type_str): Add RTM_IFANNOUNCE check.
	(ifan_read): New function.
	(kernel_read): Add case for RTM_IFANNOUNCE.

2001-01-13  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* rt_ioctl.c (kernel_ioctl_ipv6_multipath): New function.

	* rt_netlink.c (netlink_route_multipath): IPv6 address ifindex
	treatment.

	* connected.c (connected_up_ipv6): Add dest value check.

	* rib.c (nexthop_active_ipv6): Do not touch IPv6 nexthop's
	ifindex.
	(rib_add_ipv4): Import rib_add_ipv6() same route check code.
	(nexthop_active_check): NEXTHOP_TYPE_IPV6_IFINDEX activity is only
	checked by ifindex.

	* rt_socket.c (kernel_rtm_ipv6_multipath): New function.

	* redistribute.c (redistribute_add): Use
	zsend_ipv6_add_multipath().
	(redistribute_delete_multipath): Use
	zsend_ipv6_delete_multipath().

	* interface.c (ip_address): Check current IP address to avoid
	duplicate.

	* rib.c (rib_delete_ipv4): When deleted route is connected route,
	check ifindex.
	(rib_add_ipv4): When connected route is added do not perform
	implicit withdraw.
	(rib_delete_ipv4): Check ifindex for connected route.

	* kernel_socket.c (rtm_read): When route has RTF_STATIC, set
	ZEBRA_FLAG_STATIC for indicate as persistent route.
	(ifam_read): Unset interface index from link-local address when
	IPv6 stack is KAME.

	* rib.c (rib_update): Do not delete persistent kernel route.

	* rib.h (struct new_rib): Integrate RIB_FLAG_* to ZEBRA_FLAG_*.

	* rt_socket.c (kernel_add_ipv6_multipath): Add placeholder.
	(kernel_delete_ipv6_multipath): Likewise.

	* rt_netlink.c (netlink_talk): Give struct nlsock to netlink_talk.

2001-01-12  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* rib.c (rib_update): Revert Matthew Grant's patch
	zebra_cvs_newribfix.patch.  Use struct rib->ifindex for kernel
	interface index.  Introduce NEXTHOP_TYPE_IPV4_IFINDEX to support
	that.  Add support for address deletion situation.

2001-01-11  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* interface.c: Remove HAVE_IF_PSEUDO part.

	* rib.h: Likewise.

	* rt_netlink.c (netlink_link_change): Likewise.

2001-01-10  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* zserv.c: Remove OLD_RIB codes.

2001-01-09  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* zebra-0.90 is released.

2001-01-09  Matthew Grant <grantma@anathoth.gen.nz>

	* interface.c (if_new_intern_ifindex): Allocate a new internal
	interface index.
	(if_addr_refresh): Fix up ip addresses configured via zebra.
	(if_add_update): Handle an interface addition.
	(if_delete_update): Handle an interface delete event.

	* rib.c (nexthop_ipv4_add): Add kernel route deletion process when
	interface goes down.

2001-01-08  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* interface.c (if_dump_vty): When HAVE_NET_RT_IFLIST is defined,
	NetBSD also use this function.  Suggested by Jasper Wallace
	<jasper@ivision.co.uk>.

2001-01-07  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* rib.c (nexthop_active_ipv4): Move back to set methodo to old
	one.

2001-01-05  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* rib.c (rib_add_ipv4): EBGP multihop set ZEBRA_FLAG_INTERNAL
	flag, so treat it.

2001-01-04  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* rt_netlink.c (netlink_talk_ipv6): When IPv6 route message is
	sent from netlink_cmd, the same message comes from netlink.  To
	avoid confusion, temporary netlink_talk_ipv6 use netlink.sock
	instead of netlink_cmd.sock.

2001-01-01  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* zserv.h (ZEBRA_SERV_PATH): Change "/tmp/zebra" to "/tmp/.zebra".
	Change "/tmp/zserv" to "/tmp/.zserv".
	
2000-12-29  Frank van Maarseveen <F.vanMaarseveen@inter.NL.net>

	* rt_netlink.c (struct nlsock): Divide kernel message into listen
	socket and command socket.
	(netlink_talk): Remove socket listen code.  Use netlink_parse_info
	for read kernel response.

2000-12-29  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* rib.c (vty_show_ip_route): Show uptime of the RIP,OSPF,BGP
	routes.

2000-12-27  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* rt_netlink.c (netlink_route_multipath): Metric value is
	reflected to kernel routing table.

	* rt_ioctl.c (kernel_ioctl_ipv4_multipath): Likewise.

	* kernel_socket.c (rtm_write): Likewise.

	* rib.c (nexthop_active_ipv4): Only iBGP route perform recursive
	nexthop lookup.

	* rt_ioctl.c (kernel_ioctl_ipv4_multipath): Add ioctl version of
	new RIB implementation.

2000-12-26  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* rib.h: Remove MULTIPATH_NUM.  It is defined by configure script.

2000-12-25  Michael Rozhavsky <mrozhavsky@opticalaccess.com>

	* rib.c (rib_if_up): Call rib_fib_set instead of RIB_FIB_SET for
	proper redistribution.

2000-12-19  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* rib.c (nexthop_active_ipv4): Add self lookup nexthop check.
	(show_ip_route_protocol): Support new RIB.

	* rt_netlink.c (netlink_route_change): Do not return when gate is
	NULL.

2000-12-18  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* rib.c (rib_lookup_ipv4_nexthop): IBGP nexthop check function is
	updated.
	(rib_add_ipv4): Free implicit withdraw route's RIB.

2000-12-15  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* rib.c (nexthop_active_ipv4): Check indirect nexthop.

	* redistribute.c (redistribute_add_multipath): Redistribution
	works with new rib code.

2000-12-14  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* rt_netlink.c (netlink_route_multipath): Check useful nexthop
	number.
	(netlink_route_multipath): Clear rtnh_flags and rtnh_hops.

	* rib.c (nexthop_active_update): Set flag for the rib's nexthop
	activity is changed.
	(nexthop_active_check): Before checking interface is up, make it
	sure the interface exist.

2000-11-20  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* rib.c (ip_route): New RIB prototype.

2000-11-16  Yon Uriarte <ukl2@rz.uni-karlsruhe.de>

	* zserv.c (zsend_interface_add): Send hardware address when
	hw_addr_len is greater than 0.

2000-11-07  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* connected.c (connected_up_ipv4): Fix ptop bug.  The destination
	network should be installed into routing table.
	(connected_down_ipv4): Likewise.
	(connected_add_ipv4): Change to use connected_up_ipv4.
	(connected_delete_ipv4): Likewise.

2000-11-06  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* rt_netlink.c (netlink_interface_addr): Revert Harald Welte
	<laforge@gnumonks.org>'s ptop patch then back to original code to
	avoid duplicated connected route problem.  Suggested by Frank van
	Maarseveen <F.vanMaarseveen@inter.NL.net>.

	* kernel_socket.c (rtm_read): Make behavior consistent even #ifdef
	DEBUG is defined.  Reported by Jun-ichiro itojun Hagino
	<itojun@iijlab.net>.

2000-10-23  Jochen Friedrich <jochen@scram.de>

	* main.c (main): Call zebra_snmp_init() when it is enabled.

2000-10-23  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* zserv.c (zebra_serv_un): UNIX domain socket server of zebra
	protocol.

2000-10-19  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* rib.c (rib_add_ipv4): Same check bug is fixed.

2000-10-03  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* rib.c (rib_if_down): Remove kernel route when the interface goes
	down.

	* debug.c: New command "debug zebra kernel" is added.

2000-10-02  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* zebra-0.89 is released.

2000-09-24  Harald Welte <laforge@gnumonks.org>

	* rt_netlink.c (netlink_interface_addr): Fix point-to-point address
	treatment in netlink interface.

2000-09-21  David Lipovkov <dlipovkov@OpticalAccess.com>

	* rib.c (rib_if_down): Pull static route only.  Protocol daemon
	must withdraw routes when interface goes down.
	(rib_add_ipv4): Check nexthop when replace route.

2000-09-21  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* if_ioctl.c (if_getaddrs): New function for looking up
	interface's address by getifaddrs().

2000-09-10  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* connected.c (connected_delete_ipv4): Add check for connected
	address is found or not.
	(connected_add_ipv6): Reflect IPv6 connected address change to
	protocol daemons.
	(connected_delete_ipv6): Likewise.

2000-09-07  David Lipovkov <davidl@nbase.co.il>

	* rib.c (rib_delete_ipv4): Reverted the change from pseudo
	interface patch to original.  Because ospfd deletes routes using
	zero ifindex.

2000-08-17  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* zebra-0.88 is released.

2000-08-15  "Akihiro Mizutani" <mizutani@dml.com>

	* rib.c (show_ip_route_protocol): Help string correction.
	(show_ip_route_prefix): Check prefix mask.
	(show_ip_route_vty_detail): Display distance and metric.

2000-08-14  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* zserv.c (zsend_interface_add): Change ifindex store size from
	two octet to four.
	(zsend_interface_delete): Likewise.
	(zsend_interface_address_add): Likewise.
	(zsend_interface_address_delete): Likewise.
	(zsend_interface_up): Likewise.
	(zsend_interface_down): Likewise.

2000-08-13  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* rib.c (rib_add_ipv4): Do not install distance 255 route.

2000-08-10  Toshiaki Takada  <takada@zebra.org>

	* interface.c (bandwidth_if), (no_bandwidth_if):  Call
	zebra_interface_up_update () instead of using if_up() and if_down().

2000-08-07  "Akihiro Mizutani" <mizutani@dml.com>

	* interface.c (bandwidth_if): Fix help string.

2000-08-07  Matthew Grant <grantma@anathoth.gen.nz>

	* interface.c (if_dump_vty): Display bandwidth value.
	(bandwidth_if): New command "bandwidth <1-10000000>" is added.
	When interface is up, force protocol daemons to recalculate routes
	due to cost change.
	(no_bandwidth_if): Likewise.
	(if_config_write): Output bandwidth configuration.

	* zserv.c (zsend_interface_add): Send bandwidth value.
	(zsend_interface_up): Likewise.
	(zsend_interface_down): Likewise.


2000-08-07  Michael Rozhavsky <mike@nbase.co.il>

	* rib.c (show_ip_route_protocol): "show ip route
	(bgp|connected|kernel|ospf|rip|static)" is added.

2000-08-07  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* rib.c (rib_lookup_ipv4_nexthop): Check parent node until IGP
	nexthop is found.
	(rib_add_ipv4_internal): Set fib ifindex to rib ifindex.

2000-08-06  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* redistribute.c (redistribute_delete): Fix bug of default route
	redistribute treatment.

2000-08-05  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* rib.c (rib_init): Install ip_node in rib.c instead of zserv.c.
	Change default distance value.

                    Old         New
	------------------------------------------
	system      10           0
	kernel      20           0
	connected   30           0
	static      40           1
	rip         50         120
	ripng       50         120
	ospf        60         110
	ospf6       49         110
	bgp         70         200(iBGP)  20(eBGP)
	------------------------------------------

	* zserv.c (client_lookup): Function removed.
	(zsend_interface_add): Use client's output buffer.  Check ifinfo
	flag.
	(zsend_interface_delete): Likewise.
	Delete ipv4_static_radix and ipv6_static_radix.

2000-08-02  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* zserv.h (struct zebra_client): When client request interface
	information, ifinfo is set.

	* rib.c: Temporary Revert changes for pseudo interface.

	* rib.h: Likewise.

	* zserv.c: Likewise.

	* interface.c: Likewise.
	
2000-08-02  David Lipovkov <davidl@nbase.co.il>

	* interface.c (zebra_if_init): Install interface "pseudo"
	commands.

	* rib.c (rib_create): ifname argument is added.
	(rib_add_ipv4_pseudo): New function is added.
	(rib_delete_ipv4_pseudo): Likewise.

	* rib.h : Delete INTERFACE_UNKNOWN definition.  Add prototype for
	pseudo interface functions.

	* rt_netlink.c (netlink_link_change): Check for pseudo interface.

	* zserv.c (ip_route): When destination is pseudo interface, call
	rib_add_ipv4_pseudo().

	* zserv.c (no_ip_route): Trim "unknown" argument.

2000-07-26  kunitake@dti.ad.jp

	* if_ioctl.c (if_get_hwaddr): Fix hardware address length from 8
	to 6.

	* rtadv.c (rtadv_send_packet): Fix shift bug for hardware address.

2000-07-24  Akihiro Mizutani <mizutani@dml.com>

	* interface.c: Use install_default() for common VTY commands.

2000-07-23  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* if_ioctl.c (interface_list_ioctl): A interface list size is
	calculated from ifreq->if_addr.sa_len.  This is for OpenBSD.

	* ioctl.c (if_get_mtu): Remove codes for SIOCGIFDATA.

2000-07-09  Chris Dunlop <chris@onthe.net.au>

	* if_ioctl.c (if_get_index): Add check for HAVE_BROKEN_ALIASES.

2000-07-04  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* zserv.c (zebra_client_read): Add ZEBRA_REDISTRIBUTE_{ADD,DELETE}
	message handling.

2000-07-02  David Lipovkov <davidl@nbase.co.il>

	* zserv.c: "ip route A.B.C.D/M unknown" command is added.

2000-06-28  Michael Rozhavsky <mike@nbase.co.il>

	* rib.c: Remove old kernel route when new route comes in.

2000-06-13  David Lipovkov <davidl@nbase.co.il>

	* rib.c (rib_if_up): Add check for unknown interface.

2000-06-13 Kunihiro Ishiguro  <kunihiro@zebra.org>

	* rib.h: Define INTERFACE_UNKNOWN.

2000-06-08  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* Makefile.am (EXTRA_DIST): Move irdp.c until implementation is
	finished.

2000-06-05  David Lipovkov <davidl@nbase.co.il>

	* interface.c (if_zebra_delete_hook): Call rib_if_delete().

	* redistribute.c (zebra_interface_delete_update): New function.

	* redistribute.h (zebra_interface_delete_update): New function
	prototype.

	* rib.c (rib_if_delete): New function.  Walk down all routes and
	delete all on the interface.

	* rib.h: New function prototype.

	* rt_netlink.c (netlink_link_change): Call
	zebra_interface_delete_update ().

2000-05-10  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* if_ioctl.c (interface_info_ioctl): Check interface's flag before
	checking interface's address.

2000-04-26  Jochen Friedrich <jochen@nwe.de>

	* GNOME-PRODUCT-ZEBRA-MIB: New file.

	* GNOME-SMI: New file.

2000-04-23  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* irdp.c: New file from 1997 development code.
	* irdp.h: Likewise.

2000-04-19  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* rtadv.c (rtadv_send_packet): Enclose router advertisement
	logging with IS_ZEBRA_DEBUG_PACKET.

2000-04-17  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* zserv.c (zebra_client_close): Remove client structure from
	client_list when connection is terminated.

2000-03-21  David Lipovkov <davidl@nbase.co.il>

	* connected.c (connected_add_ipv4): Allows all necessary structure
	updates for connected route, but doesn't insert it into rib if
	it's interface is down.

2000-01-21  Hideto Yamakawa <hideto.yamakawa@soliton.co.jp>

	* rtread_getmsg.c: Set some definition for Solaris 2.5 and Solaris
	2.5.1.

2000-01-21  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* rib.c (no_ipv6_route_ifname): Fix buf of cheking return value
	from str2prefix_ipv6().

2000-01-14  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* rt_socket.c: Revert to use RTF_HOST for IPv4 with /32 route and
	IPv6 with /128 routes.
	(kernel_rtm_ipv4): In case of /32 route's gateway is interface. It
	should have mask for cloning.

1999-12-26  Jochen.Friedrich@genorz.de

	* interface.c (if_dump_vty): Fix a bug of missing VTY_NEWLINE.

1999-12-23  Alex Zinin <zinin@amt.ru>
	* interface.*: dynamic int up/down support

1999-12-09  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* ipforward_proc.c (dropline): Move dropline() from lib/dropline.c

	* rtread_proc.c (proc_route_read): Don't use dropline().

1999-12-08  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* kernel_socket.c (rtm_read): When message is RTM_GET, it has own
	process's pid.

1999-12-04  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* main.c (main): Change to default log output to ZLOG_STDOUT.

	* zserv.c (zebra_serv): More detailed error print.

1999-11-30  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* kernel_socket.c (rtm_read): Check old pid for static route
	insertion check.

1999-11-30  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* interface.c (if_dump_vty): BSDI/OS uses 64bit for interface
	statistics counter.

	* mtu_kvm.c: New file added.

1999-11-27  Vladimir B. Grebenschikov <vova@express.ru>

	* kernel_socket.c (rtm_write): Set RTF_CLONING flag for
	route to the directly connected interface.

1999-11-27  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* rt_socket.c: Delete USE_HOST_BIT definition.

1999-11-21  Michael Handler <handler@sub-rosa.com>

	* rtread_getmsg.c: Undef some definition to resolve conflict.

1999-11-27  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* kernel_socket.c (rtm_write): Change to use pre stored struct_dl
	value for gateway specification.

1999-11-25  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* rt_socket.c (kernel_rtm_ipv4): Even mask is 32 under IPv4 or
	128 under IPv6, don't use RTF_HOST.

1999-11-21  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* Makefile.am (EXTRA_DIST): Add rtread_getmsg.c.

1999-11-21  Michael Handler <handler@sub-rosa.com>

	* rtread_getmsg.c: Added for Solaris 2.6 support.

1999-11-18  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* rtread_sysctl.c (rtm_read_route): RTM_DELETE handling added.

	* rt_socket.c (kernel_read): Better BSD routing socket support.

1999-10-19  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* client_main.c: Disable making obsolete zebra test `client'
	command.

1999-10-18  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* zebra.c: Renamed to zserv.c.

	* zebra.h: Global definitions are moved to lib/zebra.h.  Then
	renamed to zserv.h.

1999-10-15  Jordan Mendelson <jordy@wserv.com>

	* if_ioctl.c: Add Linux 2.2.X's alias support and dynamic
	interface.  Remove ugly MAX_INTERFACE handling codes.

1999-09-17  Satosi KOBAYASI <kobayasi@north.ad.jp>

	* Fix serious bug of IPv6 route deletion.

1999-09-11  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* ioctl.c (if_set_prefix): Properly set broadcast address.

1999-09-04  Yasuhiro Ohara  <yasu@sfc.wide.ad.jp>

	* rib.c (rib_add_ipv6, rib_delete_ipv6): now protocol daemons
	can install connected route to kernel via zebra

1999-08-24  VOP <vop@unity.net>

	* rib.c: Include "sockunion.h"

1999-08-22  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* ipforward.h: New file.

	* zebra.h: Obsolete message ZEBRA_GET_ALL_INTERFACE,
	ZEBRA_GET_ONE_INTERFACE, ZEBRA_GET_HOSTINFO are deleted.

1999-08-18  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* zebra.h (ZEBRA_INTERFACE_ADDRESS_ADD):
	ZEBRA_INTERFACE_{ADD,DELETE} added.

1999-08-15  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* rib.c: show ip route A.B.C.D works.

	* zebra.c (zebra_read_ipv4): Add ifindex to zebra messages.

1999-08-12  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* zebra.h: New Zebra message ZEBRA_INTERFACE_{ADD,DELETE} added.

1999-08-09  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* interface.h: New file.
	* Makefile.am: Add interface.h

1999-08-04  Yasuhiro Ohara  <yasu@sfc.wide.ad.jp>

	* redistribute.c (zebra_redistribute): give ifindex to client.

1999-08-02  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* main.c (longopts): -k, --keep_kernel option added.

1999-07-18  Yasuhiro Ohara  <yasu@sfc.wide.ad.jp>

	* rt_socket.c (rtm_write): forgot closing socket bug fixed.

1999-07-17  Yasuhiro Ohara  <yasu@sfc.wide.ad.jp>

	* rib.c (show_ipv6_cmd): if rib is link show interface name.

1999-07-17  Yasuhiro Ohara  <yasu@sfc.wide.ad.jp>

	* rt_socket.c (rtm_write): use sockaddr_dl when null gateway.

1999-07-16  Yasuhiro Ohara  <yasu@sfc.wide.ad.jp>

	* rt_socket.c (rtm_write): ipv6 route table bug fixed.

1999-07-15  Yasuhiro Ohara  <yasu@sfc.wide.ad.jp>

	* zebra.c (zebra_read_ipv6): read link prefix from ospf6 support

1999-07-15  Yasuhiro Ohara  <yasu@sfc.wide.ad.jp>

	* rt_socket.c (kernel_rtm_ipv6): gate treatment bug fixed.

1999-07-15  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* if_sysctl.c (ifm_read): Clear sockunion argument before fetching
	data.  Suggested by "Chris P. Ross" <cross@eng.us.uu.net>

1999-07-08  HEO SeonMeyong <seirios@Matrix.IRI.Co.Jp>

	* interface.c (if_tun_add): Add KAME's gif tunnel setting codes.

1999-06-26  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* zebra.c (zebra_serv): Only accept loopback address connection.

1999-06-25  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* zebra.h (ZEBRA_ROUTE_EXTERNAL): Add zebra messages flags

1999-06-17  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* ipforward_proc.c: ipforward_on () and ipforward_off () added.

1999-06-14  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* ipforward_proc.c (ipforward_ipv6): Check for IPv6 forwarding
	using /proc file system is added.

1999-06-06  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* if_ioctl.c (if_get_index): Interface index set bug is fixed by
	adding #else at the middle of function.  Suggested by David Luyer
	<luyer@ucs.uwa.edu.au>.

1999-05-29    <kunihiro@zebra.org>

	* rt_ioctl.c: Comment out #include <linux/ipv6_route.h>.

1999-05-26  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* zebra.h (ZEBRA_ROUTE_MAX): Add new define for the max value of
	the sort of routes.

1999-05-25  Patrick Koppen <koppen@rhrk.uni-kl.de>

	* rt_netlink.c (netlink_socket): Make netlink socket non-blocking.
	(netlink_parse_info): If errno is EWOULDBLOCK then continue to
	parse the message.
	(netlink_talk): Likewise
	
1999-05-17    <kunihiro@zebra.org>

	* redistribute.c (zebra_check_addr): Added for loopback address
	check.

1999-05-15  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* rt_netlink.c (netlink_route_change): Tempolary bypass ipv6 route
	change treatment.

	* Makefile.am (noinst_HEADERS): redistribute.h added.

	* redistribute.h: New file.

1999-05-14  Stephen R. van den Berg <srb@cuci.nl>

	* zebra.c (show_table): Show all table configuration DEFUN.
	(config_table): Config table number DEFUN.

	* rt_netlink.c: Add support for multiple routing table.

	* rib.c (rib_weed_table): New function added for delete all
	routes from specified routing table.

	* main.c (signal_init): SIGTERM call sigint.
	(sigint): Loggging more better message.

1999-05-09  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* rt_netlink.c: Change log () to zlog ().

1999-05-07    <kunihiro@zebra.org>

	* zebra.h (ZEBRA_ROUTE_OSPF6): Added for ospf6d route.

1999-04-20  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* interface.c: Add `no ip address' command.

1999-04-10  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* rt_netlink.c (kernel_read): Function added for asynchronous
	zebra between kernel communication.

1999-03-25  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* rtread_sysctl.c (rtm_read): Fix address memcopy overrun bug.
	Reported by Achim Patzner <ap@bnc.net>.

1999-03-03  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* Makefile.am: Install configuration sample with 600 permission.

1999-03-02  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* Makefile.am: Add -I.. to INCLUDES.

1999-02-18  Peter Galbavy  <Peter.Galbavy@knowledge.com>

	* syslog support added

1999-02-17 Peter Galbavy <Peter.Galbavy@knowledge.com>

	* if_sysctl.c (interface_list): allocated memory free when unknown
	ifm_type is returned.

	* ioctl.c (if_get_mtu): added SIOCGIFDATA treatment.
	
1998-12-15  Magnus Ahltorp <map@stacken.kth.se>

	* interface.c: Header include added.

1998-12-14  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* rt.h (kernel_delete_ipv6): change int index to unsigned int index.

1998-12-13  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* if_ioctl.c (interface_list_ioctl): interface flag must be
	checked before check addresses of the interface.

1998-12-07  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* Makefile.am (INCLUDES): add @INCLUDES@ for Linux IPv6.

1998-10-14  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* ioctl.c: Linux version before 2.1.0 need interface route setup.

1998-09-15  HEO SeonMeyong  <seirios@matrix.iri.co.jp>

	* change HYDRANGEA to KAME

1998-09-01  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* if_ioctl.c (if_addr_ioctl): set address family for getting
	interface's address.
	(if_get_index): silently return when can't get interface's index.

1998-08-17  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* main.c (main): batch mode option '-b' added.

1998-08-16  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* ioctl.c (if_set_prefix): add `ip address IPV4ADDR' command.
	* interface.c (shutdown_if): add interface shutdown and no
	shutdown command.

1998-08-12  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* rib.c (rib_add_ipv6): delete rib_add_in6.

1998-07-27  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* main.c: retain flag is added.

1998-07-08  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* rtable.[ch]: merged with rib.[ch]

1998-07-07  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* connected.h: renamed from ifa.h.

1998-06-09  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* rename if.c to interface.c
	* rename ifa.c to connected.c

	* Porting to Debian GNU/Linux 2.0 (hamm).

1998-06-08  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* rt_netlink.c: renamed from krt_netlink.c
	
	* fib.c: deleted.
	* rt_kvm.c: deleted.
	* rtread_getmsg.c: deleted.

1998-06-07  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* if.c (multicast): add multicast flag [un]set fucntion.

1998-05-19  Yamshita TAKAO  <jargon@lares.dti.ne.jp>

	* rt_socket.c: Modify for compile on Solaris, but dont't work it.
	  rt_socket.c have some undefined function, so add directive "IMPLEMENT"

1998-05-18  Yamshita TAKAO  <jargon@lares.dti.ne.jp>

	* zebra.c: Modify for compile on Solaris.

1998-05-03  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* main.c: change CONFDIR to SYSCONFDIR.

1998-05-01  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* .cvsignore: added.

1998-04-02  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* client.c: moves to ../lib.

1998-03-30  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* if_ioctl.c (if_get_addr): Change address copy from memcopy() to
	structure assignment.

1998-03-30  URA Hiroshi <ura@yamato.ibm.co.jp>

	* if_sysctl.c (ifm_interface_add): sdl->sdl_data copy bug fixed.

1998-02-23  "Hannes R. Boehm" <hannes@boehm.org>

	* if.c (if_init): add config_exit_cmd and config_help_cmd.

1998-01-24  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* rt_ioctl.c (route_ioctl): EPERM treatment added.

1998-01-05  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* rt_socket.c (kernel_read): communication port zebra between
	kernel is now handled by kernel_read.

1998-01-02  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* main.c (main): zebra [-P port] can specify vty port number.

1997-12-25  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* zebra.c: change select will be block.

1997-12-04  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* add static route treatment.

1997-11-25  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* rt_netlink.c: add netlink support over GNU/Linux system.

1997-11-23  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* all inet_addr is changed to inet_aton.

	* zebra.c (ip_route): add ip route command for static routes.

1997-11-20  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* if.c (if_flag_dump): Linux port of if_flag_dump and _vty.

1997-11-19  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* if.c: add interface command.

1997-11-18  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* ipforward_proc.c : Now works on Linux.

1997-10-25  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* command.c : add completion feature.

1997-10-18  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* vty.c (vty_command): add vty interface.

1997-10-13  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* zebra.c: add verbose mode.

1997-10-12 SonMyong Ho <s-ho@Matrix.IRI.Co.Jp>

	* Hydrangea for FreeBSD supported
	* in.h: add some prototype.

1997-10-11  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* rt_socket.c and rtread.c completely rewritten.

1997-10-05  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* rt_socket.c: rename kernel_sock to routing_socket

1997-10-04  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* if.c (if_new): interface structure change from linklist to vector.

1997-10-03  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* vector.c (vector_init): create vector related function

1997-09-25  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* Makefile.in: add tags target

	* start IPv6 support for INRIA FreeBSD.

