2004-03-17 Jean-Yves Simon <lethalwp@tiscali.be>
	
	* zebra/main.c, ripd/rip_main.c: Fix typos sigusr1 -> sigint,
	  bugzilla #82.

2004-03-16 David Young <dyoung@pobox.com>

	* (many) reference <lib/version.h> rather than "version.h",
	because version.h is a generated file and not present in the
	source tree when using objdir builds.

2004-03-03 PC Drew <pc@superiorcomm.net>

	* lib/keychain.c: typecast time_t function to long, fixes compile
	  warning.
	* lib/debug.c: wrapped function with ifdef HAVE_GLIBC_BACKTRACE fixes
	  compile warning when backtrace doesn't exist for that system.
	* zebra/rtadv.c: for OpenBSD, added include statement for
	  netinet/icmp6.h
	* zebra/zserv.c: added default case to switch statements, fixes compile
	  warning about certain NEXTHOP_TYPE enumeration values not being
	  handled.
	* zebra/rt_socket.c: set *mask = NULL by default, fixes compile
	  warning, about mask possibly being used uninitialized.
	* bgpd/bgp_nexthop.c: added default case to switch statements, fixes
	  compile warning about certain NEXTHOP_TYPE enumeration values not
	  being handled.
	* ospfd/ospf_spf.c: typecast time_t to long, fixes compile warning.
	* ospfd/ospf_route.c: typecast route_node->prefix to prefix_ipv4, fixes
	  compile warning.
	* ospfd/ospf_route.c: typecast prefix_ipv4 to prefix, fixes compile
	  warning.
	* ospfd/ospf_abr.c: typecast prefix to prefix_ipv4 in two instances,
	  fixes compile warning.
	* vtysh/vtysh.c: fixed null pointer sentinel value when doing execl and
	  friends, fixes compile warning.
	* ospf6d/ospf6_damp.c: typecast time_t to long in 4 instances, fixes
	  compile warning.
	* ospf6d/ospf6_main.c: use MAXPATHLEN (if set) instead of 64 for the
	  _cwd array, fixes compile warning.

2004-01-19 Paul Jakma <paul@dishone.st>

	* tests/test-sig.c: New file, regression test for sigevents.
	* lib/Makefile.am: add sigevent.{c,h}
	* (isis|rip|ripng|ospf|ospf6|bgp)d/\1_main.c: modify for sigevents.
	* zebra/main.c: ditto.
	
2004-01-10 Paul Jakma <paul@dishone.st>

	* Makefile.am: redhat/ is a dist subdir too.
	
2004-01-10 Vincent Jardin <jardin@6wind.com>

	* configure.ac: add the redhat/Makefile as a AC_OUTPUT() argument.
	It fixes build on FreeBSD 5.1 and FreeBSD 4.7

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

	* Makefile.am: as per gdt, specify the redhat dir as a DIST_SUBDIR,
	  remove the redhat/... dist targets - instead these now go in..
	  redhat/Makefile.am: (new) proper place to describe redhat/ dist 
	  files, as well as allow quagga.spec to be regenerated properly.
	  redhat/quagga.sysconfig: specify conf file location.
	  redhat/quagga.spec.in: Add 2 patches to RPM build.
	  
2003-12-30 Paul Jakma <paul@dishone.st>

	* redhat/isisd.init: new file, init script for isisd.
	  redhat/quagga.sysconfig: new file, sysconfig file for quagga
	  initscripts. 
	  redhat/quagga.spec.in: various cleanups, including sysconfig patch
	  from RH, fixed UID/GID as per RH EL, shell changed to 
	  /sbin/nologin, daemon vty's listen to 127.1 only per default and 
	  isisd packaged.
	  redhat/*.init: sysconfig support and runlevels specified.
	  
2003-12-30 Paul Jakma <paul@dishone.st>

	* Makefile.am: put the redhat/ stuff into EXTRA_DIST rather than
	  copying via dist-hook. Remove ~ files backup cruft from dists.
	  isisd/Makefile.am: sysconf example should go via
	  dist_examples_DATA. The include-netbsd/ headers werent mentioned
	  as sources and werent being copied into dists.
	  
2003-12-23 Vincent Jardin <jardin@6wind.com>

	* isisd: Import isisd from Sampo Saaristo's source code.

2003-12-22 Christian Hammers <ch@lathspell.de>

	* configure.ac (and everywhere a regular file is opened for
	  writing): use file permissions from configure rather than
	  compiled-in umask.

2003-12-22 Hasso Tepper <hasso@estpak.ee>

	* lib/linklist.c: Revert microfix I commited while reverting 
	  [quagga-dev 227]. Caused by misreading code.

2003-12-21 Hasso Tepper <hasso@estpak.ee>

	* lib/linklist.c: Revert patch [quagga-dev 227]. listnode_add_sort()
	  function should not drop nodes in any case. But fix behavior where
	  nodes were added to the end of list when cmp returned 0.
	* lib/if.c: Check for duplicates before calling listnode_add_sort().

2003-12-08  Greg Troxel  <gdt@fnord.ir.bbn.com>

	* {lib,ospfd,ospfapi}/Makefile.am: Use pkginclude_HEADERS rather
	than include_HEADERS to place includes in
	${prefix}/include/quaggainstead of polluting ${prefix}/include.

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

	* configure.ac: When setting exampledir to sysconfdir as a
	default, don't quote ${sysconfdir}.  (Bug reported by Vincent
	Jardin.)

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

	* configure.ac: Compile in Router Advertisement support by
	default.  Note that this does not default to sending RAs; it just
	makes 'ipv6 nd send-ra' and 'ipv6 nd prefix-advertisement'
	available.  While others may prefer other tools, no argument has
	been made that router advertisement support is such bloat that it
	should be compiled out by default (it 9556 bytes on NetBSD/i386 vs
	8 bytes with the support compiled out). This reversion of a
	previous change was done in consultation with Paul.

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

	* configure.ac: Move tests for v6 header files to after the check
	for v6 code version, and conditionalize on the right variable.
	(Fixes problem where v6 header files are not included when v6 is
	enabled implicitly.)

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

	* configure.ac: Add --enable-exampledir to specify where example
	config files should go, defaulting to sysconfdir.

	* */Makefile.am: use exampledir instead of sysconfdif for examples

2003-11-02 Paul Jakma <paul@dishone.st>

        * bgpd/bgp_routemap.c: Fix up 'set ip next-hop A.B.C.D|peer-address'
          route map command so that vtysh can use it. Modified version of   
          Hasso Tepper's patch. Fixes bug #52.
        * configure.ac: FreeBSD has net-snmp in /usr/local.
        * redhat/quagga.spec.in: Install libzebra headers with -devel
          package.

2003-11-02 Krzysztof Oledzki <oleq@ans.pl>

        * zebra/zebra_rib.c: Revert patch (dating from zebra.org) which  
          caused zebra to read all routes in all tables, rather than just
          the main table. See [quagga-dev 280].

2003-10-30 Paul Jakma <paul@dishone.st>

        * configure.ac: netinet/in_systm.h is yet another well-known
          header file we really should be checking for

2003-10-27 kamatchi soundaram <kamatchi@tdd.sj.nec.com>

        * ospfd/ospfd.c: Do not increment act_int for an area, as it is done
          by ospf_ism.c::ism_change_state() - results in incorrect figure
          for active interfaces in an area.

2003-10-27 Paul Jakma <paul@dishone.st>

        * lib/if.{ch}: remove ifc_pointtopoint() - left over from the
          reverted RFC3021 patch.

2003-10-27 Simon <lists@routemeister.net>

        * ospfd/ospfd.c: if_is_pointopoint() takes (struct interface *), was
          being called with struct connected. Change to co->ifp.

2003-10-27 Gilad Arnold <gilad.arnold@terayon.com>

        * zebra/zebra_rib.c: (nexthop_active_update) Check for multipath
          limit when setting changed flag to avoid spurious changes.
          (static_install_ipv{4,6}) dont uninstall by default, might not be
          required - avoid spurious uninstalls.
          (static_uninstall_ipv{4,6}) only uninstall the route if its
          actually FIB route.

2003-10-24 sowmini.varadhan@sun.com

        * ospfd/ospf_network.c: (ospf_sock_init) Exit if socket can not be
          created.

2003-10-24 Jose Luis Rubio Guivernau <jrubio@dit.upm.es>

        * Better 'show bgp' support for views (eg ipv6), see [quagga-dev 238]
        * bgpd/bgp_route.c: (bgp_show) Take a struct bgp argument instead of
          view string.
          (bgp_show_neighbor_route) Take a struct peer argument instead of
          ip string.
          (peer_adj_routes) ditto
          (show_adj_routes) ditto
          (peer_lookup_in_view) new function to return appropriate struct
          peer for a given view string.
          (misc) Fixup all calls to above to reflect new calling arguments,
          and use peer_lookup_in_view as needed. Additional commands
          installed to use expanded functionality above, existing commands
          modified to suit as well.
        * bgpd/bgp_vty.c: 2 new aliases.

2003-10-24 Paul Jakma <paul@dishone.st>

        * configure.ac: Check for fcntl()
        * {bgpd,ospf,ospf6d,ripd,ripngd}/Makefile.am: Install conf file via
          regular automake means, not magic install incantations, see
          bug #38.
        * lib/Makefile.am: install the headers, needed to link libzebra.a
          (and hence libospf.a, OSPF-API, etc.)

2003-10-24 waldi@debian.org

        * vtysh/Makefile.am: vtysh_cmd.c rebuild was broken because it
          depended against source files without specification, i.e. it
          used ../zebra instead of $(top_srcdir)/zebra.

2003-10-23 Paul Jakma <paul@dishone.st>

        * configure.ac: IRIX configure.ac support. Sort of works.
          sysctl() crashes though (ipforward), there's some kind of odd
          padding in the PF_ROUTE socket messages and setsockopt() on
          SOCK_RAW does not work (so ospfd doesnt work).

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

        * vtysh/Makefile.am: do not include vtysh_cmd.c in dists, its
          configure dependent. (still need to find a way to make building of
          it dependent on configure options or include all commands.)

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

        * lib/zebra.h: include limits.h if its there, its a portable header
          and useful and not just solaris specific. net/route.h is also
          useful.

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

        * lib/regex.c: bzero -> memset
        * zebra/ioctl.c: ditto. bzero is not portable.

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

        * zebra/kernel_socket.c: HAVE_IPV6 conditional for WRAPUP when
          HAVE_SA_LEN is not defined. bcopy -> memcpy, bcopy is not
          portable.

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

        * configure.ac: Split up header checks into non-net, net and ipv6
          related. Checking of IPv6 is conditional. Add some more output
          text for the end of the configure run.

2003-10-18 Lorenzo Colitti <lorenzo@ripe.net>

        * bgpd/bgp_attr.c: (bgp_dump_routes_attr) Dont dump IPv4 nexthop
          for IP. Dump MP_NLRI attr with IPv6 next-hop for AF_INET6 address
          family prefixes. Accept prefix as argument.
        * bgpd/bgp_attr.c: modify bgp_dump_routes_attr declaration.
        * bgpd/bgp_dump.c: (bgp_dump_routes_entry) Modify calls to
          bgp_dump_routes_attr.
          (bgp_dump_common) Go by the family of the peering socket, not
          configured address family when dumping peering information.
          Add HAVE_IPV6 conditionals, eg missing from previous bgp interval
          patch.

2003-10-18 Lorenzo Colitti <lorenzo@ripe.net>

        * bgpd/bgp_dump.{c,h}: (bgp_dump_interval_add) Dump at discrete
          fixed intervals rather than fixed intervals from startup time.
          (bgp_dump_interval_func) Dont return immediately if file cant be
          openeded, but reschedule interval dumps, even - admin might
          fix problem in meantime. Close the dump file in between intervals.
          (bgp_dump_init) account for MSG header when initialising stream
          size.

2003-10-15 Paul Jakma <paul@dishone.st>

        * ospfd/ospf_interface: (ospf_if_lookup_table) new function to
          lookup oi for a given prefix in a given interfaces table of oi's.
          (ospf_if_new) use ospf_if_lookup_table to deal with zebra
          reporting new interface multiple times.
          NB: This patch is a complete plaster-band of a hack. First, why is
          zebra reporting interface events multiple times? Second, why does
          ospfd maintain so many damn lists and tables relating to oi's -
          these should be reconciled into one or two tables.

2003-10-15 sowmini.varadhan@sun.com

        * ripd/ripd.c: (rip_send_packet) use rip->sock for mcast sends,
          instead of creating one socket per send. send source addr to
          rip_update_interface.
          (rip_update_process) should send an update on every connected
          network for each interface.
          (rip_request_send) should send a request on every connected
          network for each interface.
        * ripd/ripd.h: update prototype for rip_interface_multicast_set
        * ripd/rip_interface.c: (rip_interface_multicast_set) reorganized
          so that it can be called repeatedly for aliased interfaces (on
          multiple networks).

2003-10-15 Jay Fenlason <fenlason@redhat.com>

        * lib/vty.c: (vty_telnet_option) Remote DoS exists if a telnet
          end-sub-negotation is sent when no sub-negotation data has been
          sent. Return immediately if no sub-negotation is in progress.
          (vty_read) do not attempt to process options if no sub-negotation
          is in progress.

2003-10-15 Paul Jakma <paul@dishone.st>

        * lib/vty.c: (vty_save_cwd) dont crash if getcwd fails. try fallback
          to SYSCONFDIR. Allocate cwd from the stack rather than relying on
          (non-portable) getcwd() allocation (which we didnt seem to be
          freeing).

2003-10-13 Jay Fenlason <fenlason@redhat.com>

        * lib/zebra.h: define UINT32_MAX for those systems which do not
          provide it.
        * bgp_attr.h: define BGP_MED_MAX.
        * bgp_route.c: update defines/constants to BGP_MED_MAX.
        * bgp_routemap.c: ditto. clean up route_match_metric_compile
          slightly to avoid unneccesary XMALLOC.

2003-10-13 sowmini.varadhan@sun.com

        * ospf_lsa.h: Add OSPF_LSA_PREMATURE_AGE flag.
        * ospf_lsa.c: added better debug comments. check sequence number in
          ospf_lsa_install. ospf_maxage_lsa_remover() checks for
          OSPF_LSA_PREMATURE_AGE and re-originates the lsa after ls_acks are
          received.
        * ospf_flood.c: improve debug statement- print ls_seqnum.

2003-10-13 Douglas Fraser <doug+quagga@idmf.net>

        * zebra/connected.c: PtP revert fixup. Zebra was not creating
        connected route for PtP peer.

2003-10-07 Tarhon-Onu Victor <mituc@iasi.rdsnet.ro>

        * zebra/ipforward_proc.c: (ipforward) Close the fd for
        /proc/net/snmp. See [quagga-dev 284]

2003-09-29 Gilad Arnold <gilad.arnold@terayon.com>

        * zebra/zebra_rib.c: Fix possible dangling reference to rib
        route_nodes - unlock it the appropriate number of times. (twice,
        because of the implicit lock). see [quagga-dev 251].

2003-09-29 Paul Jakma <paul@dishone.st>

        * zebra/connected.c: revert the 'generic PtP' patch as it causes
        far too many problems. People who use FreeSWAN should investigate
        native linux ipsec.
        * zebra/rt_netlink.c: ditto
        * lib/if.c: ditto
        * ripd/ripd.h: ditto
        * ripd/ripd.c: ditto
        * ripd/rip_interface.c: ditto
        * ospfd/ospfd.c: ditto
        * ospfd/ospf_snmp.c: ditto
        * bgpd/bgp_nexthop.c: ditto
        * ospfd/ospf_packet.c: Add debug output for some of the previously
          completely silent drops of 'bad' packets.
        * configure.ac: bump version

2003-08-27 Jay Fenlason <fenlason@redhat.com>

        * lib/Makefile.am: Do not use a lib (libcap) as a dependency
        * zebra/Makefile.am: Link in libcap
        * bgpd/bgp_routemap.c: attr->med is type u_in32_t, should be
          compared with UINT32_MAX
        * ospfd/ospfd.c: remove redundant assert
        * zebra/rtadv.c: add missing include for zebra/rib.h

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

        * lib/version.h: moved to version.h.in
        * lib/version.h.in: New file, from version.h. Change hardcoded
          package name and version to use the autoconf defined substition
          variables.
        * configure.ac: Fix up AC/AM_INIT* to new style. Remove the sed'ing
          through lib/version.h for VERSION. Add lib/version.h to the
          AC_OUTPUT list. Update the text output of quagga version at end
          of configure run to use PACKAGE_VERSION.
        * doc/.cvsignore: ignore quagga.pdf
        * doc/.cvsignore: ignore version.h, its now autogenerated.

2003-09-24 sowmini.varadhan@sun.com

        * lib/if.c: (if_cmp_func) fix infinite loop if
          ifp1->name == ifp2->name
        * lib/linklist.c: (if_cmp_func) Fix handling of case where
          list->cmp returns 0.
        * rip_interface.c: (rip_interface_address_add) call
          rip_enable_apply(), or the interface is never considered up.
          see [quagga-dev 225].
        * zebra/kernel_socket.c: Fix up WRAPUP macro to deal with multiple
          address families in the absence of sa_len element in struct
          sockaddr.
          (ifm_read): Handle solaris 9 if_msghdr_t.
          Deal with interfaces which are incomplete, lookup on name rather
          than the placeholder interface index of -1.

2003-09-24 Thomas Giger TGC <thomas.giger@tgc.de>

        * ospf_packet.c (ospf_associate_packet_vl): pass NULL struct
          interface to ospf_if_lookup_by_local_addr() rather than the
          receiving interface ifp, packets for VL's could come in any
          interface. See quagga-dev 250.

2003-04-13 Paul Jakma <paul@dishone.st>

	* Amir: Opaque LSA bug fix for deletion of Type11's
	* configure.ac: use --localstatedir for Unix sockets
	* Hasso Tepper: When flushing as-ext LSAs flush associated NSSA
	  LSAs.

2003-04-04 Paul Jakma <paul@dishone.st>

	* Sync to Zebra CVS
	* Fix lib/thread.h leak
	* Fix small Opaque LSA leak
	* Do not configure OSPF interfaces for secondary addresses
	* vtysh fixes from Hasso
	* Dave Watson's missing ntohs fix

2003-03-25 Paul Jakma <paul@dishone.st>

	* Sync to Zebra CVS

2003-03-17 Amir Guindehi <amir@datacore.ch>

	* Extended SNMP checks in configure.ac so that net-snmp works

2003-03-17 Amir Guindehi <amir@datacore.ch>
           Ralph Keller <keller@tik.ee.ethz.ch>
	* merge OSPF-API 

2003-02-07 Paul Jakma <paul@dishone.st>

	* Sync to zebra CVS

2003-02-03 Paul Jakma <paul@dishone.st>

	* Sync to zebra CVS

2003-01-19 Paul Jakma <paul@dishone.st>

	* Temporary fix for Generic PtP wrt to IPv6

2003-01-17 Paul Jakma <paul@dishone.st>

	* Sync up to latest zebra.org CVS
	* [zebra 16823] Bugfix and new feature in Opaque-LSA handling
	  Masahiko Endo <endo@suri.co.jp>
	* [zebra 16824] [PATCH] nsm_kill_neighbor 
	  Masahiko Endo <endo@suri.co.jp>
	* [zebra 17217] [PATCH] show thread CPU
	  Yon Uriarte <havanna_moon@gmx.net>
	* [zebra 17218] Re: [PATCH] CLI extensions.
	  Yon Uriarte <havanna_moon@gmx.net>

2002-12-13 Paul Jakma <paul@dishone.st>

	* added support for vtysh 'write file' command to 
	  write either per-daamon and/or integrated file
	* ospfd md5 buffer copying fix (Greg Troxel) 
	* ospfd md5 sequence number derived from time()
	* RIPv1 fixes and improvements (John Hay)
	* link state detection (linux) ([zebra 12269])
	* Generic PtP and RFC3021 interface addressing support
	  (Frank van Maarseveen)
	* Michal Ludvig <michal@logix.cz>:
	  [zebra 16525] PATCH: Bugfixes for KAME systems
	* Kevin C Miller <kevinm@andrew.cmu.edu>
	  [zebra 16681] OSPF NSSA Patches
	* Yon Uriarte <havanna_moon@gmx.net>
	  [zebra 16671] [PATCH] CLI extensions
	* Masahiko Endo: [zebra 15475] - MPLS-TE docs

2002-07-07  Kunihiro Ishiguro  <kunihiro@ipinfusion.com>

	* zebra-0.93 released.

2002-06-28  Kunihiro Ishiguro  <kunihiro@ipinfusion.com>

	* update-autotools: Change file name from update-auto-tools.sh.

2002-06-21  Kunihiro Ishiguro  <kunihiro@ipinfusion.com>

	* update-auto-tools.sh: Add a new script to clean up build
	environment.

2002-06-18  Kunihiro Ishiguro  <kunihiro@ipinfusion.com>

	* Shift to the latest build environment autoconf-2.53 and
	automake-1.6.2.

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

	* Integrate Glen Turner <glen.turner@aarnet.edu.au>'s pid option.

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

	* zebra-0.92a released.

2001-08-19  "Peter Galbavy" <peter.galbavy@knowtion.net>

	* configure.in: SNMP library check problem fix when the library is
	installed under /usr/local/lib.

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

	* zebra-0.92 released.

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

	* configure.in (LIBPAM): Use ZEBRA_AC_C_BIGENDIAN to avoid a
	warning.
	(IF_METHOD): Use test -r instead of AC_CHECK_FILE to avoid
	warnings.

	* config.guess: Update to 2000-11-10 version.

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

	* configure.in: Use AC_TRY_COMPILE instead of AC_EGREP_HEADER to
	detect in_pktinfo structure.  Suggested by: Vlad Lungu
	<vlad@rls.roknet.ro>.

2001-03-07  Michael Rozhavsky <mrozhavsky@opticalaccess.com>

	* configure.in: Add check for structure in_pktinfo.

2001-02-07  "Bjoern A. Zeeb" <bzeeb+zebra@zabbadoz.net>

	* configure.in (USE_PAM): Fix PAM library detection code.

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

	* zebra-0.91 is released.

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

	* configure.in: Remove guile related definition.

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

	* configure.in (ac_cv_htonl_works): HAVE_REPAIRABLE_HTONL is
	removed.  htonl should work fine on any platform.

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

	* configure.in: Remove --enable-oldrib option.

	* acconfig.h: OLD_RIB definition is removed.

	* zebra-0.90 is released.

	* configure.in (LIBS): Add check for sun_len field in struct
	sun_len.

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

	* Makefile.am: Include init/redhat files to distribution.

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

	* configure.in: check libm.a for BGPd compile error.
	AC_CHECK_LIB(m, main) was added.

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

	* configure.in: --enable-unixdomain becomes default.  Add
	--enable-tcp-zebra for TCP/IP communication between protocol
	daemon and zebra.

	* COPYING.LIB: Added for lib/getopt.c, lib/getopt.h,
	lib/getopt1.c, lib/md5-gnu.h, lib/md5.c, lib/regex-gnu.h,
	lib/regex.c.

	* Makefile.am (dist-hook): Include tools/*.cgi to distribution.

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

	* configure.in (MULTIPATH_NUM): --enable-multipath=ARG specify
	multipath number.  ARG must be digit.

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

	* configure.in: Add --enable-newrib for test new RIB code.

2000-11-25  Yasuhiro Ohara  <yasu@sfc.wide.ad.jp>

	* configure.in, config.h.in: Add check for libutil.h and
	setproctitle().

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

	* configure.in: Add --enable-nssa for OSPF NSSA option.

	* acconfig.h: Define HAVE_NSSA.

2000-10-25  "Bjoern A. Zeeb" <bzeeb+zebra@zabbadoz.net>

	* configure.in: pam_misc is only linked when the platform is
	GNU/Linux.

2000-10-24  Arkadiusz Miskiewicz <misiek@pld.org.pl>

	* configure.in (LIBS): Add check for crypto library.  test x`ls
	${ac_snmp}` is replaced with sipmle test -f.

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

	* configure.in: Add --enable-unixdomain option.  This will be
	default behavior in zebra-0.90.

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

	* zebra-0.89 is released.

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

	* configure.in: Add check for Intel CPU for Solaris on x86 check.

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

	* configure.in: Add check for getifaddrs().
	Set AM_INIT_AUTOMAKE version to 0.89.

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

	* config.guess: Update to the latest version.

	* config.sub: Likewise

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

	* REPORTING-BUGS: New file is added.

2000-08-27  itojun@iijlab.net

	* configure.in: Add ncurses library check when --enable-vtysh is
	specified.

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

	* configure.in: Add check for readline/history.h.

	* acconfig.h: Remove pthread related variables.

	* configure.in: Add --with-libpam option for vtysh PAM
	authentication.  Remove --disable-pthread because we don't support
	pthread.

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

	* zebra-0.88 is released.

	* configure.in: Add Solaris -lcurses for vtysh.

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

	* configure.in: Add check for ncurses for compiling on Solaris.

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

	* configure.in: Add check for libreadline when --enable-vtysh is
	specified.

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

	* configure.in: Add AC_DEFINE(OPEN_BSD). When OS is OpenBSD
	interface method is if_ioctl.o

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

	* acconfig.h: Add HAVE_BROKEN_ALIASES.
	
	* configure.in: Add --enable-broken-aliases.

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

	* Set version to zebra-0.87.

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

	* configure.in: Remove --enable-mpls-vpn.  Now MPLS-VPN support is
	default.

	* Set version to zebra-0.87-pre

	* Makefile.am: Likewise.

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

	* Set version to 0.86.

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

	* Set version to 0.85b for ospfd test.

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

	* Set version to 0.85a for ospfd test.

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

	* Set version to 0.85.

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

	* Makefile.in: Regenerated by patched automake for fixing "make
	clean" problem on FreeBSD.

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

	* Set version to 0.83a.  This is for *BSD static route lookup
	problem.

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

	* Set version to 0.83.

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

	* Set version to 0.82.

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

	* aczebra.m4: New file added.

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

	* configure.in (LIBS): Add sa_len check of sockaddr.

	* acconfig.h: Add HAVE_SA_LEN.

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

	* version.h: Update version to zebra-0.81b for bgpd test.

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

	* configure.in: Add --enable-mbgp.

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

	* Makefile.am (EXTRA_DIST): Add TODO to the distribution.

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

	* TODO: New file is added.

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

	* version.h: Update version to zebra-0.81a for ospfd test.

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

	* configure.in: New option --enable-snmp is added.

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

	* version.h: Update version to zebra-0.80.

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

	* version.h: Update version to zebra-0.80-pre3

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

	* configure.in (LIBS): SNMP check is done by ucd-snmp/asn1.h.

1999-10-10  Peter Galbavy <Peter.Galbavy@knowledge.com>

	* configure.in: Add support of OpenBSD.

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

	* version.h: Update version to zebra-0.80-pre2.

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

	* version.h: Update version to zebra-0.80-pre.  From this version,
	access-list and prefix-list's name space is divided into IPv4 and
	IPv6.

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

	* version.h: For test recent fixes Set version to zebra-0.79a.

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

	* version.h: zebra-0.79 is out.

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

	* version.h: For ospfd's virtual link test.  Set version to 0.78h.

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

	* version.h: For ospfd test.  Set version to 0.78g.

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

	* version.h: For internal test of ospfd. Set version to 0.78f.

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

	* version.h: To test ospfd's fix, set version to 0.78e.

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

	* version.h: To test ospfd's area related bug fix, set version 
	to 0.78d.

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

	* version.h: To test ospfd, set version to 0.78c.

1999-08-31  Janos Farkas <chexum@shadow.banki.hu>

	* Many misspelling correction.

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

	* version.h: To test ospfd, set version to 0.78b.

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

	* configure.in (LIBS): Add UCD-SNMP include path check.

1999-08-31  Lars Fenneberg  <lf@elemental.net>

	* configure.in: The logic which detects the UCD-SNMP library
	should first check in the default system locations for the library
	and then in /usr/local.

1999-08-27  itojun@iijlab.net

	* configure.in (LIBS): Fix problem about libsnmp.a check.

1999-08-26  kay <kay@v6.access.co.jp>

	* configure.in (CFLAGS): Add <sys/socket.h> to check socklen_t.

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

	* filter.c: Include "sockunion.h".
	plist.c: Likewise.
	table.c: Likewise.

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

	* configure.in: Add netinet6/in6.h check.

1999-08-21  Masaki Minami <masaki@minami.org>

	* BSD/OS 4.0 porting.

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

	* configure.in: Add --enable-netlink option to force to use Linux
	netlink interface.
	(CFLAGS): Add ucd-snmp library check.

	* acconfig.h: If socklen_t is not defined, typedef int to
	socklen_t.

1999-08-15  Arkadiusz Miskiewicz <misiek@misiek.eu.org>

	* configure.in: When --enable-ipv6 specified, then only kernel
	version is checked.

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

	* configure.in: Add GNU libc 2.1 check.

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

	* configure.in: Fix privious Linux IPv6 check changes.

1999-08-02  Arkadiusz Miskiewicz <misiek@misiek.eu.org>

	* configure.in: Improve Linux IPv6 feature check.

1999-07-29  Rick Payne <rickp@rossfell.co.uk>

	* Changed route-maps to behave in a more cisco-like fashion

1999-07-27  Gerhard Poul <gpoul@gnu.org>

	* SERVICES: New file added.

1999-07-12  itojun@iijlab.net

	* configure.in: Add check for getaddrinfo.  Improve Kame related
	library check.

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

	* configure.in, acconfig.h: Add check for FreeBSD 3.2.

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

	* configure.in: Delete check for netinet/ip6.h.

1999-06-30  Gerhard Poul  <gpoul@gnu.org>

	* README: remixed the old files and added some new parts.
	moved some INSTALL stuff into INSTALL file.
	moved some other stuff to doc/zebra.texi

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

	* configure.in (LIBS): Add libresolv check.
	Change --enabe-all-in-one option to --enable-one-vty.

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

	* configure.in: Add --enabe-all-in-one option.

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

	* configure.in: Add socklen_t check.

1999-06-16  Gerhard Poul <gpoul@gnu.org>

	* Many compile warnings fixed.

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

	* configure.in: Change message from Linux 2.2.X IPv6 to Linux IPv6.
	OpenBSD (NRL) check is enabled.

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

	* configure.in (LIBS): Add crypt library check.

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

	* configure.in: Add sin6_scope_id in struct sockaddr_in6 check.

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

	* Set version to 0.63 for first beta package.

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

	* guile.m4: Added from guile package.

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

	* Set version to 0.60 for beta package preparation.

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

	* Makefile.am: Add noninst_LIBRARIES each directory's Makefile.am.
	This change is for linking these libraries to guile.

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

	* configure.in (LIBS): Add struct rt_addrinfo check.

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

	* configure.in: AC_STDC_HEADERS added.

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

	* Add dependencies to each directory's Makefile.am.

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

	* reworked include file structure, and configure so that all
 	source files get all system-dependent include files by including
 	<zebra.h> which is really lib/zebra.h. This means that the
 	different programs include files are now available as #include
 	"zebra/zebra.h" - note the use of quotes, not <> as delimiters.

	In practical terms, if I haven't really screwed up, the main file
 	that maintainers for other OSes have to change is lib/zebra.h for
 	all the conditional includes etc.

	* added --disable-pthread for those systems that seem to have
 	POSIX threads, but do not work. OpenBSD 2.4+ is like that just
 	now. Changed all occurance of #ifdef PTHREAD to use HAVE_PTHREAD
 	instead.

1999-02-24    <kunihiro@zebra.org>

	* configure.in: update to AC_PREREQ(1.13).
	Change message from Linux 2.1.x to Linux 2.2.x.
	* Added ospf6d directory support.

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

	* added a "log" element to the BGPd peer structure, enabling us to
 	start thinging about a log stream per peer. This is currently
 	ignored by the wrapper code, but developers should try to use the
 	"appropriate" ZLOG stream. Documentation will follow, when the
 	real routines start to exist.

	The current plan is to use a copy of the BSD syslog() routines and
 	replace the syslog library function with our own. I will need
 	feedback from users of other platforms as this work is done to see
 	if all is well elsewhere.
	
	* preliminary work on zlog() library. directly replaces syslog()
 	currently with zlog(ZLOG *, ...) where the new first argument
	is a pointer to a ZLOG structure (defined in lib/log.h) and will
	encapsulate all the information necessary to maintain multiple
	logging streams.

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

	* added vsnprintf() macro to lib/str.h if required and removed
	#ifdef SUNOS_5 dependency on it

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

	* syslog support added

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

	* configure.in: Add daemon function check.

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

	* configure.in: Add --disable-ipv6, --disable-zebra,
	--disable-bgpd, --disable-ripd, --disable-ripngd, --disable-ospfd
	options to configure.

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

	* configure.in: Check /usr/inet6/lib/libinet6.a exists or not.

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

	* configure.in: Comment out FreeBSD's libc_r detect section. At
	this moment it doesn't work correctly with zebra.

	Netlink interface is only enabled when Linux kernel version is
	upper than 2.1.0.

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

	* Hydrangea is now called KAME, so change all defines.

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

	* configure.in: ifaliasreq check added.

1998-08-12  Katsuhiro Kondou <kondou@nec.co.jp>

	* Patch is applied for compile under EWS4800

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

	* configure.in: delete old mtu_method check.

	* doc/zebra.texi (Kernel interface): chapter `Kernel interface' added

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

	* configure.in: add new netlink check for GNU/Linux

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

	* doc/zebra.texi: Update Linux netlink chapter.

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

	* config.h.in: define PTHREAD if work on Solaris 2.6
		why delete the definition? I miss?

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

	* configure.in: add net/if.h header check.

1998-05-02  SeonMeyong HEO <seirios@Matrix.iri.co.jp>

        * zebra.tex,archfig.tex,zebra.sty: Manual file is added.
	* zebra.texi: Modify Introduction text.
	* RIPngd.c: Patch Hydrangea code.

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

	* .cvsignore: added.

	* Makerule.in: is gone.
	* Makefile.am: Now we use automake to generate Makefile.in

1998-03-19  Yamashita TAKAO  <jargon@lares.dti.ne.jp>

	* lib/vty.c: modified the definition of *master
	* lib/sockunion.c (inet_aton): add, but don't work. uum...


1998-03-15  Yamashita TAKAO  <jargon@lares.dti.ne.jp>

	* configure.in: define PTHREAD if work on Solaris 2.6
	* config.h.in: likewise
	* lib/thread.c: likewise
	* lib/vty.c: likewise
	
1998-03-15  SeonMeyong HEO  <seirios@Matrix.iri.co.jp>

	* config.h.in: define INET6 if defined HAVE_IPV6 & HYDRANGEA
	* bgpd/: remove include <netinet6/in6.h> line.
	* lib/: remove include <netinet6/in6.h> line.
	* ripbgd/: remove include <netinet6/in6.h> line.
	* zebra/: remove include <netinet6/in6.h> line.
	* ripd/*.c: remove include <netinet6/in6.h> line.
	undefine IPV6 difinitions because RIPd is not worked for
	IPv6 protocol.

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

	* configure.in: Change routing socket check method from
	AC_TRY_COMPILE to AC_TRY_RUN because GNU libc version 2 has
	AF_ROUTE but over linux it's meenigless.

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

	* config.h.in: remove err_t define.

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

	* configure.in (canonical): add check of IF_METHOD

1997-09-27  Kunihiro Ishiguro  <kunihiro@note.digital-magic.co.jp>

	* configure.in: add INRIA check

1997-09-25  Kunihiro Ishiguro  <kunihiro@note.digital-magic.co.jp>

	* configure.in (canonical): change ipforward_snmp.o to ipforward_proc.o

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

	* configure.in: change IRDPD to NDPD

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

	* INSTALL: new file

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

	* config.h: add XCALLOC()

