2006-05-28 Paul Jakma <paul.jakma@sun.com>

	* configure.ac: Update SOS CFLAGS, Xt shouldn't be used and
	  enable debug options.
	  Add a check for GNU Make and warn the user if it does not appear
	  to be the make used.
	  Check for Sun libc printstack(), add a general HAVE_STACK_TRACE
	  define for lib/log.c, if any supported stack symbol dumping
	  function is found (glibc backtrace/sun libc printstack).

2006-05-10 Paul Jakma <paul.jakma@sun.com>

	* configure.ac: Bump to 0.99.4

2006-03-30 Paul Jakma <paul.jakma@sun.com>

	* TODO: Add reminder for useful MED functionality we should
	  implement.

2006-02-15 Paul Jakma <paul.jakma@sun.com>

	* configure.ac: Check for mallinfo, being careful to link test
	  so we can detect things like umem being used (which doesn't
	  provide a mallinfo).

2006-01-31 Paul Jakma <paul.jakma@sun.com>

	* configure.ac: Cleanup the hideous {net,ucd}-snmp section
	  by removing ucd-snmp. Hence fixing detection where
	  net-snmp is installed in /usr/local (Boris Kovalenko reported
	  the problem).

2006-01-19 Paul Jakma <paul.jakma@sun.com>

	* configure.ac: Bump to 0.99.3

2005-11-26 Paul Jakma <paul.jakma@sun.com>

	* configure.ac: Collect together CFLAGS based on compiler
	  detected a bit. Recognise and set default CFLAGS for SunPro /
	  SOS10.

2005-11-14 Paul Jakma <paul.jakma@sun.com>

	* configure.ac: Tell gcc we like C99.
	  [bug #231] Check and test for stdint.h.

2005-11-11 Paul Jakma <paul.jakma@sun.com>

	* NEWS: Update.
	* configure.ac: Bump to 0.99.2

2005-11-10 Paul Jakma <paul.jakma@sun.com>

	* HACKING: Add recommendation to provide a single Subject
	  style description to the commit message.
	  Add some recommendations for ChangeLog.

2005-09-29 Paul Jakma <paul.jakma@sun.com>

	* configure.ac: Add the test for Solaris least-privileges. Set
	  defines for whether capabilities are supported and whether of
	  the linux or solaris variety.
	  Add missing-prototypes, missing-declarations, char-subscripts
	  and cast-qual warnings to default cflags, cause Hasso enjoys warnings,
	  and we really should clean the remaining ones up. (ie isisd..).
	* (*/*main.c) Update the zebra_capabilities_t arrays in the various
	  daemons to match the changes made in lib/privs.h.
	  
2005-09-19 Hasso Tepper <hasso at quagga.net>

	* configure.ac: Test existance of strndup.

2005-08-25 Paul Jakma <paul@jakma.org>

	* configure.ac: Add -fno-omit-frame-pointer after -Os in default
	  cflags, just to be sure.
	  Fedora's readline library does not itself link to termcap, hence
	  we must pass the result of termcap tests in via OTHER-LIBRARIES
	  argument, otherwise the test of main in readline will fail due to 
	  missing termcap systems. On systems like Debian, -ltermcap
	  is not needed for the readline test, because libreadline already
	  links to it.
	  
2005-08-25 Hasso Tepper <hasso at quagga.net>

	* configure.ac, vtysh/Makefile.am: Only vtysh needs to be linked
	  against libreadline and friends.

2005-08-13 Paul Jakma <paul@jakma.org>

	* Makefile.am: (EXTRA_DIST) Add the trailing slash back in which
	  greg left out - tools bits weren't being included in dist,
	  which broke rpm builds :).

2005-08-10  Greg Troxel  <gdt@fnord.ir.bbn.com>

	* Makefile.am (EXTRA_DIST): add INSTALL.quagga.txt, because people
	that patch releases need to know about autoconf required versions.

2005-06-30 Louis Lagendijk <louis.lagendijk@gmail.com>

	* configure.ac: Actually test whether libc has IPv6 support.

2005-06-28 Paul Jakma <paul.jakma@sun.com>

	* INSTALL.quagga.txt: GNU make is required now, because of manual
	  automatic rules in solaris/Makefile.am. (If someone knows how
	  to do these in a better way..).
	  GNU AWK is required for CVS checkout builds.

2005-06-01 Paul Jakma <paul.jakma@sun.com>

	* NEWS: bgpd work queues and ripd auth-mode change

2005-05-07 Yar Tikhiy <yar@comp.chem.msu.su>

	* configure.ac: Check for OSes which support passing ifindex in
	  struct ip_mreq.

2005-04-29 Paul Jakma <paul.jakma@sun.com>

	* NEWS: Added some more 0.99 news.
	* configure.ac: bump to 0.99.1 (0.99.0 was never released except
	  via CVS snapshots)

2005-04-25 Paul Jakma <paul.jakma@sun.com>

	* HACKING: Add some notes about build system changes, to
	  document common oversights (common for me anyway).
	  Seperate sections with two newlines, easier to read.

2005-04-16 Andrew J. Schorr <ajschorr@alumni.princeton.edu>

	* configure.ac: Added AC_ARG_ENABLE(time-check).  By default,
	  warning messages will now be printed for threads or commands that take
	  longer than 5 seconds, but this configure argument can be used
	  to disable the checks or change the threshold.

2005-04-16 Paul Jakma <paul.jakma@sun.com>

	* configure.ac: check for gawk, needed to build memtypes.h

2005-04-11 Andrew J. Schorr <ajschorr@alumni.princeton.edu>

	* configure.ac: Move AC_CANONICAL_* stuff before AM_INIT_AUTOMAKE to
	  eliminate warning message about AC_ARG_PROGRAM being called
	  before AC_CANONICAL_TARGET.

2005-04-11 Paul Jakma <paul.jakma@sun.com>

	* configure.ac: Call AC_CANONICAL_{BUILD,TARGET} macros. Target isnt
	  set otherwise, afaict. AC_SUBST enable_{user,group,vty_group} and
	  quagga_statedir - the Solaris package bits for one need this.
	  configure the solaris/ Makefile.
	* Makefile.am: solaris is a subdir - unconditional or else it wont
	  be included in non-solaris made dists.
	  
2005-04-10 Paul Jakma <paul.jakma@sun.com>

	* configure.ac: Fix host string recognition for Solaris Nevada aka
	  solaris2.10.1, and hopefully future such strings.

2005-04-07 Paul Jakma <paul.jakma@sun.com>

	* (global): Fix up list loops to match changes in lib/linklist, 
	  and some basic auditing of usage.
	* configure.ac: define QUAGGA_NO_DEPRECATED_INTERFACES
	* HACKING: Add notes about deprecating interfaces and commands.

2005-04-05 Paul Jakma <paul@dishone.st>

	* HACKING: remove the 'manually patch redhat/quagga.spec' bit
	  from RELEASE section. Let the rpm revision be CONFDATE, will work
	  fine. Expand on the importance of supplying good ChangeLog's in
	  the PATCH SUBMISSION section.

2005-04-04 Hasso Tepper <hasso at quagga.net>

	* configure.ac: Fix AC_LANG_SOURCE usage. It needs double square
	  brackets around source. Single ones broke square brackets in the
	  code (arrays).

2005-04-03 Hasso Tepper <hasso at quagga.net>

	* configure.ac: Use AC_RUN_IFELSE instead of obsolete AC_TRY_RUN macro
	  and define action for cross-compiling.

2005-04-02 Hasso Tepper <hasso at quagga.net>

	* configure.ac: Add --enable-isis-topology to enable isisd topology
	  generator code.

2005-04-02 Paul Jakma <paul@dishone.st>

	* INSTALL.quagga.txt: Add note about additional CVS build
	  requirements, if one wishes to build ps/pdf docs.

2005-04-02 Andrew J. Schorr <ajschorr@alumni.princeton.edu>

	* configure.ac: Add strnlen to AC_CHECK_FUNCS.

2005-03-28 Hasso Tepper <hasso at quagga.net>

	* configure.ac, */Makefile.am: Fix previous commit. SNMP includes
	  must be after lib/ includes in some systems. Introduce SNMP_INCLUDES
	  for that.

2005-03-28 Hasso Tepper <hasso at quagga.net>

	* configure.ac: Fix most of "Presents But Cannot Compiled" warnings
	  about various headers. CFLAGS is not correct place to specify
	  includes, INCLUDES is for that.

2005-03-27 Hasso Tepper <hasso at quagga.net>

	* configure.ac: Add Intel compiler (icc) support. Although Intel
	  tries really hard to make icc look like gcc, there are some
	  differences. It's very verbose with -Wall and it doesn't support
	  the individual -W options. We are going to ignore some of these
	  warnings.

2005-03-26 Hasso Tepper <hasso at quagga.net>

	* doc/defines.texi.in, lib/version.h.in: Update copyright string to
	  include year 2005. 

2005-03-25 Jean-Mickael Guerin <jean-mickael.guerin@6wind.com>
	* configure.ac: add struct nd_opt_interval and struct
	  nd_opt_homeagent_info detection.

2005-03-14 Paul Jakma <paul.jakma@sun.com>

	* (global) update all c files to match the lib/vector.h rename of
	  (struct vector).active to max, and vector_max macro to
	  vector_active.
 
2005-03-12 Paul Jakma <paul.jakma@sun.com>

	* configure.ac: Solaris 8 can use the newer lifreq based methods
	  too, allows IPv6.

2005-02-19 Hasso Tepper <hasso at quagga.net>

	* configure.ac: Fix Linux detection. Host types like i686-pc-linux
	  didn't match the pattern.

2005-02-09 Paul Jakma <paul.jakma@sun.com>

	* (global) Update code to match stream.h changes.
	  stream_get_putp effectively replaced with stream_get_endp.
	  stream_forward renamed to stream_forward_getp.
	  stream_forward_endp introduced to replace some previous 
	  setting/manual twiddling of putp by daemons.

2005-01-24 Paul Jakma <paul@dishone.st>

	* configure.ac: Bump version to 0.99.0

2005-01-15 Andrew J. Schorr <ajschorr@alumni.princeton.edu>

	* redhat/quagga.spec.in: Fix postun script to avoid misleading error
	  message saying the postun scriptlet failed when watchquagga
	  is not running.

2005-01-12 Andrew J. Schorr <ajschorr@alumni.princeton.edu>

	* configure.ac: Test for header file <ucontext.h> (for use in
	  signal processing).

2005-01-12 Andrew J. Schorr <ajschorr@alumni.princeton.edu>

	* configure.ac: If configure is invoked with --enable-snmp, but
	  the configure script is unable to find SNMP support on the platform,
	  then configure should give an error message and exit.

2005-01-12 Andrew J. Schorr <ajschorr@alumni.princeton.edu>

	* redhat/quagga.spec.in: Pass --enable-gcc-rdynamic to configure
	  to get gcc to link with -rdynamic for better backtraces.
	  When the rpm is upgraded, the restart logic now works as follows:
	  1. stop watchquagga; 2. stop all routing daemons; 3. restart zebra
	  if it was running; 4. start all routing daemons that were running;
	  and 5. start watchquagga if it was running.

2005-01-07 Paul Jakma <paul@dishone.st>

	* configure.ac: Bump version to 0.98.0

2005-01-05 Paul Jakma <paul@dishone.st>

	* configure.ac: Bump version to 0.97.5

2005-01-04  Greg Troxel  <gdt@fnord.ir.bbn.com>

	* configure.ac: Use AC_MSG_CHECKING/AC_MSG_RESULT around
	CMSG_FIRSTHDR check, so it shows up in the output of configure.
	Tested on NetBSD, which doesn't define HAVE_BROKEN_CMSG_FIRSTHDR.

2005-01-04 Andrew J. Schorr <ajschorr@alumni.princeton.edu>

	* configure.ac: Added test for broken CMSG_FIRSTHDR macro
	  (relevant for Solaris 8 and unpatched Solaris 9, don't know
	  whether other platforms are affected).

2005-01-04 Andrew J. Schorr <ajschorr@alumni.princeton.edu>

	* NEWS: Note improved logging facilities.

2004-12-29 Andrew J. Schorr <ajschorr@alumni.princeton.edu>

	* configure.ac: Add new option --enable-gcc-rdynamic to link
	  with -rdynamic.

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

	configure.ac: Bump version to 0.97.4

2004-12-22 Andrew J. Schorr <ajschorr@alumni.princeton.edu>

	* redhat/quagga.spec.in: daemonv6_list should contain only IPv6 daemons.

2004-12-22 Andrew J. Schorr <ajschorr@alumni.princeton.edu>

	* redhat/quagga.spec.in: Add watchquagga, and fix some other
	  logic to make sure that all daemons are restarted on upgrades
	  and stopped on package removal.

2004-12-22 Andrew J. Schorr <ajschorr@alumni.princeton.edu>

	* redhat/quagga.sysconfig: Define some variables to support watchquagga.

2004-12-22 Andrew J. Schorr <ajschorr@alumni.princeton.edu>

	* configure.ac: Add a define for DAEMON_VTY_DIR in config.h.

2004-12-22 Andrew J. Schorr <ajschorr@alumni.princeton.edu>

	* {configure.ac,Makefile.am}: Build watchquagga by default.

2004-12-21 Andrew J. Schorr <ajschorr@alumni.princeton.edu>

	* NEWS: Note addition of watchquagga.
	* HACKING: Note that watchquagga is in testing phase.

2004-12-21 Andrew J. Schorr <ajschorr@alumni.princeton.edu>

	* watchquagga: New watchquagga daemon.

2004-12-21 Andrew J. Schorr <ajschorr@alumni.princeton.edu>

	* redhat/Makefile.am: Added watchquagga.init to EXTRA_DIST.

2004-12-21 Andrew J. Schorr <ajschorr@alumni.princeton.edu>

	* redhat/watchquagga.init: New file, init script for watchquagga.

2004-12-03 Andrew J. Schorr <ajschorr@alumni.princeton.edu>

	* HACKING: Indicate that header files should be consulted for
	  documentation, particularly logging levels in lib/log.h.

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

	* TODO: Add source routing, zebra filtering and lib/ documenting.

2004-11-19 Andrew J. Schorr <ajschorr@alumni.princeton.edu>

	* global: Replace strerror with safe_strerror.  And vtysh/vtysh.c
	  needs to include "log.h" to pick up the declaration.

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

	* configure.ac: Avoid regeneration of doc/quagga.info for now.

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

	* INSTALL.quagga.txt: texinfo version corrected, so section on
          that 4.7-x being unknown is not needed.

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

	* configure.ac: Fix AC_CONFIG_FILES, the chmod seems to run for
          every input file, should be only be for vtysh/extract.pl, so that
	  should be a seperate AC_CONFIG_FILES.
	* INSTALL: update-autotools, autoreconf -i will install this, remove
	  the file so it always matches the autoconf which created
          configure (ie the quagga snapshot producing host).
	* INSTALL.quagga.txt: Some quagga specific INSTALL notes.
	* README: s/GNU Zebra/Quagga/ and refer to IS-IS support.

2004-11-10 Andrew J. Schorr <ajschorr@alumni.princeton.edu>

	* redhat/quagga.spec.in: add comments showing how to get gcc verbosity

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

	* configure.ac: bump version to 0.97.3, release imminent.

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

	* configure.ac: Arguments to AC_OUTPUT is deprecated, use
          AC_CONFIG_FILES instead. Rearrange the order slightly to put the
          Makefiles first (silly aesthetic thing, dont know why I had to do
          this ;) ). Add doc/defines.texi to the list.
	* NEWS: bgp route-server support added, refer to docs.
	* update-autotools: call automake with --add-missing and --copy,
          former is important for obvious reasons, latter for dist files,
          and --gnu to enable whatever extra goodness checks.
	* {depcomp, install-sh, missing}: removed, auto-generated files.

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

	* HACKING: Expand on ChangeLogs, eg current practice for certain
          directories and certain other meta-data is not to maintain a 
          ChangeLog. Expand on the commit message, IMHO, commit message
          should always be ChangeLog for files where ChangeLog is kept.
	  Solaris is supported on any platform (with, at moment, an
          additional patch).

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

	* configure.ac: bump version to 0.97.2, release imminent.

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

	* configure.ac: fix up enable help alignment slightly
          Add --enable-gcc-ultra-verbose to set various gcc warnings which
          should one day be fixed but are not serious problems or which
          could be false-positives.

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

	* lib, zebra, ripd, ospfd, bgpd: Support NULL connected destination
	  pointers properly everywhere.  Fix point-to-point logic to
	  support links where a dedicated subnet has been assigned.
	  PtP links with /31 subnets should now work where supported by O/S.

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

	* bump version to 0.97.1, release imminent.

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

	* bump version to 0.97.0, release imminent.

2004-10-07  Greg Troxel  <gdt@sunpal7.mit.edu>

	* configure.ac: remove -Wpacked; 2.95.3 doesn't support it.	

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

	* configure.ac: Removed -Wpadded. I don't have sooo much time that I
	  could care about padding ;).

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

	* Update default CFLAGS for gcc to keep Hasso busy.

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

	* update-autotools: libtoolize should copy files, rather than link.
	  the whole idea is that dist files should not need auto*, etc.
	  installed to be able to compile.

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

	* configure.ac: Disable isisd compiling by default.

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

	* configure.ac: capitalise the package name. autoconf lowercases
          it for PACKAGE_TARNAME.

2004-09-13 Jose Luis Rubio <jrubio@dit.upm.es>
           (at Technical University of Madrid as part of Euro6ix Project)

        Enhanced Route Server functionality and Route-Maps:

        * bgpd/bgpd.h: Modified 'struct peer' and 'struct bgp_filter' to
        support rs-clients. A 'struct bgp_table *rib' has been added to the
        first (to mantain a separated RIB for each rs-client) and two new
        route-maps have been added to the last (for import/export policies).
        Added the following #defines: RMAP_{IN|OUT|IMPORT|EXPORT|MAX},
        PEER_RMAP_TYPE_{IMPORT|EXPORT} and BGP_CLEAR_SOFT_RSCLIENT.

        * bgpd/bgpd.c: Modified the functions that create/delete/etc peers in
        order to consider the new fields included in 'struct peer' for
        supporting rs-clients, i.e. the import/export route-maps and the
        'struct bgp_table'.

        * bgpd/bgp_route.{ch}: Modified several functions related with
        receiving/sending announces in order to support the new Route Server
        capabilities.
        Function 'bgp_process' has been reorganized, creating an auxiliar
        function for best path selection ('bgp_best_selection').
        Modified 'bgp_show' and 'bgp_show_route' for displaying information
        about any RIB (and not only the main bgp RIB).
        Added commands for displaying information about RS-clients RIBs:
        'show bgp rsclient (A.B.C.D|X:X::X:X)', 'show bgp rsclient
        (A.B.C.D|X:X::X:X) X:X::X:X/M', etc

        * bgpd/bgp_table.{ch}: The structure 'struct bgp_table' now has two
        new fields: type (which can take the values BGP_TABLE_{MAIN|RSCLIENT})
        and 'void *owner' which points to 'struct bgp' or 'struct peer' which
        owns the table.
        When creating a new bgp_table by default 'type=BGP_TABLE_MAIN' is set.

        * bgpd/bgp_vty.c: The commands 'neighbor ... route-server-client' and
        'no neighbor ... route-server-client' now not only set/unset the flag
        PEER_FLAG_RSERVER_CLIENT, but they create/destroy the 'struct
        bgp_table' of the peer. Special actions are taken for peer_groups.
        Command 'neighbor ... route-map WORD (in|out)' now also supports two
        new kinds of route-map: 'import' and 'export'.
        Added commands 'clear bgp * rsclient', etc. These commands allow a new
        kind of soft_reconfig which affects only the RIB of the specified
        RS-client.
        Added commands 'show bgp rsclient summary', etc which display a
        summary of the rs-clients configured for the corresponding address
        family.

        * bgpd/bgp_routemap.c: A new match statement is available,
        'match peer (A.B.C.D|X:X::X:X)'. This statement can only be used in
        import/export route-maps, and it matches when the peer who announces
        (when used in an import route-map) or is going to receive (when used
        in an export route-map) the route is the same than the one specified
        in the statement.
        For peer-groups the statement matches if the specified peer is member
        of the peer-group.
        A special version of the command, 'match peer local', matches with
        routes originated by the Route Server (defined with 'network ...',
        redistributed routes and default-originate).

        * lib/routemap.{ch}: Added a new clause 'call NAME' for use in
        route-maps. It jumps into the specified route-map and when it returns
        the first route-map ends if the called RM returns DENY_MATCH, or
        continues in other case.

2004-08-31  Greg Troxel  <gdt@poblano.ir.bbn.com>

	* Makefile.am: make m4 as subdir, rather the EXTRA_DISTing it

	* configure.ac: add m4/Makefile to output list

2004-08-31  Greg Troxel  <gdt@poblano.ir.bbn.com>
	
	* Makefile.am: Only put pkgsrc dir in SUBDIRS if we should install
	  rc.d files.  (Note that pkgsrc is always in DIST_SUBDIRS.)

	* configure.ac (pkgsrcdir): add new --enable-pkgsrcrcdir to give a
	  directory into which www.pkgsrc.org-style rc.d files are
	  installed.

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

	* Makefile.am: add m4 directory to EXTRA_DIST, and define 
	  ACLOCAL_AMFLAGS to have aclocal pull in m4/
	* configure.ac: AM_PROG_LIBTOOL should be AC_...
	* update-autotools: print a warning that this script is deprecated  
	
2004-08-17  Greg Troxel  <gdt@fnord.ir.bbn.com>

	* update-autotools: print tools versions to aid people in sending
	bug reports.

2004-07-23  Greg Troxel  <gdt@poblano.ir.bbn.com>

	* */Makefile.am: Use ../dir/libfoo.la, rather than "-L../dir
	-lfoo", to avoid linking against installed libraries from a
	previous version.

	* {lib,ospfd,ospfclient}/Makefile.am: explicitly define the shared
	library version number to be 0.0

	* configure.ac: remove spurious , so extract.pl is chmod'd +x.
	
	* HACKING: explain shared library versioning rules
	
2004-07-22 Paul Jakma <paul@dishone.st>

	* configure.ac: modify default CFLAGS to be compiler agnostic
	  build Makefile for tests/ subdir.
	  
2004-07-14  Greg Troxel  <gdt@poblano.ir.bbn.com>

	* Makefile.am (EXTRA_DIST): Add missing \, so tools stuff is
	really in distfile.

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

	* */Makefile.am: use -L../lib -lzebra, so we pick up the shlib
	version of libzebra when available.

	* configure.ac, update-autotools: Add libtool.

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

	* Makefile.am: add files to EXTRA_DIST rather than copying, and
	omit the kludgy cleaning steps, which were failing when the list
	to clean was empty.

2004-06-30  Greg Troxel  <gdt@poblano.ir.bbn.com>
	
	* configure.ac: Look for perl, and substitute into vtysh/extract.pl.
	Search for termcap functions more expansively (fixes vtysh compile
	on NetBSD).  Clean up --enable-vtysh definition.

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

	* update-autotools: Use -rf on autom4te.cache.

2004-06-20 Hasso Tepper <hasso@estpak.ee>

	* lib/vty.c: Don't attempt to load configuration file from current
	  directory.
	* Update vty_read_config() calls in bgpd/bgp_main.c, isisd/isis_main.c,
	  ospf6d/ospf6_main.c, ospfd/ospf_main.c, ripd/rip_main.c,
	  ripngd/ripng_main.c and zebra/main.c.

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

	* configure.ac: Add solaris support for the zebra/*_solaris 
	  method's, based on Sowmini's patches.

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

	* ospf_spf.h: Add backlink field to struct vertex
	* ospf_spf.h: (ospf_vertex_new) initialise backlink
	  (ospf_lsa_has_link) return index of link back to
	  vertex V from candidate vertex W, or -1 if no link exists.
	  (ospf_spf_next) save backlink index for candidate vertex
	* ospf_interface.c: (ospf_vl_set_params) Use the backlink index
	  to determine correct address for virtual-link peers. Fall back 
	  to older "pick first link" method if no backlink index exists.
	  
2004-04-06 Hasso Tepper <hasso@estpak.ee>
	
	* zebra/ipforward_proc.c: Fixed lowering privileges.
	* zebra/zserv.c: Fixed "(no) ipv6 forwarding" command logic.
	* configure.ac: Added --disable-capabilities switch to configure.

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

	* Readded SIGTERM handling so daemons can clean up their stuff if they
	  are killed (not murdered).

2004-03-20 Michael Bruening <mike@vailsys.com>

	* ospfd/ospf_vty.c: Completed array distribute_str of route types with
	  addition of "isis". This array must be indexed by
	  ZEBRA_ROUTE_(SYSTEM|KERNEL|...) defines in zebra.h, and should
	  be updated with every route type addition. This fix allows
	  commands redistributing routes from (bgp|isis), like "router ospf
	  redistribute bgp ...", to be written to terminal, memory, file,
	  which would otherwise result in a seg fault or, possibly, config
	  file corruption. Overlooked in import of isisd.
	* Similar fixes to bgpd/bgp_vty.c ospf6d/ospf6_asbr.c ripd/rip_zebra.c
	  and ripngd/ripng_zebra.c.

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

