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()

