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.

