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

