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.

