diff --git a/ChangeLog b/ChangeLog
deleted file mode 100644
index cf5c774..0000000
--- a/ChangeLog
+++ /dev/null
@@ -1,1990 +0,0 @@
-2008-07-22 Paul Jakma <paul.jakma@sun.com>
-
-	* HACKING: Document preference for compiler conditional code, over
-	  cpp conditional.
-	* configure.ac: DISABLE_BGP_ANNOUNCE always should be defined.
-
-2008-06-10 Paul Jakma <paul@jakma.org>
-
-	* configure.ac: Bump version to 0.99.10
-
-2008-05-29 Martin Nagy <mnagy@redhat.com>
-
-	* */*main.c: Sanity check port numbers before using.
-
-2008-01-30 Peter Szilagyi <sp615@hszk.bme.hu>
-
-	* lib/stream.h: Remove named 'new' parameter in prototype
-	  for c++ header compatibility.
-	* ospfd/ospf_opaque.h: ditto
-	* ospfd/ospfd.h: Renamed struct export to _export for c++
-	  header compatibility.
-	* ospf6d/ospf6_area.h: ditto
-
-2008-01-11 Ingo Flaschberger <if@xip.at>
-
-	* configure.ac: Improve HAVE_BSD_LINK_DETECT test.
-
-2008-01-10 Ingo Flaschberger <if@xip.at>
-
-	* configure.ac: Define HAVE_BSD_LINK_DETECT if <net/if_media.h> is
-	  present.
-
-2007-10-14 Paul Jakma <paul.jakma@sun.com>
-
-	* NEWS: Note that MRT dumps are now version 2
-
-2007-09-07 Paul Jakma <paul.jakma@sun.com>
-
-	* configure.ac: Bump version to 0.99.9
-
-2007-08-07 James Carlson <james.d.carlson@sun.com>
-
-	* configure.ac: Added support for separate link-layer access
-	  mechanisms in isisd.
-
-2007-07-27 Paul Jakma <paul.jakma@sun.com>
-
-	* configure.ac: Bump version to 0.99.8
-
-2007-06-25 Hasso Tepper <hasso@quagga.net>
-
-	* configure.ac: Fix typo so it compiles again on BSD systems.
-
-2007-06-22 Paul Jakma <paul.jakma@sun.com>
-
-	* configure.ac: IRDP also depends on struct icmphdr, enabling
-	  only on in_pktinfo breaks when an OS acquires pktinfo, as
-	  Solaris NV has. Reported by Jim Carlson.
-
-2007-05-10 Paul Jakma <paul.jakma@sun.com>
-
-	* configure.ac: Add back check for inet_aton, which got dropped
-	  somehow in previous jumbo patch.
-	  Use AC_GNU_SOURCE to define _GNU_SOURCE, rather than having
-	  lib/zebra.h do it.
-	  AC_FUNC_STRNLEN has side-effects with latest autoconf, use 
-	  AC_CHECK_FUNC on strnlen instead.
-
-2007-05-09 Paul Jakma <paul.jakma@sun.com>
-
-	* configure.ac: sys/conf.h depends on sys/param.h, at least on
-	  FBSD 6.2.
-	  (bug #363) Should check for in_pktinfo for IRDP
-
-2006-05-27 Paul Jakma <paul.jakma@sun.com>
-
-	* configure.ac: General cleanup of header and type checks, introducing
-	  an internal define, QUAGGA_INCLUDES, to build up a list of
-	  stuff to include so as to avoid 'present but cant be compiled'
-	  warnings.
-	  Misc additional checks of things missing according to autoscan.
-	  Add LIBM, for bgpd's use of libm, so as to avoid burdening
-	  LIBS, and all the binaries, with libm linkage.
-	  Remove the bad practice of using m4 changequote(), just
-	  quote the []'s in the case statements properly.
-	  This should fix bugs 162, 303 and 178.
-	* */*.{c,h}: Update all HAVE_* to the standard autoconf namespaced
-	  HAVE_* defines. I.e. HAVE_SA_LEN -> HAVE_STRUCT_SOCKADDR_SA_LEN,
-	* bgpd/Makefile.am: Add LIBM to bgpd's LDADD, for pow().
-
-2007-04-30 Andrew J. Schorr <ajschorr@alumni.princeton.edu>
-
-	* configure.ac: Change gcc CFLAGS from '-std=c99' to '-std=gnu99'
-	  to improve portability.
-
-2007-04-29 Paul Jakma <paul.jakma@sun.com>
-
-	* configure.ac: Bump to 0.99.7
-
-2007-04-16  David Young  <dyoung@pobox.com>
-
-        * connected.c (zebra): Only suppress adding a connected
-          route to the kernel if it is already marked "real"
-          (ZEBRA_IFC_REAL), i.e., "in kernel."  According to Paul
-          Jakma, this probably fixes Quagga bug #202.
-
-2007-02-06  Greg Troxel  <Greg Troxel <gdt@ir.bbn.com>>
-
-	* configure.ac: Use generic sed test, since autoconf 2.59 lacks
-	AC_PROG_SED and while 2.59 is somewhat crufty, it isn't officially
-	crufty.
-
-2007-02-06  Greg Troxel  <Greg Troxel <gdt@ir.bbn.com>
-
-	* bootstrap.sh: use -i to install missing files
-
-2007-02-03  Greg Troxel  <Greg Troxel <gdt@ir.bbn.com>
-
-	* configure.ac: add AC_PROG_SED
-
-2007-02-02  Greg Troxel  <Greg Troxel <gdt@ir.bbn.com>
-
-	* README.NetBSD:  use bootstrap.sh instead of autoreconf
-	
-	* bootstrap.sh: new file with just 'autoreconf'
-
-	* update-autotools: print out tool name before invoking to aid debugging
-
-2006-12-08 Paul Jakma <paul.jakma@sun.com>
-
-	* configure.ac: Bump to 0.99.6
-
-2006-10-04 Oliver Hookins <ohookins@gmail.com>
-
-	* bgpd/bgp_main.c: Add configuration check option, with
-	'-C' rather than '-c' for consistency between daemons.
-	* isisd/isis_main.c: ditto
-	* ospf6d/ospf6_main.c: ditto
-	* ospfd/ospf_main.c: ditto
-	* ripngd/ripng_main.c: ditto
-	* vtysh/vtysh_main.c: ditto
-	* ripd/rip_main.c: Change the config check option to
-	'-C' and tidy up the code.
-	* zebra/main.c: ditto	
-
-2006-10-04 Stergiakis Alexandros <astergiakis@antcor.com>
-
-	* ripd/rip_main.c: This trivial patch introduces a new
-	  command-line option '-c', which instructs zebra/ripd
-	  to check its configuration file for validity,	print 
-	  any error message, and then exit. This is useful when
-	  the configuration file is edited by hand or otherwise,
-	  and you simply want to validate it without any other
-	  effect.
-	* zebra/main.c: ditto
-
-2006-08-27 Paul Jakma <paul.jakma@sun.com>
-
-	* configure.ac: Bump to 0.99.5
-
-2006-06-15 Andrew J. Schorr <ajschorr@alumni.princeton.edu>
-
-	* redhat/quagga.spec.in: Get default distro automatically
-	  by using rpm to query the fedora-release version.
-	  And fix a typo (should be default_dist, not dist_default).
-
-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()
-
diff --git a/bgpd/ChangeLog b/bgpd/ChangeLog
deleted file mode 100644
index e92a72a..0000000
--- a/bgpd/ChangeLog
+++ /dev/null
@@ -1,3992 +0,0 @@
-2008-07-22 Paul Jakma <paul.jakma@sun.com>
-
-	* bgp_{packet,route,advertise}.c: change to compiler testing of
-	  DISABLE_BGP_ANNOUNCE, rather than cpp.
-
-2008-07-22 MIYAJIMA Mitsuharu <miyajima.mitsuharu@anchor.jp>
-
-	* bgp_packet.c: (bgp_update_packet_eor) Fix crash triggerable
-	  if a bgpd was compiled with --disable-bgp-announce and if GR is 
-	  advertised by peer.
-
-2008-07-22 Paul Jakma <paul.jakma@sun.com>
-
-	* bgp_community.c: (community_str2com) assigns defaults to local
-	  vars
-	* bgp_attr.c: (bgp_attr_parse) match format specifier to arg
-	* bgp_table.{c,h}: (bgp_table_top) can take a * to a const, quelling
-	  warning in bgp_route.c
- 
-2008-07-21 Paul Jakma <paul.jakma@sun.com>
-
-
-	* bgp_packet.c: (bgp_open_receive) fix warning in a zlog call
-	* bgp_vty.c: (bgp_vty_return) add return code
-	* bgpd.c: (bgp_master_init) setup the socket list.
-	* bgp_network.c: Remove the dual IPv4/6 socket thing for now, which
-	  was implemented by Michael, until such time as its clear its
-	  required for Linux (see sockopt comments). IPv6 support, including
-	  IPv4 sessions on AF_INET6 sockets, therefore is broken, and the
-	  '-l 0.0.0.0' arguments would need to be given to bgpd to make
-	  things work here.
-
-2008-07-21 Michael H. Warfield <mhw@wittsend.com>
-           YOSHIFUJI Hideaki <yoshfuji@linux-ipv6.org>
-	   Tomohiko Kusuda <kusuda@inetcore.com>
-           Leigh Brown <leigh@solinno.co.uk>
-	
-	* bgp_network.c: (bgp_md5_set_one) shim between libzebra tcp-md5
-	  sockopt and bgpd.
-	  (bgp_md5_set_socket) Helper for bgp_connect
-	  (bgp_md5_set) setup TCP-MD5SIG for the given peer.
-	  (bgp_connect) call out to bgp_md5_set_socket for the outgoing
-	  connect socket.
-	  (bgp_socket) save references to the listen sockets, needed if
-	  TCP-MD5SIG is applied later or changed.
-	* bgp_vty.c: (*neighbor_password_cmd) New 'neighbor ... password'
-	  commands.
-	* bgpd.c: (peer_{new,delete) manage TCP-MD5 password
-	  (peer_group2peer_config_copy) inherit TCP-MD5 password
-	  (peer_password_{un,}set) orchestrate the whole add/remove of TCP-MD5
-	  passwords: applying checks, stopping peers, and trying to return
-	  errors to UI, etc.
-	  (bgp_config_write_peer) save password.
-	  Fix missing newline in writeout of neighbor ... port.
-
-2008-07-02 MIYAJIMA Mitsuharu <miyajima.mitsuharu@anchor.jp>
-
-	* *.c: CMD_AS_RANGE was being used inside command strings, and thus
-	  not being expanded, fix by dequoting.
-
-2008-07-02 Stephen Hemminger <stephen.hemminger@vyatta.com>
-
-	* bgp_table.{c,h}: (bgp_table_finish) Take a double pointer and 
-	  scrub pointer in caller, so fixing double-free crashes seen
-	  with route-server-client configuration.
-	* *.c: Adjust all callers of bgp_table_finish
-
-2008-07-02 Paul Jakma <paul.jakma@sun.com>
-
-	* bgp_table.{c,h}: (bgp_node_delete, bgp_table_free) shouldn't be
-	  exported.
-	
-2008-06-07 Paul Jakma <paul@jakma.org>
-
-	* bgp_attr.{c,h}: (bgp_mp_{un,}reach_parse) export, for unit tests.
-	* bgp_attr.c: (bgp_mp_reach_parse) Add logging. Tighten length test
-	  to bounds check against the attribute length rather than the
-	  stream length..
-
-2008-06-01 jfletche@gmail.com 
-
-	* bgp_attr.c: (bgp_attr_aspathlimit) fix silly bug in flags check
-	  that was causing BGP to drop sessions if it received a
-	  aspath-limit with partial set. Fixes bug #419.
-
-2008-04-10 Denis Ovsienko
-
-	* bgp_aspath.[ch]: (aspath_filter_exclude) New function allows
-	  filtering out arbitrary ASns from AS_PATH attribute.
-	* bgp_aspath.[ch]: (aspath_print_vty) Accept suffix to let calling
-	  functions signal, if they want the separator or not.
-	* bgp_route.c: (route_vty_out, route_vty_out_tmp, damp_route_vty_out,
-	  flap_route_vty_out, route_vty_out_detail) Fix aspath_print_vty()
-	  calls to have AS_PATH output nicely.
-	* bgp_routemap.c: Introduce "set as-path exclude" route-map command
-	  to employ new filtering functionality.
-
-2008-03-13 Paul Jakma <paul.jakma@sun.com>
-
-	* (various) Remove 0 entries from struct message's, unneeded due to
-	  recent improvements in mes_lookup/LOOKUP.
-
-2008-01-29 Jorge Boncompte <jorge@dti2.net>
-
-	* bgp_network.c: (bgp_socket) IPv4-only version crashes if -l is not
-	  used as address will be null.
-
-2007-12-22 Paul Jakma <paul.jakma@sun.com>
-
-	* Fix series of vulnerabilities reported by "Mu Security
-	  Research Team", where bgpd can be made to crash by sending
-	  malformed packets - requires that bgpd be configured with a
-	  session to the peer.
-	* bgp_attr.c: (bgp_attr_as4_path) aspath_parse may fail, only
-	  set the attribute flag indicating AS4_PATH if we actually managed
-	  to parse one.
-	  (bgp_attr_munge_as4_attrs) Assert was too general, it is possible
-	  to receive AS4_AGGREGATOR before AGGREGATOR.
-	  (bgp_attr_parse) Check that we have actually received the extra
-	  byte of header for Extended-Length attributes.
-	* bgp_attr.h: Fix BGP_ATTR_MIN_LEN to account for the length byte.
-	* bgp_open.c: (cap_minsizes) Fix size of CAPABILITY_CODE_RESTART,
-	  incorrect -2 left in place from a development version of as4-path
-	  patch.
-	* bgp_packet.c: (bgp_route_refresh_receive) ORF length parameter
-	  needs to be properly sanity checked.
- 
-2007-12-18 Denis Ovsienko
-
-	* bgp_routemap.c: (no_set_aspath_prepend) This command cancelled
-	  existing "set" command regardless if "no set" matched it or not.
-	  Fixed.
-
-2007-11-13 Paul Jakma <paul.jakma@sun.com>
-
-	* bgp_main.c: Small fix, format string parameters should never
-	  be NULL - it's not strictly valid and some libc's don't let
-	  you away with.
-
-2007-10-30 Nick Hilliard <nick@inex.ie>
-
-	* bgp_main.c: Add 'listenon' argument, to pass address to bind
-	  to.
-	* bgp_network.c: (bgp_socket) Extend to take bind address.
-	* bgpd.c: (bgp_init) Pass stored address.
-	* bgpd.h: (struct bgp_master) storage for bind address
-
-2007-09-27 Paul Jakma <paul.jakma@sun.com>
-
-	* bgp_aspath.c: (assegment_normalise) remove duplicates from
-	  from sets.
-	  (aspath_reconcile_as4) disregard a broken part of the RFC around
-	  error handling in path reconciliation.
-
-2007-09-25 Paul Jakma <paul.jakma@sun.com>
-
-	* bgp_open.c: (peek_for_as4_capability) Fix to work.
-	* bgp_packet.c: (bgp_open_receive) Fix sanity check of as4.
-	
-2007-09-18 Paul Jakma <paul.jakma@sun.com>
-
-	* bgp_open.c: (bgp_capability_as4) debug printf inline with others.
-	  (peek_for_as4_capability) There's no need to signal failure, as
-	  failure is better dealt with through full capability parser -
-	  just return the AS4, simpler.
-	* bgp_packet.c: (bgp_open_receive) Update to match
-	  peek_for_as4_capability change.
-	  Allow use of BGP_AS_TRANS by 2b speakers.
-	  Use NOTIFY_OPEN_ERR rather than CEASE for OPEN parsing errors.
-	  (bgp_capability_msg_parse) missing argument to debug print
-	  (bgp_capability_receive) missing return values.
-	  
-	  
-2007-07-25 Paul Jakma <paul.jakma@sun.com>
-
-	* Remove 2-byte size macros, just make existing macros take
-	  argument to indicate which size to use.
-	  Adjust all users - typically they want '1'.
-	* bgp_aspath.c: (aspath_has_as4) New, return 1 if there are any
-	  as4's in a path.
-	  (aspath_put) Return the number of bytes actually written, to
-	  fix the bug Juergen noted: Splitting of segments will change
-	  the number of bytes written from that already written to the
-	  AS_PATH header.
-	  (aspath_snmp_pathseg) Pass 2-byte flag to aspath_put. SNMP
-	  is still defined as 2b.
-	  (aspath_aggregate) fix latent bug.
-	  (aspath_reconcile_as4) AS_PATH+NEW_AS_PATH reconciliation
-	  function.
-	  (aspath_key_make) Hash the AS_PATH string, rather than
-	  just taking the addition of assegment ASes as the hash value,
-	  hopefully sligthly more collision resistant.
-	  (bgp_attr_munge_as4_attrs) Collide the NEW_ attributes
-	  together with the OLD 2-byte forms, code Juergen
-	  had in bgp_attr_parse but re-organised a bit.
-	  (bgp_attr_parse) Bunch of code from Juergen moves
-	  to previous function.
-	  (bgp_packet_attribute) Compact significantly by
-	  just /always/ using extended-length attr header.
-	  Fix bug Juergen noted, by using aspath_put's
-	  (new) returned size value for the attr header rather
-	  than the (guesstimate) of aspath_size() - the two could
-	  differ when aspath_put had to split large segments, unlikely
-	  this bug was ever hit in the 'wild'.
-	  (bgp_dump_routes_attr) Always use extended-len and
-	  use aspath_put return for header length. Output 4b ASN
-	  for AS_PATH and AGGREGATOR.
-	* bgp_ecommunity.c: (ecommunity_{hash_make,cmp}) fix
-	  hash callback declarations to match prototypes.
-	  (ecommunity_gettoken) Updated for ECOMMUNITY_ENCODE_AS4, 
-	  complete rewrite of Juergen's changes (no asdot support)
-	* bgp_open.c: (bgp_capability_as4) New, does what it says
-	  on the tin.
-	  (peek_for_as4_capability) Rewritten to use streams and
-	  bgp_capability_as4.
-	* bgp_packet.c: (bgp_open_send) minor edit
-	  checked (in the abstract at least) with Juergen.
-	  Changes are to be more accepting, e.g, allow AS_TRANS on
-	  a 2-byte session.
-	* (general) Update all commands to use CMD_AS_RANGE.
-	* bgp_vty.c: (bgp_clear) Fix return vals to use CMD_..
-	  Remove stuff replicated by VTY_GET_LONG
-	  (bgp_clear_vty) Return bgp_clear directly to vty.
-	  
-	
-2007-07-25 Juergen Kammer <j.kammer@eurodata.de>
-
-	* (general) AS4 support.
-	* bgpd.h: as_t changes to 4-bytes.
-	* bgp_aspath.h: Add BGP_AS4_MAX and BGP_AS_TRANS defines.
-	* bgp_aspath.c: AS_VALUE_SIZE becomes 4-byte, AS16_VALUE_SIZE
-	  added for 2-byte.
-	  Add AS16 versions of length calc macros.
-	  (aspath_count_numas) New, count number of ASes.
-	  (aspath_has_as4) New, return 1 if there are any as4's in a
-	  path.
-	  (assegments_parse) Interpret assegment as 4 or 2 byte,
-	  according to how the caller instructs us, with a new
-	  argument.
-	  (aspath_parse) Add use32bit argument to pass to
-	  assegments_parse. Adjust all its callers to pass 1, unless
-	  otherwise noted.
-	  (assegment_data_put) Adjust to be able to write 2 or 4 byte
-	  AS, according to new use32bit argument.
-	  (aspath_put) Adjust to write 2 or 4. 
-	  (aspath_gettoken) Use a long for passed in asno.
-	* bgp_attr.c: (attr_str) Add BGP_ATTR_AS4_PATH and
-	  BGP_ATTR_AS4_AGGREGATOR.
-	  (bgp_attr_aspath) Call aspath_parse with right 2/4 arg, as
-	  determined by received-capability flag.
-	  (bgp_attr_aspath_check) New, code previously in attr_aspath
-	  but moved to new func so it can be run after NEW_AS_PATH
-	  reconciliation.
-	  (bgp_attr_as4_path) New, handle NEW_AS_PATH.
-	  (bgp_attr_aggregator) Adjust to cope with 2/4 byte ASes.
-	  (bgp_attr_as4_aggregator) New, read NEW_AGGREGATOR.
-	  (bgp_attr_parse) Add handoffs to previous parsers for the two
-	  new AS4 NEW_ attributes.
-	  Various checks added for NEW/OLD reconciliation.
-	  (bgp_packet_attribute) Support 2/4 for AS_PATH and
-	  AGGREGATOR, detect when NEW_ attrs need to be sent.
-	* bgp_debug.{c,h}: Add 'debug bgp as4'.
-	* bgp_dump.c: MRTv2 support, unconditionally enabled, which
-	  supports AS4. Based on patches from Erik (RIPE?).
-	* bgp_ecommunity.c: (ecommunity_ecom2str) ECOMMUNITY_ENCODE_AS4
-	  support.
-	* bgp_open.c: (peek_for_as4_capability) New, peek for AS4
-	  capability prior to full capability parsing, so we know which
-	  ASN to use for struct peer lookup.
-	  (bgp_open_capability) Always send AS4 capability.
-	* bgp_packet.c: (bgp_open_send) AS4 handling for AS field
-	  (bgp_open_receive) Peek for AS4 capability first, and figure
-	  out which AS to believe.
-	* bgp_vty.c: (bgp_show_peer) Print AS4 cap
-
-2007-09-17 Paul Jakma <paul.jakma@sun.com>
-
-	* bgp_open.c: (bgp_capability_mp) We were setting
-	  afc_nego[safi][safi] rather than afc_nego[afi][safi], thus
-	  failling to announce any non-IPv4 prefixes. Remove the extra,
-	  typo-ed character.
-
-2007-09-07 Paul Jakma <paul.jakma@sun.com>
-
-	* (general) bgpd can be made crash by remote peers if debug
-	  bgp updates is set, due to NULL pointer dereference.
-	  Reported by "Mu Security Research Team",
-	  <security@musecurity.com>.
-	* bgp_attr.c: (bgp_attr_community) If community length is 0,
-	  don't set the community-present attribute bit, just return
-	  early.
-	* bgp_debug.c: (community_str,community_com2str) Check com
-	  pointer before dereferencing.
-
-2007-08-31 Paul Jakma <paul.jakma@sun.com>
-
-	* (general) Add 'bgp open-accept' option, to allow bgpd to send OPEN
-	  on accepted connections, i.e. to not wait till after
-	  collision-detect to send OPEN, which appears to be allowed in
-	  RFC4271. This may help speed up establishing sessions, or help
-	  avoid FSM problems with sessions to certain peers. Not enabled by
-	  default though.
-
-2007-08-27 Paul Jakma <paul.jakma@sun.com>
-
-	* bgp_route.c: (bgp_announce_check) Fix bug #398, slight
-	  modification of Vladimir Ivanov's suggested fix - to keep
-	  memory alloc conditional.
-	  (bgp_process_announce_selected) Don't take struct attr as
-	  argument, none of the callers need it and it needlessly
-	  distances allocation from use.
-	  Free the extended attr, the attr itself is on the stack. 
-	  Fix bad indentation.
-	* bgp_attr.c: (bgp_packet_attribute) Remove incorrect assert,
-	  and adjust conditional to test attr->extra, diagnosis by
-	  Vladimir Ivanov in bug #398.
-
-2007-08-27 Vladimir Ivanov <wawa@yandex-team.ru>
-
-	* bgp_route.c: (bgp_announce_check_rsclient) copy of
-	  ri->attr is no longer deep enough, due to addition of
-	  attr->extra. It should use bgp_attr_dup, as
-	  bgp_announce_check() does.
-
-2007-08-23 Paul Jakma <paul.jakma@sun.com>
-
-	* bgp_regex.c: (bgp_regcomp) Pass NOSUB flag to regcomp to
-	  prevent parsing of substitutions, which can have profound
-	  performance effects on bgpd and are of no use to the CLI
-	  anyway. How much it helps depends on the regex
-	  implementation.
-
-2007-07-31 Paul Jakma <paul.jakma@sun.com>
-
-	* (general) Support for draft-ietf-idr-as-pathlimit-03.
-	* bgp_attr.h: (struct attr) Add pathlimit struct
-          bgp_attr.c: (attr_str) Add BGP_ATTR_AS_PATHLIMIT string.
-          (attrhash_key_make) tally pathlimit too
-          (attrhash_cmp) cmp pathlimit attr
-          (bgp_attr_aspathlimit) New, parse AS_PATHLIMIT attr.
-          (bgp_attr_parse) ditto
-          (bgp_packet_attribute) Write out AS_PATHLIMIT when set
-          (bgp_dump_routes_attr) ditto
-         * bgp_route.h: (struct bgp_static) Add TTL field
-         * bgp_route.c: (bgp_announce_check) Drop paths that are over
-           their hop-count TTL before sending via EBGP.
-           Mangle ASN in pathlimit for confeds/private as best we can.
-           (bgp_static_update_{rsclient,main}) Add any configure pathlimit
-           information.
-           (bgp_pathlimit_update_parents) New, update atomic-aggr setting for
-           parents of an aspathlimit'ed static.
-           (bgp_static_set) Add TTL argument, for all the 'bgp network'
-           commands.
-           Call previous for TTL changed statics.
-           (bgp_static_unset) Call pathlimit_update_parents.
-           (various bgp network commands) Add 'pathlimit <0-255>' qualifier
-           to all the various forms, bar route-map - which can set ttl
-           itself.
-         * bgp_routemap.c: (general) Add support for 'set pathlimit ttl' and
-           'match pathlimit as'.
-           
-2007-07-26 Paul Jakma <paul.jakma@sun.com>
-
-	* (general) Clean up and compact capability parsing slightly.
-	  Consolidate validation of length and logging of generic TLV, and
-	  memcpy of capability data, thus removing such from cap specifc
-	  code (not always present or correct).
-	* bgp_open.h: Add structures for the generic capability TLV header
-	  and for the data formats of the various specific capabilities we
-	  support.  Hence remove the badly named, or else misdefined, struct
-	  capability.
-	* bgp_open.c: (bgp_capability_vty_out) Use struct capability_mp_data.
-	  Do the length checks *before* memcpy()'ing based on that length
-	  (stored capability - should have been validated anyway on input,
-	  but..).
-	  (bgp_afi_safi_valid_indices) new function to validate (afi,safi)
-	  which is about to be used as index into arrays, consolidates
-	  several instances of same, at least one of which appeared to be
-	  incomplete..
-	  (bgp_capability_mp) Much condensed.
-	  (bgp_capability_orf_entry) New, process one ORF entry
-	  (bgp_capability_orf) Condensed. Fixed to process all ORF entries.
-	  (bgp_capability_restart) Condensed, and fixed to use a
-	  cap-specific type, rather than abusing capability_mp.
-	  (struct message capcode_str) added to aid generic logging.
-	  (size_t cap_minsizes[]) added to aid generic validation of
-	  capability length field.
-	  (bgp_capability_parse) Generic logging and validation of TLV
-	  consolidated here. Code compacted as much as possible.
-	* bgp_packet.c: (bgp_open_receive) Capability parsers now use
-	  streams, so no more need here to manually fudge the input stream
-	  getp.
-	  (bgp_capability_msg_parse) use struct capability_mp_data. Validate
-	  lengths /before/ memcpy. Use bgp_afi_safi_valid_indices.
-	  (bgp_capability_receive) Exported for use by test harness.	  
-	* bgp_vty.c: (bgp_show_summary) fix conversion warning
-	  (bgp_show_peer) ditto
-	* bgp_debug.h: Fix storage 'extern' after type 'const'.
-
-2007-07-31 Lorenzo Colitti <lorenzo@colitti.com>
-
-	* bgp_dump.c: (general) Add comments to code.
-	  (bgp_dump_interval_add) remove some redundant lines.
-	  (bgp_dump_set) Use enum for type argument.
-	  Avoid scheduling dump twice if exact same command
-	  is given twice..
-
-2007-06-22 Paul Jakma <paul.jakma@sun.com>
-
-	* bgp_fsm.c: (struct FSM) Bug #368. TCP Errors during OpenSent
-	  should cycle to Active, not to Idle or else peer bringup can
-	  race and cycle Idle<->Active. Reported and fix tested by
-	  Mukesh Agrawal.
-
-2007-05-25 Paul Jakma <paul.jakma@sun.com>
-
-	* bgp_route.c: (bgp_default_originate) Sanity check added
-	  previously was broken and always failed, thus this function
-	  never could run, bug #370.
-
-2007-05-03 Paul Jakma <paul.jakma@sun.com>
-
-	* bgp_route.h: (struct info) Move less frequently used
-	  fields to a lazily allocated struct info_extra.
-	  Export bgp_info_extra_get
-	* bgp_route.c: (bgp_info_extra_new) allocate extra
-	  (bgp_info_extra_free) Free damp info and the info_extra.
-	  (bgp_info_extra_get) Retrieve the info_extra of a struct
-	  info, allocating as required.
-	  (generally) adjust to use info->extra
-	* bgp_damp.c: (generally) use bgp_info_extra_get to access
-	  dampinfo
-	* bgp_attr.h: Move rarely allocated attributes from struct attr
-	  to a struct attr_extra, for a substantial saving in size of
-	  struct attr.
-	* bgp_attr.c: (bgp_attr_extra_{new,free}), new, self-explanatory.
-	  (bgp_attr_extra_get) Get the attr_extra for a given struct
-	  attr, allocating it if needs be.
-	  (bgp_attr_dup) Shallow copy the struct attr and its attr_extra.
-	  (generally) adjust to know about attr->extra.
-	* bgp_debug.c: (bgp_dump_attr) ditto
-	* bgp_vty.c: (show_bgp_memory) print attr and info extra sizes.
-	* bgp_nexthop.c: (generally) adjust to know about attr->extra
-	  and info->extra.
-	* bgp_{packet,routemap,snmp,zebra}.c: ditto
-
-2007-04-22 Sebastien Tandel <sebastien@tandel.be>
-	* bgp_advertise.c : (baa_hash_alloc, baa_hash_key, baa_hash_cmp)
-	  conforms to quagga hash API. Defines _hash_[alloc|key|cmp] with
-	  void * arguments as defined by the API.
-	* bgp_aspath.c,h : (aspath_key_make) conforms to quagga hash API.
-	  Defines _hash_[alloc|key|cmp] with void * arguments as defined by
-	  the API.
-	* bgp_attr.c,h : (cluster_hash_alloc, cluster_hash_key_make,
-	  cluster_hash_cmp, transit_hash_alloc, transit_hash_key_make,
-	  transit_hash_cmp, attrhash_key_make, attrhash_cmp,
-	  bgp_attr_hash_alloc) conforms to quagga hash API. Defines
-	  _hash_[alloc|key|cmp] with void * arguments as defined by the API.
-	* bgp_attr.h : Definition of BGP_ATTR_DEFAULT_WEIGHT.
-	* bgp_attr.c : (bgp_attr_default_intern) now uses 
-	  bgp_attr_default_set instead of duplicating the same code.
-	  (general) Use of BGP_ATTR_DEFAULT_WEIGHT. Replace two 16 by
-	  IPV6_MAX_BYTELEN.
-
-2007-04-15 Sebastien Tandel <sebastien@tandel.be>
-
-	* bgp_aspath.c: (aspath_as_add, aspath_segment_add) Minor performance
-	  optimization: while loop should test one pointer instead of two.
-
-2007-04-08 Paul Jakma <paul.jakma@sun.com>
-
-	* bgp_route.c: (general) Same bug as fixed on 2006-11-28 by ajs for
-	  bgp static routes, but for main BGP RIB: Quick 'flap' of routes
-	  can cause bgpd to mistake a new route for a duplicate route,
-	  due to presence of removed, but not yet processed BGP RIB entry.
-	  (bgp_update_rsclient) Ignore REMOVED bgp_info for duplicate,
-	  restore route instead.
-	  (bgp_update_main) Ditto.
-	* bgp_attr.c: (general) Bug #354: parsing of MP_REACH_NLRI and
-	  MP_UNREACH_NLRI does not take sufficient care to ensure reads
-	  from stream buffer stay in-bounds. Hence bgpd may attempt to read
-	  beyond end of stream, if given a crafted packet. As it uses the
-	  stream access methods to do so, this will typically result in
-	  assert() being hit in stream.c. Where code is compiled without
-	  assert() enabled, result is unknown.
-	  (struct message attr_str) should be static.
-	  (bgp_mp_reach_parse) Carefully check length remaining in stream
-	  against amount desired to read from stream, prior to each read,
-	  particularly where lengths are conditional on data obtained from
-	  stream - using STREAM_READABLE.
-	  Remove code to parse SNPA-number, it's a defunct field and changed
-	  to a fixed size in latest BGP MP update RFC - log warning if
-	  SNPA-number is not 0.
-	  (bgp_mp_unreach_parse) Check withdraw_length carefully against
-	  STREAM_READABLE.
-	  (bgp_attr_parse) If attribute-parser function returns error, log
-	  warning.
-	  Log attribute type on mismatch.
-
-2007-04-07 Paul Jakma <paul.jakma@sun.com>
-
-	* bgpd.c: (general) Fix bug #352
-	  (bgp_config_write_family_header) write ipv6/multicast
-	  address family header.
-	  (bgp_config_write) write out ipv6 multicast AF config.
-
-2007-02-22 Paul Jakma <paul.jakma@sun.com>
-
-	* bgp_fsm.c: (bgp_fsm_change_status) Handle state change into
-	  clearing or greater here. Simpler.
-	  (bgp_event) Clearing state change work moved to previous
-	* bgp_route.c: (bgp_clear_route_node) Clearing adj-in here
-	  is too late, as it leaves a race between a peer being deleted
-	  and an identical peer being configured before clearing
-	  completes, leading to a crash.
-	  Simplest fix is to clean peers Adj-in up-front, rather than
-	  queueing such work.
-	  (bgp_clear_route_table) Clear peer's Adj-In and Adj-Out
-	  up-front here, rather than queueing such work.
-	  Extensive comment added on the various bits of indexed data
-	  that exist and how they need to be dealt with.
-	  (bgp_clear_route) Update comment.
-
-2006-12-12 Andrew J. Schorr <ajschorr@alumni.princeton.edu>
-	
-	* bgp_nexthop.c: (bgp_connected_add, bgp_connected_delete)
-	  Simplify logic by using new CONNECTED_PREFIX macro.
-
-2006-12-07 Paul Jakma <paul.jakma@sun.com>
-
-	* bgp_fsm.c: Bug #302 fix, diagnosis, suggestions and testing
-	  by Juergen Kammer <j.kammer@eurodata.de>. Fix follows from
-	  his suggested fix, just made in a slightly different way.
-	  (bgp_event) Transitions into Clearing always must call
-	  bgp_clear_route_all().
-	  (bgp_stop) No need to clear routes here, BGP FSM should do
-	  it.
- 
-2006-11-30 Andrew J. Schorr <ajschorr@alumni.princeton.edu>
-
-	* bgp_debug.h: Declare new bgp_debug_zebra conf and term flags,
-	  and define BGP_DEBUG_ZEBRA.
-	* bgp_debug.c: Declare conf_bgp_debug_zebra and term_bgp_debug_zebra.
-	  (debug_bgp_zebra, no_debug_bgp_zebra, undebug_bgp_zebra) New
-	  functions to enable/disable bgp zebra debugging.
-	  (no_debug_bgp_all) Turn off zebra debugging.
-	  (show_debugging_bgp) Show whether zebra debugging is on.
-	  (bgp_config_write_debug) Add 'debug bgp zebra' if configured.
-	  (bgp_debug_init) Add new zebra debugging commands.
-	* bgp_zebra.c: (bgp_router_id_update, bgp_interface_add,
-	  bgp_interface_delete, bgp_interface_up, bgp_interface_down,
-	  bgp_interface_address_add, bgp_interface_address_delete,
-	  zebra_read_ipv4, zebra_read_ipv6, bgp_zebra_announce,
-	  bgp_zebra_withdraw, bgp_redistribute_set, bgp_redistribute_unset)
-	  If zebra debugging is enabled, log an appropriate debug message.
-
-2006-11-28 Andrew J. Schorr <ajschorr@alumni.princeton.edu>
-
-	* bgp_route.c: (bgp_info_restore) New function that undoes
-	  the effects of a previous call to bgp_info_delete.  This is
-	  used when a route is deleted and quickly re-added before the
-	  deletion has been processed.
-	  (bgp_static_update_rsclient, bgp_static_update_main,
-	  bgp_redistribute_add) Check whether a pre-existing route
-	  has the BGP_INFO_REMOVED set, and, if so, we need to call
-	  bgp_info_restore to resurrect it.
-
-2006-10-27 Paul Jakma <paul.jakma@sun.com>
-
-	* bgp_route.c: (bgp_table_stats) oops, u_intXX_t should be
-	  uintXX_t
-
-2006-10-19 Paul Jakma <paul.jakma@sun.com>
-
-	* bgpd.c: (peer_new) bgp element of peer absolutely must be
-	  filled in, make peer_new() require it as argument and update
-	  all callers. Fixes a crash reported by Jan 'yanek' Bortl and
-	  Andrew Schorr where bgpd would crash in bgp_pcount_adjust
-	  trying to dereference the bgp member of bgp->peer_self,
-	  triggered through redistribution.
-	* bgp_route.c: (bgp_pcount_adjust) assert sanity of arguments.
-
-2006-10-15 Paul Jakma <paul.jakma@sun.com>
-
-	* bgp_route.c: (bgp_table_stats_walker) NULL deref if table is
-	  empty, bgp_table_top may return NULL, Coverity CID#73.
-	* bgp_packet.c: (bgp_update_packet) adv->rn can not be NULL,
-	  check is bogus - changed to assert(), CID#64.
-	  binfo is checked for NULL, but then dereferenced
-	  unconditionally, fix, CID #63.
-	  (bgp_withdraw_packet) Assert adv->rn is valid, as with
-	  bgp_update_packet().
-
-2006-10-14 Paul Jakma <paul.jakma@sun.com>
-
-	* bgp_fsm.h: Remove BGP_EVENT_FLUSH_ADD, dangerous and not
-	  needed.
-	* bgp_fsm.c: (bgp_stop) Move BGP_EVENT_FLUSH to the top of the
-	  of the function, otherwise it could flush a ClearingCompleted
-          event, bug #302.
-	* bgp_packet.c: Replace all BGP_EVENT_FLUSH_ADD with
-	  BGP_EVENT_ADD, fixing bug #302.
-
-2006-09-19 Andrew J. Schorr <ajschorr@alumni.princeton.edu>
-
-	* bgpd.c: (peer_uptime) Fix printf format/arg mismatch in
-	  zlog_warn message (%ld/size_t -> %lu/u_long).
-
-2006-09-14 Paul Jakma <paul.jakma@sun.com>
-
-	* bgp_route.c: (bgp_table_stats_walker) Address space announced
-	  should only count top-level unaggregateable prefixes, to
-	  avoid falling afoul of anti-dodgy-accounting regulations
-	  in various jurisdictions.. ;)
-	  (bgp_process_queue_init) process queue hold time too high,
-	  adds extra memory load. Change to be much lower, until such
-	  time as it's made configurable.
-
-2006-09-14 Paul Jakma <paul.jakma@sun.com>
-
-	* (general) fix the peer refcount issue exposed by previous, by
-	  just removing refcounting of peer threads, which is mostly
-	  senseless as they're references leading from struct peer,
-	  which peer_free cancels anyway. No need to muck around..
-	* bgp_fsm.h: Just remove the refcounting from the various
-	  TIMER/READ/WRITE/EVENT ON/OFF/ADD macros.
-	* bgp_fsm.c: (bgp_stop) use BGP_EVENT_FLUSH, no refcounts attached
-	  to events anymore.
-	  (bgp_event) remove peer_unlock, events not refcounted.
-	* bgpd.c: (peer_free) flush events before free.
-
-2006-09-14 Paul Jakma <paul.jakma@sun.com>
-
-	* (general) Fix some niggly issues around 'shutdown' and clearing
-	  by adding a Clearing FSM wait-state and a hidden 'Deleted'
-	  FSM state, to allow deleted peers to 'cool off' and hit 0
-	  references. This introduces a slow memory leak of struct peer,
-	  however that's more a testament to the fragility of the
-	  reference counting than a bug in this patch, cleanup of
-	  reference counting to fix this is to follow.
-	* bgpd.h: Add Clearing, Deleted states and Clearing_Completed
-	  and event.
-	* bgp_debug.c: (bgp_status_msg[]) Add strings for Clearing and
-	  Deleted.
-	* bgp_fsm.h: Don't allow timer/event threads to set anything
-	  for Deleted peers.
-	* bgp_fsm.c: (bgp_timer_set) Add Clearing and Deleted. Deleted
-	  needs to stop everything.
-	  (bgp_stop) Remove explicit fsm_change_status call, the
-	  general framework handles the transition.
-	  (bgp_start) Log a warning if a start is attempted on a peer
-	  that should stay down, trying to start a peer.
-	  (struct .. FSM) Add Clearing_Completed
-	  events, has little influence except when in state
-	  Clearing to signal wait-state can end.
-	  Add Clearing and Deleted states, former is a wait-state,
-	  latter is a placeholder state to allow peers to disappear
-	  quietly once refcounts settle.
-	  (bgp_event) Try reduce verbosity of FSM state-change debug, 
-	  changes to same state are not interesting (Established->Established)
-	  Allow NULL action functions in FSM.
-	* bgp_packet.c: (bgp_write) Use FSM events, rather than trying
-	  to twiddle directly with FSM state behind the back of FSM.
-	  (bgp_write_notify) ditto.
-	  (bgp_read) Remove the vague ACCEPT_PEER peer_unlock, or else
-	  this patch crashes, now it leaks instead.
-	* bgp_route.c: (bgp_clear_node_complete) Clearing_Completed
-	  event, to end clearing.
-	  (bgp_clear_route) See extensive comments.
-	* bgpd.c: (peer_free) should only be called while in Deleted,
-	  peer refcounting controls when peer_free is called.
-	  bgp_sync_delete should be here, not in peer_delete.
-	  (peer_delete) Initiate delete. 
-	  Transition to Deleted state manually.
-	  When removing peer from indices that provide visibility of it,
-	  take great care to be idempotent wrt the reference counting
-	  of struct peer through those indices.
-	  Use bgp_timer_set, rather than replicating.
-	  Call to bgp_sync_delete isn't appropriate here, sync can be
-	  referenced while shutting down and finishing deletion.
-	  (peer_group_bind) Take care to be idempotent wrt list references
-	  indexing peers.
-
-2006-09-13 Paul Jakma <paul.jakma@sun.com>
-
-	* bgp_aspath.c: (aspath_highest) new, return highest ASN in an
-	  aspath.
-	* bgp_route.c: (bgp_peer_count_walker) new, do the walk done
-	  in bgp_peer_counts as a thread.
-	  (bgp_peer_counts) move walk to previous and call it via
-	  thread_execute so this RIB walk shows up in thread stats.
-	  (bgp_table_stats) New, gather some statistics for a given
-	  RIB.
-	  (bgp_table_stats_walker) New, RIB walker thread for former.
-	  (bgp_table_stats_vty) Parsing front-end for 'show bgp ...',
-	  useful model for future rationalisation of 'show ... bgp'.
-	  (bgp_route_init) Add new RIB stats commands.
-	
-2006-09-06 Paul Jakma <paul.jakma@sun.com>
-
-	* (general) Squash any and all prefix-count issues by
-	  abstracting route flag changes, and maintaining count as and
-	  when flags are modified (rather than relying on explicit
-	  modifications of count being sprinkled in just the right
-	  places throughout the code).
-	* bgp_route.c: (bgp_pcount_{dec,inc}rement) removed.
-	  (bgp_pcount_adjust) new, update prefix count as
-	  needed for a given route.
-	  (bgp_info_{uns,s}et_flag) set/unset a BGP_INFO route status
-	  flag, calling previous function when appropriate.
-	  (general) Update all set/unsets of flags to use previous.
-	  Remove pcount_{dec,inc}rement calls.
-	  No need to unset BGP_INFO_VALID in places where
-	  bgp_info_delete is called, it does that anyway.
-	* bgp_{damp,nexthop}.c: Update to use bgp_info_{un,}set_flag.
-	* bgp_route.h: Export bgp_info_{un,}set_flag.
-	  Add a 'meta' BGP_INFO flag, BGP_INFO_UNUSEABLE.
-	  Move BGP_INFO_HOLDDOWN macro to here from bgpd.h
-
-2006-09-03 Paul Jakma <paul.jakma@sun.com>
-
-	* bgp_route.c: Add 'show ... bgp ... <neighbour> prefix-count'
-	  commands, to provide detailed counts of prefixes for a peer.
-	  Informative, and should help pin down to pfxcnt drift
-	  problems.
-
-2006-08-27 Paul Jakma <paul.jakma@sun.com>
-
-	* bgp_advertise.c: (bgp_sync_delete) fix mtype in XFREE.
-	  NULL out peer->hash after free, to be sure.
-
-2006-08-06 Paul Jakma <paul.jakma@sun.com>
-
-	* bgp_aspath.c: (aspath_loop_check) Fix the typo-bug which
-	  essentially had disabled this check. Problem reported by
-	  Bartek Kania <mrbk@gnarf.org> in [quagga-users 7388].
-
-2006-07-27 Paul Jakma <paul.jakma@sun.com>
-
-	* bgpd.c: (peer_delete) Ensure freed buffers can not be
-	  accidently reused. A potential fix for bug #287.
-
-2006-07-02 Paul Jakma <paul.jakma@sun.com>
-
-	* bgp_fsm.c: (bgp_{stop,start}) Move clear/free of certain
-	  bits of state from stop to start, as they may be used via
-	  peer references on clearing queues..
-
-2006-05-23 Paul Jakma <paul.jakma@sun.com>
-
-	* bgp_vty.c: (neighbor_update_source_cmd) Expand tab completion
-	  to make it clear it takes both address and ifname.
-
-2006-05-12 Paul Jakma <paul.jakma@sun.com>
-
-	* bgp_attr.c: (bgp_packet_attribute) Remove dead code, Coverity
-	  CID #1
-	* bgp_aspath.{c,h}: (aspath_print_vty) take a format string,
-	  so as to reduce burden on callers, all in bgp_route.c
-	* bgp_route.c: (bgp_static_update_main) Remove useless NULL
-	  check, code already assumes bgp_static can not be NULL, 
-	  fixes CID #7.
-	  (bgp_static_update_rsclient) ditto, CID #6
-	  (route_vty_out{,tmp}) Update to match aspath_print_vty,
-	  simplifying checks needed to get spacing right. CID #4,#5.
-	  ({damp,flap}_route_vty_out) Ditto, CID #9, #10
-
-2006-05-08 Paul Jakma <paul.jakma@sun.com>
-
-	* bgp_community.c: (community_str2com) Coverity CID#62, fix
-	  double-free, use-after-free.
-	* bgp_route.c: (bgp_afi_node_get) given table should never be
-	  NULL, check/assert this.
-	  (bgp_static_update) Bug #240. Rsclients should only be passed
-	  the static update if they are configured for the afi,safi.
-
-2006-05-04 Paul Jakma <paul.jakma@sun.com>
-
-	* (general) VPNv4 fixes. Certain VPNv4 code was not enabled.
-	  See bug #210.
-	* bgp_attr.{c,h}: (bgp_packet_{withdraw,attribute}) Tag should be
-	  u_char really.
-	* bgp_packet.c: (bgp_{update,withdraw}_packet) Enable some
-	  VPNv4 code which inexplicably was ifdef'd out. comments from
-	  a tester on IRC suggest this fixes bug #210.
-	* bgp_route.c: (general) Fix logical bug in clearing, noted
-	  by Chris Caputo in [quagga-users 6728] - clearing depended on
-	  at least one route being added to workqueue, in order for
-	  workqueue completion function to restart FSM. However, if no
-	  routes are cleared, then the completion function never is
-	  called, it needs to be called manually if the workqueue
-	  didn't get scheduled. 
-	  Finally, clearing is per-peer-session, not per AFI/SAFI, so
-	  the FSM synchronisation should be in bgp_clear_route_table.
-	  (bgp_clear_route_table) Wrong place for FSM/clearing
-	  synchronisation, move to..
-	  (bgp_clear_route) FSM/clearing synchronisation should be
-	  here.
-	  If no routes were cleared, no workqueue scheduled, call
-	  the completion func to ensure FSM kicks off again.
-
-2006-03-30 Paul Jakma <paul.jakma@sun.com>
-
-	* bgp_community.c: (community_gettoken) Unknown token should
-	  return NULL, to give a strong indication to callers that
-	  the token no longer can be parsed, otherwise callers looping
-	  on this function may have a hard time ending their loop.
-	  (community_str2com) While loop around community_gettoken appears
-	  to have been coded thinking that break statement would break
-	  from the while{}, hence it could never exit for unknown token
-	  case. Fix it to do..while, so it can use the NULL result from
-	  community_gettoken easily.
-
-2006-03-22 Paul Jakma <paul.jakma@sun.com>
-
-	* bgpd.c: (peer_free) release the per-peer workqueue when
-	  freeing the peer.
-
-2006-03-19 Paul Jakma <paul.jakma@sun.com>
-
-	* bgpd/bgp_vty.c: Add includes to get several structs we want
-	  to provide usage statistics on.
-	  (show_bgp_memory_cmd) Show memory usage stats for various
-	  notable fixed size objects. Using mtype_stats_alloc and
-	  mtype_memstr recently added to memory.c.
-	  (bgp_show_summary) Report some additional stats specific to
-	  the given BGP instance and/or AFI/SAFI such as table counts,
-	  peers, rsclients and peer-groups.
-	  (bgp_vty_init) Install show_bgp_memory_cmd.
-	* bgp_nexthop.h: Include if.h as a dependent header, for struct
-	  connected.
-	* bgp_advertise.c: Use a distinct memory type for struct
-	  bgp_synchronize.
-
-2006-03-12 Paul Jakma <paul.jakma@sun.com>
-
-	* bgp_attr.h: (struct attr) rearrange fields to avoid
-	  wasted padding between them as much as possible.
-	  (attr_count,attr_unknown_count) export new functions to
-	  return number of counts of cached attributes.
-	* bgp_attr.c: (attr_count,attr_unknown_count) new functions to
-	  return number of counts of cached attributes.
-	* bgp_route.h: (struct bgp_info) rearrange fields to avoid
-	  wasted padding.
-	* bgp_table.h: (struct bgp_table) Add a count field, of number
-	  of nodes in the table.
-	  (struct bgp_node)  rearrange fields to avoid
-	  wasted padding between them, though I don't think there
-	  was any in this case. 
-	* bgp_table.c: (bgp_node_{delete,get}) Maintain the table node count.
-	  (bgp_table_count) new function to access the table count.
-
-2006-03-03 Paul Jakma <paul.jakma@sun.com>
-
-	* bgp_route.c: (bgp_clear_node_complete) Doh. When clearing
-	  is complete we need to kick off FSM again.
-
-2006-02-21 Paul Jakma <paul.jakma@sun.com>
-
-	* bgpd.h: move the clear_node_queue to be peer specific.
-	  Add a new peer status flag, PEER_STATUS_CLEARING.
-	* bgp_table.h: (struct bgp_table) Add fields to record afi,
-          safi of the table.
-          (bgp_table_init) Take afi and safi to create table for.
-        * bgp_table.c: (bgp_table_init) record the afi and safi.
-        * bgp_nexthop.c: Update all calls to bgp_table_init.
-        * bgp_vty.c: ditto.
-        * bgpd.c: ditto.
-        * bgp_fsm.c: (bgp_timer_set) dont bring up a session which is
-	  clearing.
-        * bgp_route.c: (general) Update all bgp_table_init calls.
-          (bgp_process_{rsclient,main}) clear_node is serialised
-          via PEER_STATUS_CLEARING and fsm now.
-          (struct bgp_clear_node_queue) can be removed. struct bgp_node
-          can be the queue item data directly, as struct peer can be
-          kept in the new wq global user data and afi/safi can be
-          retrieved via bgp_node -> bgp_table.
-          (bgp_clear_route_node) fix to get peer via wq->spec.data,
-          afi/safi via bgp_node->bgp_table.
-          (bgp_clear_node_queue_del) no more item data to delete, only
-          unlock the bgp_node.
-          (bgp_clear_node_complete) only need to unset CLEARING flag
-          and unlock struct peer.
-          (bgp_clear_node_queue_init) queue attaches to struct peer
-          now. record peer name as queue name.
-          (bgp_clear_route_table) If queue transitions to active,
-          serialise clearing by setting PEER_STATUS_CLEARING rather
-          than plugging process queue, and lock peer while queue
-          active.
-          Update to pass only bgp_node as per-queue-item specific data.
-	* bgp_vty.c: (bgp_show_summary) Add a 'Clrng' sub-description
-	  to state of peer while it's suppressed due to clearing.
-
-2006-02-18 Paul Jakma <paul.jakma@sun.com>
-
-	* bgp_routemap.c: (route_set_community) Quick, very hacky, fix
-	  for the set-community leak, bug #89. True fix will be to
-	  detangle the web of *_intern caching and provide saner object
-	  caching for Quagga, future work.
-	* bgp_route.c: (bgp_announce_check) trivial, move declaration
-	  of two local variables into the only block where they are
-	  used, to aid the reader.
-
-2006-02-05 Paul Jakma <paul.jakma@sun.com>
-
-	* bgp_route.h: Add BGP_INFO_COUNTED to track whether
-	  prefix has been counted or not.
-	* bgp_route.c: (bgp_pcount_{inc,dec}rement) new helpers, to
-	  centralise inc/dec of prefix-count, 
-	  (bgp_rib_remove) Remove pcount decrement, use helper.
-	  (bgp_rib_withdraw) ditto, additionally use previous function
-	  too.
-	  (bgp_update_main) Use pcount helpers.
-	  (bgp_clear_route_node) ditto, aslo REMOVED routes don't need
-	  clearing.
-	* bgp_aspath.c: (aspath_gettoken) fix gcc warning about
-	  possible uninitialised usage.
- 
-2006-02-02 Paul Jakma <paul.jakma@sun.com>
-
-	* bgp_route.c: (bgp_{clear_node,process}_queue_init) delay
-	  field is removed from workqueue spec.
-
-2006-01-19 Paul Jakma <paul.jakma@sun.com>
-
-	* (general) various miscellaneous compiler warning fixes.
-	   Remove redundant break statements from switch clauses
-	   which return.
-	   return from main, not exit, cause it annoys SOS.
-	   Remove stray semi-colons which cause empty-statement
-	   warnings.
-
-2006-01-17 Paul Jakma <paul.jakma@sun.com>
-
-	* bgp_nexthop.c: (zlookup_read*) convert to new Zserv format.
-	  (zlookup_query_ipv6) ditto.
-	  (bgp_import_check) ditto.
-	  
-2006-01-16 Paul Jakma <paul.jakma@sun.com>
-
-	* bgp_aspath.c: (assegment_append_asns) XREALLOC can return
-	  NULL theoretically, take care not to lose the allocated data.
-	  (aspath_hash_alloc) aspath_dup already set the aspath
-	  string - fix leak.
-	  (aspath_parse) aspath_hash_alloc dupes the entire aspath,
-	  including segments, but we forgot to free the temporary
-	  assegment.
-	  (aspath_snmp_pathseg) move the static stream pointer out to
-	  file scope, so it can be freed.
-	  (aspath_finish) new function, free aspath resources.
-	* bgp_aspath.h: (aspath_finish) export.
-
-2006-01-10 Juris Kalnins <juris@mt.lv>
-
-	* bgpd.h: (bgp_router_id_unset) ex-function, remove.
-	
-2005-11-23 Paul Jakma <paul.jakma@sun.com>
-
-	* bgp_aspath.c: (assegments_parse) should be static
-
-2005-11-23 Juergen Kammer <j.kammer@eurodata.de>
-
-	* bgp_aspath.c: (aspath_cmp_left_confed) fix SEGV for case
-	  where one or both paths are empty.
-
-2005-11-14 Paul Jakma <paul.jakma@sun.com>
-
-	* bgp_route.c: (bgp_process_rsclient) convert to new workqueue
-          specs and shut up gcc, which complains about cast from void
-          via function parameters, for some dumb reason. Do the cast
-          inside the function instead.
-          (bgp_process_main,bgp_processq_del) ditto.
-          (bgp_clear_route_node) ditto.
-          (bgp_clear_node_queue_del) ditto.
-
-2005-11-03 Paul Jakma <paul.jakma@sun.com>
-
-	* bgp_damp.c: (bgp_reuse_timer) struct bgp can be retrieved via
-	  the struct bgp_damp_info, no need to guess by using
-	  bgp_get_default().
-
-2005-10-01 Andrew J. Schorr <ajschorr@alumni.princeton.edu>
-
-	* bgp_vty.c: (bgp_config_write_redistribute) Use new library function
-	  zebra_route_string instead of a local hard-coded table.
-
-2005-09-30 Vincent Jardin <vincent.jardin@6wind.com>
-
-	* bgp_packet.c: fix compilation when DEBUG is used.
-
-2005-09-10 Paul Jakma <paul.jakma@sun.com>
-
-	* Makefile.am: bgpd shouldn't list libgp's sources as its own.
-	  Use LDADD.
-	* bgp_aspath.h:	
-	  (struct assegment) New struct, abstract representation of a
-	  list of AS_PATH segments and the contained ASNs.	  
-	  (struct aspath) Remove the raw-data related
-	  fields, reference the abstract struct assegment instead. 
-	  Remove several other computed fields, it's just a
-	  headache to maintain them and they're cheap to compute from
-	  struct assegment.
-	  (aspath_parse) parse a stream, not a pointer to raw data.
-	  (aspath_count_{hops,confeds,size}) helpers to access
-	  information formerly directly contained in struct aspath.
-	  (aspath_snmp_pathseg) Helper for SNMP, BGP MIB wants
-	  to be able to output hex representation of raw data.
-	* bgp_aspath.c: (general) partial-rewrite. Store aspath data
-	  as an abstract singly-linked list of abstract segments,
-          rather than storing the raw data, and parsing it each and
-	  every time. Remove several count/size fields which are cheap
-	  to compute from the abstract segment structure.
-	  (global) Include stream.h, needed for aspath_parse, and
-	  others. Couple of helper macros added.
-	  (struct assegment_header) Just the header, and only the
-	  header.
-	  (assegment_data_{new,free}) convenience functions for
-	  AS_SEG_DATA allocation, the dynamic, per-segment array of
-	  ASNs.
-	  (assegment_{new,free,free_all,dup,dup_all}) convenience
-	  functions for creating struct assegments. The _all forms will
-	  follow the entire chain of segments from the given segment.
-	  (assegment_prepend_asns) new function, prepend an ASN N times
-	  to segment.
- 	  (assegment_append_asns) Append a list (array) of ASNs to
-	  segment.
-	  (int_cmp) convenience function for the aspath hash.
-	  (assegment_normalise) new function. Normalise the given
-	  segment chain to meet expectations of Quagga, and to
-	  eliminate differing raw representations of the same paths.
-	  Merge 'runs' of SEQUENCEs into one segment as our internal
-	  segment is not limited by the protocol AS_PATH segment
-	  length. Sort ASNs in SETs. 
-	  (aspath_new) Take void argument to quell warnings. Use the
-	  assegment convenience functions.
-	  (assegment_count_{asns,confeds,hops}) new functions to
-	  compute at runtime values previously held in struct aspath.
-	  (aspath_size) ditto.
-	  (aspath_make_str_count) rewritten to stringify new
-	  representation, and to be slightly easier to understand
-	  hopefully.
-	  (aspath_str_update) convenience function, update the aspath
-	  str. Should investigate removing maintained string from
-	  struct aspath, just run-time compute it, as per other fields.
-	  It's just a maintenance headache, would save noticeable
-	  amount of RAM with possibly not much extra run-time cost.
-	  (aspath_dup) use the assegment dup functions.
-	  (aspath_hash_alloc) Take void * argument to satisfy gcc. Use
-	  the proper helper functions to dup data.
-	  (assegments_parse) new function. parse raw AS_PATH data into
-	  struct assegments. Normalise and return the head of the list.
-	  (aspath_parse) Parse a stream, not pointer to raw data and
-	  use assegments_parse to do it.
-	  (assegment_data_put) Write out a single segment data in protocol
-	  form to stream.
-	  (assegment_header_put) ditto but for segment header.
-	  (aspath_put) new function. As per previous but for an entire
-	  struct aspath.
-	  (aspath_snmp_pathseg) wrapper around aspath_put for
-	  bgp_snmp.c. Uses a static buffer sadly.
-	  (aspath_aggregate_as_set_add) rewritten to use assegments.
-	  (aspath_aggregate) ditto
-	  (aspath_{firstas,loop,private_as}_check) ditto
-	  (aspath_{merge,prepend,add_one_as}) ditto
-	  (aspath_cmp_left{_confed}) ditto
-	  (aspath_delete_confed_seq) ditto, plus fixed to properly
-	  delete all leading confed segments.
-	  (aspath_as_add) Just use assegment_append_asns.
-	  (aspath_segment_add) updated to use assegments.
-	  (enum as_token) Add values for confeds
-	  (aspath_gettoken) Add support for confeds
-	  (aspath_str2aspath) ditto
-	  (aspath_key_make) updated to use as_segments. Also, add
-	  segment type into the hash value as appropriate.
-	  (aspath_cmp) updated to use as_segments.
-	  (aspath_print) don't segfault on NULL argument.
-	* bgp_attr.c: (bgp_attr_aspath) aspath_parse wants the stream
-	  now. No need for manual forwarding of stream.
-	  (bgp_packet_attribute) empty aspath is now denoted by NULL
-	  segment field, length is gone.
-	  Use aspath_size() to determine size.
-	  (bgp_attr_init) Fix declaration, explicitely specify void
-	  arg.
-	  (bgp_dump_routes_attr) Use aspath_size() to determine size.
-	* bgp_route.c: (bgp_info_cmp) use the aspath_count_* functions.
-	  (bgp_rib_withdraw) remove unused variable. Use
-	  aspath_count_hops.
-	* bgp_snmp.c: (bgp4PathAttrTable) raw data is gone, use 
-	  aspath_snmp_pathseg to get the representation.
-
-2005-09-10 Paul Jakma <paul.jakma@sun.com>
-
-	* bgp_vty.c: (bgp_vty_init) gcc 4 compile fix. static
-	  function declarations shouldn't be inside functions.
-	* bgp_dump.c: (bgp_dump_interval_add) ditto.
-	
-2005-08-26 Hasso Tepper <hasso at quagga.net>
-
-	* bgp_route.c: Third (?) attempt to fix best selection breakage
-	  introduced long time ago with route server patch. Hopefully
-	  it's last case to fix - route-server client not in peer group.
-
-2005-08-22 Hugo Santos <hsantos@av.it.pt>
-
-	* bgp_vty.c: (general) Add support for BGP IPv6 Multicast SAFI
-	  commands and BGP_IPV6M_NODE.
-	  
-2005-08-22 Paul Jakma <paul.jakma@sun.com>
-
-	* bgp_route.h: (struct bgp_info) add a new flag, BGP_INFO_REMOVED.
-	  BGP_INFO_VALID is already overloaded, don't care to do same thing
-	  to STALE or HISTORY.
-	* bgpd.h: (BGP_INFO_HOLDDOWN) Add INFO_REMOVED to the macro, as a
-	  route which should generally be ignored.
-	* bgp_route.c: (bgp_info_delete) Just set the REMOVE flag, rather 
-	  than doing actual work, so that bgp_process (called directly,
-	  or indirectly via the scanner) can catch withdrawn routes.
-	  (bgp_info_reap) Actually remove the route, what bgp_info_delete
-	  used to do, only for use by bgp_process.
-	  (bgp_best_selection) reap any REMOVED routes, other than the old
-	  selected route.
-	  (bgp_process_rsclient) reap the old-selected route, if appropriate
-	  (bgp_process_main) ditto
-	  (bgp_rib_withdraw, bgp_rib_remove) make them more consistent with
-	  each other. Don't play games with the VALID flag, bgp_process
-	  is async now, so it didn't make a difference anyway.
-	  Remove the 'force' argument from bgp_rib_withdraw, withdraw+force
-	  is equivalent to bgp_rib_remove. Update all its callers.
-	  (bgp_update_rsclient) bgp_rib_withdraw and force set is same as
-	  bgp_rib_remove.
-	  (route_vty_short_status_out) new helper to print the leading
-	  route-status string used in many command outputs. Consolidate.
-	  (route_vty_out, route_vty_out_tag, damp_route_vty_out, 
-	   flap_route_vty_out) use route_vty_short_status_out rather than
-	  duplicate.
-	  (route_vty_out_detail) print state of REMOVED flag.
-	  (BGP_SHOW_SCODE_HEADER) update for Removed flag. 
-	  
-2005-08-03 Hasso Tepper <hasso at quagga.net>
-
-	* bgp_routemap.c: Revert part of leaking communities fix commited in
-	  2005-05-27. While ecommunity fix seems to be correct, community case
-	  isn't.
-
-2005-06-28 Paul Jakma <paul.jakma@sun.com>
-
-	* (global) The great bgpd extern and static'ification.
-	* bgp_routemap.c: remove unused ROUTE_MATCH_ASPATH_OLD code
-	  (route_set_metric_compile) fix u_int32_t to ULONG_MAX comparison
-	  warnings.
-	* bgp_route.h: (bgp_process, bgp_withdraw, bgp_update) export these
-	  used by various files which had their own private declarations,
-	  in the case of mplsvpn - incorrect.
-
-2005-06-15 Paul Jakma <paul.jakma@sun.com>
-
-	* bgpd.c: (bgp_terminate) workqueue's are lazy allocated and its
-	  possible to terminate bgpd before workqueues were setup, causing
-	  an abort/crash. Reported by Ashish Mehta of Sun.
-
-2005-06-01 Paul Jakma <paul.jakma@sun.com>
-
-	* (general) refcount struct peer and bgp_info, hence allowing us
-	  add work_queues for bgp_process.
-	* bgp_route.h: (struct bgp_info) Add 'lock' field for refcount.
-	  Add bgp_info_{lock,unlock} helper functions.
-	  Add bgp_info_{add,delete} helpers, to remove need for
-	  users managing locking/freeing of bgp_info and bgp_node's.
-	* bgp_table.h: (struct bgp_node) Add a flags field, and
-	  BGP_NODE_PROCESS_SCHEDULED to merge redundant processing of
-	  nodes.
-	* bgp_fsm.h: Make the ON/OFF/ADD/REMOVE macros lock and unlock
-	  peer reference as appropriate.
-	* bgp_damp.c: Remove its internal prototypes for
-	  bgp_info_delete/free. Just use bgp_info_delete.
-	* bgpd.h: (struct bgp_master) Add work_queue pointers.
-	  (struct peer) Add reference count 'lock'
-	  (peer_lock,peer_unlock) New helpers to take/release reference
-	  on struct peer.
-	* bgp_advertise.c: (general) Add peer and bgp_info refcounting 
-	  and balance how references are taken and released.
-	  (bgp_advertise_free) release bgp_info reference, if appropriate
-	  (bgp_adj_out_free) unlock peer
-	  (bgp_advertise_clean) leave the adv references alone, or else
-	  call bgp_advertise_free cant unlock them.
-	  (bgp_adj_out_set) lock the peer on new adj's, leave the reference
-	  alone otherwise. lock the new bgp_info reference.
-	  (bgp_adj_in_set) lock the peer reference
-	  (bgp_adj_in_remove) and unlock it here
-	  (bgp_sync_delete) make hash_free on peer conditional, just in
-	  case.
-	* bgp_fsm.c: (general) document that the timers depend on
-	  bgp_event to release a peer reference.
-	  (bgp_fsm_change_status) moved up the file, unchanged.
-	  (bgp_stop) Decrement peer lock as many times as cancel_event
-	  canceled - shouldnt be needed but just in case.
-	  stream_fifo_clean of obuf made conditional, just in case.
-	  (bgp_event) always unlock the peer, regardless of return value
-	  of bgp_fsm_change_status.
-	* bgp_packet.c: (general) change several bgp_stop's to BGP_EVENT's.
-	  (bgp_read) Add a mysterious extra peer_unlock for ACCEPT_PEERs
-	  along with a comment on it.
-	* bgp_route.c: (general) Add refcounting of bgp_info, cleanup
-	  some of the resource management around bgp_info. Refcount peer.
-	  Add workqueues for bgp_process and clear_table.
-	  (bgp_info_new) make static
-	  (bgp_info_free) Ditto, and unlock the peer reference.
-	  (bgp_info_lock,bgp_info_unlock) new exported functions
-	  (bgp_info_add) Add a bgp_info to a bgp_node in correct fashion,
-	  taking care of reference counts.
-	  (bgp_info_delete) do the opposite of bgp_info_add.
-	  (bgp_process_rsclient) Converted into a work_queue work function.
-	  (bgp_process_main) ditto.
-	  (bgp_processq_del) process work queue item deconstructor
-	  (bgp_process_queue_init) process work queue init
-	  (bgp_process) call init function if required, set up queue item
-	  and add to queue, rather than calling process functions directly.
-	  (bgp_rib_remove) let bgp_info_delete manage bgp_info refcounts
-	  (bgp_rib_withdraw) ditto
-	  (bgp_update_rsclient) let bgp_info_add manage refcounts
-	  (bgp_update_main) ditto
-	  (bgp_clear_route_node) clear_node_queue work function, does
-	  per-node aspects of what bgp_clear_route_table did previously
-	  (bgp_clear_node_queue_del) clear_node_queue item delete function
-	  (bgp_clear_node_complete) clear_node_queue completion function,
-	  it unplugs the process queues, which have to be blocked while
-	  clear_node_queue is being processed to prevent a race.
-	  (bgp_clear_node_queue_init) init function for clear_node_queue
-	  work queues
-	  (bgp_clear_route_table) Sets up items onto a workqueue now, rather
-	  than clearing each node directly. Plugs both process queues to
-	  avoid potential race.
-	  (bgp_static_withdraw_rsclient) let bgp_info_{add,delete} manage
-	  bgp_info refcounts.
-	  (bgp_static_update_rsclient) ditto
-	  (bgp_static_update_main) ditto
-	  (bgp_static_update_vpnv4) ditto, remove unneeded cast.
-	  (bgp_static_withdraw) see bgp_static_withdraw_rsclient
-	  (bgp_static_withdraw_vpnv4) ditto
-	  (bgp_aggregate_{route,add,delete}) ditto
-	  (bgp_redistribute_{add,delete,withdraw}) ditto
-	* bgp_vty.c: (peer_rsclient_set_vty) lock rsclient list peer
-	  reference
-	  (peer_rsclient_unset_vty) ditto, but unlock same reference
-	* bgpd.c: (peer_free) handle frees of info to be kept for lifetime
-	  of struct peer.
-	  (peer_lock,peer_unlock) peer refcount helpers
-	  (peer_new) add initial refcounts
-	  (peer_create,peer_create_accept) lock peer as appropriate
-	  (peer_delete) unlock as appropriate, move out some free's to
-	  peer_free.
-	  (peer_group_bind,peer_group_unbind) peer refcounting as
-	  appropriate.
-	  (bgp_create) check CALLOC return value.
-	  (bgp_terminate) free workqueues too.
-	 
-2005-05-28 Hasso Tepper <hasso at quagga.net>
-
-	* bgp_routemap.c: Sync set_metric_addsub_cmd with ripd.
-
-2005-05-27 Hasso Tepper <hasso at quagga.net>
-
-	* bgp_routemap.c: Stop leaking communities.
-
-2005-05-27 Hasso Tepper <hasso at quagga.net>
-
-	* bgpd.c: Deleting bgp->rsclient list needs fix similar to pree-groups
-	  deleting fix. Avoid leaking bgp->group, bgp->peer and bgp->rsclient
-	  lists.
-
-2005-05-26 Hasso Tepper <hasso at quagga.net>
-
-        * bgpd.c: Don't crash while deleting list of peer-groups.
-
-2005-05-25 Hasso Tepper <hasso at quagga.net>
-
-	* bgpd.c: Fix obvious (routeserver patch) merge error. This makes "no
-	  neighbor x.x.x.x routemap [export|import] commands work again.
-
-2005-05-23 Paul Jakma <paul@dishone.st>
-
-	* bgp_routemap.c: add semi-colons to VTY_GET_* to match vty.h change
-	* bgp_fsm.h: Add extern qualifier to exported functions
-	* bgp_nexthop.c: add static to nexthop specific globals
-	* *.h: Add guard defines
-
-2005-05-19 Paul Jakma <paul@dishone.st>
-
-	* bgp_fsm.c: (bgp_stop) use sockunion_free, not XFREE..
-	* bgp_network.c: (bgp_getsockname) ditto
-	  (bgp_accept) use XSTRDUP
-	* bgp_routemap.c: (route_match_peer) ditto, als use a ret value and
-	  remove one sockunion_free.
-	* bgpd.c: (peer_delete) ditto.
-	  XFREE the correct memtype, not free.
-	  (peer_create) use XSTRDUP
-	* bgp_packet.c: (bgp_stream_dup) deleted, stream_dup should be used
-	  (various) update -> s/bgp_stream_dup/stream_dup
-	  
-
-2005-04-11 Andrew J. Schorr <ajschorr@alumni.princeton.edu>
-
-	* bgp_zebra.c (bgp_redistribute_set, bgp_redistribute_unset):
-	  The 2nd arg to zebra_redistribute_send is now zclient instead of
-	  zclient->sock.
-
-2005-04-09 Akihiro Mizutani <mizutani@net-chef.net>
-
-	* bgp_vty.c: Make "exit-address-family" work in IPv4 unicast address
-	  family node.
-
-2005-04-08 Martin Ling <martin-quagga@earth.li>
-
-	* bgp_aspath.[ch], bgp_route.c, bgp_vty.c, bgpd.[ch]: Allow to enable
-	  the length of confederation path segments to be included during the
-	  as-path length check in the best path decision.
-
-2005-04-02 Andrew J. Schorr <ajschorr@alumni.princeton.edu>
-
-	* bgp_zebra.c: (bgp_interface_delete) After deleting, set ifp->ifindex
-	  to IFINDEX_INTERNAL.
-
-2005-03-21 Hasso Tepper <hasso at quagga.net>
-
-	* bgp_route.c: Don't crash while clearing route tables if there is
-	  no particular afi/safi configured.
-
-2005-02-23 Hasso Tepper <hasso at quagga.net>
-
-	* bgp_route.c: Make reannouncing prefixes with changed attributes
-	  work again.
-
-2005-02-02 Akihiro Mizutani <mizutani@net-chef.net>
-
-	* bgp_vty.c: Deprecate "neighbor transparent-as" and "neighbor
-	  transparent-nexthop" commands.
-
-2005-02-02 Akihiro Mizutani <mizutani@net-chef.net>
-
-	* bgp_routemap.c: New route-map command - "match ip route-source".
-
-2005-02-02 Akihiro Mizutani <mizutani@net-chef.net>
-
-	* bgp_clist.[ch], bgp_route.c, bgp_routemap.c, bgp_vty.c:
-	  community-list cleanup.
-
-2005-02-02 Akihiro Mizutani <mizutani@net-chef.net>
-
-	* bgp_route.c, bgp_vty.c, bgp_zebra.c, bgpd.[ch]: "enforce-multihop"
-	  -> "disable-connected-check".
-
-2005-02-02 Akihiro Mizutani <mizutani@net-chef.net>
-
-	* bgp_fsm.c, bgp_open.c, bgp_packet.c, bgp_route.[ch], bgp_vty.c,
-	  bgpd.[ch]: Add BGP_INFO_STALE flag and end-of-rib support. "bgp
-	  graceful-restart" commands added. Show numbers of individual
-	  messages in "show ip bgp neighbor" command. Final pieces of graceful
-	  restart.
-
-2005-02-01 Akihiro Mizutani <mizutani@net-chef.net>
-
-	* bgp_open.c, bgp_packet.c, bgp_vty.c, bgpd.[ch]: Remove "no neighbor
-	  capability route-refresh" commands. Route refresh capability is sent
-	  anyway now. Preserve dummy deprecated commands.
-
-2005-02-01 Akihiro Mizutani <mizutani@net-chef.net>
-
-	* bgp_attr.c, bgp_snmp.c, bgp_vty.c, bgpd.[ch]: Remove support for old
-	  draft - ie. "neighbor version 4-" commands. Preserve dummy "neighbor
-	  version" command as deprecated.
-
-2005-02-01 Akihiro Mizutani <mizutani@net-chef.net>
-
-	* bgpd.[ch], bgp_vty.c, bgp_route.c: "Restart session after
-	  maximum-prefix limit" feature support.
-
-2005-02-01 Akihiro Mizutani <mizutani@net-chef.net>
-
-	* bgp_nexthop.c: Improve debug.
-	* bgpd.[ch], bgp_nexthop.c, bgp_snmp.c: Remove useless bgp_get_master()
-	  function.
-	* bgp_packet.c: MP AFI_IP update and withdraw parsing.
-	* bgp_fsm.c: Reset peer synctime in bgp_stop(). bgp_fsm_change_status()
-	  is better place to log about peer status change than bgp_event().
-	  Log in bgp_connect_success().
-	* bgp_vty.c: Fix typo in comment.
-	* bgp_attr.c: Better log about unknown attribute.
-
-2005-01-29 Andrew J. Schorr <ajschorr@alumni.princeton.edu>
-
-	* bgp_filter.c: (ip_as_path,no_ip_as_path) Use argv_concat instead
-	  of buffer_getstr.
-	* bgp_route.c: (bgp_show_regexp) Fix memory leak: need to free string
-	  returned by buffer_getstr.
-	  (bgp_show_community) Must use XFREE instead of free on string
-	  returned by buffer_getstr.
-	* bgp_routemap.c: (set_community) Must use XFREE instead of free
-	  on string returned by buffer_getstr.
-	* bgp_vty.c: (neighbor_description) Use argv_concat instead of
-	  buffer_getstr.
-
-2005-01-24 Hasso Tepper <hasso at quagga.net>
-
-	* bgp_route.c: Fix showstopper bug. New route must be selected also
-	  if old one is flaged as BGP_INFO_ATTR_CHANGED.
-
-2005-01-17 Hasso Tepper <hasso at quagga.net>
-
-	* bgp_route.c: Clear peer's routing table regardless whether it's
-	  configured or not. Being not configured is even better reason to
-	  do it.
-
-2005-01-05 Paul Jakma <paul@dishone.st>
-
-	* bgp_packet.c: (bgp_write) set socket to nonblock while writing
-          this should be generalised. See bugzilla #102. Fix supplied by
-	  wawa@yandex-team.ru (Vladimir Ivanov).
-
-2004-12-08 Andrew J. Schorr <ajschorr@alumni.princeton.edu>
-
-	* *.c: Change level of debug messages to LOG_DEBUG.
-
-2004-12-07 Andrew J. Schorr <ajschorr@alumni.princeton.edu>
-
-	* bgp_main.c: (main) The 2nd argument to openzlog has been removed.
-
-2004-12-03 Andrew J. Schorr <ajschorr@alumni.princeton.edu>
-
-	* bgp_main.c: (sigint) Use zlog_notice for termination message.
-	  (main) Use zlog_notice for startup announcement.
-
-2004-11-25 Hasso Tepper <hasso at quagga.net>
-
-	* bgp_main.c: Make group to run as configurable.
-
-2004-11-09 Paul Jakma <paul@dishone.st>
-
-	* bgp_nexthop.c: collapse bgp_connected_ipvX, bgp_nexthop_cache_ipvX
-	  and cache{1,2}.. into arrays of tables and hence collapse
-          bgp_scan_ipv{4,6} into a single bgp_scan function. Tested, though
-          a long time ago (and this change was hand-merged).
-
-2004-11-04 Andrew J. Schorr <ajschorr@alumni.princeton.edu>
-
-	* bgp_route.c: Remove all code related to VTY_CONTINUE; this feature
-	  is deprecated because the output did not represent a single point
-	  in time.  All output needs to be generated inline and buffered
-	  by the library code.
-	  (route_vty_out,route_vty_out_tag,damp_route_vty_out,
-	   flap_route_vty_out) Remove code to count number of lines of output,
-	   since this was only useful for VTY_CONTINUE behavior.
-	  (bgp_show_callback,vty_calc_line) Removed.
-	  (bgp_show_table) Remove hooks for VTY_CONTINUE callback support.
-	  As a result, there's a new output_arg argument to this function.
-	  Make function static.
-	  (bgp_show) Make function static and add a new output_arg argument.
-	  Change all functions that call bgp_show or bgp_show_table to
-	  pass the new output_arg argument (that used to be passed inside
-	  vty->output_arg).
-	* bgp_mplsvpn.c: Remove declarations of functions defined in
-	  bgp_route.c; these declarations belong in bgp_route.h.
-	* bgp_route.h: Declare 3 global functions used in both bgp_route.c
-	  and in bgp_mplsvpn.c.
-
-2004-10-31 Paul Jakma <paul@dishone.st>
-
-	* {bgpd,bgp_attr}.c: size_t printf format should be ld.
-
-2004-10-25 Paul Jakma <paul@dishone.st>
-
-	* Update with fix in debian bug id 222930.
-	* bgp_main.c: Add ZCAP_RAW, needed to bind to interfaces.
-	  bgp_network.c: (....) raise/lower privs around call to
-          SO_BINDTODEVICE sockopt. 
-
-2004-10-19 Andrew J. Schorr <aschorr@telemetry-investments.com>
-
-	* bgp_nexthop.c: (bgp_connected_add) Connected destination pointer
-	  may be NULL.
-	  (bgp_connected_delete) ditto.
-
-2004-10-14 Hasso Tepper <hasso at quagga.net>
-
-	* bgp_dump.c: Make dump configuration appear in vtysh.
-
-2004-10-13 Hasso Tepper <hasso at quagga.net>
-
-	* bgp_snmp.c: Remove defaults used to initialize smux connection to
-	  snmpd. Connection is initialized only if smux peer is configured.
-	* bgp_view.c: It's dead file. Reomved.
-
-2004-10-13 Paul Jakma <paul@dishone.st>
-
-	* (global) more const'ification and fixups of types to clean up code.
-	* bgp_mplsvpn.{c,h}: (str2tag) fix abuse. Still not perfect,
-          should use something like the VTY_GET_INTEGER macro, but without
-          the vty_out bits..
-        * bgp_routemap.c: (set_aggregator_as) use VTY_GET_INTEGER_RANGE
-          (no_set_aggregator_as) ditto.
-        * bgpd.c: (peer_uptime) fix unlikely bug, where no buffer is 
-          returned, add comments about troublesome return value.
-	
-2004-10-03 James R. Leu <jleu at mindspring.com>
-
-	* bgp_vty.c: Router id from zebra can be manually overriden.
-	* bgp_zebra.c: Read router id related messages from zebra daemon.
-	  Remove own code related with router id selection.
-	* bgpd.c, bgpd.h: Remove own router id selection code. Use the one
-	  from zebra daemon if it isn't manually overriden.
-
-2004-09-26 Hasso Tepper <hasso at quagga.net>
-
-	* bgp_aspath.c, bgp_packet.c, bgp_vty.c: Fix compiler warnings.
-
-2004-09-23 Hasso Tepper <hasso at quagga.net>
-
-	* *.[c|h]: list -> struct list *, listnode -> struct listnode *.
-
-2004-07-09 Paul Jakma <paul@dishone.st>
-
-	* Merge of GNU Zebra cvs2svn changesets r799, r800 and r807.
-	* bgp_dump.c: (bgp_dump_attr) cleanup. return status code. check
-	  attributes present before printing.
-	* bgp_dump.c: update bgp_dump_attr prototype.
-	* bgp_packet.c: (bgp_update_receive) init attrstr. check status
-	  of bgp_dump_attr. Log end-of-rib UPDATEs.
-
-2004-07-09 Sowmini Varadhan <sowmini.varadhan@sun.com>
-
-	* bgp_packet.c: (bgp_collision_detect) Send NOTIFY on new socket
-	  if that is connection we're closing.
-	  (bgp_read) invalid marker check applies to KEEPALIVE too.
-	* bgp_route.c: Ignore multicast NRLI, dont send NOTIFY.
-	
-2004-06-04 Paul Jakma <paul@dishone.st>
-
-	* type mismatch fixes
-	  
-2004-05-21  Akihiro Mizutani <mizutani@net-chef.net>
-
-	* bgpd.h, bgp_open.[ch], bgp_debug.c, bgp_vty.[ch], bgp_fsm.c:
-	  Graceful restart capability display.
-
-2005-05-20 Kunihiro Ishiguro  <kunihiro@ipinfusion.com>
-
-	* bgp_debug.c: Cosmetical fixes and log neighbor changes.
-
-2004-05-20  Akihiro Mizutani <mizutani@net-chef.net>
-
-	* bgp_ecommunity.c: Transit ecommunity support.
-	* bgp_ecommunity.c: Fix for unknown community crush.
-
-2005-05-20 Kunihiro Ishiguro  <kunihiro@ipinfusion.com>
-
-	* *: Maximum prefix threshold support.
-	* *: Reset notification fixups.
-
-2004-05-08 Paul Jakma <paul@dishone.st>
-
-	* bgp_zebra.c: (bgp_interface_address_add) sync to zclient changes
-	  (bgp_interface_address_delete) ditto.
-	  (bgp_zebra_announce) ditto.
-	  (bgp_zebra_withdraw) ditto.
-
-2004-05-03 Daniel Roesen <dr@cluenet.de>
-	
-	* bgp_fsm.c: (bgp_stop) Reset uptime only on transition from 
-	  Established so that it reflects true downtime (rather time 
-	  since last transition, eg Active->Idle)
-	  
-2004-05-01 rivo nurges <rix@estpak.ee>
- 
-        * bgp_route.c: fix UNH IOL BGP-4.1.12f
- 
-2004-05-01 Paul Jakma <paul@dishone.st>
-
-	* Revert the attempted clean-up of the dummy peer hack, reverts
-	  patchsets 435 (see 2004-02-17 below) and 456. 
-
-2004-04-16 rivo nurges <rix@estpak.ee>
-
-	* bgpd.h, bgp_debug.c: update cease subcodes to
-	  draft-ietf-idr-cease-subcode-05
-	* bgpd.h, bgpd.c, bgp_route.c, bgp_route.h: fix UNH IOL BGP-4.1.6a
-
-2004-02-17 Paul Jakma <paul@dishone.st>
-
-	* bgpd.h: (bgp_peer) add fd_local and fd_accept 
-	  file descriptor's, fd becomes a pointer to one of these.
-	* bgpd.c: (global) adjust for fact that fd is now a pointer.
-	  (peer_create_accept) removed.
-	* bgp_route.c: (global) adjust for change of peer fd to pointer
-	* bgp_packet.c: (bgp_collision_detect) adjust and remove the 
-	  "replace with other peer" hack. 
-	* bgp_network.c: (bgp_accept) Remove the dummy peer hack. 
-	  Update peer->fd_accept instead. 
-	  (global) Adjust fd references - now a pointer.
-	* bgp_fsm.c: (global) adjust peer fd to pointer.
-	  (bgp_connection_stop) new function, to stop connection.
-	  (global) adjust everything which closed peer fd to use
-	  bgp_connection_stop().
-	  
-2003-12-23 Krzysztof Oledzki <oleq@ans.pl>
-
-	* bgp_network.c: drop privs on error cases
-
-2003-08-11 kunihiro <kunihiro@zebra.org>
-
-	* bgp_route{,map}.c: Extend 'set ip next-hop' in route-maps with
-	  ability to specify 'peer-address' rather than IP. 
-
-2003-06-09 Paul Jakma <paul@dishone.st>
-
-	* bgp_clist.c (community_list_delete): honour deny statements
-
-2003-04-19 Hasso Tepper <hasso@estpak.ee>
-
-	* rip_routemap.c: sync daemon's route-map commands to have same
-	syntax
-
-2003-01-09  Akihiro Mizutani <mizutani@net-chef.net>
-
-	* bgp_routemap.c: Add match extcommunity command.
-
-2002-10-23  Kunihiro Ishiguro  <kunihiro@ipinfusion.com>
-
-	* bgp_aspath.c (aspath_init): Extend hash size from default to
-	32767.
-	(aspath_key_make): Use unsigned shoft for making hash.  Suggested
-	by: Marc Evans <Marc@SoftwareHackery.Com>
-
-2002-08-19  Kunihiro Ishiguro  <kunihiro@ipinfusion.com>
-
-	* bgp_clist.c (community_entry_free): Fix memory leak of standard
-	extcommunity-list config string.
-
-2002-08-19  Akihiro Mizutani <mizutani@net-chef.net>
-
-	* bgp_route.c (route_vty_out_detail): Fix bug of router-id display
-	when multiple instance is used.
-
-2002-08-18  Akihiro Mizutani <mizutani@net-chef.net>
-
-	* bgpd.c: Make "default-originate" and "maximum-prefix" commands
-	available in peer-group configuration.
-
-2002-08-13  Akihiro Mizutani <mizutani@net-chef.net>
-
-	* bgp_packet.c (bgp_open_send): Put Opt Parm Len 0 when last
-	capability packet cause error or dont-capability-negotiate option
-	is specified.
-
-2002-07-07  Kunihiro Ishiguro  <kunihiro@ipinfusion.com>
-
-	* zebra-0.93 released.
-
-2001-10-28  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* bgpd.c (bgp_vty_init): Translate update commands are removed.
-
-2001-10-10  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* bgp_route.c (bgp_static_set): Add workaround for BGP static
-	route announcement when there is no zebra running.
-
-2001-10-08  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* bgpd.c (neighbor_remote_as_unicast): Remove "remote-as nlri
-	unicast multicast" commands.
-
-2001-09-14  Akihiro Mizutani <mizutani@dml.com>
-
-	* bgp_open.c: When we receive capability route-refresh, we should
-	check we send the capability not we receive the capability.
-
-	* bgp_route.c (bgp_network_mask_natural_route_map): network
-	statement route-map is added.
-
-2001-08-31  Kunihiro Ishiguro  <kunihiro@ipinfusion.com>
-
-	* bgp_advertise.c (bgp_advertise_intern): attr must be interned
-	before looking up hash table.
-
-2001-08-30  Kunihiro Ishiguro  <kunihiro@ipinfusion.com>
-
-	* bgpd.h (struct peer): BGP filter is moved from peer_conf to
-	peer.
-
-2001-08-28  Kunihiro Ishiguro  <kunihiro@ipinfusion.com>
-
-	* bgp_nexthop.c (bnc_nexthop_free): Fix next pointer bug.
-	Suggested by: "Hong-Sung Kim" <hoskim@lanbird.co.kr>.
-
-2001-08-26  Kunihiro Ishiguro  <kunihiro@ipinfusion.com>
-
-	* bgp_table.c (bgp_node_create): Clearn memory before use it.
-
-2001-08-24  Kunihiro Ishiguro  <kunihiro@ipinfusion.com>
-
-	* Change to use bgp_table.[ch].
-
-2001-08-23  Kunihiro Ishiguro  <kunihiro@ipinfusion.com>
-
-	* bgpd.c (bgp_init): Add "transparent-as" and
-	"transparent-nexthop" for old version compatibility.
-
-2001-08-23  Akihiro Mizutani <mizutani@dml.com>
-
-	* bgpd.h (struct peer): default-originate route-map is added.
-
-	* bgp_route.c: When self originated route is advertised with
-	attrubute-unchanged, nexthop was not properly set.  This bug is
-	fixed.
-
-2001-08-22  Akihiro Mizutani <mizutani@dml.com>
-
-	* bgpd.c (neighbor_attr_unchanged): transparent-as and
-	transparent-next-hop commands are restructured.  Instead of
-	current transparent-* commands, attribute-unchanged command is
-	introduced.
-
-	neighbor A.B.C.D attribute-unchanged [as-path|next-hop|med]
-
-	(neighbor_default_originate): "default-originate" configuration
-	announce default route even 0.0.0.0/0 does not exists in BGP RIB.
-
-2001-08-19  Kunihiro Ishiguro  <kunihiro@ipinfusion.com>
-
-	* zebra-0.92a released.
-
-2001-08-19  Akihiro Mizutani <mizutani@dml.com>
-
-	* bgpd.c: AF specific soft-reconfiguration inbound commands are
-	added.
-
-2001-08-17  Kunihiro Ishiguro  <kunihiro@ipinfusion.com>
-
-	* bgp_route.c (bgp_show_callback): Do not do community NULL check.
-
-	* bgp_community.c (community_cmp): Add check for commnunity NULL
-	check.
-
-	* bgp_routemap.c (route_match_community): Do not check comunity is
-	NULL.  It may match to community-list "^$".
-
-	* bgp_community.c (community_match): Add check for community is
-	NULL case.
-
-2001-08-17  Akihiro Mizutani <mizutani@dml.com>
-
-	* bgpd.c: AF specific route-reflector-client and
-	route-server-client configuration are added.
-
-2001-08-17  Rick Payne <rickp@ayrnetworks.com>
-
-	* bgp_clist.c (community_match_regexp): Check special ^$ case.
-
-2001-08-17  Akihiro Mizutani <mizutani@dml.com>
-
-	* bgp_clist.c (community_list_match): Fix bug of community list
-	permit and deny check.
-
-2001-08-16  Akihiro Mizutani <mizutani@dml.com>
-
-	* bgp_mplsvpn.c (bgp_mplsvpn_init): Add AF specific "nexthop-self"
-	command.
-
-2001-08-15  Akihiro Mizutani <mizutani@dml.com>
-
-	* bgpd.h (PEER_FLAG_SEND_COMMUNITY): Per AF based configuration
-	flag is introduced.
-
-	* bgp_mplsvpn.c (bgp_mplsvpn_init): VPNv4 filtering is added.
-
-2001-08-15  Kunihiro Ishiguro  <kunihiro@ipinfusion.com>
-
-	* zebra-0.92 released.
-
-2001-08-13  Kunihiro Ishiguro  <kunihiro@ipinfusion.com>
-
-	* bgpd.c (bgp_delete): "no router bgp" free static, aggregate, rib
-	table properly.
-
-2001-08-12  Kunihiro Ishiguro  <kunihiro@ipinfusion.com>
-
-	* bgp_route.c (bgp_node_safi): Return SAFI of current node.
-	(bgp_config_write_network_vpnv4): VPNv4 static configuration
-	display.
-
-2001-08-11  Kunihiro Ishiguro  <kunihiro@ipinfusion.com>
-
-	* bgpd.c (no_bgp_ipv4_multicast_route_map): Add IPv4 multicast
-	node filter commands.
-
-2001-08-11  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* bgpd.h (PEER_FLAG_IGNORE_LINK_LOCAL_NEXTHOP): Add
-	"ignore-link-local-nexthop" flag for ignore link-local nexthop for
-	IPv6.
-
-2001-08-07  Kunihiro Ishiguro  <kunihiro@ipinfusion.com>
-
-	* bgpd.c (address_family_ipv4_multicast): "address-family ipv4
-	multicast" is added.
-	(address_family_ipv6_unicast): "address-family ipv6 unicast" is
-	added.
-	
-2001-08-07  Akihiro Mizutani <mizutani@dml.com>
-
-	* bgp_route.c (bgp_process): Use flag instead of as_selected
-	memeber in struct bgp_info.
-
-	* bgp_route.h (struct bgp_info): Remove as_selected memeber from
-	struct bgp_info.
-
-2001-07-31  Kunihiro Ishiguro  <kunihiro@ipinfusion.com>
-
-	* bgp_route.c (bgp_announce_check): Enclose sending time AS loop
-	check code with #ifdef BGP_SEND_ASPATH_CHECK.
-
-2001-07-29  Kunihiro Ishiguro  <kunihiro@ipinfusion.com>
-
-	* bgp_packet.c (bgp_withdraw_send): Simplify address family check.
-
-	* bgpd.h (BGP_INFO_HOLDDOWN): Introduce new macro to check BGP
-	information is alive or not.
-
-	* bgp_community.c: Use community_val_get() on all OS.
-
-2001-07-24  Kunihiro Ishiguro  <kunihiro@ipinfusion.com>
-
-	* bgp_route.c (bgp_announce_check): Simplify set next-hop self
-	check.
-
-2001-07-24  Akihiro Mizutani <mizutani@dml.com>
-
-	* bgp_route.c (bgp_announce_check): To route server clients, we
-	announce AS path, MED and nexthop transparently.
-
-2001-06-21  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* bgp_routemap.c (route_set_atomic_aggregate_free): Do not call
-	XFREE.  No memory is allocated in
-	route_set_atomic_aggregate_compile().
-
-2001-06-21  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* bgp_routemap.c (bgp_route_map_init): `match nlri` and `set nlri`
-	are replaced by `address-family ipv4` and `address-family vpnvr'.
-
-2001-06-19  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* bgp_route.c (bgp_withdraw): Add check for BGP_PEER_CONFED.
-	Reported by Rick Payne <rickp@rossfell.co.uk>.
-
-2001-06-17  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* bgp_zebra.c (bgp_zebra_announce): When global IPv6 nexthop is
-	empty, use socket's remote address for the nexthop.
-
-2001-06-04  Kunihiro Ishiguro  <kunihiro@ipinfusion.com>
-
-	* bgpd.c (peer_delete): Fix memory leak.  Reported by Yosi Yarchi
-	<Yosi_Yarchi@KereniX.com>
-
-2001-06-01  Kunihiro Ishiguro  <kunihiro@ipinfusion.com>
-
-	* bgpd.c (bgp_delete): Fix memory leak.  Reported by Yosi Yarchi
-	<Yosi_Yarchi@KereniX.com>
-
-2001-05-27  Kunihiro Ishiguro  <kunihiro@ipinfusion.com>
-
-	* bgp_route.c (bgp_route_clear_with_afi_vpnv4): Use next instead
-	of ri->next.
-
-	* bgp_packet.c (bgp_withdraw_send): MPLS/VPN withdraw takes effect
-	when HAVE_IPV6 is not defined.
-
-2001-03-07  "Akihiro Mizutani" <mizutani@dml.com>
-
-	* bgpd.c (peer_timers_set): Adjust keepalive timer to fit less
-	than holdtime / 3.
-	(bgp_confederation_peers_unset): Only set peer->local_as when
-	confederation is enabled.
-	(bgp_timers): Add "timers bgp <0-65535> <0-65535>" command.
-
-	* bgp_route.c (bgp_announce_check): Set med of redistributed route
-	when it is announced to EBGP peer.
-
-2001-03-06  "Akihiro Mizutani" <mizutani@dml.com>
-
-	* bgp_nexthop.c (bgp_scan_ipv4): bgp_scan() call bgp_process() for
-	all prefixes.
-
-2001-03-06  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* bgp_attr.c (bgp_attr_origin): When bgpd send NOTIFICATION with
-	erroneous attribute (type, length and value), it does include
-	attribute flags field.
-
-2001-02-21  "Akihiro Mizutani" <mizutani@dml.com>
-
-	* bgp_route.c (bgp_announce_check): The route reflector is not
-	allowed to modify the attributes of the reflected IBGP routes.
-
-2001-02-20  "Akihiro Mizutani" <mizutani@dml.com>
-
-	* bgp_route.c (bgp_info_cmp): During path seleciton, BGP
-	confederation peer is treated as same as IBGP peer.
-
-2001-02-19  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* bgp_route.c (bgp_redistribute_add): Initialize attr_new with
-	attr.  Call aspath_unintern when return from this function.
-
-2001-02-19  "Akihiro Mizutani" <mizutani@dml.com>
-
-	* bgpd.c (bgp_router_id_set): Reset BGP peer when router-id is
-	changed.
-
-2001-02-18  "Akihiro Mizutani" <mizutani@dml.com>
-
-	* bgp_packet.c (bgp_open_receive): When user configure holdtimer,
-	do not refrect the value to current session.
-
-2001-02-16  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* bgp_route.c (bgp_aggregate_delete): Set BGP_INFO_ATTR_CHANGE to
-	suppress route withdraw.
-
-	* bgp_damp.c (bgp_damp_init): Fix bug of flap dampening.
-
-2001-02-16  "Akihiro Mizutani" <mizutani@dml.com>
-
-	* bgp_aspath.c (aspath_make_str_count): Use ',' for separator for
-	AS_SET and AS_CONFED_SET.
-
-2001-02-15  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* bgp_route.c (bgp_process): Do not consider suppress route.
-
-	* bgp_aspath.c (aspath_aggregate_as_set_add): Reset asset when
-	aspath->data is realloced.
-
-2001-02-15  "Akihiro Mizutani" <mizutani@dml.com>
-
-	* bgp_attr.c (bgp_attr_aggregate_intern): Do not set atomic
-	aggregate when using as-set.
-
-2001-02-14  "Akihiro Mizutani" <mizutani@dml.com>
-
-	* bgpd.c (bgp_confederation_peers_unset): Set peer's local-as
-	correctly.
-
-	* bgp_route.c (bgp_update): Just ignore AS path loop for
-	confederation peer.
-
-2001-02-10  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* bgp_route.c (bgp_aggregate_set): Add as_set argument.
-	(bgp_aggregate_unset): Remove summary_only argument.
-	(aggregate_address_as_set): New commands.
-	"aggregate-address A.B.C.D/M as-set"
-	"no aggregate-address A.B.C.D/M as-set"
-
-2001-02-08  "Akihiro Mizutani" <mizutani@dml.com>
-
-	* bgp_route.c (bgp_announce_check): Do not modify nexthop when the
-	route is passed by route reflector.
-
-2001-02-08  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* bgp_route.c: "no bgp dampening" with argument.
-	(bgp_announce_check): Do not modify nexthop when the route is
-	passed by route reflector.
-
-2001-02-07  "Akihiro Mizutani" <mizutani@dml.com>
-
-	* bgpd.c (neighbor_passive): Change "neighbor NEIGHBOR remote-as
-	ASN passive" to "neighbor NEIGHBOR passive".
-	(bgp_announce_check): Check well-known community attribute even
-	when "no neighbor send-community" is set.
-
-2001-02-03  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* bgp_fsm.c (bgp_establish): Do not send keepalive at established
-	time when keepalive timer is configured as zero.
-
-2001-02-01  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* bgp_attr.c (bgp_attr_check): When peer is IBGP peer, local
-	preference is well-known attribute.
-
-2001-01-30  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* zebra-0.91 is released.
-
-	* bgp_attr.h (struct attr): Comment out DPA value.
-	(struct attr): Change refcnt type from int to unsinged long.
-
-	* bgp_attr.c (attrhash_key_make): Likewise.
-	(attrhash_cmp): Likewise.
-	(bgp_attr_dpa): Likewise.
-
-2001-01-30  "Akihiro Mizutani" <mizutani@dml.com>
-
-	* bgp_route.c (bgp_info_cmp): Make route selection completely same
-	as Cisco's.
-
-2001-01-30  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* bgp_attr.h (BGP_ATTR_FLAG_OPTIONAL): Rename old ATTR_FLAG_* to
-	BGP_ATTR_FLAG_* to clarify meenings.
-
-2001-01-30  "Akihiro Mizutani" <mizutani@dml.com>
-
-	* bgp_route.c (route_vty_out): Display argument to suppress same
-	prefix information display.
-	(route_vty_out_route): Don't display mask information for
-	classfull network.
-
-2001-01-30  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* bgp_attr.h (SET_BITMAP): Simple bitmapping macros.
-
-	* bgp_attr.c (bgp_attr_parse): Use bitmap for attribute type
-	check.
-
-2001-01-29  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* bgp_attr.c (bgp_mp_reach_parse): Enclose loggin with BGP_DEBUG.
-	(bgp_attr_parse): Comment out well-known attribute check.
-
-2001-01-28  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* bgp_route.c (bgp_static_unset): Link-local IPv6 address can't be
-	used for network advertisement.
-	(nlri_parse): When link-local IPv6 address NLRI comes from
-	remote-peer, log the information then simply ignore it.
-
-	* bgp_zebra.c (zebra_read_ipv6): Link-local IPv6 address is not
-	redistributed.
-
-	* bgp_route.c (bgp_update): Check IPv6 global nexthop
-	reachability.
-
-2001-01-26  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* bgp_route.c (bgp_update): Check nexthop points local address or
-	not.
-	(bgp_static_update_vpnv4): Set valid flag.
-
-	* bgp_attr.c (bgp_attr_parse): Duplicate attribute check.
-	(bgp_attr_parse): Well-known attribute check.
-
-	* bgp_open.c (bgp_auth_parse): Authentication is not yet supported.
-
-	* bgp_packet.c (bgp_valid_marker): Check marker is synchronized.
-
-	* bgpd.c (clear_bgp): Send NOTIFICATION Cease when SEND_CEASE is
-	defined.
-
-	* bgp_snmp.c (bgp4PathAttrTable): Fix compile error.
-
-2001-01-24  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* bgpd.c (bgp_network_import_check): New command for IGP network
-	check.
-
-2001-01-23  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* bgp_nexthop.c (bgp_scan): Run bgp_process when IGP metric is
-	changed.  Call bgp_process once for each node.
-
-2001-01-23  "Akihiro Mizutani" <mizutani@dml.com>
-
-	* bgp_route.c (bgp_info_cmp): Add IGP metric comparison.
-
-2001-01-23  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* bgp_route.c (bgp_info_cmp): Add IGP metric comparison.
-
-	* bgp_nexthop.c (bgp_nexthop_lookup): Set IGP metric for valid
-	IBGP route.
-
-2001-01-23  "Akihiro Mizutani" <mizutani@dml.com>
-
-	* bgp_route.c (show_ip_bgp_prefix_longer): Add new commands.
-	"show ip bgp A.B.C.D/M longer-prefixes"
-	"show ip bgp ipv4 (unicast|multicast) A.B.C.D/M longer-prefixes"
-	"show ipv6 bgp X:X::X:X/M longer-prefixes"
-	"show ipv6 mbgp X:X::X:X/M longer-prefixes"
-	
-2001-01-20  "Akihiro Mizutani" <mizutani@dml.com>
-
-	* bgp_route.c (show_ip_bgp_cidr_only): Add new commands.
-	"show ip bgp cidr-only"
-	"show ip bgp ipv4 (unicast|multicast) cidr-only"
-	
-2001-01-18  "Akihiro Mizutani" <mizutani@dml.com>
-
-	* bgp_route.c (bgp_update): AS path lookup check is done in
-	bgp_update() not in attr_parse().
-
-2001-01-18  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* bgp_route.c (bgp_update): Call bgp_aggregate_decrement() just
-	before bgp_attr_unintern().
-
-2001-01-17  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* bgp_route.c (bgp_update): Now intern is performed very last part
-	of the BGP packet update procedure.
-
-2001-01-17  "Akihiro Mizutani" <mizutani@dml.com>
-
-	* bgp_route.c (bgp_update): When implicit withdraw occur, reuse
-	existing bgp_info structure.
-
-2001-01-17  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* bgp_route.c (bgp_aggregate_decrement): Fix bug of aggregate
-	address matching method.
-	(bgp_update): 
-
-	* bgp_nexthop.c (bgp_nexthop_onlink): Separate EBGP nexthop onlink
-	check and IBGP nexthop route check.
-
-2001-01-16  "Akihiro Mizutani" <mizutani@dml.com>
-
-	* bgp_route.h (BGP_INFO_ATRR_CHANGED): Added for track attribute
-	change.
-
-2001-01-16  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* bgp_route.h (struct bgp_info): Remove selected flag.  Use
-	BGP_INFO_SELECTED for flags instead.
-	(struct bgp_info): Remove valid flag.  Use BGP_INFO_VALID for
-	flags instead.
-	(struct bgp_info): Add igpmetric for IBGP route nexthop IGP
-	metric.
-	(struct bgp_info_tab): Struct bgp_info_tag is integrated into
-	struct bgp_info.
-	(BGP_INFO_ATRR_CHANGED): Added for track attribute change.
-
-	* bgp_community.c (community_val_get): gcc-2.95 on
-	sparc-sun-solaris cause crush.  This function is for avoid the
-	crush.
-
-2001-01-15  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* bgp_packet.c (bgp_open_receive): Translated peer's packet_size
-	clear bug is fixed.
-
-2001-01-14  "Akihiro Mizutani" <mizutani@dml.com>
-
-	* bgp_packet.c (bgp_open_receive): Return notification with
-	supported version number.
-
-2001-01-13  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* bgpd.c (bgp_show_summary): Display AS path and community
-	entries.  Suggested by: "Matt Ranney" <mjr@ranney.com>.
-
-	* bgp_packet.c (bgp_read_packet): Fix bug of unblocking BGP socket
-	read.  When BGP packet read is partial, we must get size and type
-	from packet again.
-
-2001-01-12  "Akihiro Mizutani" <mizutani@dml.com>
-
-	* bgp_route.c (bgp_update): Do not unset BGP_INFO_HISTORY flag.
-	(bgp_update): When there is a history entry increment route count.
-	(bgp_damp_set): Check BGP_CONFIG_DAMPENING flag.
-
-	* bgp_damp.c (bgp_damp_withdraw): Set status to
-	BGP_DAMP_DISCONTINUE.
-
-2001-01-11  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* bgp_attr.c (bgp_mp_reach_parse): Fix warning code when second
-	IPv6 nexthop is not link-local addresss.
-
-2001-01-11  "Akihiro Mizutani" <mizutani@dml.com>
-
-	* bgp_damp.c (bgp_config_write_damp): Smart flap dampening
-	configuration display.
-	(bgp_damp_info_print): Display elapsed time from flap started.
-
-	* bgp_damp.h (struct bgp_damp_info): Add flap start time.
-
-	* bgpd.c (peer_create): Set last read time.
-	(bgp_show_peer): Display last read time.
-	(bgp_show_summary): Use BGP_CONFIG_DAMPENING flag to check
-	configuration.
-	
-	* bgpd.h (BGP_CONFIG_DAMPENING): Add new configuration option.
-	(struct peer): Add last read time member.
-	(BGP_VERSION_MP_4): Remove obsolete definition.
-
-2001-01-10  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* bgp_nexthop.c: Remove OLD_RIB codes.
-
-	* bgp_route.c (bgp_process): Likewise.
-
-	* zebra-0.90 is released.
-
-	* bgp_route.h (BGP_INFO_HISTORY): Remove damped member from struct
-	bgp_info.  Instead of that use BGP_INFO_DAMPED flag.
-	(struct bgp_info): Remove invalid member from struct bgp_info.
-	Instead of that use BGP_INFO_HISTORY flag.
-
-2001-01-10  "Akihiro Mizutani" <mizutani@dml.com>
-
-	* bgp_damp.c (bgp_damp_info_print): New function to display
-	dampening status.
-	(DEFAULT_HARF_LIFE): Define default value.
-	(DEFAULT_REUSE): Likewise.
-	(DEFAULT_SUPPRESS): Likewise.
-	(bgp_config_write_damp): When config value is same as default
-	value, simply display "bgp dampening" to configuration.
-
-	* bgp_damp.h (struct bgp_damp_info): Add flap member.
-
-	* bgp_route.h (struct bgp_info): Added for BGP flap dampening
-	history status.
-
-2001-01-10  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* bgp_nexthop.c (bgp_connected_add): Point-to-point connected
-	address is properly handled.
-	(bgp_connected_delete): Likewise.
-
-	* bgp_route.c (bgp_route_init): Turn off BGP Flap dampening code
-	until it works fine.
-
-2001-01-09  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* bgpd.c (bgp_show_summary): Add BGP_VERSION_MP_4 case.
-
-	* bgp_route.c (bgp_update): When this is not damped route, clear
-	ri pointer.
-
-2001-01-09  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* bgp_main.c: Add "-n" no_kernel option to not install route to
-	kernel.  Suggested by: "Matt Ranney" <mjr@ranney.com>
-
-2001-01-09  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* bgp_nexthop.c (bgp_connected_add): Revert point-to-point
-	connected route patch.  Reported by ruud@ruud.org (Ruud de Rooij)
-
-	* bgp_damp.c (bgp_config_write_damp): Add configuration display
-	function.
-
-	* bgp_route.c (bgp_info_free): Set NULL to BGP dampening
-	information when BGP info structure is freed.
-	(bgp_info_cmp): Check damped flag.
-	(bgp_announce_check): Damped route is not announced.
-
-2001-01-09  "Akihiro Mizutani" <mizutani@dml.com>
-
-	* bgpd.c (neighbor_capability_route_refresh): Change "neighbor
-	route-refresh" command to "neighbor capability route-refresh".
-	(clear_bgp_soft_in): Change soft-reconfig method.
-
-	clear ip bgp <neighbor> soft in
-        --------------------------------------
-        Try stored cache first then route-refresh
-
-        clear ip bgp <neighbor> in
-        ---------------------------------
-        Try route-refresh first then try to use stored cache
-
-2001-01-09  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* bgp_nexthop.c (bgp_connected_add): Check point-to-point
-	connected route.  Reported by ruud@ruud.org (Ruud de Rooij)
-
-2001-01-08  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* bgp_nexthop.c (bgp_nexthop_lookup): When IBGP nexthop is
-	changed, refresh it.
-
-2001-01-04  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* bgp_route.h (struct bgp_info_tag): Add as_selected to
-	bgp_info_tag.
-
-2001-01-03  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* bgp_route.h (struct bgp_info_tag): Add damped and bgp_damp_info
-	member for BGP flap dampening.
-
-	* bgp_damp.c: New file is added.
-
-	* bgp_damp.h: Likewise.
-
-2001-01-01  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* bgpd.h (BGP_VTYSH_PATH): Change "/tmp/bgpd" to "/tmp/.bgpd".
-
-2000-12-29  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* bgp_nexthop.c (zlookup_connect): Change to use UNIX domain
-	socket for zebra communication.
-
-2000-12-29  Akihiro Mizutani <mizutani@dml.com>
-
-	* bgp_route.c (bgp_process): Fix "bgp deterministic-med" process.
-
-2000-12-27  Akihiro Mizutani <mizutani@dml.com>
-
-	* bgp_route.c (bgp_process): Add "bgp deterministic-med" process.
-
-2000-12-25  Akihiro Mizutani <mizutani@dml.com>
-
-	* bgp_route.c (bgp_info_cmp): Use ntohl comparing router ID.
-
-2000-12-18  Akihiro Mizutani <mizutani@dml.com>
-
-	* bgp_route.c (bgp_info_cmp): When over three same prefix exit,
-	withdrawing best prefix perform router ID comparison.
-
-2000-12-15  Akihiro Mizutani  <mizutani@dml.com>
-
-	* bgp_route.c (bgp_info_cmp): Do not compare router ID when the
-	routes comes from EBGP peer.  When originator ID is same, take
-	shorter cluster-list route.  If cluster-list is same take smaller
-	IP address neighbor's route.
-
-	* bgpd.c (bgp_bestpath_aspath_ignore): Add "bgp bestpath as-path
-	ignore" command.  When this option is set, do not concider AS path
-	length when route selection.
-	(bgp_bestpath_compare_router_id): Add "bgp bestpath
-	compare-routerid".  When this option is set, compare router ID
-	when the routes comes from EBGP peer.
-	
-2000-12-15  Akihiro Mizutani  <mizutani@dml.com>
-
-	* bgp_route.c (bgp_info_cmp): Compare originator ID when it is
-	available.
-
-2000-12-14  Akihiro Mizutani  <mizutani@dml.com>
-
-	* bgp_packet.c (bgp_notify_receive): Disply received Notify data
-	information.
-
-2000-12-14  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* bgp_filter.c (as_filter_free): Use MTYPE_AS_FILTER_STR to make
-	it sure the memory is freed.
-
-	* bgp_route.c (route_vty_out_detail): Do not use AF_INET6 outside
-	HAVE_IPV6.
-
-2000-12-08  Akihiro Mizutani  <mizutani@dml.com>
-
-	* bgp_packet.c (bgp_notify_send_with_data): Store BGP notification
-	data part.
-
-	* bgp_network.c (bgp_accept): When BGP connection comes from
-	unconfigured IP address, close socket immediately.
-
-	* bgpd.c: Fix some display format.
-
-2000-11-29  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* bgp_packet.c (bgp_keepalive_send): Delete duplicate
-	bgp_packet_set_size () call.
-
-2000-11-28  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* bgp_packet.c (bgp_read_packet): Remove debug codes.
-
-2000-11-27  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* bgp_snmp.c (write_bgpPeerTable): Add SNMP set method routine.
-
-	* bgp_fsm.c (bgp_stop): Use fsm_change_status to change peer's
-	status.
-	(bgp_establish): Likewise.
-
-2000-11-26  Akihiro Mizutani  <mizutani@dml.com>
-
-	* bgp_open.c: Fix error messages.
-
-2000-11-25  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* bgp_fsm.c (bgp_establish): Call BGP trap when the peer is
-	established.
-	(bgp_stop): Call BGP trap when the peer is dropped.
-
-2000-11-24  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* bgp_snmp.c (bgp4PathAttrTable): Return BGP path attribute table.
-
-	* bgpd.h (struct peer): Add update_time for track last update
-	received time.
-
-	* bgp_packet.c (bgp_notify_receive): Preserv notify code and sub
-	code in any case.
-
-	* bgp_snmp.c (bgpPeerTable): Return remote router ID instead of
-	peering IP address.
-	(bgpPeerTable): Return actual BGP version number.
-
-2000-11-22  Akihiro Mizutani <mizutani@dml.com>
-
-	* bgp_debug.c (bgp_notify_print): Notify data length display bug
-	is fixed.
-
-2000-11-16  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* bgp_nexthop.c (zlookup_connect): When UNIX domain connection to
-	zebra is enabled, use the method.
-
-2000-11-16  Akihiro Mizutani <mizutani@dml.com>
-
-	* bgpd.c: Revise debug message output.
-
-2000-11-15  Akihiro Mizutani <mizutani@dml.com>
-
-	* bgp_clist.c (ip_community_list): Fix bug of string comparison.
-
-2000-11-14  Akihiro Mizutani <mizutani@dml.com>
-
-	* bgp_community.c (community_match): Fix bug of memcmp return
-	value check.
-
-2000-11-07  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* bgp_clist.c (community_list_match_exact): Add check for
-	entry->style is COMMUNITY_LIST.
-	(community_match_regexp): Apply new com_nthval macro.
-
-2000-11-07  Rick Payne <rickp@rossfell.co.uk>
-
-	* bgp_routemap.c (route_set_community_delete): "set
-	community-delete COMMUNITY-LIST" is added.
-
-	* bgp_community.c (community_del_val): Delete one community.
-	(community_delete): Delete all community included in list.
-	(community_match): Fix bug of matching community value.
-
-	* bgp_clist.c (community_entry_free): Free community regular
-	expression.
-	(community_entry_make): Default style is COMMUNITY_LIST.
-	(community_entry_lookup): Make it sure style is COMMUNITY_LIST.
-	(community_entry_regexp_lookup): New function for community
-	regular expression lookup.
-	(community_match_regexp): New function.
-	(community_delete_regexp): New function.
-	(community_list_delete_entries): New function.
-	(community_list_match): Add COMMUNITY_REGEXP treatment.
-	(community_list_match_exact): Likewise.
-	(config_write_community): Write community list according to
-	entry->style.
-
-2000-11-07  Rick Payne <rickp@rossfell.co.uk>
-
-	* bgp_attr.c (bgp_attr_aspath): AS path first AS check.
-
-	* bgp_clist.c (struct community_entry): Add style, regexp, reg to
-	community_entry.
-
-2000-11-06  Rick Payne <rickp@rossfell.co.uk>
-
-	* bgp_aspath.c (aspath_firstas_check): AS path first AS check.
-
-	* bgpd.c (bgp_enforce_first_as): New command "bgp
-	enforce-first-as".
-
-	* bgpd.h (BGP_CONFIG_ENFORCE_FIRST_AS): Add new flag.
-
-2000-11-06  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* bgp_community.c (community_compare): Copy byte stream data to
-	actual value instead of using type casting hack.
-	(community_add_val): Likewise.
-	(community_uniq_sort): Likewise.
-	(community_print): Likewise.
-	(community_print_vty): Likewise.
-	(community_include): Use memcmp to compare community value.
-
-	* bgp_community.h (com_lastval): com_lastval and com_nthval macro
-	return pointer.
-
-2000-11-06  Akihiro Mizutani <mizutani@dml.com>
-
-	* bgpd.h (struct peer): Add established and dropped member for
-	count peering up/down statistics.
-
-	* bgpd.c (bgp_show_peer): Display peering up/down statistics.
-
-	* bgp_fsm.c (bgp_establish): Increment established count.
-	(bgp_stop): Increment dropped count.
-
-	* bgp_packet.c (bgp_notify_receive): Increament notify count.
-
-2000-11-1  Akihiro Mizutani <mizutani@dml.com>
-
-	* bgp_fsm.c: Fix bug of holdtimer is not reset when bgp cleared. 
-
-2000-10-31  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* bgpd.h: Static bit flag is set by (1 << DIGIT).
-
-2000-10-24  Akihiro Mizutani <mizutani@dml.com>
-
-	* bgp_ecommunity.c (ecommunity_dup): Extended community display
-	format fix.
-
-2000-10-24  Arkadiusz Miskiewicz <misiek@pld.org.pl>
-
-	* bgp_network.c (bgp_serv_sock_addrinfo): Use gai_strerror.
-	(bgp_serv_sock_addrinfo): Check address family.
-
-2000-10-23  Jochen Friedrich <jochen@scram.de>
-
-	* bgp_snmp.c: bgp_oid and bgpd_oid are used in smux_open after it
-	is registered.  So those variables must be static.
-
-2000-10-23  Akihiro Mizutani <mizutani@dml.com>
-
-	* bgp_routemap.c (route_match_ip_next_hop): Change "match ip
-	next-hop" argument from IP address to access-list name.
-	Remove zebra-0.88 compatibility commands.
-        "match ip prefix-list WORD"
-        "match ipv6 prefix-list WORD"
-	
-2000-10-23  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* bgp_routemap.c (route_match_ipv6_next_hop_compile): Fix bug of
-	passing the pointer to the pointer of struct in6_addr instead of
-	the pointer of struct in6_addr in "match ipv6 next-hop" command.
-
-	* bgp_route.c (bgp_announce_check): Enclose IPv6 part with
-	HAVE_IPV6.
-
-2000-10-20  Jasper Wallace <jasper@ivision.co.uk>
-
-	* bgp_snmp.c (bgpPeerTable): ntohs missing bug is fixed.  Change
-	to use linklist.c.  Define COUNTER32 as ASN_COUNTER.
-
-2000-10-18  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* bgp_route.c (bgp_announce_check): attr->nexthop empty check
-	should be done by attr->nexthop.s_addr instead of strcmp.
-
-2000-10-18  Akihiro Mizutani <mizutani@dml.com>
-
-	* bgp_zebra.c (zebra_read_ipv4): Pass nexthop value to
-	bgp_redistribute_add().
-
-	* bgp_nexthop.c (bgp_multiaccess_check_v4): New function for
-	checking IPv4 multiaccess nexthop.
-
-	* bgp_route.c (bgp_announce_check): In case of the nexthop is
-	reachable on multiaccess media, do not change nexthop.
-	(bgp_redistribute_add): Set nexthop when the value is passed.
-
-2000-10-17  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* bgp_fsm.c (bgp_timer_set): If peer is passive mode, do not set
-	connect timer.
-	(bgp_start): If the peer is passive mode, force to move to Active
-	mode.
-
-2000-10-17  Horms <horms@vergenet.net>
-
-	* bgp_debug.c (debug_bgp_fsm): Fix typo.
-
-2000-10-17  Akihiro Mizutani <mizutani@dml.com>
-
-	* bgp_route.c: "show ipv6 bgp" route display improvement.
-
-2000-10-03  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* bgp_route.c (neighbor_routes): Allocate sockunion for callback
-	function.
-	(bgp_show_neighbor_route): Remove static declaration for union
-	sockunion.
-
-	* bgpd.c (peer_update_source_set): Clean previously allocated
-	memory before allocate new one.
-
-2000-10-03  Akihiro Mizutani <mizutani@dml.com>
-
-	* bgp_route.c (neighbor_routes): Add show neighbor's routes
-	command.
-	"show ip bgp neighbors (A.B.C.D|X:X::X:X) routes"
-	"show ip bgp ipv4 (unicast|multicast) neighbors (A.B.C.D|X:X::X:X) routes"
-	"show ipv6 bgp neighbors (A.B.C.D|X:X::X:X) routes"
-	"show ipv6 mbgp neighbors (A.B.C.D|X:X::X:X) routes"
-
-2000-10-02  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* zebra-0.89 is released.
-
-2000-10-02  Akihiro Mizutani <mizutani@dml.com>
-
-	* bgpd.c: "bgp deterministic-med" command is added.
-
-2000-10-02  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* bgp_nexthop.c (bgp_connected_add): Apply mask for connected
-	route addition and deletion.
-
-2000-09-29  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* bgp_aspath.c (aspath_cmp_left): Skip confederation AS segment
-	when comparing leftmost AS number.
-
-2000-09-29  Akihiro Mizutani <mizutani@dml.com>
-
-	* bgpd.c (peer_route_reflector): Route reflector can be set for
-	IBGP peer.
-	(bgp_distribute_set): Fix bug of string check for (in|out).
-	(bgp_show_summary): Display total neighbor count.
-
-2000-09-28  Akihiro Mizutani <mizutani@dml.com>
-
-	* bgp_attr.c (bgp_packet_attribute): Only add cluster_list and
-	originator for clinet to client routes.
-	(bgp_packet_attribute): Add new cluster_list to the beginning of
-	existing cluster_list.
-	(bgp_packet_attribute): Fix bug of originator is rewritten even
-	when originator is already set.
-
-2000-09-27  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* bgpd.c (bgp_client_to_client_reflection): Add new command.
-	"no bgp client-to-client reflection"
-	"bgp client-to-client reflection"
-
-	* bgpd.h (BGP_CONFIG_NO_CLIENT_TO_CLIENT): Add new definition.
-
-2000-09-26  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* bgp_packet.c (bgp_read): Make BGP packet read to non-blocking
-	read.
-	(bgp_read_packet): Likewise.
-	(bgp_read_packet): When errono is EAGAIN, try to read it again.
-
-	* bgp_fsm.c (bgp_stop): Clear packet size and read buffer.
-
-2000-09-26  Akihiro Mizutani <mizutani@dml.com>
-
-	* bgp_routemap.c: Configuration of prefix-list match is shown as
-	"match ip address prefix-list <WORD>".  Old configuration "match
-	ip prefix-list <WORD>" is left for compatibilitty.
-
-2000-09-25  Akihiro Mizutani <mizutani@dml.com>
-
-	* bgpd.h (BGP_CONFIG_MED_MISSING_AS_WORST): Changed from
-	BGP_CONFIG_MISSING_AS_WORST.
-
-	* bgpd.c (bgp_bestpath_med): Change missing-as-worst syntax.
-	Old "bgp bestpath missing-as-worst"
-	New "bgp bestpath med missing-as-worst"
-
-2000-09-24  Akihiro Mizutani <mizutani@dml.com>
-
-	* bgp_route.c: Compare MED properly in case of CONFED-IBGP.
-
-2000-09-21  steve@Watt.COM (Steve Watt)
-
-	* bgp_debug.h: Do not declare debug variables conf_bgp_debug_* and
-	term_bgp_debug_*.
-
-	* bgp_debug.c: Declare variables here.
-
-2000-09-21  Akihiro Mizutani <mizutani@dml.com>
-
-	* bgpd.c: MBGP soft-reconfiguration command is added.
-	clear ip bgp x.x.x.x ipv4 (unicast|multicast) in
-	clear ip bgp x.x.x.x ipv4 (unicast|multicast) out
-	clear ip bgp x.x.x.x ipv4 (unicast|multicast) soft
-	clear ip bgp <1-65535> ipv4 (unicast|multicast) in
-	clear ip bgp <1-65535> ipv4 (unicast|multicast) out
-	clear ip bgp <1-65535> ipv4 (unicast|multicast) soft
-	clear ip bgp * ipv4 (unicast|multicast) in
-	clear ip bgp * ipv4 (unicast|multicast) out
-	clear ip bgp * ipv4 (unicast|multicast) soft
-
-	Change "clear ip bgp vpnv4 x.x.x.x soft" command to
-	"clear ip bgp x.x.x.x vpnv4 unicast soft".
-
-	"bgp bestpath med confed" command is added.
-	
-	* bgpd.h (BGP_CONFIG_MED_CONFED): Add New definition.
-
-2000-09-18  Rick Payne <rickp@rossfell.co.uk>
-
-	* bgpd.c (bgp_show_peer): Fix misplaced #endif.
-
-2000-09-12  Akihiro Mizutani <mizutani@dml.com>
-
-	* bgpd.c (bgp_default_local_preference): Add "bgp default
-	local-preference" command.
-
-	* bgp_nexthop.c (no_bgp_scan_time): Add "no bgp scan-time"
-	command.
-
-2000-09-10  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* bgp_zebra.c (bgp_zebra_announce): BGP confederation peer's routes
-	are passed to zebra like IBGP route.
-
-2000-09-10  Akihiro Mizutani <mizutani@dml.com>
-
-	* bgpd.c (bgp_config_write_peer): Make it consistent passive
-	configuration.
-
-	* bgp_route.c: Community match command is added.
-	"show ip bgp community <val>"
-	"show ip bgp community <val> exact-match"
-
-2000-09-08  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* bgp_nexthop.c (bgp_nexthop_lookup): ebgp-multihop routes are
-	treated as IBGP routes.
-
-2000-09-08  Akihiro Mizutani <mizutani@dml.com>
-
-	* bgp_route.c (bgp_show_route): When local-AS community route is
-	selected, display "not advertised outside local AS" to "show ip
-	route A.B.C.D" output.
-	(show_ip_bgp_ipv4_filter_list): Add below four commands.
-	"show ip bgp ipv4 (unicast|multicast) filter-list WORD"
-	"show ip bgp ipv4 (unicast|multicast) community"
-	"show ip bgp ipv4 (unicast|multicast) community-list WORD"
-	"show ip bgp ipv4 (unicast|multicast) community-list WORD exact-match"
-	
-	* bgp_clist.c (community_list_match_exact): Community exact match
-	function.
-
-2000-09-07  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* bgp_route.c (bgp_update): Add peer's ttl check.
-
-	* bgpd.h (struct peer): Structure member refresh is renamed to
-	refresh_adv.
-
-	* bgpd.c (clear_bgp_soft_in): Check PEER_FLAG_ROUTE_REFRESH flag
-	when soft reconfiguration is performed.
-
-	* bgp_zebra.c (bgp_zebra_announce): When the peer is EBGP and
-	ebgp-multiphop is set, set ZEBRA_FLAG_INTERNAL for nexthop lookup.
-
-	* bgp_route.h (struct bgp_info_tag): Add valid flag.
-
-2000-08-25  Akihiro Mizutani <mizutani@dml.com>
-
-	* bgpd.c: Add AS base BGP soft reconfiguration.
-
-	* bgp_route.c: When no-advertise or no-export route is selected,
-	"show ip bgp" display "not advertised to EBGP peer" or "not
-	advertised to any peer" message.
-	
-2000-08-17  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* zebra-0.88 is released.
-
-	* bgp_dump.c (dump_bgp_routes): Change "dump bgp routes" to "dump
-	bgp route-mrt" to support MRT specific dump format.
-
-	* bgpd.c (bgp_init): "clear ip bgp vpnv4 soft {in,out}" command is
-	added.
-
-	* bgp_route.c (bgp_update): Currently nexthop check is only works
-	for IPv4.
-
-2000-08-17  Akihiro Mizutani <mizutani@dml.com>
-
-	* bgpd. (clear_ip_bgp_all_soft): Add "clear ip bgp * soft" for
-	both inbound and outbound soft reconfiguration.
-
-2000-08-17  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* bgpd.c (clear_ip_bgp_peer_soft_out): Add soft-reconfiguration
-	outbound.
-	(peer_new): Set route-refresh flag.
-
-2000-08-16  Akihiro Mizutani <mizutani@dml.com>
-
-	* bgpd.c: "no bgp router-id A.B.C.D" alias is added.  "no bgp
-	cluster-id A.B.C.D" alias is added.  " bgp cluster-id
-	<1-4294967295>" alias is added.  "clear ip bgp * soft in" command
-	is added.  "clear ip bgp A.B.C.D in" alias is added.  "clear ip
-	bgp * in" alias is added.
-
-2000-08-16  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* bgp_route.c (bgp_update): Add soft_reconfig flag.  When the flag
-	is set do not install the route into Adj-RIBs-In.
-	(bgp_update): Perform implicit withdraw before filtering of the
-	route.
-
-	* bgp_packet.c (bgp_read): draft-ietf-idr-bgp-route-refresh-01.txt
-	capability code and BGP message can be accepted.
-
-	* bgp_open.c (bgp_capability_parse): Likewise.
-
-	* bgp_route.c (bgp_refresh_table): New function for route refresh.
-	(bgp_refresh_rib): Likewise.
-
-	* bgpd.c (bgp_show_peer): Display route refresh status.
-
-	* bgp_route.c (bgp_aggregate_add): Add check for the route
-	validness.
-	(bgp_aggregate_delete): Likewise.
-
-2000-08-15  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* bgp_nexthop.c (bgp_scan): Care for aggregate route when the
-	route become inaccessible.
-
-2000-08-15  Akihiro Mizutani <mizutani@dml.com>
-
-	* bgp_route.c (show_ip_bgp_prefix): "show ip bgp A.B.C.D/M"
-	command is added.
-
-2000-08-15  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* bgp_zebra.c (bgp_interface_up): Register connected route.
-	(bgp_interface_down): Unregister connected route.
-
-2000-08-14  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* bgp_route.h (struct bgp_info): Add distance to the structure.
-
-	* bgp_route.c (bgp_aggregate_increment): Aggregate route only
-	match to smaller prefixlen route not match same prefixlen route.
-	(bgp_aggregate_decrement): Likewise.
-	(bgp_aggregate_add): Likewise.
-	(bgp_aggregate_delete): Likewise.
-	(bgp_network_backdoor): Add backdoor network configuration.
-
-	* bgpd.h (struct bgp ): Add distance_{ebgp,ibgp,local} for store
-	configuration distance value.
-
-	* bgp_route.c (bgp_update): Filter EBGP route which has non
-	connected nexthop.
-
-	* bgp_attr.c (bgp_attr_aggregate_intern): New function for
-	aggregate route.  Set origin to IGP.  Set atomic aggregate flag.
-	Set aggregator AS and address.
-	(bgp_attr_aggregate_intern): Check BGP_CONFIG_CONFEDERATION when
-	filling aggregator_as.
-
-	* bgp_route.c (bgp_process): Delete suppress check for install
-	suppressed route into local routing table.
-	(bgp_aggregate_increment): Use bgp_attr_aggregate_intern() instead
-	of bgp_attr_default_intern ().
-	(bgp_aggregate_add): Likewise.
-
-	* bgpd.c (bgp_get): Call bgp_if_update_all() after BGP instance is
-	created.  This is for avoid 0.0.0.0 router-id.
-
-2000-08-13  Akihiro Mizutani <mizutani@dml.com>
-
-	* bgp_route.c (route_vty_out_detail): Display "valid" when the
-	route is valied.  Display "aggregated" when the route is
-	aggregated.  "Advertisements suppressed by an aggregate" is
-	displayed when the route is suppressed.
-	(bgp_info_cmp): Prefer EBGP than Confed-EBGP.
-
-2000-08-10  Akihiro Mizutani <mizutani@dml.com>
-
-	* bgp_route.c (route_vty_out_detail): Display format change.
-
-2000-08-06  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* bgp_route.c (bgp_update): Only AFI_IP nexthop check is enabled.
-
-	* bgpd.c (bgp_delete): Delete static route before delete peer
-	configuration.
-
-2000-08-02  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* bgpd.c: Include bgpd/bgp_nexthop.h.
-
-2000-07-31  Akihiro Mizutani <mizutani@dml.com>
-
-	* bgpd.c (bgp_show_summary): "show ip bgp summary" shows own BGP
-	identifier.  And status is changed like below.
-
-	State/Pref   -> State/PfxRcd
-	Shutdown     -> Idle (Admin)
-	PrefixOvflw  -> Idle (PfxCt)
-
-	* bgp_route.c (route_vty_out): Show internal route as "i".
-
-2000-07-13  Jim Bowen <jimb@zereau.net>
-
-	* bgp_snmp.c: Add BGP peer MIB implementation.
-
-2000-07-12  Akihiro Mizutani <mizutani@dml.com>
-
-	* bgpd.c (bgp_show_peer): Fix typo.
-
-2000-07-11  Akihiro Mizutani <mizutani@dml.com>
-
-	* bgp_routemap.c: Add commands for deleting set without argument.
-
-2000-07-03  Akihiro Mizutani <mizutani@dml.com>
-
-	* bgp_zebra.c: Fix redistribute help strings.
-
-2000-07-01  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* bgp_route.c (bgp_show): When bgpd works as vtysh server send all
-	output to vty at once.
-
-2000-06-13  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* bgp_mplsvpn.c (no_vpnv4_network): "no network A.B.C.D/M rd WORD
-	tag WORD" command is added.
-
-	* bgp_ecommunity.c (ecommunity_vty_out): New function added.
-
-2000-06-12  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* bgp_route.c (bgp_show): Fix total number of prefix count bug.
-
-	* bgpd.c (bgp_show_peer): Display VPNv4 unicast configuration and
-	negotiation result in "show ip bgp neighbors".
-
-2000-06-12  Akihiro Mizutani <mizutani@dml.com>
-
-	* bgpd.c: Fix help strings.
-	
-	* bgpd.h: Likewise.
-	
-2000-06-11  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* bgp_route.c (bgp_aggregate_unset): Fix bug of checking rn->info
-	instead of rn.  Reported by Akihiro Mizutani <mizutani@dml.com>.
-
-	* bgp_mplsvpn.c (vpnv4_network): For testing purpose, "network
-	A.B.C.D rd RD" is added to address-family vpnv4 unicast node.
-
-	* bgp_route.c (bgp_static_set): Set safi to p.safi.
-
-2000-06-10  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* bgp_route.c (bgp_show_prefix_list): Change to use bgp_show().
-	(bgp_show_regexp): Change to use bgp_show().
-	(show_adj_route): Change to display header.
-
-	* bgpd.c (clear_bgp): Set peer->v_start to default value when peer
-	is cleared manually.
-
-	* bgp_route.c (bgp_show_route): New function which display
-	specific BGP route.  Divided from bgp_show().
-	(bgp_static_delete): Delete all static route.
-
-2000-06-09  NOGUCHI Kay <kay@v6.access.co.jp>
-
-	* bgp_route.c (show_ipv6_bgp): "show ipv6 bgp" is broken with
-	invalid privious fix.  Now show_ipv6_bgp and show_ipv6_bgp_route
-	take care of "show ipv6 bgp [X:X::X:X]".  Same change for "show ip
-	mbgp" and "show ipv6 mbgp".
-
-2000-06-07  Akihiro Mizutani <mizutani@dml.com>
-
-	* bgp_route.c: Fix help strings and command arguments.
-
-2000-06-06  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* bgp_ecommunity.c: Include prefix.h
-
-2000-06-05  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* bgp_route.h (struct bgp_info_tag): New structure to hold tag
-	value.
-
-	* bgp_route.c (bgp_adj_set): table NULL check is added.
-	(bgp_adj_unset): Likewise.
-	(bgp_adj_lookup): Likewise.
-	(bgp_adj_clear): Likewise.
-	(route_vty_out): Add SAFI check for nexthop display.
-	(bgp_withdraw): Add SAFI check for withdraw route.
-
-	* Remove all #ifdef MPLS_VPN then include it as default.
-
-	* bgpd.c: Temporary disable peer-group command until the
-	implementation is completed.
-
-	* bgp_routemap.c (bgp_route_map_init): Install
-	route_metric_match_cmd.
-	(route_match_metric_compile): MED value compile using strtoul.
-
-2000-06-05  Akihiro Mizutani <mizutani@dml.com>
-
-	* bgp_filter.c: Fix help strings.  Change REGEXP to LINE.  Change
-	NAME to WORD.
-
-	* Change command argument to more comprehensive.
-
-	METRIC         -> <0-4294967295>
-	WEIGHT         -> <0-4294967295>
-	LOCAL_PREF     -> <0-4294967295>
-	IP_ADDR        -> A.B.C.D
-	AS             -> <1-65535>
-	AS-PATH-NAME   -> WORD
-	ACCESS_LIST    -> WORD
-	PREFIX_LIST    -> WORD
-	COMMUNITY      -> AA:NN
-	EXT_COMMUNITY  -> ASN:nn_or_IP-address:nn
-	IPv6_ADDR      -> X:X::X:X
-
-	* bgp_clist.c: Fix help strings.
-
-2000-06-03  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* bgpd.c (peer_active): Add new function for check the peer is
-	active or not.
-	(neighbor_activate): New command "neighbor PEER activate" and "no
-	neighbor PEER activate" are added.
-
-	* bgp_packet.c: Include bgpd/bgp_mplsvpn.h.
-
-2000-06-02  Akihiro Mizutani <mizutani@dml.com>
-
-	* bgp_clist.c: Fix commuity-list help strings.
-
-	* bgp_routemap.c: Fix "set community" help strings.  Add #define
-	SET_STR.  Use (unicast|multicast) argument for "set nlri" command.
-	
-2000-06-01  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* bgp_routemap.c (route_set_community_none_cmd): "set community
-	none" command is added to route-map.
-
-2000-06-01  Akihiro Mizutani <mizutani@dml.com>
-
-	* bgp_debug.c: Change "show debug" to "show debugging".  Now "show
-	debugging" is not used in VIEW_NODE.
-
-2000-05-30  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* bgp_fsm.c (bgp_timer_set): Add check for shutdown flag.  This
-	fix unconditional BGP connection.
-
-	* bgpd.c (peer_shutdown): Replace peer_shutdown() with
-	peer_change_flag_with_reset().
-
-2000-05-26  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* bgpd.c (no_bgp_default_ipv4_unicast): Add "no bgp default
-	ipv4-unicast" command.
-
-	* bgpd.h (BGP_CONFIG_NO_DEFAULT_IPV4): Add new definition.
-
-	* bgp_filter.c (as_list_delete): Free all AS filter.
-
-	* bgp_clist.c (community_list_delete): Free all community entry.
-
-	* bgp_filter.c (no_ip_as_path_all): New DEFUN for "no ip as-path
-	access-list NAME".
-
-	* bgp_clist.c (no_ip_community_list_all): New DEFUN for "no ip
-	community-list NAME".
-
-2000-05-19  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* bgp_route.c (ipv6_mbgp_neighbor_routes): Change "show ip bgp PEER
-	routes" to "show ip bgp PEER received-routes"
-
-2000-05-14  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* bgp_ecommunity.c (ecommunity_parse): New file for Extended
-	Communities attribute.
-	* bgp_ecommunity.h: Likewise.
-
-2000-05-11  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* bgp_mplsvpn.h: New file for MPLS-VPN.
-	* bgp_mplsvpn.c: Likewise.
-
-	* bgpd.c (bgp_delete): Fix bug of "no router bgp" crush.
-
-2000-05-10  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* bgpd.c (bgp_bestpath_missing_as_worst): Add "bgp bestpath
-	missing-as-worst".
-
-2000-05-08  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* bgp_routemap.c (match_community): Clarify help of "match
-	community".
-
-2000-05-02  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* bgp_aspath.c (aspath_cmp_left): Remove debug code.
-
-2000-04-27  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* bgp_route.c (bgp_info_cmp): Compare MED only both routes comes
-	from same neighboring AS.
-
-	* bgp_aspath.c (aspath_cmp_left): Compare leftmost AS value.
-
-	* bgp_route.c (bgp_info_cmp): Fix misused htonl() to ntohl().
-
-2000-04-26  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* bgp_route.c (bgp_output_filter): When distribute-list's
-	corresponding access-list does not exist, filter all routes.
-	(bgp_input_filter): Likewise.
-
-2000-04-19  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* bgp_attr.c (bgp_packet_attribute): Propagate MED to IBGP peer.
-
-	* bgp_route.c (bgp_info_cmp): Add evaluation of local preference.
-
-2000-04-18  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* bgpd.c (bgp_distribute_update): Add struct access_list *
-	argument.
-
-2000-04-17  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* bgp_clist.c (community_list_dup_check): Add duplicate insertion
-	check.
-
-	* bgp_filter.c (as_list_dup_check): Add duplicate insertion check.
-
-	* bgp_route.c (bgp_show): Fix undeclared write variable.
-
-2000-04-13  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* bgp_routemap.c: Add "match ip address prefix-list".
-
-2000-03-29  Rick Payne <rickp@rossfell.co.uk>
-
-	* bgp_aspath.c (aspath_strip_confed): Fix realloc problem.
-
-2000-03-16  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* bgp_fsm.c (bgp_reconnect): Connect retry timer is expired when
-	the peer status is Connect.
-
-2000-03-03  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* Fix bug of rewritten originator-id.
-
-2000-01-27  Rick Payne <rickp@rossfell.co.uk>
-
-	* bgp_aspath.c (aspath_delimiter_char): New function.  Instead of
-	directly referencing array, search proper AS path delimiter.
-	(aspath_strip_confed): Strip the confederation stuff from the
-	front of an AS path.
-	(aspath_add_left_confed): New function for adding specified AS to
-	the leftmost AS_CONFED_SEQUENCE.
-
-	* bgp_aspath.h: Change AS_CONFED_SEQUENCE and AS_CONFED_SET value
-	to Cisco compatible.
-
-	* bgpd.c (bgp_confederation_id_set): Confederation configuration.
-	(bgp_confederation_id_unset): Likewise.
-	(bgp_confederation_peers_check): Likewise.
-	(bgp_confederation_peers_add): Likewise.
-	(bgp_confederation_peers_remove): Likewise.
-	(bgp_confederation_peers_set): Likewise.
-	(bgp_confederation_peers_unset): Likewise.
-	(bgp_confederation_peers_print): Likewise.
-	
-2000-01-16  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* bgpd.c: Introduce peer_change_flag_with_reset() fucntion.
-
-2000-01-17  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* bgp_open.c (bgp_open_option_parse): When there is no common
-	capability send Unsupported Capability error to the peer.
-
-2000-01-14  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* bgp_open.c (bgp_capability_mp): Fix bug of mis-negotiation about
-	IPv6 unicast.
-
-	* bgpd.c (bgp_init): Add "soft-reconfiguration inbound" command.
-	
-2000-01-12  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* bgpd.c (neighbor_strict_capability): Add
-	"strict-capability-match" command.
-
-	* bgp_zebra.c (bgp_if_update): Ignore NET127 determining
-	router-id.
-
-	* bgpd.c (peer_override_capability): Add "override-capability"
-	command.
-
-1999-12-16  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* bgp_packet.c (bgp_write): Change status to Idle and set timer
-	after write failed.
-
-1999-12-14  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* bgp_zebra.c (bgp_zebra_announce): Add info->selected check.
-
-1999-12-12  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* bgp_route.c (nlri_unfeasible): nlri_unfeasible() is merged with
-	nlri_parse().
-
-1999-12-10  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* bgp_fsm.h (BGP_EVENT_DELETE): Macro added.
-
-	* bgp_fsm.c (bgp_stop): Clear all event threads of the peer when
-	the peer is cleared.
-
-	* bgp_zebra.c (bgp_nexthop_set): Clear interface index of
-	link-local address.  This is KAME specific problem.
-
-1999-12-06  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* bgp_attr.c (bgp_mp_reach_parse): Comment out previous code for a
-	while.  We don't completely detect the link is shared or not at
-	this moment.
-
-	* bgp_packet.c (bgp_notify_send): Make shortcut call of
-	bgp_write() and bgp_stop().
-
-	* bgp_attr.c (bgp_mp_reach_parse): Fix serious bug when getting
-	global and link-local address.
-
-1999-12-05  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* bgpd.c (no_neighbor_port): New command added.
-	(peer_new): Set send_community.
-
-1999-12-04  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* bgpd.c (show_ip_bgp_summary): Changed to use bgp_show_summary().
-	(show_ip_mbgp_summary): Likewise.
-	(show_ipv6_bgp_summary): Likewise.
-	(show_ipv6_mbgp_summary): Add new command.
-	(peer_free): Free peer->host.
-	(peer_lookup_by_su): Delete function.
-	(ipv6_bgp_neighbor): Changed to use peer_remote_as().
-	(sockunion_vty_out): Function deleted.
-	(vty_clear_bgp): Use afi instead of family.
-	Delete old list bgp_list.  Use struct newlist *bgplist.
-	(peer_lookup_by_host): Function deleted.
-
-1999-12-03  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* bgpd.h (struct peer_group): New structure added.
-	(struct peer_conf): New structure added.
-	(struct	peer): Change all prefix_count to unsigned long.
-	
-	* bgpd.c: Reconstruct all of VTY commands reflect internal
-	structure change.
-	Use bgplist instead of bgp_list.
-	Use peerlist intstead of peer_list.
-
-	* bgp_attr.c (bgp_mp_reach_parse): If nlri_parse return -1, stop
-	parsing then return immediately.
-
-	* bgp_route.c (nlri_parse): When NLRI parse error occured, return
-	-1.
-	(nlri_process): Use pcount_v4_{unicast,multicast}.
-	(nlri_delete): Likewise.
-
-1999-11-25  Robert Olsson <Robert.Olsson@data.slu.se>
-
-	* bgp_routemap.c (route_match_nlri): `match nlri
-	unicast|multicast' and `set nlri unicast|multicast' command are
-	added.
-
-1999-11-22  Robert Olsson <Robert.Olsson@data.slu.se>
-
-	* bgpd.c: Add translate-update support.
-
-	* bgpd.h (TRANSLATE_UPDATE_OFF): Add translate-update definition.
-
-1999-11-19  Robert.Olsson@data.slu.se
-
-	* bgp_route.c (bgp_peer_delete): Add MBGP peer clear codes.
-
-1999-11-14  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* bgp_open.c (bgp_capability_mp): Temporary comment out
-	SAFI_UNICAST_MULTICAST handling until we know the meanings.
-
-1999-11-13  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* bgp_btoa.c: New file added.
-
-1999-11-12  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* bgpd.h (struct peer): Add dont_capability flag.
-	(struct peer): Add override_capability flag.
-
-	* bgpd.c (neighbor_dont_capability_negotiation): `neighbor PEER
-	dont-capability-negotiation' added.
-
-1999-11-12  Bill Sommerfeld <sommerfeld@orchard.arlington.ma.us>
-
-	* bgp_attr.c (bgp_mp_reach_parse): Ignore link-local addresses
-	attribute from non-shared-network peers.
-
-1999-11-10  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* bgp_snmp.c: New file added.
-
-	* BGP4-MIB.txt: Updated to the latest Internet-Draft
-	draft-ietf-idr-bgp4-mib-04.txt.
-
-1999-11-09  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* bgp_route.c (bgp_route_init): Add `show ipv6 bgp prefix-list'.
-
-	* bgp_attr.c (bgp_mp_unreach_parse): Enclose safi setup with
-	#ifdef HAVE_MBGPV4.
-
-1999-11-08  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* bgp_dump.c (no_dump_bgp_all): Add [PATH] and [INTERVAL] to no
-	dump bgp commands.
-	(config_write_bgp_dump): Write interval value to the
-	configuration.
-
-1999-11-07  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* bgp_zebra.c: Redistribute route-map support is added.
-
-	* bgp_zebra.h: New file added.
-
-1999-11-04  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* bgp_dump.c: BGP packet dump routine compatible with MRT.
-	* bgp_dump.h: BGP packet dump routine compatible with MRT.
-
-	* bgp_debug.c: Renamed from bgp_dump.c
-	* bgp_debug.h: Renamed from bgp_dump.h
-
-1999-10-27  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* BGP4-MIB.txt: New file added.  Edited version of RFC1657.
-
-1999-10-25  Bill Sommerfeld <sommerfeld@orchard.arlington.ma.us>
-
-	* bgp_route.c (bgp_announce): If we're not on a shared network
-	with the peer and we don't have a link-local next hop, but the
-	inbound next-hop has a link-local address, don't readvertise it to
-	our peer.
-
-1999-10-25  Marc Boucher <marc@mbsi.ca>
-
-	* bgp_zebra.c: Add redistribute kernel command.
-
-1999-10-25  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* bgp_route.c (bgp_reset): New function added.
-
-	* bgpd.conf.sample2: Add IPv6 configuration sample.
-
-1999-10-24  Bill Sommerfeld <sommerfeld@orchard.arlington.ma.us>
-
-	* bgp_route.c (ipv6_aggregate_address): Function added.
-
-1999-10-21  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* bgp_packet.c (bgp_update): Unintern aspath, community, cluster
-	list after parsing BGP update packet.
-
-	* bgp_attr.c (bgp_attr_aspath): Intern parsed aspath.
-	(bgp_attr_community): Intern parsed community.
-	(bgp_attr_cluster_list): Intern parsed cluster list.
-
-	* bgp_routemap.c: Add `set community-additive' command.
-
-1999-10-21  Alexandr D. Kanevskiy <kad@blackcatlinux.com>
-
-	* bgp_routemap.c (route_set_local_pref): Fix bug of setting
-	attribute flag.
-
-1999-10-21  Bill Sommerfeld <sommerfeld@orchard.arlington.ma.us>
-
-	* bgp_route.c (bgp_announce): Add check of IPv6 default route
-	announcement.
-
-	* bgp_packet.c (bgp_update_send): Add BGP announcement logging.
-
-1999-10-15  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* `show ip[v6] bgp PREFIX' show uptime of the route.
-
-1999-10-04  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* bgpd.c (bgp_filter_set): Delete PEER_FAMILY_{IPV4,IPV6}. instead
-	of that use AF_INET and AF_INET6 directly.
-	(vty_clear_bgp): Add new function to support various clear ip bgp
-	method.
-
-1999-10-04  Lars Fenneberg <lf@elemental.net>
-
-	* bgpd.c (clear_ip_bgp): Add `clear ip bgp ASN'.
-
-1999-10-03  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* bgp_routemap.c: Add `match ip prefix-list' and `match ipv6
-	prefix-list'.
-
-1999-09-28  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* bgpd.c (bgp_collision_detect): Add BGP collision detection
-	function.
-
-1999-09-26  Blake Meike <bmeike@adero.com>
-
-	* bgpd.c (neighbor_port): New command `neighbor PEER port PORT' is
-	added.
-
-1999-08-24  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* bgpd.c (no_neighbor_timers_keepalive): Change MIN to min.  Add
-	min() macro.
-
-1999-08-19  Rick Payne <rickp@rossfell.co.uk>
-
-	* bgp_packet.c (bgp_open): BGP holdtimer bug is fixed.  Make BGP
-	keepalive timer configurable.
-
-1999-08-15  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* bgp_zebra.c (bgp_redistribute_set): Fix redistribute bug.
-
-1999-08-13  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* bgpd.c (bgp_peer_display): show ip bgp neighbors PEER only list
-	the peer not all of them.
-
-1999-08-11  Rick Payne <rickp@rossfell.co.uk>
-
-	* bgp_route.c (bgp_announce): Remove MED if its an EBGP peer -
-	will get overwritten by route-maps.
-
-1999-08-08  Rick Payne <rickp@rossfell.co.uk>
-
-	* bgp_routemap.c: Multi protocol route-map modification.
-
-1999-08-01  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* bgp_route.c: Set network statement route's origin attribute as
-	igp.
-
-	* bgp_zebra.c: Set redistribute route's origin attribute as
-	incomplete.
-
-	* bgp_route.c (bgp_info_cmp): Add attribute existance check,
-	origin attribute check, BGP peer type check.
-
-1999-07-30  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* bgp_route.c (bgp_peer_delete): Reselect of IPv6 route.
-
-1999-07-29  Rick Payne <rickp@rossfell.co.uk>
-
-	* Changed route-maps to behave in a more cisco-like fashion
-
-1999-07-27  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* bgp_fsm.c (bgp_stop): Very serious bug of bgp_stop () is fixed.
-	When multiple route to the same destination exist, bgpd try to
-	announce the information to stopped peer.  Then add orphan write
-	thread is added.  This cause many strange behavior of bgpd.
-	Reported by Georg Hitsch <georg@atnet.at>.
-
-1999-07-23  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* bgpd.c: Change peer's A.B.C.D to PEER.
-
-1999-07-22  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* bgp_route.c (bgp_announce): Add hack for link-local nexthop.
-
-	* bgp_zebra.c (bgp_zebra_announce): Fill in nexthop address from
-	local address.
-
-1999-07-21  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* bgp_packet.c (bgp_open): Holdtime fetch bug is fixed.  Reported
-	by Yuji SEKIYA <sekiya@sfc.wide.ad.jp>.
-
-1999-07-15  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* bgp_fsm.c (fsm_holdtime): Don't close file descriptor in
-	fsm_holdtime ().
-
-1999-07-11  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* bgp_routemap.c: Add `set atomic-aggregate' command.
-
-1999-07-06  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* bgp_routemap.c (route_set_ip_nexthop_cmd): Change "ip nexthop"
-	to "ip next-hop".
-	
-1999-07-02  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* bgp_route.c (show_ipv6_bgp_regexp): `show ipv6 bgp regexp'
-	added.
-
-1999-07-01  Rick Payne <rickp@rossfell.co.uk>
-
-	* bgp_zebra.c (zebra_init): Install standard commands to
-	ZEBRA_NODE.
-
-1999-06-28  Rick Payne <rickp@rossfell.co.uk>
-
-	* bgpd.c (bgp_delete): bgp peer deletion bug is fixed.
-
-1999-06-25  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* bgpd.c: Add neighbor update-source command as ALIAS to
-	neighbor_interface.
-
-1999-06-19  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* bgp_attr.c (bgp_packet_attribute): Send community attribute when
-	send_community flag is set.
-
-	* bgpd.h (struct peer): Add send_community flag.
-
-1999-06-12  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* bgpd.c (router_bgp): router bgp's argument changed from AS_NO to
-	<1-65535>.
-
-1999-06-08  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* bgp_route.h (struct bgp_info): Add subtype for BGP route type.
-
-1999-06-07  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* bgp_community.c (community_merge): Function added.
-
-1999-06-04  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* bgp_clist.c: New file.
-	* bgp_clist.h: New file.
-
-	* bgp_community.h (COMMUNITY_LOCAL_AS): Added for Cisco
-	compatibility.
-	(COMMUNITY_NO_ADVERTISE): Fix typo.
-
-1999-05-30  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* bgp_routemap.c: Add `set weight WEIGHT' command.
-
-	* bgpd.c: Remove all_digit_check function.  Instead of that use
-	all_digit function in lib/prefix.c.
-
-	* bgp_routemap.c (bgp_route_map_init): Install
-	no_set_ipv6_nexthop_global_cmd and no_set_ipv6_nexthop_local_cmd
-	element to the RMAP_NODE.
-
-1999-05-28  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* bgp_aspath.c (aspath_make_str): Declare aspath_delimiter_char
-	inside aspath_make_str function.
-	(aspath_prepend): New function is added for AS path prepend.
-	(aspath_make_str_count): Renamed from aspath_make_str.  AS path
-	count is set to the structure.
-	(aspath_merge): New function.
-
-1999-05-22  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* bgp_zebra.c (redistribute_bgp): Add new DEFUN.
-	(no_redistribute_bgp): Likewise.
-	(router_zebra): Semantics changed.  Now 'router zebra' is default
-	behavior of bgpd.
-
-1999-05-14  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* bgp_routemap.c: Add some commands to bgp route-map.
-	match ip next-hop: New command.
-	match metric: New command.
-	set metric: Doc fix.
-	set local-preference: Add DEFUN.
-
-1999-05-14  Stephen R. van den Berg <srb@cuci.nl>
-
-	* bgp_main.c (signal_init): SIGTERM call sigint.
-	(sigint): Loggging more better message.
-
-1999-05-12  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* bgp_attr.c (bgp_packet_attribute): AS path attribute extended
-	length bit check is added.
-
-1999-05-11  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* bgp_routemap.c (bgp_route_map_init): Call route_map_install_set
-	function with route_set_local_pref_cmd argument.
-	(no_match_aspath): Function added.
-	(route_set_metric): Set attribute flag bit.
-
-	* bgp_attr.c (bgp_packet_attribute): MULTI_EXIT_DISC is now in BGP
-	packet.
-
-1999-05-07  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* bgpd.c (no_neighbor_timers_holdtime): `no neighbor PEER timers
-	holdtime' command is added.
-
-	* bgpd.h (BGP_DEFAULT_HOLDTIME_BIG): Delete define.
-
-	* bgpd.c (bgp_prefix_list_set): New function added.
-	(bgp_prefix_list_unset): Likewise.
-	(bgp_prefix_list_update): Likewise.
-	(show_ip_bgp_neighbors): prefix-list information display.
-
-1999-05-06  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* bgpd.c (bgp_delete): Function added for `no router bgp'.
-
-1999-05-05  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* bgp_dump.c (bgp_dump_attr): Add originator_id display.
-
-	* bgpd.c (bgp_router_id): Even when address is malformed set the
-	value to configuration bug fixed.
-	(no_bgp_router_id): New function.
-	(no_bgp_cluster_id): New function.
-
-1999-05-04  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* bgpd.h (BGP_ATTR_ORIGINATOR_ID): Changed from BGP_ATTR_ORIGINATOR.
-
-1999-05-02  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* bgp_route.c (bgp_announce): Add route reflector check.
-
-1999-05-01  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* bgpd.c (bgp_cluster_id): Add function for route reflector.
-	(neighbor_route_reflector_client): Likewise.
-	(no_neighbor_route_reflector_client): Likewise.
-
-	* bgpd.h (struct bgp ): Add cluster for route reflector.
-
-	* bgp_route.c (show_ip_bgp_prefix_list): New command is added.
-
-1999-04-24  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* Makefile.am (noinst_HEADERS): Add bgp_filter.h
-
-	* bgp_aspath.c (aspath_undup): Function deleted.  aspath_free ()
-	has same functionality.
-
-	* bgp_filter.h: New file.
-
-	* bgp_aspath.c (aspath_unintern): Rename aspath_free () to
-	aspath_unintern ()
-	(aspath_free): New function.
-
-1999-04-23  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* bgp_aspath.c (aspath_aggregate): Function added.
-
-	* bgp_aspath.h (aspath_aggregate): Prototype added.
-
-	* bgp_aspath.c (aspath_empty_aspath): New argument
-	gated_dont_eat_flag is added.
-
-1999-04-18  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* bgp_route.c: Add bgp_aggregate_ipv4 and bgp_aggregate_ipv6.
-
-1999-04-17  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* bgp_route.c (aggregate_address): Function added.
-
-	* bgp_zebra.c (zebra_read): Change log to zlog.
-
-1999-04-15  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* Makefile.am (noninst_HEADERS): Added for make dist.
-
-1999-04-09  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* aspath_regex.c: Removed from distribution.
-
-1999-04-07  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* bgp_attr.c (bgp_packet_attribute): Old draft-00 packet treatment
-	bug fixed.
-
-1999-04-06  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* bgp_aspath.c (aspath_add_left): Fix empty aspath bug.  Reported
-	by kad@gibson.skif.net.
-
-	* bgp_regex.[ch]: New file added.
-
-	
-1999-04-05  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* bgp_filter.c: New file added.
-
-1999-04-01  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* bgp_aspath.c (aspath_empty_aspath): Change for peering with
-	gated.
-
-1999-03-24  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* bgp_main.c (main): Default loggin method changed from syslog to
-	stdout.
-
-1999-03-05  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* bgp_route.c: Delete obsolete default attribute DEFUN.
-
-1999-03-04  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* bgp_attr.c: Make attribute structure put into attribute hash.
-
-1999-03-02  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* bgp_view.c : Delete file.
-
-1999-02-25  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* bgp_routemap.c (bgp_apply_route_map): Add prefix argument. 
-
-	* bgp_route.h (struct bgp_info): Add bgp_info structre.  I'll
-	replace bgp_route with this.
-
-	* bgp_routemap.c (route_match_ip_address): Fix bug of passing non
-	prefix value to access_list_apply(). 
-
-	* bgpd.conf.sample: Add route-map sample.
-	Delete obsolete default-attr statements.
-
-	* bgp_packet.c: Use stream_fifo for packet queueing.
-
-1999-02-24  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* bgp_aspath.c (aspath_add_left): add non empty aspath treatment.
-
-	* bgp_main.c: include unistd.h for daemon().
-
-	* bgp_route.c (nlri_process): add IPv6 table lookup.
-
-	* bgp_attr.c (route_parse_ipv6): call nlri_process().
-	(attr_make): Obsolete function attr_make deleted.
-
-1999-02-22  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* bgp_aspath.c (aspath_add_left): change function name from
-	aspath_add_leftmost_as().
-
-1999-02-21  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* bgp_aspath.c: add aspath_add_leftmost_as ().
-
-1999-02-18  Peter Galbavy  <Peter.Galbavy@knowledge.com>
-
-	* syslog support added
-
-1999-01-26  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* bgpd.c: DEFUN (neighbor_nexthop): deleted.
-	DEFUN (neighbor_distribute_list): added.
-
-1999-01-19  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* bgpd.h (struct peer ): header_buf and read_buf is removed.
-
-	* bgp_peer.[ch]: Deleted.  Peer related functions are merged to
-	bgpd.c
-
-	* bgp_network.c: New file.
-	* bgp_network.h: New file.
-
-	* bgp_packet.h: New file.
-	
-1999-01-11  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* bgp_packet.c (bgp_keepalive_send): Now BGP keepalive packet is
-	buffered.
-
-1999-01-08  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* bgp_packet.c: New file.
-
-1998-12-22  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* bgp_zebra.c (zebra_client): Use zebra_connect() in lib/client.c. 
-
-	* `show ip bgp' bug fixed.
-	* aspath_log (): Remove argument logfp.
-
-1998-12-15  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* bgp_fsm.h: New file.
-
-1998-12-15  Magnus Ahltorp <map@stacken.kth.se>
-
-	* bgp_attr.c, bgp_community.h, bgp_dump.c, bgp_fsm.c, bgp_open.c
-	bgp_peer.c, bgp_peer.h, bgp_route.c, bgp_route.h, bgp_view.c
-	bgpd.c, bgpd.h, bgp_attr.c, bgp_community.h, bgp_dump.c,
-	bgp_fsm.c, bgp_open.c, bgp_peer.c, bgp_peer.h: Prototype fixes.
-
-1998-12-09  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* bgpd.c (bgp_config_write): Delete vector v argument.
-
-1998-12-07  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* bgpd.h: Delete annoying ld_[124]byte and st_[124]byte macros.
-
-1998-11-23  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* bgp_radix.[ch]: removed.
-
-1998-09-15  HEO SeonMeyong  <seirios@matrix.iri.co.jp>
-
-	* bgp_main.c: ifdef HYDRANGEA -> ifdef KAME
-
-1998-08-13  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* bgp_dump.c: delete nroute().
-
-1998-05-19  Yamshita TAKAO  <jargon@lares.dti.ne.jp>
-
-	* bgp_aspath.c: HAVE_CONFIG_H typo :-)
-	* bgpd.h: Modify for compile on Solaris.
-	* bgp_aspath.h: likewize
-	* bgp_community.h: likewize
-	* bgp_routemap.c: likewize
-
-1998-05-18  Yamshita TAKAO  <jargon@lares.dti.ne.jp>
-
-	* bgpd.h: Modify for compile on Solaris.
-	* bgp_aspath.h: likewize
-
-1998-05-08  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* routemap.[ch]: move to ../lib directory.
-
-1998-05-07  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* routemap.c (route_map_apply): add function.
-
-1998-05-06  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* routemap.h: add file.
-
-	* bgp_peer.h (enum ): change PEER_{IBGP,EBGP} to BGP_PEER_{IBGP,EBGP}
-
-1998-05-03  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* Makefile.am: sysconfdir_DATA added.
-
-1998-05-02  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* bgp_dump.c: add `debug bgp fsm'
-		      add `no debug bgp fsm'
-		      add `show debug bgp'
-	* bgp_open.c: File added.
-
-1998-05-01  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* .cvsignore: File added.
-
-1998-04-30  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* bgp_community.[ch]: File added.
-
-1998-03-04  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* bgpd now use lib/thread.[ch].
-
-1998-01-06  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* bgpd.c (show_ip_bgp_neighbors): add 'show ip bgp neighbors' command.
-
-	* bgpd.h (BGP_DEFAULT_START_TIMER): change from 1 to 30.
-
-1997-12-30  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* bgp_vty.c: bgp_vty.c deleted.
-
-	* bgpd.c (config_write_neighbor): add ebgp-multihop command.
-
-1997-12-29  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* bgp_fsm.c: [-p bgp_port] and [-P vty_port] works
-
-1997-12-06  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* bgp_vty.c: new file.
-
-	* bgp_attr.c: add new logging system.
-
-1997-11-23  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* Change all inet_addr call into inet_aton.
-
-1997-11-10  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* bgp_radix.c: change radix_peer_delete
-
-1997-10-04  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* bgp_aspath.c: move AS_TOKEN_??? definition from header to c source.
-
-1997-09-12  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* bgp_dump.c (bgp_log_route): add dump_attr function
-
-1997-09-06  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* bgp_aspath.c (aspath_test): change AS_SET brace from '[' to '{'
-	* bgp_dump.c (bgp_log_route): change logfile format.
-
-1997-08-19  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* bgp_open.c (bgp_open): move bgp_open function from bgpd.c
-	* bgp_attr.c (community_str2com): add community value generation
-	* bgp_attr.h: add SAFI definition for BGP-4+
-
-1997-08-18  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* bgpd.h: add BGP_OPEN_OPT_CAP for Capabilities Optional Parameter
-	* Makefile.in: add bgp_open.o, delete bgp_loop.o
-	* bgp_open.c: newfile which manages BGP Open message
-	* bgp_loop.c: this file is merged with bgp_fsm.c
-	* bgp_radix.c (radix_add): radix_add() now return route_t instead
-	of int
-	(bgp_sim): now we can read update & withdraw from file
-	* bgp_route.c: add route_free() call into route_parse etc.
-
-1997-08-17  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* bgp_radix.c: Radix code is completely rewritten. It has better
-	memory treatment than old one.
-
-1997-08-14  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* bgp_route.c: route_alloc for route struct allocation statistics.
-	* bgpd.c (bgp_make_update): now we cann announce MED attribute.
-	* bgp_aspath.c (aspath_print_all): change aspath_print_all output
-	format.
-
-1997-08-13  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* bgp_term.c (term_parse): add command : show asstat, show ashash
-	* bgp_aspath.c: aspath_cmp bug fix
-	(aspath_print_all): add aspath_print_all ();
-	* bgp_peer.h: delete rlist element from struct peer.
-
-1997-08-12  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* bgp_aspath.c: completely rewritten.
-	* bgp_aspath.h: completely rewritten.
-	add AsPath, AsSegment structure
-	add AS_SET treatment
-	change Hash codes
-
-1997-08-09  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* bgp_attr.h: add Attribute flags defines
-	* bgp_route.c: delete rlist related functions
-	* bgp_aspath.c (as_origin): add as_origin function
-	(aspath_print): move from bgp_dump.c and add support of AS_SET
-	change Hash related function names.
-
-1997-08-08  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* bgp_aspath.h: add next entry, delete rlist entry from struct aspath
-
-1997-08-04  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* bgp_aspath.c (as_sort): add function as_sort
-	* bgp_aspath.h: add IBGP, EBGP
-
diff --git a/doc/ChangeLog b/doc/ChangeLog
deleted file mode 100644
index 5fcb195..0000000
--- a/doc/ChangeLog
+++ /dev/null
@@ -1,510 +0,0 @@
-2007-07-31 Paul Jakma <paul.jakma@sun.com>
-
-	* bgpd.texi: Document 'network ... pathlimit <ttl>'
-
-2007-05-01 David L Stevens <dlstevens@us.ibm.com>
-
-	* main.texi: added route-map, prefix-list, ip protocol
-	  and set src documentation
-
-2007-04-30 Andrew J. Schorr <ajschorr@alumni.princeton.edu>
-
-	* ospfd.texi: Add a paragraph to the description of the OSPFv2
-	  network command to explain how we handle interfaces with
-	  peer addresses.
-
-2007-04-29 Andrew J. Schorr <ajschorr@alumni.princeton.edu>
-
-	* basic.texi: Document the new 'log timestamp precision' command.
-
-2007-03-21 Andrew J. Schorr <ajschorr@alumni.princeton.edu>
-
-	* Makefile.am: Patch rule for draft-zebra-00.txt to work
-	  in VPATH build environments.
-
-2006-07-28 Paul Jakma <paul.jakma@sun.com>
-
-	* main.texi: link-detect works on Solaris too.
-	* ospfd.texi: Twiddle around with anchors a bit more.
-	  Clarify how setting MD5 auth by area and by interface interact,
-	  and add cross-references, as well as to the required
-	  command for setting key material.
-
-2006-07-27 Paul Jakma <paul.jakma@sun.com>
-
-	* quagga.texi: Remove unused index definitions
-	  Add an Index node - for the concept index.
-	* routeserver.texi: Set exampleindex to 0, so the example configs
-	  with long IPv6 addresses stand better chance of fitting.
-	* overview.texi: 'Supported RFC' -> 'Supported RFCs'
-	  Remove paragraph indentation - texinfo does that.
-	  Revise the supported OS list slightly.
-	  Remove the IPv6 stack list, seems very dated and irrelevant.
-	  Revise the 'How to get Quagga' section.
-	* ospfd.texi: minor tweaks: add some anchors, fix some minor
-	  format issues.
-	  Revise the help for 'abr-type'.
-	  Note that text authentication is unwise, recc'd MD5.
-	  Add some extra text for redistribute and passive-interface,
-	  about how latter can substitute for redist connected.
-
-2006-07-27 Andrew J. Schorr <ajschorr@alumni.princeton.edu>
-
-	* vtysh.1: Document new options -d and -E, and note that now multiple
-	  -c options may be supplied, with embedded linefeed now supported.
-	  In BUGS section, remove warning about vtysh causing a daemon
-	  to freeze, since this has been fixed.
-
-2006-07-04 Paul Jakma <paul.jakma@sun.com>
-
-	* quagga.info: remove auto-generated file. It will still be
-	  present in dist tarballs, so shouldn't affect anyone but
-	  direct users of CVS. Required texinfo version should be
-	  widely available.
-
-2006-06-28 Erik Muller <erikm@internap.com>
-
-	* ospfd.texi: Document new ospf router subcommand
-	  "log-adjacency-changes [detail]".
-
-2006-06-26 Paul Jakma <paul.jakma@sun.com>
-
-	* ospfd.texi: Document that MD5 keyid is part of the protocol.
-	* bgpd.texi: shut texinfo warnings up by replacing brackets in
-	  variable with angle brackets.
-
-2006-05-23 Paul Jakma <paul.jakma@sun.com>
-
-	* bgpd.texi: Document the update-source command.
-
-2006-05-10 Paul Jakma <paul.jakma@sun.com>
-
-	* quagga.info: update auto-built file.
-
-2006-05-08 Paul Jakma <paul.jakma@sun.com>
-
-	* main.texi: --log_mode does not exist, remove, bug #245.
-
-2006-05-04 Paul Jakma <paul.jakma@sun.com>
-
-	* ripd.texi: Add Version Control as a distinct section.
-	  Expand Version Control section with overview text,
-	  touching on insecurity of RIPv1 and referencing
-	  authentication section, cleanup text of various version
-	  commands.
-	  RIP Authentication: Add overview text, refer to RIPv1 version
-	  control, which is required to completely secure RIP.
-
-2006-03-31 Paul Jakma <paul.jakma@sun.com>
-
-	* fig*.txt: New files, txt versions of the diagrammes for the
-	  info file.
-	* protocol.texi: Document the new version 1 header.
-	* routeserver.texi: Explicitly specify scaling widths for the
-	  figures, only way to make them look reasonable, sadly.
-	  Try fix some formatting and explicitely note lists as being
-	  bulleted.
-	* Makefile.am: convert seems to do png to pdf just fine. No
-	  need for intermediate eps.
-	  Add txt figure expansions and list as dependencies and
-	  EXTRA_DIST files.
-
-2006-02-19 Paul Jakma <paul.jakma@sun.com>
-
-	* quagga.info: update auto-built file.
-	* ChangeLog: Fix old, existing entry for snmptrap.texi addition to
-	  credit the author, who got in touch with me.
-	* snmptrap.texi: Add comment line with author's details.
-
-2006-01-19 Paul Jakma <paul.jakma@sun.com>
-
-	* quagga.info: update auto-built file.
-
-2005-11-25 Paul Jakma <paul.jakma@sun.com>
-
-	* texinfo.tex: update to newer version, seems to now properly
-	  scale the diagramme images in PDF output.
-
-2005-11-11 Paul Jakma <paul.jakma@sun.com>
-
-	* quagga.info: update auto-built file. Methinks it's time to
-	  remove from CVS..
-
-2005-11-07 Paul Jakma <paul.jakma@sun.com>
-
-	* Makefile.am: snmptrap.texi needs to be listed as a source,
-	  not disted otherwise.
-
-2005-11-04 Jeroen Simonetti <jsimonetti@denit.net>
-
-	* snmptrap.texi: Documentation on configuring SNMP for logging
-	  traps.
-
-2005-11-04 Paul Jakma <paul.jakma@sun.com>
-
-	* snmp.texi: Minor formatting changes.
-	* quagga.info: Update auto-built file
-	* ospf6d.texi: Add example config
-	* bgpd.tex: Add example configs. Couple of cleanups of format
-	  and macros.
-	* routemap.texi: Add an explanation of how route-maps work.
-	  Document the call and exit-policy commands.
-
-2005-10-29 Paul Jakma <paul@dishone.st>
-
-	* ospfd.texi: Document the new spf and max-metric commands, and
-	  the additional form of dead-interval. Add documentation for
-	  various other commands. Cleanup misc stuff, citations, etc.
-	  Add some example configurations.
-	* overview.texi: RFC3137 support added.
-	* Makefile.am: Make quagga.pdf depend on the _TEXINFOS
-	  variable, this still doesn't fix the dependency though,
-	  sadly.
-
-2005-10-11 Paul Jakma <paul@dishone.st>
-
-	* quagga.texi: Rejiggle the copyright sections a bit, seems to
-	  make makeinfo happier and generates info pages again on FC4.
-	* quagga.info: Update this auto-built file.
-	
-2005-04-29 Paul Jakma <paul@dishone.st>
-
-	* defines.texi.in: Add PACKAGE_NAME, PACKAGE_STRING.
-	* quagga.texi: Use PACKAGE_NAME, this is more to give me an excuse
-	  to update quagga.texi so that the 'UPDATED' in version.texi will
-	  be more recent, the Makefile seems to be dumb and not examine
-	  the texi files from which quagga.texi is generated.
-	* quagga.info: Fresh copy to match updates.
-
-2005-04-28 Paul Jakma <paul@dishone.st>
-
-	* quagga.info: updated
-	* Makefile.am: automake seems to depend doc built stuff on srcdir
-	  for some reason, or maybe its cause we have quagga.info,
-	  quagga.texi in CVS - not sure. Anyway, the static rule for
-	  quagga.pdf should depend on the srcdir quagga.texi in that case.
-
-2005-04-22 Andrew J. Schorr <ajschorr@alumni.princeton.edu>
-
-	* bgpd.8,isisd.8,ospf6d.8,ospfd.8,ripd.8,ripngd.8,zebra.8: Fix
-	  spelling mistake: idenifier -> identifier.
-
-2005-04-22 Andrew J. Schorr <ajschorr@alumni.princeton.edu>
-
-	* bgpd.8,isisd.8,ospf6d.8,ospfd.8,ripd.8,ripngd.8,zebra.8: Fix
-	  spelling mistake: intrefaces -> interfaces.
-
-2005-04-10 Paul Jakma <paul@dishone.st>
-
-	* quagga.info: Update to match bgpd.texi addition
-
-2005-04-08 Hasso Tepper <hasso at quagga.net>
-
-	* bgpd.texi: Document new "bgp bestpath as-path confed" command.
-
-2005-04-05 Paul Jakma <paul@dishone.st>
-
-	* Makefile.am: Get rid of built_sources. It causes them to be added
-	  to dist, and the dist host can not generate the PDFs.
-
-2005-04-02 Paul Jakma <paul@dishone.st>
-
-	* fig{-{normal,rs}-processing,_topologies_{rs,full}}.dia: new
-          files, dia diagramme XML versions of the original corresponding
-          EPS encapsulated bitmaps.
-	* fig{-{normal,rs}-processing,_topologies_{rs,full}}.png: new
-	  files, png exports by dia of the source dia diagrammes above.
-	* fig{-{normal,rs}-processing,_topologies_{rs,full}}.eps: removed,
-	  replaced by above dia source.
-	* routeserver.texi: remove extension in image macros.
-	* quagga.info: updated build
-	* Makefile.am: Add rules to build eps (using 'convert'), png (using
-	  dia). Add figures_BUILT_SOURCES to extra_dist to avoid the 
-	  dependency on dia :) (amongst other things) for dist users.
-	  quagga_TEXINFOS should depend on figures_BUILT_SOURCES.
-	* .cvsignore: ignore eps files, built from sources
-	* Makefile.am: Urg, dont use automake _SOURCES, _BUILT_SOURCES
-	  for figures, automake doesnt know anything about them.
-	  
-2005-03-25 Jean-Mickael Guerin <jean-mickael.guerin@6wind.com>
-	* ipv6.texi: Add new commands for neighbor discovery
-	    interface ipv6 nd prefix X:X::X:X/M router-address
-	    interface ipv6 nd ra-interval msec
-	    interface ipv6 nd home-agent-config-flag
-	    interface ipv6 nd home-agent-lifetime
-	    interface ipv6 nd home-agent-preference
-	    interface ipv6 nd adv-interval-option
-
-2005-02-03 Andrew J. Schorr <ajschorr@alumni.princeton.edu>
-
-	* basic.texi: Add note about last-resort crash logging to /var/tmp
-	  when file logging is not configured.
-	* quagga.info: updated build of autogenerated file
-
-2005-01-24 Paul Jakma <paul@dishone.st>
-
-	* quagga.info: Version bump (autogenerated)
-
-2005-01-10 Paul Jakma <paul@dishone.st>
-
-	* texinfo.tex: Updated to a version which understands @{ and @}
-	* vtysh.texi: Add node name for @section
-	* quagga.info: updated build of autogenerated file
-
-2005-01-07 Paul Jakma <paul@dishone.st>
-
-	* quagga.info: Version bump (autogenerated)
-
-2005-01-05 Paul Jakma <paul@dishone.st>
-
-	* quagga.info: Version bump
-
-2004-12-23 Paul Jakma <paul@dishone.st>
-
-	* quagga.info: Version bump
-
-2004-12-18 Hasso Tepper <hasso at quagga.net>
-
-	* Makefile.am: Add isisd man page to the list. Should fix problem
-	  isisd not included in release/snapshot tarballs.
-
-2004-12-07 Andrew J. Schorr <ajschorr@alumni.princeton.edu>
-
-	* basic.texi: Document new logging features.  Separate basic config
-	  commands from basic VTY commands.
-
-2004-11-25 Hasso Tepper <hasso at quagga.net>
-
-	* *.8: Document -g/--group command line switch and some small
-	  cosmetical changes.
-
-2004-11-22 Paul Jakma <paul@dishone.st>
-
-	* bgpd.8: escape -/+ signs, reported by ESR to bug-zebra.
-
-2004-11-19 Hasso Tepper <hasso at quagga.net>
-
-	* Makefile.am: Don't remove quagga.info while cleaning up.
-
-2004-11-15 Paul Jakma <paul@dishone.st>
-
-	* routeserver.texi: Strip ctrl-M from line endings, note by
-	  sigma@smx.pair.com
-	* quagga.info: Add generated file to CVS, as it requires most recent
-          texinfo to build, until such time as texinfo 4.7 is more
-          prevalent.
-
-2004-11-08 Paul Jakma <paul@dishone.st>
-
-	* Makefile.am: Add routeserver.texi to quagga_TEXINFOS.
-	  Add quagga.info to clean files list (would have thought automake
-          would have done this, but it doesnt seem to)
-
-2004-11-07 Paul Jakma <paul@dishone.st>
-
-	* quagga.texi: include routeserver.texi. TODO: integrate the current
-          multiple-instance orientated bgpd route-server section with the
-          new route-server docs.
-
-2004-11-07 Paul Jakma <paul@dishone.st>
-
-	* Makefile.am: Add automatic rule to build pdf's from eps figures.
-	  Clean *.pdf. Add rule for quagga.pdf (as the eps.pdf pattern
-          probably otherwise will override automake's rule for quagga.pdf)
-	* overview.texi: URL was causing TeX overfull, put on newline.
-	* quagga.texi: Put the copyright notice into @copying section, as
-	  is proper. Strip trailling space from the main menu lines.
-	* rip(ng)?d.texi: Minor reformatting.
-	* Add the route server docs.
-	* bgpd.texi: remove unneeded page breaks. The 6Bone example
-          overflows though.
-	* routeserver.texi: new file, texinfo'fied and slightly modified 
-          version of the original TeX from James Luis Rubio.
-	* fig-*.eps: new files, diagrammes.
-        
-2004-11-06 Paul Jakma <paul@dishone.st>
-
-	* defines.texi.in: New file, texi variables should be set here,
-          autoconf substitution is available. Define common AUTHORS,
-          COPYRIGHT_YEAR and COPYRIGHT_STR vars.
-	* (global): Make use of makeinfo node pointer auto-creation
-          to avoid having to fully specify links for nodes, so we only have
-          to specify current node name - simplifies text slightly.
-          Remove extraneous newlines which appear to cause extra blank pages
-          to be added in output.
-          Update copyright strings which appear in various places to
-          use the new COPYRIGHT_STR texinfo variable.
-	  Change url to uref, the former need not output an actual
-	  hyperlink depending on version of texinfo, the latter should if
-	  supported by the format (eg PDF).
-	* texinfo.tex: Update to a more recent version. previous file
-	  was many many years old. This file should possibly be removed
-          altogether, and allowed to be installed by automake.
-        * quagga.texi: Make use of automake's version.texi feature to
-          have VERSION and some other vars auto-defined. include
-          defines.texi. Change copyright strings to use the COPYRIGHT_STR
-          variable.
-	* install.texi: Make the privs section an actual section. Ditto for
-	  the Linux notes.
-	* overview.texi: Supply URL for Quagga, where format allows. Tidy up
-          one or two paragraphs slightly.
-	  Update the section on supported platforms.
-	  Remove the ZNOG list stuff, direct reader to the website for
-          further information on email lists.
-	* vtysh.texi: Update the integrated config file section. Make the
-	  commands sections so correct PDF indexes are built.
-
-2004-10-12 Hasso Tepper <hasso at quagga.net>
-
-	* snmp.texi: ospf6d supports SNMP as well now.
-
-2004-10-11 Hasso Tepper <hasso at quagga.net>
-
-	* ospfd.8: Update manpage: add info about new -a/--apiserver command
-	  line switch.
-
-2004-10-11 Paul Jakma <paul@dishone.st>
-
-	* ospfd.texi: reformat the ospf md5 paragraph, add an additional
-	  way to work around bad clocks.
-
-2004-10-03 Hasso Tepper <hasso at quagga.net>
-
-	* vtysh.1: Update vtysh man page to reflect changes in shell. Remove
-	  info about -f command line switch.
-
-2004-09-11 Paul Jakma <paul@dishone.st>
-
-	* quagga.texi: Update copyright. Contents should be at beginning
-	  of docs...
-
-2004-09-11 Paul Jakma <paul@dishone.st>
-
-	* ospfd.texi: OSPF MD5 auth requires stable time.
-
-2004-08-31 Hasso Tepper <hasso at quagga.net>
-
-	* zebra.8: Document -s/--nl-bufsize command line switch.
-
-2004-08-27 Hasso Tepper <hasso at quagga.net>
-
-	* Update vtysh man page to reflect changes in shell.
-
-2004-08-10 Hasso Tepper <hasso at quagga.net>
-
-	* Updated man pages.
-	* Removed vty commands section from all man pages. This inf belongs to
-	  Info pages.
-	* Added isisd man page.
-
-2004-07-31 Christian Hammers <ch@lathspell.de>
-
-	* snmp.texi: update (completely rewritten almost)
-	
-2004-06-30  Greg Troxel  <gdt@poblano.ir.bbn.com>
-
-	* Makefile.am (EXTRA_DIST): Add files in mpls explicitly, to avoid
-	copying CVS files, per the automake manual's recommendations.
-
-2004-05-27 Paul Jakma <paul@dishone.st>
-
-	* Correct RIP port, s/521/520/, reported by xantius@xantius.com
-	
-2003-11-27  Hasso Tepper <hasso@estpak.ee>
-
-	* Added -A and -u descriptions to the man pages.
-
-2003-01-22  Christian Hammers <ch@westend.com>
-
-	* ospfd.texi (OSPF router, OSPF router): Add description.
-
-2002-07-07  Kunihiro Ishiguro  <kunihiro@ipinfusion.com>
-
-	* zebra-0.93 released.
-
-2001-02-07  Pekka Savola <pekkas@netcore.fi>
-
-	* Correct bad English ;-).
-
-2001-02-01  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* zebra-0.91 released.
-
-2001-01-09  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* zebra-0.90 released.
-
-2000-10-02  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* zebra-0.89 released.
-
-2000-10-02  Horms <horms@vergenet.net>
-
-	* Makefile.am: Fix texinfo file installation problem.
-
-2000-08-17  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* zebra-0.88 released.
-
-	* ospfd.texi (Redistribute routes to OSPF): distance <1-255>
-	@var{source} command is temporary disabled.  So it is removed from
-	document.
-
-2000-07-04  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* vtysh.1: Add man entry for vtysh.
-
-	* bgpd.1: Change section to 8.
-	* ospfd.1: Likewise.
-	* ospf6d.1: Likewise.
-	* ripd.1: Likewise.
-	* ripngd.1: Likewise.
-	* zebra.1: Likewise.
-
-1999-09-01  "A.Waddington" <waddington@usa.net>
-
-	* zebra.texi: Replace @command with @code until it gets ready.
-	Remove @macro.
-
-1999-08-26  Andrew Waddington <waddington@usa.net>
-
-	* bgpd.1: Add man page.
-	ospf6d.1: Likewise.
-	ospfd.1: Likewise.
-	ripd.1: Likewise.
-	ripngd.1: Likewise.
-	zebra.1: Likewise.
-
-1999-08-14  Andrew Waddington <waddington@usa.net>
-
-	* zebra.texi: Many typo is fixed.  Some grammatical rectifications
-	is made.
-
-1999-07-27  Gerhard Poul <gpoul@gnu.org>
-
-	* zebra.texi: Update zebra.texi.
-
-1999-07-02  Gerhard Poul <gpoul@gnu.org>
-
-	* draft-zebra-00.ms: New file added.  This is groff version of
-	draft-zebra-00.txt.  This is a master file of draft-zebra-00.txt.
-
-	* draft-zebra-00.txt: Generated from draft-zebra-00.txt.
-
-1999-05-07  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* zebra.texi (Top): Add ospf6d chapter.
-
-1999-03-31  Jeroen Ruigrok/Asmodai <asmodai@wxs.nl>
-
-	* zebra.texi: Improve some sections.
-
-1999-03-04  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* archfig.tex, zebra.sty, zebra.tex: Temporary removed due to the
-	description is out of date.
-
-1999-02-24  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* texinfo.tex: New file added.  Automake complains the absence of
-	texinfo.tex.
diff --git a/guile/ChangeLog b/guile/ChangeLog
deleted file mode 100644
index 751e952..0000000
--- a/guile/ChangeLog
+++ /dev/null
@@ -1,26 +0,0 @@
-2000-10-02  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* zebra-0.89 is released.
-
-2000-08-17  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* zebra-0.88 is released.
-
-1999-04-18  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* guile-bgp.c (scm_router_bgp): Allocate real struct bgp object.
-
-	* Makefile.am: Delete -DPACKAGE and -DVERSION.
-
-	* zebra-guile.h: File added.
-	* zebra-support.c: File added.
-	* guile-bgp.c: File added.
-
-1999-04-15  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* guile/Makefile.am (INCLUDES): Use @GUILE_CFLAGS@ and
-	@GUILE_LDFLAGS@
-
-1999-04-14  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* zebra-guile work restarted.
diff --git a/isisd/ChangeLog b/isisd/ChangeLog
deleted file mode 100644
index bb77ffe..0000000
--- a/isisd/ChangeLog
+++ /dev/null
@@ -1,600 +0,0 @@
-2008-01-29 James Carlson <james.d.carlson@sun.com>
-
-	* Fix bug #437, assert due to bogus index management 
-	* isis_flags.c: (flags_initialize) new
-	* (flags_get_index) fix off by one, leading to list assert
-	  on null node data.
-	  (flags_free_index) ditto.
-	* isisd.c: (isis_area_create) use flags_initialize
-	  (isis_area_destroy) deconfigure circuits when
-	  taking down area.
-
-2007-07-18 James Carlson <james.d.carlson@sun.com>
-
-	* isis_network.c: split up into isis_bpf.c, isis_dlpi.c, and
-	  isis_pfpacket.c, selected by autoconf, and added DLPI support.
-	* (general) Fixed to allow compilation and use on Solaris.
-
-2006-12-08 Hannes Gredler <hannes@gredler.at>
-
-	* isis_adjacency.c: (isis_new_adj) Allow NULL snpa argument.
-	* isis_pdu.c: (various) Update calls to isis_new_adj() to pass
-	  NULL and use default.
-	* (general) Add forward declarations where required.
-	  Fix up const char *'s.
-	  Allow V4-only compilation.
-
-2006-01-17 Paul Jakma <paul.jakma@sun.com>
-
-	* isis_zebra.c: (isis_zebra_route_add_ipv4) fix for new
-	  zserv format.
-
-2005-11-20 Paul Jakma <paul.jakma@sun.com>
-
-        * (general) remove includes of very common system headers,
-          these are already picked up by zebra.h. Further, including
-          them before zebra.h messes up all our lovely (sarcasm)
-          autoconf'd detecting of platform specific things. Recent
-          addition of stdint.h to configure.ac and zebra.h appears
-          particularly to throw up this problem.
-
-2005-10-01 Hasso Tepper <hasso at quagga.net>
-
-	* isis_adjacency.c: Stop expire timer while deleting adjacency.
-	* isis_events.c: Stop pseudo LSP thread while resigning circuit from
-	  level.
-	* isis_route.c: Fix compiling with EXTREME_DEBUG. Mark route as not
-	  in sync with zebra if it's changed.
-	* isis_spf.c: Schedule route validating etc even if tent was empty.
-	  It's probably because we just don't have any adjacencies.
-	* isisd.c: Write minimum spf interval into configuration.
-
-2005-09-30 Vincent Jardin <vincent.jardin@6wind.com>
-
-	* isis_route.c: fix EXTREME_DEBUG compilation
-
-2005-09-28 Hasso Tepper <hasso at quagga.net>
-
-	* *.c: Massive cleanup of lists loops. Stop abusing ALL_LIST_ELEMENTS.
-	  Replace XMALLOC + memset with XCALLOC. Fix some indentation issues.
-	  The only really significant change is simplified isis_delete_adj
-	  function in isis_adjacency.c.
-
-2005-09-28 Hasso Tepper <hasso at quagga.net>
-
-	* isis_dynh.c, isisd.h: Implement dynamic hostname cache cleanup.
-	* isis_lsp.c: Refresh dynamic hostname in the cache while refreshing
-	  topology LSP.
-
-2005-09-28 Hasso Tepper <hasso at quagga.net>
-
-	* isis_lsp.c: Make topology generator generate TE TLVs if necessary.
-	  Also take care of inserting dynamic hostname of topology TLVs into
-	  cache.
-
-2005-09-26 Hasso Tepper <hasso at quagga.net>
-
-	* isis_spf.c: Changing cost from uint16_t to uint32_t. Unset
-	  ISIS_ROUTE_FLAG_ACTIVE flag before running SPF.
-	* isisd.[ch]: Separate route tables for different levels. SPF is done
-	  separately, but in case of L1L2 area they have to be merged.
-	* isis_zebra.c: Set/unset ISIS_ROUTE_FLAG_ZEBRA_SYNC flag correctly in
-	  case of adding/removing IPv4 routes.
-	* zebra_route.c: Rework route validating process. Merging L1 and L2
-	  tables in case of L1L2 area.
-
-2005-09-26 Hasso Tepper <hasso at quagga.net>
-
-	* isis_spf.[ch]: Added TE TLVs to the SPF process. It seems to work
-	  mostly, but needs certainly much more testing, especially transition
-	  situation.
-
-2005-09-26 Hasso Tepper <hasso at quagga.net>
-
-	* isis_lsp.c: Put correct metric info into TE TLV's. Wide metric is
-	  used only if only wide metric style (extended TLV's) is in use.
-
-2005-09-26 Hasso Tepper <hasso at quagga.net>
-
-	* isis_tlv.[ch]: New function tlv_add_in_addr() to put just one IPv4
-	  address into TLV. Used for IPv4 address TLV (in case of LSP) and TE
-	  router ID TLV.
-	* isis_lsp.c: Use tlv_add_in_addr() and include router ID in LSP.
-
-2005-09-26 Hasso Tepper <hasso at quagga.net>
-
-	* isis_lsp.c: Support for originating TE IS and IPv4 TLV's. No any sub
-	  TLV handling yet.
-
-2005-09-26 Hasso Tepper <hasso at quagga.net>
-
-	* isis_tlv.[ch]: Two new functions - tlv_add_te_is_neighs() and
-	  tlv_add_te_ipv4_reachs() to handle TLV's with new metric. None of
-	  them handle sub TLVs though for now.
-
-2005-09-26 Hasso Tepper <hasso at quagga.net>
-
-	* isis_circuit.[ch]: Some preliminary support for specifying wide
-	  circuit metrics. Needs more thinking though, but should do for now.
-
-2005-09-26 Hasso Tepper <hasso at quagga.net>
-
-	* isisd.[ch]: Introduce oldmetric flag for area and transition
-	  metricstyle command. With metricstyle wide only extended TLVs
-	  should be used.
-
-2005-09-25 Hasso Tepper <hasso at quagga.net>
-
-	* dict.[ch]: Revert all nonfunctional changes. It's external module
-	  imported from kazlib and it's better not to screw it - there is
-	  theoretical chance that we might want to merge changes from upstream
-	  at some point. Also avoid the loss of info about upstream version
-	  (rcsid).
-
-2005-09-21 Hasso Tepper <hasso at quagga.net>
-
-	* isis_route.c: Fix output of nexthops in case of extreme debug.
-
-2005-09-19 Hasso Tepper <hasso at quagga.net>
-
-	* isis_lsp.c, isis_pdu.c, isis_spf.c: Remove some old unused code.
-
-2005-09-19 Hasso Tepper <hasso at quagga.net>
-
-	* isis_lsp.c: Better output of detailed LSP printout and fixed TE IPv4
-	  reachibility metric display.
-
-2005-09-19 Hasso Tepper <hasso at quagga.net>
-
-	* isis_tlv.h: Cleanup comment about TLVs we should support, remove info
-	  about useless (in sense of IP(v6)) TLVs.
-
-2005-09-19 Hasso Tepper <hasso at quagga.net>
-
-	* isis_lsp.h: Added backpointer to the area from LSP. For now it's used
-	  only in generated topology LSPs.
-	* isisd.[ch]: Cleanup CLI commands related to topology generation and
-	  added command to specify base fo dynamic hostname for topology LSPs.
-	* isis_lsp.c: Rewrite almost all code related to generation topology
-	  LSPs (top_lsp_refresh(), generate_topology_lsps() and
-	  build_topology_lsp_data() functions). Topology is connected to own
-	  LSP now (lsp_build_nonpseudo). Commented out lsppdu_realloc
-	  functions, it's not used any more hopefully.
-
-2005-09-18 Hasso Tepper <hasso at quagga.net>
-
-	* isis_lsp.c (lsp_update): Fix previous commit - manipulate the right
-	  database and only if LSP is really in the database (sanity check).
-
-2005-09-16 Hasso Tepper <hasso at quagga.net>
-
-	* isis_lsp.c (lsp_update): Remove LSP from database before updating
-	  its data and put it back after. Database entry MUST contain at least
-	  correct pointers to the sysid to get correct compare results.
-	* isis_lsp.[ch], isis_pdu.c: Pass level to the lsp_update() function.
-
-2005-09-05 Hasso Tepper <hasso at quagga.net>
-
-	* *.c: Try to be less verbose by default (without any debug options
-	  on).
-	* isis_lsp.c (lsp_build_nonpseudo): Use stream_reset() instead of
-	  touching endp directly.
-	* isis_lsp.c (lsp_build_pseudo): Ditto.
-
-2005-09-03 Hasso Tepper <hasso at quagga.net>
-
-	* isis_lsp.c: Yet another regression introduced by stream cleanup.
-	  Similar fix to the one commited to lsp_build_nonpseudo() some days
-	  ago.
-
-2005-09-01 Hasso Tepper <hasso at quagga.net>
-
-	* isis_lsp.c: Less TLV leaking.
-
-2005-09-01 Hasso Tepper <hasso at quagga.net>
-
-	* random.c, spgrid.[ch]: Fix warnings with hope that I didn't broke
-	  anything. These floats to longs and vice versa casts are starnge
-	  indeed.
-	* isis_pdu.c: As we don't use %z for size_t for now because we support
-	  older compilers, cast them to unsigned long.
-
-2005-09-01 Hasso Tepper <hasso at quagga.net>
-
-	* isis_adjacency.c, isis_lsp.c, isisd.c: Replace XMALLOC && memset
-	  with XCALLOC.
-	* isis_lsp.c (lsp_build_pseudo): Fix adding ES neighbour.
-	* isis_tlv.c: More compact free_tlvs() function.
-	* isis_lsp.c (lsp_build_nonpseudo) : Try to fix one more regression
-	  introduced by stream cleanup. Seek endp to the right place before
-	  starting to fill stream with TLVs.
-
-2005-08-16 Hasso Tepper <hasso at quagga.net>
-
-	* isis_misc.[ch]: Fix some warnings, making some strings const.
-
-2005-08-10 Hasso Tepper <hasso at quagga.net>
-
-	* topology/spgrid.c: MAXLONG is deprecated, use LONG_MAX instead.
-	  values.h, where MAXLONG is defined, is deprecated as well.
-
-2005-05-26 Yossi Boaron <Yossi.Boaron@veraznetworks.com>
-
-	* isis_dr.c: Fix copy&paste error in isis_dr_resign().
-
-2005-05-25 Paul Jakma <paul@dishone.st>
-
-	* isisd.c: (show_isis_generated_topology) change to _RO version
-	  of list macro. remove the extra listnode variable. one of the
-	  macros had had incorrect number of arguments.
-
-2005-05-03 Paul Jakma <paul@dishone.st>
-
-	* (general) More cleaning up of stream abuse, isisd should be
-	  back to previous functionality. Replace various XMALLOC+memset's
-	  with XCALLOC
-	* isis_tlv.c: (tlv_add_padding) use stream_put to clear the stream
-	  rather than forward endp, as isisd reuses streams.
-	* isis_pdu.c: (process_lsp) cleanup direct reference to stream endp
-	  (send_lsp) manual copy of a stream cleaned up to use stream_copy.
-	* isis_network.c: (isis_recv_pdu_bcast) replace direct memcpy with
-	  stream_write
-	  (isis_recv_pdu_p2p) replace recvfrom directly into stream with
-	  stream_recvfrom. Remove dangerous and now unneeded manual update
-	  of endp.
-	  (isis_recv_pdu_bcast / non-GNU_LINUX) Replace direct memcpy with
-	  stream_write.
-	  (isis_recv_pdu_p2p) replace read direct into stream with
-	  stream_read_try, and hence remove the manual update of endp.
-	* isis_lsp.c: (lsp_update_data) manual stream dup replaced with 
-	  stream_dup.
-	  (lsppdu_realloc) mempcy into stream data replaced with stream_put.
-	  (lsp_build_nonpseudo) remove mysterious stream_forward_endp's -
-	  which were originally stream_set_putp - shouldn't be needed
-	  now that all the manual fiddling of private stream data has been
-	  corrected.
-	  (build_topology_lsp_data) remove unneeded twiddling of endp,
-	  appears to be due to lsppdu_realloc(), but it appears to sort of
-	  do the right thing wrt streams.
-	  
-2005-04-15 Paul Jakma <paul@dishone.st>
-
-	* topology/Makefile.am: random.c is a source of libtopology, so list
-	  it.
-
-2005-04-12 Hasso Tepper <hasso at quagga.net>
-
-	* isis_adjacency.c: Fix typo introduced with listloop cleanup.
-
-2005-04-11 Andrew J. Schorr <ajschorr@alumni.princeton.edu>
-
-	* isis_zebra.h (isis_zebra_finish): Remove declaration of unused
-	  function.
-	* isis_zebra.c (isis_zebra_route_add_ipv4): Call zclient_send_message
-	  to send the message to zebra instead of calling writen directly, since
-	  zclient_send_message understands non-blocking I/O and will manage
-	  the buffer queue appropriately.
-	  (isis_zebra_finish): Remove unused function, particularly since
-	  the zclient_free function has been removed.
-
-2005-04-10 Paul Jakma <paul@dishone.st>
-
-	* Makefile.am: topology should not be a conditional SUBDIR,
-	  otherwise make dist breaks.
-	* topology/Makefile.am: remove EXTRA_DIST of files which dont
-	  exist in that directory, broke make dist.
-	* isisd.c: (show_isis_generated_topology_cmd) convert LIST_LOOP
-	* isis_lsp.c: (generate_topology_lsps) ditto
-	  (build_topology_lsp_data) ditto
-
-2005-04-02 Andrew J. Schorr <ajschorr@alumni.princeton.edu>
-
-	* isis_zebra.c: (isis_zebra_if_del) Must use if_lookup_by_name_len.
-
-2005-04-02 Hasso Tepper <hasso at quagga.net>
-
-	* Makefile.am: Variables to handle conditonal compiling of topology
-	  generator code.
-	* isis_lsp.c: lsppdu_realloc() is used by topology generator.
-	* isisd.c: Rename show_isis_topology_cmd to not conflict the one in
-	  the isis_spf.c.
-	* isisd.h: Remove TOPOLOGY_GENERATE define, it will be defined in
-	  toplevel config.h if topology generator is enabled.
-	* topology/Makefile.am: Handle the libtoolized Quagga libraries.
-
-2005-04-02 Andrew J. Schorr <ajschorr@alumni.princeton.edu>
-
-	* isis_zebra.c: (isis_zebra_if_del) Call if_delete_retain instead
-	  of if_delete, since it is generally not safe to remove interface
-	  structures.  After deleting, set ifp->ifindex to IFINDEX_INTERNAL.
-	  (zebra_interface_if_lookup) Tighten up code.
-
-2005-03-07 Michael Sandee <voidptr@voidptr.sboost.org>
-
-	* isis_spf.c: host.name might be NULL.
-
-2005-02-23 Andrew J. Schorr <ajschorr@alumni.princeton.edu>
-
-	* isis_main.c: (reload) Call vty_reset instead of vty_finish (both
-	  functions were exactly the same).
-
-2005-01-18 Hasso Tepper <hasso at quagga.net>
-
-	* *.c: Changed many functions to static. Some commented out
-	  functions and some tiny related fixes. No functional changes.
-
-2005-01-01 Hasso Tepper <hasso at quagga.net>
-
-	* isis_common.h, isisd.c, isis_pdu.c: Implement authentication in
-	  SNPs correctly - ie. make it conditional like it is in IOS.
-
-2004-12-29 Hasso Tepper <hasso at quagga.net>
-
-	* isis_circuit.c, isis_csm.c, isis_zebra.c: Don't crash during
-	  interface up/down events. I'm not sure whether logic is correct
-	  though. Needs rethink anyway, seems. Replace if_is_up() with
-	  if_is_operative() and add some more.
-
-2004-12-24 Hasso Tepper <hasso at quagga.net>
-
-	* *.c: zlog_* cleanup. Mostly changed level of debug messages to
-	  LOG_DEBUG.
-
-2004-12-07 Andrew J. Schorr <ajschorr@alumni.princeton.edu>
-
-	* isis_main.c: (main) The 2nd argument to openzlog has been removed.
-
-2004-12-03 Andrew J. Schorr <ajschorr@alumni.princeton.edu>
-
-	* isis_main.c: (sigint,sigterm) Use zlog_notice for termination message.
-	  (terminate) This function should be static, not global.
-	  (main) Use zlog_notice for startup announcement, and remove
-	  ifdef ZEBRA_VERSION.
-
-2004-11-25 Hasso Tepper <hasso at quagga.net>
-
-	* isis_main.c: Make group to run as configurable.
-
-2004-11-24 Andrew J. Schorr <ajschorr@alumni.princeton.edu>
-
-	* dict.c: Include "zassert.h" instead of <assert.h>.
-
-2004-10-13 Hasso Tepper <hasso at quagga.net>
-
-	* isis_main.c: Initialize access list. Although we haven't route
-	  filtering yet, it's needed to limit access to vty.
-
-2004-10-11 Hasso Tepper <hasso at quagga.net>
-
-	* isis_routemap.c, isisd.c: Make more strings const.
-	* isisd.h: Make min_bcast_mtu unsigned.
-
-2004-10-07 Hasso Tepper <hasso at quagga.net>
-
-	* *.[c|h]: Fix warnings: make strings const, signed -> unsigned,
-	  remove or comment out unused variables etc.
-	* isis_lsp.c: Clean lsp_print_detail() a bit, add TE TLV's and
-	  removed old code.
-	* isis_circuit.c: Remove old ip/ipv6 address commands code.
-
-2004-10-03 Hasso Tepper <hasso at quagga.net>
-
-	* isis_zebra.c: Read router id related messages from zebra daemon.
-	* isis_lsp.c: Use router id in IP address TLV in LSP's. It's how Junos
-	  routers behave as well.
-	* isis_tlv.h: Export add_tlv() function.
-
-2004-09-27 Hasso Tepper <hasso at quagga.net>
-
-	* isis_pdu.c: Fix accessing NULL found by valgrind.
-
-2004-09-26 Hasso Tepper <hasso at quagga.net>
-
-	* isis_circuit.c: Fix previous commit. Don't schedule LSP regeneration
-	  and don't crash if circuit->area == NULL.
-
-2004-09-26 Hasso Tepper <hasso at quagga.net>
-
-	* *.[c|h]: Fix a lot of compiler warnings.
-	* isis_events.c: Remove isis_event_int_reach_change() function, as it
-	  doesn't make sense for now. Call lsp_regenerate_schedule() directly
-	  where needed.
-
-2004-09-26 Hasso Tepper <hasso at quagga.net>
-
-	* isis_lsp.h: Cast-as-lvalue extension is deprecated and is not
-	  accpted any more in gcc-4.0.
-
-2004-09-24 Hasso Tepper <hasso at quagga.net>
-
-	* isisd.c: thread_master *master is already defined in isis_main.c.
-	* isis_misc.[c|h], isis_lsp.[c|h]: Move static variables out of
-	  header files.
-
-2004-09-23 Hasso Tepper <hasso at quagga.net>
-
-	* *.[c|h]: list -> struct list *, listnode -> struct listnode *.
-
-2004-09-21 LIU Xin <lx at ns.6test.edu.cn>
-
-	* isis_dr.c: Update dis_record of adjacencies when isisd becomes DIS.
-
-2004-09-21 Hasso Tepper <hasso at quagga.net>
-
-	* isis_lsp.c: Put IPv4 prefixes into reachability TLVs, not
-	  addresses. Make IPv6 work with other prefix lengths than % 8 == 0.
-
-2004-09-20 LIU Xin <lx at ns.6test.edu.cn>
-
-	* isis_dr.c, isis_events.c: Remove hello multiplier usage while
-	  scheduling DIS election.
-	* isis_pdu.c: Don't call isis_event_dis_status_change() whenever
-	  l[1|2]_desig_is is different from hdr.lan_id.
-
-2004-09-19 Hasso Tepper <hasso at quagga.net>
-
-	* isis_spf.h: Renamed t_spf_periodic to t_spf as it's not used to
-	  store pointer to periodic SPF thread only.
-	* isis_spf.c: Cleaned up SPF threads schedule code. IPv4 and IPv6
-	  threads are independant now. Used macros wherever possible.
-	* isis_lsp.c: Fixed bug in scheduling LSP regeneration.
-
-2004-09-17 LIU Xin <lx at ns.6test.edu.cn>
-	
-	* isis_circuit.c: According to RFC1142 the first DIS election will be
-	started 2 * HelloTimer seconds after the initialization.
-
-2004-09-15 Laurent Rabret <laurent.rabret at francetelecom.com>
-
-	* isis_pdu.c: Fix error in same subnet comparison. The previous
-	  algorithm only worked when netmask % 8 == 0.
-	* isisd.c: Show domain and area passwords in configuration.
-	* iso_checksum.c: Fixed error in the checksum calculation. The previous
-	  algorithm could produce a bad checksum if the 2 complement's vs 1
-	  complement's adaptation was required.
-	* isis_pdu.c: Authentication in LSPs does not mean authentication in
-	  SNPs.
-	* isis_tlv.c: Fix errors in password checking.
-
-2004-09-14 Hasso Tepper <hasso at quagga.net>
-
-	* isis_circuit.c: Mostly cosmetical changes in isis_circuit_add_addr()
-	  and add calls to isis_event_int_reach_change(). Implement
-	  isis_circuit_del_addr(). Cancel t_run_dr threads is circuit goes
-	  down.
-	* isis_events.c: Implement isis_event_int_reach_change(). I'm not sure
-	  yet how this stuff should work, but it allows be to start debug
-	  threads which act very weird at the moment.
-	* isis_tlv.c: Much less verbose by default.
-	* isis_zebra.c: Added extreme debugging output. Call connected_free()
-	  after isis_circuit_del_addr, not before.
-	* isisd.conf.sample: Update it a little bit. 10000 seconds hello time
-	  was certainly too much IMHO.
-
-2004-09-14 LIU Xin <lx at ns.6test.edu.cn>
-
-	* isis_pdu.c: Update l1_desig_is only if neighbor really is DIS.
-
-2004-09-10 LIU Xin <lx at ns.6test.edu.cn>
-	
-	* isis_pdu.c: Goto out only if no adjacency exist.
-	* isis_circuit.c: Don't crash while executing "isis circuit-type"
-	  command if circuit exists, but circuit->area is still NULL.
-	* isis_lsp.c: Set pointers to thread to NULL before initiating new
-	  thread in lsp_l1_refresh_pseudo(), lsp_l2_refresh_pseudo() and
-	  lsp_tick() functions.
-
-2004-05-19 Laurent Rabret <laurent.rabret at francetelecom.com>
-
-	* isis_constants.h: change the ISIS Hello interval from 1 to 10 (cisco's
-	  default value).
-	* isis_main.c: suppress a bad "#if 0 #endif" block for isis to be
-	  activated on startup.
-	* isis_tlv.[c|h]: LSP recognition of the ISIS Graceful Restart LSP (not
-	  implemented yet).
-
-2004-05-19 Rivo Nurges <rix at estpak.ee>
-
-	* *.c: Removing many useless net/ethernet.h includes and some tiny
-	  fixes to make it compile on NetBSD and OpenBSD.
-
-2004-05-08 Paul Jakma <paul@dishone.st>
-
-	* isis_zebra.c: Sync with zclient changes.
-
-2004-02-11 Hasso Tepper <hasso@estpak.ee>
-  * many *.c files: Replace thread_add_xxx() and thread_cancel() with
-    THREAD_XXX_ON and THREAD_XXX_OFF macros.
-
-2004-01-27 Hasso Tepper <hasso@estpak.ee>
-  * isis_circuit.c: Commented out "(no) ip address" commands so it doesn't
-    confuse vtysh.
-
-2003-12-31 Hasso Tepper <hasso@estpak.ee>
-  * isis_dr.c: Fix some threads related bugs.
-
-2003-12-23 Hasso Tepper <hasso@estpak.ee>
-  Some fixes done by me and Cougar <cougar@random.ee>.
-  * isis_adjacency.c: Two bugfixes by Cougar:
-    After down state neigbour was deleted but not removed from neighbours list.
-    Don't show random expire time during neighbour initialisation.
-  * isis_circuit.c: Don't show interface addresses in config by Cougar.
-  * isis_constants.h, isis_misc.c: Show other well-known NLPID names as well
-    by Cougar.
-  * isisd.c: Two tiny CLI fixes by me.
-  * isis_lsp.c: Bugfix in lsp_print_detail() by Cougar.
-    Show IPv4 external and IPv6 TLV's in "show isis database detail" by me.
-  * isis_misc.c: Net address format fix by Cougar.
-  * isis_spf.c: Dead loop fix in isis_spf_preload_tent() by Cougar
-  * isis_zebra.c: Ignore distance when adding route to zebra for now by me.
-  * isis_tlv.c: Parse external IPv4 TLV's correctly by me.
-
-Version 0.0.7 to 0.0.8
-======================
-
-o A bug in handling of other ISs fragments fixed
-o hello interval now specified in *seconds*
-o replaced the adj->ipv[46]_addr tables with linked lists
-
-Version 0.0.6 to 0.0.7 (Oct 29 2002)
-======================
-
-o changed to zebra-0.93b
-o fixed a seg in SPF
-o handling/generation of LSP fragments
-o domain/area/circuit password
-
-Version 0.0.5 to 0.0.6 (Jul 4 2002)
-======================
-
-o lots of changes to SPF
- - runs the SPF for IPv4 and IPv6 separately
- - a number of bugs fixed
- - simplified the implementation 
- - "7.2.7 Removal of excess paths" implemented
-o ported to freebsd  (tested in 4.5-STABLE and 4.6-STABLE) 
-o moved to zebra-0.93-pre2
-o "show isis topology" command added 
-o "show (ip|ipv6) route isis commands added to zebra
-o a number of fixes and additions (e.g. checksum calculation and DIS state
-change event) by BeomSeok Gwak added
-
-Version 0.0.4 to 0.0.5 (Apr 26 2002)
-======================
-
-o changed to zebra-0.93-pre1
-o number of memory leaks + small bugs fixed
-o a bug related to processing of neigbors when installing routes fixed
-
-Version 0.0.3 to 0.0.4 (Feb 27 2002)
-======================
-
-o initial version of SPT algorithm
-o installing routes though zebrad
-o isis debug commands
-o work on IS-IS events (e.g. circuit state change)
-
-Version 0.0.2 to 0.0.3 (Jan 17 2002)
-======================
-
-o LSP handling improved
-o generation of pseudonode LSPs
-o DR election enhanced
-o support for p2p interfaces
-o support for topology simulation 
-o more detailed output for show commands
-
-Version 0.0.1 to 0.0.2 (Dec 13 2001)
-======================
-
-o circuit state machine (isis_csm.[ch]) added
-o lot of work on LSP generation 
-o ISO checksum 
-o uses DGRAM sockets instead of RAW
-o gets IP(v6) addresses from zebra
-o debug can be controlled with "debug isis" command
-o read support for TE tlvs
-o work started on p2p interfaces
-o work started on isis events 
-
-
diff --git a/lib/ChangeLog b/lib/ChangeLog
deleted file mode 100644
index 688c44f..0000000
--- a/lib/ChangeLog
+++ /dev/null
@@ -1,4270 +0,0 @@
-2008-07-21 Paul Jakma <paul.jakma@sun.com>
-
-	* sockunion.c: ifdef out various places that converted
-	  v4mapped sockets to pure v4. Doesn't seem necessary at all,
-	  presumably a workaround for now historical inet_ntop bugs (?)
-
-2008-07-21 Michael H. Warfield <mhw@wittsend.com>
-           YOSHIFUJI Hideaki <yoshfuji@linux-ipv6.org>
-
-	* sockopt.{c,h}: (sockopt_tcp_signature) Add TCP-MD5SIG support.
-
-2008-06-07 Paul Jakma <paul@jakma.org>
-
-	* stream.{c,h}: (stream_{put,write}) add const qualifier to source
-	  argument. Change u_char to void *.
-
-2008-06-02 Denis Ovsienko
-
-	* workqueue.[ch]: completely drop WQ_AIM_HEAD flag and
-	  work_queue_aim_head() function, they aren't needed any more
-	  with the new meta queue structure; (work_queue_run) don't
-	  increment the counter on work item requeueing
-
-2008-02-28 Paul Jakma <paul.jakma@sun.com>
-
-	* log.c: (mes_lookup) Sowmini Varadhan diagnosed a problem where
-	  this function can cause a NULL dereference, on lookups for unknown
-	  indices, or messages with NULL strings. Can occur, e.g., debug
-	  logging code when processing received messages. Fixed to accept a
-	  pointer to a default string to be used if there is no match.
-	* log.h: LOOKUP adjusted to match
-
-2008-02-28 Paul Jakma <paul.jakma@sun.com>
-
-	* linklist.c: This implementation expects that the data pointer not
-	  be null, e.g. listgetdata() asserts this. The list add methods
-	  don't apply the same sanity check.
-
-	  Noted by Jim Carlson in bug #437.
-
-2008-01-11 Andrew J. Schorr <ajschorr@alumni.princeton.edu>
-
-	* zebra.h: Revert previous change, no need to include <net/if_media.h>
-	  here.
-
-2008-01-10 Ingo Flaschberger <if@xip.at>
-
-	* zebra.h: If HAVE_BSD_LINK_DETECT is defined, include <net/if_media.h>.
-
-2008-01-08 Pavol Rusnak <prusnak@suse.cz>
-
-	* memory.c: (mtype_memstr) Fix accidental shift past width of type,
-	  constant should have been forced to UL, rather than being left to
-	  default to int.
-
-2007-11-12 Denis Ovsienko
-
-	* linklist.c: (listnode_add_after) Don't forget to increment list
-	  items counter.
-	* workqueue.h: Changed working queue flags from enum into integer
-	  and introduced WQ_AIM_HEAD flag to indicate our will to insert
-	  new data before the list head.
-	* workqueue.[ch]: (work_queue_schedule, show_work_queues,
-	  work_queue_plug, work_queue_unplug) Adjust to the new flags style.
-	* workqueue.[ch]: (work_queue_aim_head) new function to control the
-	  WQ_AIM_HEAD flag
-	* workqueue.[ch]: (work_queue_new) Explicitly set both WQ flags
-	  during new WQ initialization.
-	* workqueue.[ch]: (work_queue_add) If WQ_AIM_HEAD indicates a need
-	  to place the new data into list head, do it.
-
-2007-10-22 Lorenzo Colitti <lorenzo@colitti.com>
-
-	* smux.c: (smux_stop) Avoid cancelling a defunct thread pointer
-	  (smux_start) Stop smux before trying to start it, possibly again.
-
-2007-10-04 Denis Ovsienko
-
-	* pid_output.c: (pid_output) stop using LOGFILE_MASK
-	  (0600 by default), introduce and use PIDFILE_MASK (0644)
-	  instead.
-
-2007-09-18  Paul Jakma <paul.jakma@sun.com>
-
-	* privs.c: definition of ZCAP_NET_ADMIN on Solaris should
-	  be PRIV_SYS_IP_CONFIG, when that's available. Thus allowing
-	  Quagga to work with in Solaris zones with exclusive IP
-	  instances.
-
-2007-08-21 Denis Ovsienko
-
-	* sockopt.[ch]: (setsockopt_so_sendbuf, getsockopt_so_sendbuf):
-	  new functions to adjust ospfd working socket.
-
-2007-08-13 Denis Ovsienko
-
-	* zebra.h: introduce ZEBRA_ERR_KERNEL and ZEBRA_ERR_NOERROR
-
-2007-07-06 Atis Elsts <atis@mikrotik.com>
-
-	* pqueue.{c,h}: Export trickle_up
-
-2007-07-26  Paul Jakma <paul.jakma@sun.com>
-
-	* log.c: (mes_lookup) warning about code not being in same-number
-	  array slot should be debug, not warning. E.g. BGP has several
-	  discontigious number spaces, allocating from different parts of a
-	  space is not uncommon (e.g. IANA assigned versus vendor-assigned
-	  code points in some number space).
-	  
-2007-07-06 Andrew J. Schorr <ajschorr@alumni.princeton.edu>
-
-	* sockopt.{c,h}: (setsockopt_multicast_ipv4) Add some comments about
-	  the arguments.
-
-2007-06-01 Andrew J. Schorr <ajschorr@alumni.princeton.edu>
-
-	* zebra.h: On linux, we seem to need to include <linux/types.h> before
-	  <sys/sysctl.h>, otherwise we get isisd compilation errors about
-	  __be16 not being defined.
-
-2007-05-10 Paul Jakma <paul.jakma@sun.com>
-
-	* zebra.h: Don't try define _GNU_SOURCE, autoconf should do it.
-
-2007-05-03 Paul Jakma <paul.jakma@sun.com>
-
-	* memtypes.c: Add MTYPE_ATTR_EXTRA and MTYPE_BGP_ROUTE_EXTRA
-
-2007-05-01 David L Stevens <dlstevens@us.ibm.com>
-
-	* (general) These changes collectively add route-map and
-	  prefix-list support to zebra and fix a bug in "show
-	  route-map" (with no argument).
-	* command.h: added PROTOCOL_NODE type
-	* log.c: (proto_name2num) new function, protocol name to
-	  number translation.
-	* routemap.c: (vty_show_route_map) fixed "show route-map"
-	  without route-map name
-	* routemap.h: added RMAP_ZEBRA type
-	* zebra.h: added proto_name2num() prototype
-
-2007-04-29 Andrew J. Schorr <ajschorr@alumni.princeton.edu>
-
-	* log.c: (quagga_timestamp) Optimize the subsecond timestamp generation.
-
-2007-04-28 Andrew J. Schorr <ajschorr@alumni.princeton.edu>
-
-	* command.c: (config_write_host) Save "log timestamp precision"
-	  if not default value.
-	  (show_logging) Show configured timestamp precision.
-	  (config_log_timestamp_precision) Enable configuration of timestamp
-	  precision.
-	  (no_config_log_timestamp_precision) Restore default timestamp
-	  precision.
-	  (cmd_init) Install new timestamp precision commands.
-	* log.h: (struct zlog) New timestamp_precision field.
-	  (quagga_timestamp) New function to generate a timestamp with the
-	  desired precision.
-	  (struct timestamp_control) Declare a structure for use in avoiding
-	  repeated duplicate calls to quagga_timestamp.
-	* log.c: (quagga_timestamp) New function to generate a timestamp
-	  of the desired precision.
-	  (time_print) Call quagga_timestamp if the time hasn't already been
-	  calculated.
-	  (vzlog) Initialize a timestamp_control structure and pass it to
-	  time_print and vty_log.
-	  (zlog_backtrace) Fix 64-bit problem: cannot print size_t with %u.
-	* vty.h: Must now include "log.h".
-	  (vty_log) Takes an additional struct timestamp_control argument.
-	* vty.c: (vty_log_out) Use new struct timestamp_control and new
-	  quagga_timestamp function to print timestamps of the desired
-	  precision.
-	  (vty_time_print) Use new quagga_timestamp function.
-	  (vty_log) Accept new struct timestamp_control argument and pass it
-	  down to vty_log_out.
-
-2007-04-27 Andrew J. Schorr <ajschorr@alumni.princeton.edu>
-
-	* smux.c: (smux_trap) Fix printf format to work with 64-bit size_t.
-
-2007-04-07 Paul Jakma <paul.jakma@sun.com>
-
-	* prefix.h: Add define to match IPv4 Link-Local addresses
-
-2007-03-20 Andrew J. Schorr <ajschorr@alumni.princeton.edu>
-
-	* log.c: (mes_lookup) Make the function more robust: check for
-	  cases where the index does not match the key value at that position.
-	  If so, give a warning and fall back to a linear search.
-	  And improve the error message in cases where even that fails.
-
-2006-12-12 Andrew J. Schorr <ajschorr@alumni.princeton.edu>
-
-	* if.h: (struct connected) Add new ZEBRA_IFA_PEER flag indicating
-	  whether a peer address has been configured.  Comment now shows
-	  the new interpretation of the destination addr: if ZEBRA_IFA_PEER
-	  is set, then it must contain the destination address, otherwise
-	  it may contain the broadcast address or be NULL.
-	  (CONNECTED_DEST_HOST,CONNECTED_POINTOPOINT_HOST) Remove obsolete
-	  macros that were specific to IPv4 and not fully general.
-	  (CONNECTED_PEER) New macro to check ZEBRA_IFA_PEER flag.
-	  (CONNECTED_PREFIX) New macro giving the prefix to insert into
-	  the RIB: if CONNECTED_PEER, then use the destination (peer) address,
-	  else use the address field.
-	  (CONNECTED_ID) New macro to come up with an identifying address
-	  for the struct connected.
-	* if.c: (if_lookup_address, connected_lookup_address) Streamline
-	  logic with new CONNECTED_PREFIX macro.
-	* prefix.h: (PREFIX_COPY_IPV4, PREFIX_COPY_IPV6) New macros
-	  for better performance than the general prefix_copy function.
-	* zclient.c: (zebra_interface_address_read) For non-null destination
-	  addresses, set prefixlen to equal the address prefixlen.  This
-	  is needed to get the new CONNECTED_PREFIX macro to work properly.
-
-2006-10-14 Paul Jakma <paul.jakma@sun.com>
-
-	* if.c: (general) Handle upgrades from SUNWzebra, which tried
-	  to track each logical interface as a seperate struct
-	  interface, to Quagga, which assigns only one struct interface
-	  per ifindex.
-	  (if_sunwzebra_get) Try decompose a logical interface name
-          (fooX:Y) to the 'primary' name (fooX), for Solaris.
-          (interface_cmd) Use if_sunwzebra_get on Solaris.
-
-2006-09-26 Pierre-Yves Ritschard <pierre-yves@spootnik.org>
-
-	* smux.c: (smux_open,smux_trap,smux_register) Fix various
-	  asn_build_* calls to pass the proper length in the final
-	  argument: use sizeof(<variable>) instead of sizeof(<type>),
-	  since there were several inconsistencies between the actual
-	  variable type and the size that was passed.  This should
-	  fix some problems on 64-bit architectures where sizeof(int)
-	  != sizeof(long).
-
-2006-08-25 Paul Jakma <paul.jakma@sun.com>
-
-	* thread.c: (general) Add support for monotonic clock, it may still
-	  jump forward by huge amounts, but should be immune to going
-	  backwards. Fixes bug #134.
-	  (quagga_gettimeofday_relative_adjust) helper, does what name
-	  says - adjusts gettimeofday based relative timer.
-	  (quagga_gettimeofday) helper to keep recent_time up to date.
-	  (quagga_get_relative) helper, update and getch the relative
-	  timer using gettimeofday(). POSIX CLOCK_MONOTONIC is also
-	  supported, but the code is not enabled yet nor tested.
-	  (quagga_real_stabilised) helper, retrieve absolute time but
-	  stabilised so as to never decrease.
-	  (quagga_gettime) Exported interface, analogous to POSIX
-	  clock_gettime() in interface, supporting several clocks.
-	  (quagga_time) Exported interface, analogous to traditional
-	  time(), will never decrease.
-	  (recent_relative_time) Convenience function to retrieve
-	  relative_time timeval, similar to existing recent_time absolute
-	  timeval, for when an approximately recent value will do.
-	  (remainder) Update to use above helpers.
-	  (thread_getrusage) Previously was a macro, but needs to be
-	  a function to twiddle with thread.c private stuff.
-	* thread.c: Point the GETRUSAGE macro at previous function.
-	  Export quagga_gettime, quagga_time and recent_relative_time for 
-	  general use.
-
-2006-07-25 Paul Jakma <paul.jakma@sun.com>
-
-	* thread.h: (struct thread) Add a cache pointer to the struct
-	  cpu_thread_history, if it is known - saving hash lookup on
-	  each thread_call.
-	* thread.c: (thread_call) Cache the pointer to the
-          cpu_thread_history, so that future thread_calls of same
-          thread can avoid the hash_lookup.
-
-2006-07-10 Andrew J. Schorr <ajschorr@alumni.princeton.edu>
-
-	* vty.c: (vty_log_out) Do not call vty_close, because this could
-	  result in a parent function's accessing the freed memory.
-	  Instead, set status VTY_CLOSE and call shutdown(vty->fd, SHUT_RDWR).
-	  And add a comment on vty_close.
-
-2006-07-10 Andrew J. Schorr <ajschorr@alumni.princeton.edu>
-
-	* vty.c: (vty_log_out, vty_read, vty_flush, vtysh_flush, vtysh_read)
-	  After an I/O error, must set vty->monitor to 0 before calling
-	  zlog_warn, otherwise an infinite recursion could occur
-	  (since zlog_warn triggers a message to be written to the vty,
-	  and that in turn triggers another error message when it fails, etc.).
-
-2006-07-03 Andrew J. Schorr <ajschorr@alumni.princeton.edu>
-
-	* vty.c: (vty_log_out) Debug messages to terminal vty sessions
-	  should include timestamps.
-
-2006-06-28 Paul Jakma <paul.jakma@sun.com>
-
-	* memory.c: Fix typo in cpp conditional around malloc.h, from
-	  comment in bug #269.
-
-2006-06-27 Paul Jakma <paul.jakma@sun.com>
-
-	* route_types.awk: Remove setting the 'bare' numeric route type
-	  in redist strings.
-
-2006-06-15 Paul Jakma <paul.jakma@sun.com>
-
-	* command.c: (cmd_describe_command_real) Fix leak, CID #38.
-	* memory.h: Experimental, have XFREE macro NULL out the freed
-	  pointer.
-	* linklist.c: (list_delete) call list_delete_all_node, don't
-	  duplicate it.
-	* if.c: (if_flag_dump) remove the whitespace indentation, callers
-	  should provide.
-
-2006-05-28 Paul Jakma <paul.jakma@sun.com>
-
-	* zebra.h: Include inttypes.h rather than stdint.h, best practice
-	  according to the autoconf manual.
-	  Add UINT*_MAX defines for older platforms lacking these (FBSD 4)
-	* memory.c: malloc.h is deprecated in favour of stdlib.h, however
-	  we still need it on GNU Libc for mallinfo().
-	* vty.c: (vty_log/vty_log_fixed) dont crash if called when vty
-	  hasn't been initiliased.
-	* log.c: (general) Add support for Sun libc printstack().
-	  (hex_append) make the cpp conditional on general HAVE_STACK_TRACE
-	  define.
-	  (zlog_backtrace_sigsafe) Ditto. Add printstack() version of the
-	  the DUMP macro in this function.
-
-2006-05-23 Paul Jakma <paul.jakma@sun.com>
-
-	* route_types.txt: New file, table of ZEBRA_ROUTE definitions.
-	* route_types.awk: New script, to parse previous and generate
-	  (for now) redistribute string defines.
-	* Makefile.am: build route_types.h using previous two, ala
-	  memtypes.h, include the script and table file in EXTRA_DIST.
-	* command.h: pull in route_types.h, add a REDIST_STR define.
-
-2006-05-21 Andrew J. Schorr <ajschorr@alumni.princeton.edu>
-
-	* if.h: (struct connected) Document the meaning of the
-	  ZEBRA_IFC_REAL and ZEBRA_IFC_CONFIGURED flags.
-
-2006-05-15 Paul Jakma <paul.jakma@sun.com>
-
-	* log.c: (general) Generalise struct zebra_route_desc into
-	  struct zebra_desc_table and, similar to route_types, add a
-	  command_types table to describe Zserv protocol commands.
-	  (route_types[]) use a macro to use designated initialisers
-	  while avoiding tedious duplication.
-	  (zserv_command_string) lookup string from zebra_desc_table,
-	  similar to zebra_route_string
-	* zebra.h: Add declaration for zserv_command_string, adjust the
-	  comments to reflect zebra_desc_table.
-
-2006-05-13 Paul Jakma <paul.jakma@sun.com>
-
-	* vty.c: (vty_describe_command) CID #39 fix was too hasty, just
-	  cause it /can/ leak doesn't mean it always will have, check
-	  first.
-
-2006-05-12 Paul Jakma <paul.jakma@sun.com>
-
-	* plist.c: (vty_prefix_list_uninstall) Fix potential NULL deref
-	  of prefix and typestr strings, Coverity CID #3.
-	* command.c: (cmd_complete_command_real) Fix leak of cmd_vector
-	  in error case, Coverity CID #37.
-	  (cmd_describe_command_real) Fix return of freed pointer when
-	  no-match, CID #55.
-	* vty.c: (vty_describe_command) fix leak of describe vector in
-	  error path, CID #39.
-
-2006-03-30 Paul Jakma <paul.jakma@sun.com>
-
-	* command.h: (DEFUN_CMD_FUNC_TEXT) Annotate arguments as
-	  potentially being unused.
-	* workqueue.c: (work_queue_run) fix line length of comment
-
-2006-03-27 Paul Jakma <paul.jakma@sun.com>
-
-	* memtypes.awk: Fix gensub call, g should be a string..
-
-2006-03-25 Paul Jakma <paul.jakma@sun.com>
-
-	* workqueue.h: (struct work_queue) Remove status field and
-	  state flag, no longer used.
-
-2006-03-19 Paul Jakma <paul.jakma@sun.com>
-
-	* memtypes.c: Add MTYPE_BGP_SYNCHRONISE.
-
-2006-03-16 Paul Jakma <paul.jakma@sun.com>
-
-	* Makefile.am: Fix -version-info argument.
-
-2006-03-15 Paul Jakma <paul.jakma@sun.com>
-
-	* memory.c: (mtype_memstr) new helper function to 
-	  return human friendly string for a byte count.
-	  (mtype_stats_alloc) new function, for users to retrieve
-	  number of objects allocated.
-	  (show_memory_mallinfo) New function, show mallinfo statistics
-	  if available.
-	  (show_memory_all_cmd) Call show_memory_mallinfo, if mallinfo
-	  is available.
-	* memory.h: Export mtype_memstr and mtype_stats_alloc.
-	  Provide a define for a reasonable buffer size for
-	  mtype_memstr.
-	  
-2006-03-14 Paul Jakma <paul.jakma@sun.com>
-
-	* privs.c: (zprivs_caps_init) Change user IDs before lowering
-	  privileges, while this seems to work on Linux, on Solaris
-	  it rightfully refuses due to PRIV_PROC_SETID having been
-	  dropped.
-	* command.h: Add the struct host global exported from command.c
-
-2006-03-06 Paul Jakma <paul.jakma@sun.com>
-
-	* if.h: export show_address_cmd, for anyone who wishes to use
-	  it.
-
-2006-02-21 Paul Jakma <paul.jakma@sun.com>
-
-	* sockunion.c: (sockunion_{su2str,log}) Use XSTRDUP.
-	  Particularly with _su2str, as that string gets XFREEd,
-	  which can be annoying if run debug code in memory.c.
-
-2006-02-02 Paul Jakma <paul.jakma@sun.com>
-
-	* workqueue.h: (struct work_queue) Remove the delay field.
-	  It served no purpose and just introduced bad behaviour.
-	  Should be excised before its allowed to escape into 1.0.
-	  This removes need for the 'flood' and runs_since_clear
-	  fields.
-	* workqueue.c: (general) excise delay factor between queue
-	  runs, hence the 'flood' crap too.. See above.
-
-2006-01-19 Paul Jakma <paul.jakma@sun.com>
-
-	* stream.c: (stream_getq_from) should use POSIX uint64_t
-	  not u_int64_t. Latter is neither a traditional BSD type, nor
-	  a POSIX type.
-
-2006-01-17 Vincent Jardin <vincent.jardin@6wind.com>
-
-	* md5.c: Don't forget to keep const.
-	* regex.c: Cleanup code and remove warnings.
-
-2006-01-17 Paul Jakma <paul.jakma@sun.com>
-
-	* md5.{c,h}: (md5_loop) Is better off taking a void * and doing
-	  cast to byte wise type internally, avoids needs for casts 
-	  in users.
-	* vty.c: (no_terminal_monitor_cmd) New ALIAS for 
-	  terminal_no_monitor, in the more normal negating format,
-	  to be kind to my fingers.
-	  (vty_init) install new ALIAS.
-	* zclient.{c,h}: (zclient_create_header) export this, seems others
-	  could use it (in lieu of more complete zserv helpers).
-
-2006-01-16 Paul Jakma <paul.jakma@sun.com>
-
-	* zclient.h: Update the Zserv protocol header with a version
-	  field.  Define the old command field to be a 'marker', to
-	  allow old Zserv and updated Zserv to be differentiated.
-	  Future updates will bump the version field obviously. New
-	  command field is made wider.  Try to stop using the
-	  'zebra_size_t' typedef in the callbacks.
-	* zclient.c: Update to read/write new format header.
-
-2006-01-11 Paul Jakma <paul.jakma@sun.com>
-
-	* if.h: (struct interface) expand flags to 8 bytes.
-	* zclient.c: (zebra_interface_{add,state}_read) stream read of
-	  interface flags now need to use stream_getq.
-	  (zebra_interface_if_set_value) ditto
-
-2006-01-10 Paul Jakma <paul.jakma@sun.com>
-
-	* stream.c: (stream_new) Allocate stream data as seperate object.
-	  (stream_free) free the data.
-	  (stream_resize) new function, resize stream to new size.
-	  (stream_{get,put}q*) new functions to get/put quad word size
-	  types.
-	* stream.h: (struct stream) make data seperate from the stream.
-	  Export new stream_resize and quad-word get/put functions.
-	  
-2005-12-29  Greg Troxel  <gdt@fnord.ir.bbn.com>
-
-	* vty.c (vty_hello): add cast to quiet lint (from David Young)
-
-2005-11-26 Paul Jakma <paul.jakma@sun.com>
-
-	* buffer.c: (struct buffer_data) change gcc zero array
-	  declaration to C99 incomplete array.
-	* stream.h: (struct stream) same
-
-2005-11-24 Paul Jakma <paul.jakma@sun.com>
-
-	* privs.c: (zcaps2sys/solaris) remove unused variable.
-	  (zprivs_state_caps/solaris) Format string missing a
-	  specifier.
-	* zebra.h: s/u_int/unsigned int/, u_int is a BSD type, defining
-	  __USE_BSD on Linux pulls in further things from netinet/ip.h
-	  which dont preprocess for some reason. There is no C99
-	  shorthand type directly equivalent to u_int afaict, so don't
-	  use it.
-
-2005-11-14 Paul Jakma <paul.jakma@sun.com>
-
-	* (general) pass struct work-queue to callback functions.
-	* workqueue.h: (struct work_queue) move the state flag
-	  variables to end.
-	  Add an opaque pointer to spec, for user-data global to the
-	  queue.
-	  Pass reference to work_queue to all callbacks.
-	* workqueue.c: (work_queue_item_remove) pass ref to workqueue
-	  to user callbacks.
-	  (work_queue_run) ditto.
-
-2005-11-14 Paul Jakma <paul.jakma@sun.com>
-
-	* (general) Add state to detect queue floods.  There's no sense
-	  trying to be sparing of CPU resources, if the queue is
-	  flooding and using ever more memory resources. we should just
-	  get on with clearing the queue.
-	  The sense of delay and hold were wrong way around, fix.
-	* workqueue.h: (struct work_queue) Add status bitfield.  Add
-	  'flood' integer to workqueue spec.  Add runs_since_clear
-	  counter to workqueue.
-	* workqueue.c: (work_queue_new) set defaults for delay, hold
-	  and flood.
-	  (work_queue_add) initial schedule should use delay, not hold.
-	  (show_work_queues) Print flood field, conserve whitespace.
-	  (work_queue_unplug) use delay, not hold.
-	  (work_queue_run) consecutive runs should be seperated by hold
-	  time, not delay.
-	  Keep track of number of consecutive runs, go into 'overdrive'
-	  if queue is being flooded, we can't avoid making heavy use of 
-	  resources, better to use CPU than ever more RAM.
-	* zebra.h: [bug #231] include stdint, if its there.
-
-2005-11-05 Paul Jakma <paul.jakma@sun.com>
-
-	* routemap.c: (vty_show_route_map_entry) call action is
-	  seperate from exit action, latter should still be printed
-	  regardless of whether a call is specified.
-
-2005-11-03 Paul Jakma <paul.jakma@sun.com>
-
-	* zebra.h: BSD BYTE_ORDER define isn't available everywhere,
-	  define if needs be.
-	* checksum.h: new file. checksum.c exports in_cksum, provide
-	  a header for it.
-	* checksum.c: (in_cksum) callers shouldn't have to know it uses
-	  a u_short internally, change to void *.
-	* Makefile.am: Add checksum.h
-	* command.h: remove bogus trailling slash.
-	* md5.c: (general) Update it for the twentieth century. ANSI
-	  declarations are widely supported now.. Don't include system
-	  headers, only include zebra.h. Use POSIX types (the
-	  alternative is to define u_int64_t in a portable way - rest
-	  of Quagga needs same cleanup).
-	  Make endian-conditional code be compiler conditional rather
-	  than preprocessor conditional, so that breakage gets noticed
-	  quicker.
-	* md5.h: POSIX types. Get rid of the odd __P() non-ANSI capable
-	  compiler compatibility hack.
-	* if.c: (connected_free) use MTYPE for connected label.
-	* memtypes.c: Add MTYPE_CONNECTED_LABEL
-	* memtypes.h: Update auto-built file.
-
-2005-10-26 Paul Jakma <paul.jakma@sun.com>
-
-	* (general) Cleanup a some calls to XFREE,strdup, etc. to use
-	  the memory.h macros.
-	* memtypes.c: Add MTYPE_IF_RMAP_NAME, MTYPE_PQUEUE,
-	  MTYPE_PQUEUE_DATA and MTYPE_HOST.
-	* memtypes.h: update auto-built file.
-	* if_rmap.c: Use MTYPE_IF_RMAP_NAME.
-	* pqueue.c: Use the two MTYPE_PQUEUE mtypes for allocations.
-	* command.c: Use MTYPE_HOST, MTYPE_STRVEC. Some other fixups,
-	  including fixing some likely leaks in config_write_file.
-	* vty.c: memory macro usage fixes. 
-	  (vty_read_config) fix leak where relative config file is
-	  specified.
-
-2005-10-20 Andrew J. Schorr <ajschorr@alumni.princeton.edu>
-
-	* sockopt.c: (setsockopt_multicast_ipv4) If IP_ADD_MEMBERSHIP
-	  fails with errno equal to EADDRINUSE, then issue an info
-	  message and try IP_DROP_MEMBERSHIP followed by IP_ADD_MEMBERSHIP.
-
-2005-10-20 Andrew J. Schorr <ajschorr@alumni.princeton.edu>
-
-	* memory.c: (show_memory_vty) Omit zero statistics.  Print separators
-	  only if some non-zero stats have been printed in between.
-	  (show_separator) New function to print a separator.
-	  (show_memory_all) Keep track of whether a separator is needed
-	  between the different memory statistics groups.
-
-2005-10-18 Andrew J. Schorr <ajschorr@alumni.princeton.edu>
-
-	* memtypes.h: Add MTYPE_OSPF_VERTEX_PARENT (to match memtypes.c).
-
-2005-10-18 Paul Jakma <paul.jakma@sun.com>
-
-	* memtypes.c: (memory_list_ospf) Add MTYPE_OSPF_VERTEX_PARENT.
-
-2005-10-01 Andrew J. Schorr <ajschorr@alumni.princeton.edu>
-
-	* zebra.h: Declare new functions zebra_route_string() and
-	  zebra_route_char().
-	* log.c: (zroute_lookup,zebra_route_string,zebra_route_char) New
-	  functions to map zebra route numbers to strings.
-
-2005-09-29 Alain Ritoux <alain.ritoux@6wind.com>
-
-	* smux.[ch]: allow to retreive global OID (identified by <0
-	  namelen).
-
-2005-09-29 Paul Jakma <paul.jakma@sun.com>
-
-	* zebra.h: Solaris capabilities requires priv.h to be included.
-	* privs.{c,h}: Add support for Solaris Least-Privileges.
-	  privs.h: Reduce some of the abstract capabilities, which do
-	  not have rough equivalents on both systems. Rename the net
-	  related caps to _NET, as they should have been in first
-	  place.
-	  (zprivs_terminate) should take the zebra_privs_t as argument so
-	  that it can update change pointer.
-	  Add an additional privilege state, ZPRIVS_UNKNOWN.
-	* privs.c: (various capability functions) Add
-	  Solaris privileges variants.
-	  (zprivs_state) Use privs.c specific generic types to
-          represent various capability/privilege related types, so that
-          each can be typedef'd as appropriate on each platform.
-	  (zprivs_null_state) static added, to hold the state the null
-	  method should report (should be raised by default, and
-          LOWERED if zprivs_terminate has been called)
-          (zprivs_state_null) Report back the zprivs_null_state.
-          (cap_map) Make it able to map abstract capability to multiple
-          system capabilities.
-          (zcaps2sys) Map to abstract capabilities to multiple system
-          privileges/capabilities.
-          (zprivs_init) move capability related init to seperate
-	  function, zprivs_caps_init.
-          (zprivs_terminate) ditto, moved to zprivs_caps_terminate.
-          Set the change_state callback to the NULL state, so the
-          user can continue to run and use the callbacks.
-          
-2005-09-29 Alain Ritoux <alain.ritoux@6wind.com>
-
-	* filer.c: show protocol name in filter_show()
-	* plist.c: show protocol name in vty_show_prefix_entry()
-	* routemap.c: show protocol name in vty_show_route_map_entry()
-	* vty.c: in vty_command(), show protocol name if command unknown
-	
-2005-09-28 Alain Ritoux <alain.ritoux@6wind.com>
-
-	* md5-gnu.h: removed
-	* md5.h: replaces md5-gnu.h
-	* Makefile.am: use correct md5.h
-	* md5.c: import from WIDE
-
-2005-09-21 Paul Jakma <paul.jakma@sun.com>
-
-	* memtypes.{c,h}: Add MTYPE_AS_SEG_DATA.
-	
-2005-09-19 Hasso Tepper <hasso at quagga.net>
-
-	* str.[ch]: Add strndup() from glibc.
-
-2005-09-05 Paul Jakma <paul.jakma@sun.com>
-
-	* command.c: (install_element) be more robust. Eg, cmd_init
-	  need not have been called, some applications may use other
-	  library subsystems, which call install_element, without the
-          application wanting commands and hence not calling cmd_init.
-        
-2005-08-22 Hugo Santos <hsantos@av.it.pt>
-
-	* command.h: (enum node_type) Add BGP_IPV6M_NODE 
-	* command.c: (node_parent) Handle BGP_IPV6M_NODE node
-	  (config_exit, config_end) ditto
-	* vty.c: (vty_end_config) Handle BGP_IPV6M_NODE node
-	
-2005-08-10  Greg Troxel  <gdt@fnord.ir.bbn.com>
-
-	* getopt.h: Don't declare getopt (rather than getopt_long), since
-	quagga doesn't need it.
-	* getopt.c (getopt): Don't define getopt.
-
-2005-07-26 Andrew J. Schorr <ajschorr@alumni.princeton.edu>
-	* prefix.c: (prefix_ipv4_new, prefix_ipv6_new): Call prefix_new
-	  to allocate the memory to make sure that all struct prefix pointers
-	  point to objects of the same length (avoids memory overruns
-	  on struct prefix assignments).
-	  (prefix_ipv4_free, prefix_ipv6_free): Simply call prefix_free.
-	  It is interesting to note that these functions are never actually
-	  called anywhere in the code.  Instead prefix_free was already
-	  being called directly, despite the previous MTYPE incompatibility.
-
-2005-07-26 Andrew J. Schorr <ajschorr@alumni.princeton.edu>
-
-	* prefix.c: (ip_masklen) While loop should test that 'pnt' pointer is
-	  in range before dereferencing it.
-
-2005-06-24 Pawel Worach <pawel.worach@gmail.com>
-
-	* getopt.h: add further tests for full getopt declaration on
-	  various systems.
-
-2005-06-18 Paul Jakma <paul.jakma@sun.com>
-
-	* memtypes.h: update autobuilt file to match memtypes.c changes
-
-2005-06-01 Paul Jakma <paul.jakma@sun.com>
-
-	* memtypes.c: Add MTYPE_BGP_PROCESS_QUEUE and
-	  MTYPE_BGP_CLEAR_NODE_QUEUE
-
-2005-05-24 Paul Jakma <paul@dishone.st>
-
-	* memtypes.h: update this auto-built file. (maybe we should just
-	  remove it, is GNU awk a terrible dependency to have?)
-
-2005-05-23 Paul Jakma <paul@dishone.st>
-
-	* memtypes.awk: use character classes, which work correctly in
-	  all LC_COLLATE environments, unlike A-Z, which doesnt work in
-	  eg estonian collate order. Reported by Hasso.
-	* routemap.c: (rmap_onmatch_goto) fix crash if 'continue' command
-	  is used, which does not supply an argv[0].
-	  this is a backport candidate /iff/ the trailing ; is removed
-	  from VTY_GET_INTEGER_RANGE
-	* vty.h: fix the VTY_GET macros, do {..} while(0) so they have
-	  correct function like syntax in usage.
-	* workqueue.h: Add a WQ_QUEUE_BLOCKED item_status return code,
-	  to allow a queue function to indicate the queue is not
-	  ready/blocked - rather than any problem with the item at hand.
-	  Add a notion of being able to 'plug' and 'unplug' a queue.
-	  Add helpers to plug/unplug a queue.
-	  Add a completion callback, to be called when a queue is emptied.
-	* workqueue.c: (work_queue_new) remove useless list_free.
-	  (work_queue_schedule) new internal helper function to schedule
-	  queue, if appropriate.
-	  (work_queue_add) use work_queue_schedule
-	  (show_work_queues) Print 'P' if queue is plugged.
-	  (work_queue_plug) new API function, plug a queue - ie prevent it
-	  from 'drained' / processed / scheduled.
-	  (work_queue_unplug) unplug a queue, allowing it to be drained
-	  / scheduled / processed again.
-	  (work_queue_run) Add support for WQ_QUEUE_BLOCKED.
-	  Add comment for RETRY_NOW case.
-	  Make hysteris more aggresive in ramping up granularity, improves
-	  performance significantly.
-	  Add support for calling completion callback when queue is emptied,
-	  possibly useful for knowing when to unplug a queue.
-
-2005-05-19 Paul Jakma <paul@dishone.st>
-
-	* thread.c: (thread_cancel_event) the number of pending events
-	  cancelled is potentially useful information, dont throw it away,
-	  pass it back to the caller.
-	* sockunion.c: (sockunion_getsockname) use MTYPE_SOCKUNION, not TMP
-	  (sockunion_getpeername) ditto
-	* memtypes.c: (memory_list_bgp) add MTYPE_BGP_PEER_HOST
-
-2005-05-15 Paul Jakma <paul@dishone.st>
-
-	* getopt.h: It's not just __GNU_LIBRARY__ which defines
-	  getopt, eg __EXTENSIONS__ does too on SunOS. It still seems
-	  awfully fragile though.
-	* getopt.c: include zebra.h after config.h, before including
-	  getopt.h so that things at least are consistent..
-	* getopt1.c: ditto
-	
-2005-05-07 Yar Tikhiy <yar@comp.chem.msu.su>
-
-	* sockopt.c: Add support for BSD style ifindex in ip_mreq.
-
-2005-05-06 Paul Jakma <paul@dishone.st>
-
-	* (general) extern and static'ification of functions in code and
-	  header.
-	  Cleanup any definitions with unspecified arguments.
-	  Add casts for callback assignments where the callback is defined,
-	  typically, as passing void *, but the function being assigned has
-	  some other pointer type defined as its argument, as gcc complains 
-	  about casts from void * to X* via function arguments.
-	  Fix some old K&R style function argument definitions.
-	  Add noreturn gcc attribute to some functions, as appropriate.
-	  Add unused gcc attribute to some functions (eg ones meant to help
-	  while debugging)
-	  Add guard defines to headers which were missing them.
-	* command.c: (install_node) add const qualifier, still doesnt shut
-	  up the warning though, because of the double pointer.
-	  (cmp_node) ditto
-	* keychain.c: (key_str2time) Add GET_LONG_RANGE() macro, derived 
-	  fromn vty.h ones to fix some of the (long) < 0 warnings.
-	* thread.c: (various) use thread_empty
-	  (cpu_record_hash_key) should cast to uintptr_t, a stdint.h type
-	* vty.h: Add VTY_GET_IPV4_ADDRESS and VTY_GET_IPV4_PREFIX so they
-	  removed from ospfd/ospf_vty.h
-	* zebra.h: Move definition of ZEBRA_PORT to here, to remove
-	  dependence of lib on zebra/zserv.h
-
-2005-05-06 Hasso Tepper <hasso at quagga.net>
-
-	* sockunion.c: Fix warning message.
-
-2005-05-03 Paul Jakma <paul@dishone.st>
-
-	* stream.h: Add comment about the special zero-ing ability of
-	  stream_put.
-	  (stream_recvmsg, stream_write) should return ssize_t and size_t
-	  respectively. Should both be extern linkage.
-	  (stream_recvfrom) Stream aware wrapper around recvfrom, in style
-	  of stream_read_try.
-	* stream.c: (stream_recvfrom) new function, wrapper around recvfrom.
-	  (stream_recvmsg, stream_write) ssize_t and size_t return values
-	  
-2005-04-27 Andrew J. Schorr <ajschorr@alumni.princeton.edu>
-
-	Add wall-clock timing statistics to 'show thread cpu' output.
-	* thread.h: Define struct rusage_t to contain wall-clock time
-	  and cpu time.  Change GETRUSAGE macro to collect both pieces
-	  of data.  Make appropriate changes to struct cpu_thread_history
-	  to track CPU time and real time.  Change proto for
-	  thread_consumed_time to return real and cpu time elapsed.
-	  And declare a new global variable 'struct timeval recent_time'.
-	* thread.c (struct timeval recent_time): New global timestamp variable.
-	  (timeval_adjust): If timeout is negative, set to 0 (not 10
-	  microseconds).  And remove upper bound of 1,000,000 seconds, since
-	  this does not seem to make any sense (and it breaks
-	  funcname_thread_add_timer_timeval).
-	  (timeval_cmp): Should return long, not int.
-	  (vty_out_cpu_thread_history): Show CPU time and real time.
-	  (cpu_record_hash_print): Calculate totals for CPU and real time.
-	  (cpu_record_print): Change 'show thread cpu' title to show CPU and
-	  real time.
-	  (thread_timer_remain_second): Put current time in global recent_time.
-	  (funcname_thread_add_timer_timeval): Fix assert.  Replace 2-case
-	  switch assignment with a ternary expression.  Use global recent_time
-	  variable.  Fix use of timeval_adjust (previously, the value was not
-	  actually being adjusted).
-	  (thread_cancel): Add missing "break" statement in case
-	  THREAD_BACKGROUND.
-	  (thread_timer_wait): Use global recent_time value instead of calling
-	  gettimeofday.  And there's no need to check for negative timeouts,
-	  since timeval_subtract already sets these to zero.
-	  (thread_timer_process): Timers are sorted, so bail out once we
-	  encounter a timer that has not yet popped.  And remove some
-	  extraneous asserts.
-	  (thread_fetch): Do not process foreground timers before calling
-	  select.  Instead, add them to the ready list just after the select.
-	  Also, no need to maintain a count of the number of ready threads,
-	  since we don't care how many there are, just whether there's
-	  one at the head of the ready list (which is easily checked).
-	  Stick current time in global variable recent_time to reduce
-	  the number of calls to gettimeofday.  Tighten logic for
-	  calculating the select timeout.
-	  (thread_consumed_time): Now returns real time and puts the elapsed
-	  cpu time in an additional argument.
-	  (thread_should_yield): Use real (wall-clock) time to decide whether
-	  to yield.
-	  (thread_call): Maintain CPU and real time statistics.
-	* vty.c (vty_command): For slow commands, show real and cpu time.
-
-2005-04-27 Andrew J. Schorr <ajschorr@alumni.princeton.edu>
-
-	* workqueue.c (show_work_queues): Remove unused gettimeofday call.
-
-2005-04-27 Paul Jakma <paul.jakma@sun.com>
-
-	* workqueue.h: (struct work_queue_item) change retry_count to ran,
-	  its a count of number item has been run.
-	* workqueue.c: (show_work_queues) Fix formating of slightly
-	  bugfix: fix SIGFPE if wq->runs is 0.
-	  (work_queue_run) retry logic was slightly wrong.
-	  cycles.best is 0 initialy, granularity is 1, so update best
-	  if cycles >= granularity, not just >.
-	* memory.h: memtypes is built source, default includes points to
-	  top_builddir, so we should refer to lib/memtypes.h
-
-2005-04-26 Andrew J. Schorr <ajschorr@alumni.princeton.edu>
-
-	* buffer.c (buffer_write): Comment out call to buffer_flush_available.
-	  This should speed up buffering at the expense of a possible increase
-	  in latency in flushing the data if inside a long-running thread.
-
-2005-04-25 Paul Jakma <paul.jakma@sun.com>
-
-	* workqueue.{c,h}: Helper API for setting up and running queues via
-	  background threads.
-	* command.c: install the 'show workqueues' command
-	* memtypes.c: Add work queue mtypes, and a rib-queue type for
-	  a zebra rib work queue.
-	* memtypes.h: Updated to match memtypes.c
-	* Makefile.am: Refer to source files via srcdir variable, fix
-	  out-of-tree build breakage.
-	  Add new workqueue files to build.
-	* memory.c: Make the string field much wider
-	* memtypes.c: Correct the prefix list str/entry strings
-	* thread.c: Kill unused TIMER_NO_SORT bits
-
-2005-04-22 Andrew J. Schorr <ajschorr@alumni.princeton.edu>
-
-	* thread.h: Fix type for struct thread_master add_type: should be
-	  unsigned char.  Also, add some documentation of thread_add_background
-	  args.  And remove extraneous declaration of
-	  show_thread_work_queues_cmd.
-
-2005-04-22 Paul Jakma <paul.jakma@sun.com>
-
-	* memory.h: Move include of memtypes.h to after the definition of
-	  struct memory_list, gcc 4.0 doesn't like arrays of incomplete 
-	  types.
-	* thread.h: Add background thread type and thread_add_background
-	  macro and accompanying funcname_... function.
-	  export thread_should_yield, background threads can use it.
-	  Lower thread yield time to 10ms, 100ms is noticeable lag and
-	  a thread would only be /starting/ to finish sometime afterward.
-	* thread.c: (general) Add background thread type and schedule
-	  nearly all thread types through the ready list for fairness.
-	  (timeval_adjust) static qualifier missing
-	  (vty_out_cpu_thread_history) add support for printout of 
-	  background threads
-	  (show_thread_cpu) ditto.
-	  (thread_master_debug) add debug of background list
-	  (thread_master_create) fixup long line
-	  (thread_add_unuse) add asserts for required state.
-	  (thread_master_free) free background thread list
-	  (funcname_thread_add_timer_timeval) make generic, able to 
-	  support arbitrary timer-like thread types.
-	  (funcname_thread_add_timer) pass thread type to .._add_timer_timeval
-	  (funcname_thread_add_timer_msec) ditto
-	  (funcname_thread_add_background) Add a background thread, with an
-	  optional millisecond delay factor, using .._add_timer_timeval.
-	  (thread_cancel) Add background thread type.
-	  Move the thread_list_delete common to all cases to bottom of
-	  function, after the switch statement..
-	  (thread_cancel_event) indent
-	  (thread_timer_wait) Static qualifier, and make it able to cope
-	  with arbitrary timer-like thread lists, so its of use to
-	  background threads too.
-	  (thread_process_fd) static qualifier. Again, make it take a list
-	  reference rather than thread_master. Fix indentation.
-	  (thread_timer_process) Check for ready timer-like threads in the
-	  given list and move them on to the ready list - code originally
-	  embedded in thread_fetch.
-	  (thread_fetch) Schedule all threads, other than events, through
-	  the ready list, to ensure fairness. Timer readying code moved to
-	  thread_timer_process so it can be reused for background threads.
-	  Remove the unneeded quagga_sigevent_process, as pointed out by
-	  John Lin <john.ch.lin@gmail.com>.
-	  (thread_should_yield) make this available.
-	
-2005-04-16 Andrew J. Schorr <ajschorr@alumni.princeton.edu>
-
-	* thread.h (thread_consumed_time): Declare new function to calculate
-	  elapsed microseconds.
-	* thread.c (thread_consumed_time): Must be global not static so we
-	  can call it from lib/vty.c:vty_command.
-	  (thread_should_yield): Surround with `#if 0' to make clear that this
-	  function is not currently being used anywhere.
-	  (thread_call): If CONSUMED_TIME_CHECK is defined, print a CPU HOG
-	  warning message if the thread takes more than CONSUMED_TIME_CHECK
-	  microseconds.
-	* vty.c (vty_command): If CONSUMED_TIME_CHECK is defined, print a CPU
-	  HOG warning message if the command takes more than CONSUMED_TIME_CHECK
-	  microseconds.
-
-2005-04-16 Paul Jakma <paul@dishone.st>
-
-	* memtypes.c: the comment about use of comments in the comments
-	  headers was causing comment within comment warnings from compiler
-	* memtypes.awk: Add extensive comments on the file format for
-	  memtypes.c.
-	  tighten the pattern for the MTYPE matching action (suggestion from
-	  Andrew) and tighten which field we try the match on.
-
-2005-04-15 Paul Jakma <paul@dishone.st>
-
-	* memtypes.c: The new, unified location for memory type definitions.
-	  The memtype enum and declarations for memory_lists are built from
-          this automatically and put into memtypes.h.
-        * memtypes.awk: New script to generate memtypes.h from memtypes.c
-        * memory.h: Finally, the enum can banished!
-        * memory.c: Finally, the seperate mtype memory_list definitions can
-          be banished!
-          (log_memstats) Increase width of fields
-          (show_memory_zebra_cmd) display zebra specific memory types.
-          Increase width of fields.
-        * Makefile.am: Add memtypes.{c,h}, add BUILT_SOURCES for memtypes.h
-          Add a rule to build memtypes.h using memtypes.awk.
-          Add memtypes.awk to EXTRA_DIST.
-	  memtypes.awk is gawk dependent, use the GAWK automake var.
-	* memtypes.h: New file, auto-generated, checked in for convenience.
-
-2005-04-11 Andrew J. Schorr <ajschorr@alumni.princeton.edu>
-
-	* zclient.h (struct zclient): Add two fields to support non-blocking
-	  I/O: struct buffer *wb, and struct thread *t_write.
-	  (zclient_free): Remove function.
-	  (zebra_redistribute_send): Change 2nd arg from socket fd to
-	  struct zclient * (needed to support non-blocking I/O and buffering).
-	  (zclient_send_message): New function to send an arbitrary
-	  message with non-blocking I/O.
-	* zclient.c (zclient_new): Create write buffer.
-	  (zclient_free): Remove unused function.
-	  (zclient_stop): Must cancel new t_write thread.  Also, reset
-	  all buffers: ibuf, obuf, and wb.
-	  (zclient_failed): New helper function for typical error handling.
-	  (zclient_flush_data): New thread to flush queued data.
-	  (zclient_send_message): New function to send the message in
-	  zclient->obuf to zebra using non-blocking I/O and buffering.
-	  (zebra_message_send, zapi_ipv4_route, zapi_ipv6_route): Use
-	  new zclient_send_message function instead of calling writen.
-	  (zclient_start): Set socket non-blocking.  Also, change 2nd arg
-	  to zebra_redistribute_send from zclient->sock to zclient.
-	  (zebra_redistribute_send): Change 2nd arg to struct zclient *.
-	  Can now use zclient->obuf to assemble the message instead of
-	  allocating a temporary stream.  And call zclient_send_message to
-	  send the message instead of writen. 
-	  (zclient_read): Convert to support non-blocking I/O by using
-	  stream_read_try instead of deprecated stream_read.
-	  (zclient_redistribute): Change 2nd arg to zebra_redistribute_send
-	  from zclient->sock to zclient.
-
-2005-04-09 Jeroen Simonetti <jeroens@office.netland.nl>
-
-	* routemap.c: Show description in "show route-map" output.
-
-2005-04-08 Andrew J. Schorr <ajschorr@alumni.princeton.edu>
-
-	* sigevent.c: On GNU_LINUX, check whether __USE_GNU is already defined.
-
-2005-04-08 Andrew J. Schorr <ajschorr@alumni.princeton.edu>
-
-	* vty.c: (vty_log_fixed) Use casts to (void *) to try to eliminate
-	  compiler warnings when assigning a (const char *) value to
-	  struct iovec iov_base.
-
-2005-04-08 Andrew J. Schorr <ajschorr@alumni.princeton.edu>
-
-	* zebra.h: If GNU_LINUX is defined, then define _GNU_SOURCE.  This
-	  fixes a problem where we were not getting the declaration of strnlen
-	  in <string.h>.
-
-2005-04-08 Hasso Tepper <hasso at quagga.net>
-
-	* routemap.[ch]: Added "description ..." command.
-
-2005-04-08 Hasso Tepper <hasso at quagga.net>
-
-	* prefix.[hc]: Pass argument to the inet6_ntoa by value making it more
-	  inet_ntoa alike.
-
-2005-04-07 Paul Jakma <paul.jakma@sun.com>
-
-	* linklist.h: Add usage comments.	  
-	  Rename getdata macro to listgetdata.
-	  Rename nextnode to listnextnode and fix its odd behaviour to be
-	  less dangerous.
-	  Make listgetdata macro assert node is not null, NULL list entries
-          should be bug condition.
-          ALL_LIST_ELEMENTS, new macro, forward-referencing macro for use
-          with for loop, Suggested by Jim Carlson of Sun.
-          Add ALL_LIST_ELEMENTS_RO for cases which obviously do not need the
-          "safety" of previous macro.
-	  LISTNODE_ADD and DELETE macros renamed to ATTACH, DETACH, to
-	  distinguish from the similarly named functions, and reflect their
-	  effect better.
-	  Add a QUAGGA_NO_DEPRECATED_INTERFACES define guarded section 
-	  with the old defines which were modified above, 
-	  for backwards compatibility - guarded to prevent Quagga using it..
-	* linklist.c: fix up for linklist.h changes.
-	* *.c: fix up for new list loop macro, try audit other loop
-          usage at same time, to some degree.
-
-2004-04-05 Hasso Tepper <hasso at quagga.net>
-
-	* lib/prefix.[hc]: inet6_ntoa utility function copied from
-	  ripngd/ripngd.c (inet6_ntop).
-
-2004-04-05 Paul Jakma <paul@dishone.st>
-
-	* vty.c: Improve logging of failures to open vty socket(s).
-	  See bugid #163.
-
-2005-04-02 Andrew J. Schorr <ajschorr@alumni.princeton.edu>
-
-	* if.h: Fix comments to reflect that if_lookup_by_name and
-	  if_get_by_name now require the argument strings to be NUL-terminated.
-	* if.c: (if_lookup_by_name) Compare using strcmp.
-	  (if_get_by_name) Pass strlen(ifname) as 2nd arg to if_create.
-
-2005-04-02 Andrew J. Schorr <ajschorr@alumni.princeton.edu>
-
-	* if.c: (if_nametoindex) The man page is rather vague, but it seems
-	  like the argument to if_nametoindex has an implicit maximum length
-	  of IFNAMSIZ characters.
-
-2005-04-02 Andrew J. Schorr <ajschorr@alumni.princeton.edu>
-
-	* if.h: (if_lookup_by_name_len, if_get_by_name_len) New functions.
-	* if.c: (if_lookup_by_name_len, if_get_by_name_len) New functions.
-	  (if_get_by_name) Tighten up code.
-	  (interface) Use new function if_get_by_name_len.
-	* zclient.c: (zebra_interface_add_read) Use new if_get_by_name_len
-	  function.
-	  (zebra_interface_state_read) Use new if_lookup_by_name_len function.
-
-2005-04-02 Andrew J. Schorr <ajschorr@alumni.princeton.edu>
-
-	* str.c: Replace strlcpy and strlcat with actual working versions
-	  copied from rsync-2.6.2/lib/compat.c.
-
-2005-04-02 Andrew J. Schorr <ajschorr@alumni.princeton.edu>
-
-	* if.h: Remove define for IFINDEX_INTERNBASE and add define
-	  IFINDEX_INTERNAL 0, since all internal (i.e. non-kernel) pseudo-
-	  interfaces should have ifindex set to 0.
-	  (if_new) Remove function.
-	  (if_delete_retain) New function to delete an interface without
-	  removing from iflist and freeing the structure.
-	  (ifname2ifindex) New function.
-	* if.c: (if_new) Remove function (absorb into if_create).
-	  (if_create) Replace function if_new with call to calloc.
-	  Set ifp->ifindex to IFINDEX_INTERNAL.  Fix off-by-one error
-	  in assert to check length of interface name.  Add error message
-	  if interface with this name already exists.
-	  (if_delete_retain) New function to delete an interface without
-	  removing from iflist and freeing the structure.
-	  (if_delete) Implement with help of if_delete_retain.
-	  (ifindex2ifname) Reimplement using if_lookup_by_index.
-	  (ifname2ifindex) New function to complement ifindex2ifname.
-	  (interface) The interface command should check the name length
-	  and fail with a warning message if it is too long.
-	  (no_interface) Fix spelling in warning message.
-	  (if_nametoindex) Reimplement using if_lookup_by_name.
-	  (if_indextoname, ifaddr_ipv4_lookup) Reimplement using
-	  if_lookup_by_index.
-
-2005-04-02 Andrew J. Schorr <ajschorr@alumni.princeton.edu>
-
-	* zebra.h: Should include str.h to pick up missing functions.
-	* str.h: Declare strnlen if needed.
-	* str.c: Do not include str.h since zebra.h now includes it.
-	  (strnlen) New function.
-
-2005-03-16 Andrew J. Schorr <ajschorr@alumni.princeton.edu>
-
-	* zebra.h: Must check whether __attribute__ should be defined before
-	  including zassert.h.
-
-2005-03-14 Paul Jakma <paul.jakma@sun.com>
-
-	* command.c: (sort_node) use vector_max instead of referencing 
-	  (struct vector *)->max directly. Test that vector_max is > 0 
-	  before using it to calculate an index.
-	  Fixup vector loop to make main body conditional on vector slot
-	  not being empty.
-	  (cmd_cmdsize) Fixup vector loop to make main body conditional on
-	  vector slot not being empty.
-	  (cmd_filter_by_completion) ditto
-	  (cmd_filter_by_string) ditto 
-	  (is_cmd_ambiguous) ditto
-	  (cmd_describe_command_real) Change index integers to unsigned.
-	  Test that vector_max is > 0 before using it to calculate an index.
-	  Return immediately with CMD_ERR_NO_MATCH if vline has no 
-	  active slots.
-	  Fixup vector loop to make main body conditional on vector slot
-	  not being empty.
-	  (cmd_complete_command_real) ditto.
-	  (cmd_execute_command_strict) Fixup vector loop to be conditional
-	  on non-null slot.
-	  (various) Fix indentation and other whitespace.
-	  vector.h: Rename to (struct vector).max to slightly less confusing
-	  active, for the number of active slots, distinct from allocated
-	  or active-and-not-empty. Rename vector_max to vector_active 
-	  for same reason.
-
-2005-03-09 Paul Jakma <paul.jakma@sun.com>
-
-	* command.c: Undo commit of sign warning fix and hidden command
-	  in list_cmd. Sign warning is more subtle. list_cmd on its own
-	  will be committed after.
-	* command.c: (config_list_cmd) Don't list hidden or deprecated
-	  commands, hiding these from tab completion is still to be done.
-
-2005-03-08 Paul Jakma <paul.jakma@sun.com>
-
-	* command.c: (banner_motd_file_cmd) use XSTRDUP/XFREE.
-	  (no_banner_motd_cmd) use XFREE.
-	  (cmd_describe_command_real) sign compile warning fix
-	  (cmd_complete_command_real) ditto.
-	  (config_list_cmd) Don't list hidden or deprecated commands,
-	  hiding these from tab completion is still to be done.
-	* command.h: cmd attr enum should start at 1.
-	* vty.c: (vty_hello) suggestions from Andrew, read by line and
-	  stub out trailling non-printable characters on each line thus
-	  allowing us to specify VTY_NEWLINE to vty_out.
-
-2005-03-08 Jeroen Massar <jeroen@unfix.org>
-
-	* vty.c: (vty_hello) display motd file, if set
-	* command.h: add char *motdfile to struct host
-	* command.c: (config_write_host) write out motdfile config
-	  (banner_motd_file_cmd) new command, allow motd to be read from
-	  file.
-	  (no_banner_motd_cmd) free motdfile string, if needs be.
-	  (cmd_init) init (struct host).motdfile. Add new motd file
-	  commands.
-
-2005-03-07 Michael Sandee <voidptr@voidptr.sboost.org>
-
-	* command.c: host.name might be NULL.
-	* vty.c: Fix fd leak.
-
-2005-02-24 Andrew J. Schorr <ajschorr@alumni.princeton.edu>
-
-	* stream.c: (stream_read_try) Log a warning message if a fatal
-	  I/O error occurs.
-	  (stream_fifo_new) Fix prototype.
-	* stream.h: Fix prototype for stream_fifo_new (need void arg).
-
-2005-02-23 Andrew J. Schorr <ajschorr@alumni.princeton.edu>
-
-	* {vty.h,vty.c}: Remove vty_finish (duplicate of vty_reset).
-
-2005-02-23 Andrew J. Schorr <ajschorr@alumni.princeton.edu>
-
-	* buffer.h: Make the struct buffer and struct buffer_data structures
-	  private by moving them inside buffer.c.  Add comments for all
-	  functions.  Rename buffer_write as buffer_put (to be more consistent
-	  with the buffer_putc and buffer_putstr functions).  Declare a new
-	  buffer_write function that is used to write data to a file descriptor
-	  and/or add it to the buffer queue.  Remove unused function
-	  buffer_flush_vty_all.  Create a new enum typedef buffer_status_t
-	  to be used as the return code for all buffer_flush* functions
-	  and buffer_write.
-	* buffer.c: The struct buffer and struct buffer_data declarations
-	  are now private to this file.  In conjunction with that, remove
-	  some unnecessary fields: struct buffer (alloc, unused_head,
-	  unused_tail, length), struct buffer_data (prev).
-	  (buffer_data_new) Removed: functionality incorporated into buffer_add.
-	  (buffer_data_free) Removed: use a macro BUFFER_DATA_FREE instead.
-	  (buffer_new) Use calloc instead of malloc + memset(zero). 
-	  Supply an appropriate default size if the specified size is 0.
-	  (buffer_free) Eliminate code duplication by calling buffer_reset to
-	  free the contents of the buffer (and remove unused code related
-	  to unused_head).
-	  (buffer_empty,buffer_putc,buffer_putstr) Aesthetic change (make more
-	  compact).
-	  (buffer_reset) Use macro BUFFER_DATA_FREE.  No need to set
-	  alloc and length to 0 (these fields have been removed).
-	  (buffer_add) Fix scope to be static.  Call XMALLOC directly instead
-	  of calling removed buffer_data_new function.  Simplify the logic
-	  (since it's now a singly-linked list instead of doubly-linked).
-	  (buffer_write) Renamed to buffer_put.  Change to void, since return
-	  code of 1 was meaningless.  No need to adjust length field, since
-	  it has been removed.
-	  (buffer_putw,buffer_flush,buffer_flush_vty_all,buffer_flush_vty)
-	  Remove unused functions.
-	  (buffer_flush_all) Rewrite using buffer_flush_available to eliminate
-	  a possible failure mode if IOV_MAX is less than the number of buffers
-	  on the queue.
-	  (buffer_flush_window) Incorporate logic from buffer_flush_vty.
-	  Log an error message if there is a writev error.
-	  (buffer_flush_available) Be more paranoid: check for case where
-	  buffer is already empty.  Use new ERRNO_IO_RETRY macro, and use
-	  new enum for return codes.  Simplify deletion logic (since it's
-	  now a singly-linked list).
-	  (buffer_write) New function for use with non-blocking I/O.
-	* vty.h: Replace the struct vty sb_buffer field with a fixed-size
-	  (5-character) sb_buf field and an sb_len field, since using
-	  a struct buffer was inappropriate for this task.  Add some useful
-	  comments about telnet window size negotiation.
-	* vty.c: Include <arpa/telnet.h> (no longer included by zebra.h).
-	  Remove VTY_OBUF_SIZE (instead use buffer_new default size).
-	  Make telnet_backward_char and telnet_space_char static const.
-	  (vty_out) Replace buffer_write with buffer_put.
-	  (vty_log_out) Check for I/O errors.  If fatal, close the vty session.
-	  Consolidate 3 separate writes into a single write call.
-	  (vty_will_echo,vty_command,vty_next_line,vty_previous_line,
-	  vty_end_config,vty_describe_fold,vty_clear_buf,vty_serv_sock_addrinfo,
-	  vty_serv_sock_family,vty_serv_un,vty_use_backup_config,exec_timeout,
-	  vty_config_write,vty_save_cwd) Fix scope to static.
-	  (vty_new) Let buffer_new use its default buffer size.
-	  (vty_write) Fix signature: 2nd arg should be const char *.
-	  Replaced buffer_write with buffer_put.
-	  (vty_telnet_option) Fix minor bug (window height or width greater than
-	  255 was broken).  Use sb_buf and sb_len instead of removed sb_buffer
-	  (which was being used improperly).
-	  (vty_read) On error, use ERRNO_IO_RETRY to decide whether it's fatal.
-	  If the error is fatal, call buffer_reset so vty_close does not attempt
-	  to flush the data.  Use new sb_buf and sb_len instead of sb_buffer
-	  to store the SB negotiation string.
-	  (vty_flush) When vty->lines is 0, call buffer_flush_available instead
-	  of buffer_flush_window.  Look at the return code from buffer_flush
-	  to detect I/O errors (and in that case, log an error message and
-	  close the vty).
-	  (vty_create) Fix scope to static.  Initialize sb_len to 0 instead
-	  of creating sb_buffer.
-	  (vty_accept) Set socket nonblocking.
-	  (vtysh_accept) Use new set_nonblocking function instead of calling
-	  fcntl directly.
-	  (vtysh_flush) New function called from vtysh_read (after command
-	  execution) and from vtysh_write.  This flushes the buffer
-	  and reacts appropriately to the return code (by closing the vty
-	  or scheduling further flushes).
-	  (vtysh_read) Check whether error is fatal using ERRNO_IO_RETRY.
-	  If not, just try again later.  Otherwise, call buffer_reset before
-	  calling vty_close (to avoid trying to flush the buffer in vty_close).
-	  Fix logic to allow case where a command does not arrive atomically
-	  in a single read call by checking for the terminating NUL char.
-	  (vtysh_write) Use new vtysh_flush helper function.
-	  (vty_close) No need to call buffer_empty, just call buffer_flush_all
-	  in any case (it will check whether the buffer is empty).
-	  Do not free sb_buffer (since it has been removed).
-	  (vty_log_fixed) Use writev instead of write.
-	* zebra.h: Do not include <arpa/telnet.h>, since this is used only
-	  by lib/vty.c.
-
-2005-02-21 Vincenzo Eramo <eramo at infocom.ing.uniroma1.it>
-
-	* pqueue.[ch]: Introduce "update" function to meet ospf spf needs. It
-	  will allow to update node when:
-	  i) a node is inserted into the priority queue;
-	  ii) a node position is modified in the priority queue;
-	* pqueue.h: Export trickle_down() function.
-
-2005-02-19 Paul Jakma <paul.jakma@sun.com>
-
-	* stream.c: (stream_new) fix dumb mistake.
-
-2005-02-17 Andrew J. Schorr <ajschorr@alumni.princeton.edu>
-
-	* stream.c: (stream_read_try) Use new ERRNO_IO_RETRY macro.
-
-2005-02-17 Andrew J. Schorr <ajschorr@alumni.princeton.edu>
-
-	* network.h: Define a new ERRNO_IO_RETRY macro to test whether an I/O
-	  operation should be retried.  This eliminates the need to duplicate
-	  the same logic testing for EAGAIN or EINTR in multiple places.
-
-2005-02-16 Andrew J. Schorr <ajschorr@alumni.princeton.edu>
-
-	* stream.h: Declare new function stream_read_try suitable for use
-	  with non-blocking file descriptors.  Indicate that stream_read
-	  and stream_read_unblock are deprecated.
-	* stream.c: (stream_read_try) New function for use with non-blocking
-	  I/O.
-	  (stream_recvmsg) Should return -1 if the stream is too small to
-	  contain the data.
-
-2005-02-16 Andrew J. Schorr <ajschorr@alumni.princeton.edu>
-
-	* network.c: (set_nonblocking) Should check return code from
-	  fcntl(F_GETFL).
-
-2005-02-15 Andrew J. Schorr <ajschorr@alumni.princeton.edu>
-	
-	* network.h: Declare new function set_nonblocking.  Indicate that
-	  readn and writen are deprecated.
-	* network.c: (set_nonblocking) New function to make a file descriptor
-	  non-blocking, since it seems silly to have fcntl calls sprinkled
-	  throughout the code.
-
-2005-02-14 Paul Jakma <paul.jakma@sun.com>
-
-	* stream.h: Unsigned long updated to size_t
-	* stream.c: ditto
-	* stream.h: Add stream_copy, stream_dup, stream_recvmsg.
-	  Add comment describing struct stream abstraction, and various
-	  other comments.
-	  Deprecate several unsafe/ambigious macros.
-	  Add STREAM_WRITEABLE and STREAM_READABLE.
-	  Add (stream_getl_from) for symmetry.
-	  Update stream_forward_{endp,getp} to use size_t offset.
-	  Make stream data a 0 length array, rather than a seperate malloc.
-	* stream.c: Add consistency checks. Update to follow stream.h
-	  changes.
-	  (stream_new) Alloc stream+data in one go.
-	  (stream_copy) new function, copy a stream.
-	  (stream_dup) new function, dup a stream.
-	  (stream_recvmsg) new function, recvmsg data into a stream.
-	  (stream_empty) no need to check getp == 0.
-
-2005-02-09 Paul Jakma <paul.jakma@sun.com>
-
-	* stream.h: Remove putp. Update reference to putp with endp.
-	  Add stream_forward_endp, which daemons were doing manually.
-	  Rename stream_forward to stream_forward_getp.
-	  stream.c: Remove/update references to putp.
-	  introduce stream_forward_endp.
-
-2005-02-08 Andrew J. Schorr <ajschorr@alumni.princeton.edu>
-
-	* zebra.h: Change macro definitions SET_FLAG and UNSET_FLAG
-	  to use compound assignment operators (aesthetic change).
-
-2005-02-03 Andrew J. Schorr <ajschorr@alumni.princeton.edu>
-
-	* log.c: (zlog_signal,zlog_backtrace_sigsafe) Eliminate use of fileno()
-	  since it is not async-signal-safe.
-	  (_zlog_assert_failed) Rewrite crashlog logic more compactly.
-	  (zlog_set_file,zlog_reset_file,zlog_rotate) Update logfile_fd
-	  for use in signal handler.
-
-2005-02-03 Andrew J. Schorr <ajschorr@alumni.princeton.edu>
-
-	* log.c: (syslog_sigsafe) Reduce scope of syslog_fd: it is accessed
-	  inside this function only.
-	  (open_crashlog) New function to open /var/tmp/quagga.<daemon>.crashlog
-	  with flags O_WRONLY|O_CREAT|O_EXCL to save some crash info.
-	  (zlog_signal,_zlog_assert_failed) Increase logging priority from
-	  LOG_ERR to LOG_CRIT.  If no file logging is configured, try to use
-	  open_crashlog to create a crash logfile.
-	  (zlog_backtrace_sigsafe) If a crashlog file descriptor is open,
-	  dump a backtrace to that file.
-
-2005-02-02 Andrew J. Schorr <ajschorr@alumni.princeton.edu>
-
-	* if.h: Declare if_flag_dump.
-
-2005-01-30 Andrew J. Schorr <ajschorr@alumni.princeton.edu>
-
-	* daemon.c: (daemon) Replace perror with zlog_err.
-	* vty.c: (vty_serv_un) Replace perror with zlog_err.
-
-2005-01-29 Andrew J. Schorr <ajschorr@alumni.princeton.edu>
-
-	* buffer.h: Fix comment on buffer_getstr to reflect that it now
-	  uses XMALLOC.
-	* buffer.c: (buffer_getstr) Use XMALLOC(MTYPE_TMP) instead of malloc.
-	* filter.c: (access_list_remark,ipv6_access_list_remark) Use
-	  argv_concat instead of buffer_getstr.
-	* if.c: (interface_desc) Use argv_concat instead of buffer_getstr.
-	* plist.c: (ip_prefix_list_description,ipv6_prefix_list_description)
-	  Use argv_concat instead of buffer_getstr.
-
-2005-01-28 Andrew J. Schorr <ajschorr@alumni.princeton.edu>
-
-	* lib/buffer.h: Document behavior of buffer_getstr function.
-	* lib/buffer.c: (buffer_getstr) Fix bug: must handle case where
-	  the string extends beyond the head struct buffer_data.
-
-2005-01-28 Andrew J. Schorr <ajschorr@alumni.princeton.edu>
-
-	* lib/command.h: Document behavior of argv_concat function.
-	* lib/command.c: (argv_concat) Calculate total string length first so
-	  we can call malloc just once (instead of realloc'ing to add each
-	  string element).
-	  (do_echo,config_logmsg) Allow for possible NULL return value from
-	  argv_concat.
-
-2005-01-23 Hasso Tepper <hasso at quagga.net>
-
-	* lib/command.[ch]: Make node_parent() function nonstatic. vtyh.c will
-	  use it as well.
-
-2005-01-18 Andrew J. Schorr <ajschorr@alumni.princeton.edu>
-
-	* log.h: Test for SA_SIGINFO to see whether zlog_signal takes final
-	  two args (siginfo and program_counter).
-	* log.c: (hex_append) Include this function only if SA_SIGINFO or
-	  HAVE_GLIBC_BACKTRACE is defined.
-	  (zlog_signal) Final two args (siginfo and program_counter) now
-	  depend on whether SA_SIGINFO is defined on this platform.
-	* sigevent.c: (program_counter) Do not include this function if
-	  SA_SIGINFO is not defined on this platform.
-	  (exit_handler,core_handler) Test for SA_SIGINFO to decide whether
-	  2nd & 3rd arguments are present and to decide how to invoke
-	  zlog_signal.
-	  (trap_default_signals) Test for SA_SIGINFO and invoke sigaction
-	  appropriately.
-
-2005-01-17 Andrew J. Schorr <ajschorr@alumni.princeton.edu>
-
-	* log.h: Change prototype for zlog_backtrace_sigsafe to take additional
-	  program_counter argument.
-	* log.c: (zlog_backtrace_sigsafe) Add additional program_counter
-	  argument.  If it is non-NULL, use backtrace_symbols_fd to resolve
-	  the address.
-	  (zlog_signal) Call zlog_backtrace_sigsafe with additional
-	  program_counter argument.
-
-2005-01-17 Hasso Tepper <hasso at quagga.net>
-
-	* command.[ch], vty.c: cmd_execute_command() function must not attempt
-	  to walk up in the node tree if called from vtysh. Different daemons
-	  might have commands with same syntax in different nodes (for example
-	  "router-id x.x.x.x" commands in zebra/ospfd/ospf6d daemons).
-
-2005-01-14 Andrew J. Schorr <ajschorr@alumni.princeton.edu>
-
-	* command.c (print_version): Do not bother even to examine host.name,
-	  since it is always NULL when this function is called from main.
-
-2005-01-14  Greg Troxel  <gdt@fnord.ir.bbn.com>
-
-	* command.c (print_version): Don't print host.name if it is NULL.
-	Fixes segfault on Solaris reported by Goetz von Escher <goetz@open.ch>
-	
-2005-01-12 Andrew J. Schorr <ajschorr@alumni.princeton.edu>
-
-	* sigevent.c: (trap_default_signals) Use the SA_SIGINFO flag to
-	  pass additional siginfo_t and ucontext_t arguments to core_handler
-	  and exit_handler.
-	  (core_handler,exit_handler) Now invoked with 3 arguments (using
-	  SA_SIGINFO).  Pass additional info to zlog_signal.
-	  (program_counter) New function to find program counter in ucontext_t,
-	  needs to be enhanced to support more platforms (currently works only
-	  on Linux/x86).
-	* log.h: Change the zlog_signal prototype to add new arguments
-	  siginfo_t * and program_counter.
-	* log.c: (zlog_signal) Add new arguments siginfo and program_counter.
-	  Include si_addr and program counter (if non-NULL) in message.
-	  And remove #ifdef HAVE_GLIBC_BACKTRACE around hex_append, since
-	  that is now used to render the si_addr and PC pointers.
-
-2005-01-12 Andrew J. Schorr <ajschorr@alumni.princeton.edu>
-
-	* zebra.h: If not C99 and no va_copy macro available, fall back to
-	  memcpy (solves a build problem on FreeBSD 4.x).
-
-2005-01-04 Andrew J. Schorr <ajschorr@alumni.princeton.edu>
-
-	* zebra.h: Define ZCMSG_FIRSTHDR appropriately based on whether
-	  config.h indicates HAVE_BROKEN_CMSG_FIRSTHDR (as determined
-	  by the configure test program).
-	* sockopt.c: (getsockopt_cmsg_data) Use ZCMSG_FIRSTHDR instead
-	  of CMSG_FIRSTHDR.
-
-2005-01-02 Hasso Tepper <hasso at quagga.net>
-
-	* command.c: Revert int -> unsigned int fixes in
-	cmd_describe_command_real() and cmd_complete_command_real(). index can
-	be actually negative and it caused crash with "do<TAB>" in vty.
-
-2004-12-29  Greg Troxel  <gdt@poblano.ir.bbn.com>
-
-	* sockopt.c (getsockopt_ipv4_ifindex): Document calling
-	convention.  Beef up comments.  Handle the case where the cmsghdr
-	has a zero controllen, or more specifically when the wanted option
-	is not present.  This is needed for Solaris 8, and in general for
-	any platform for which configure finds a method and it can fail.
-	Mark some changes with XXX to be cleaned up post 0.98.	
-	
-2004-12-28 Andrew J. Schorr <ajschorr@alumni.princeton.edu>
-
-	* sockopt.c: (setsockopt_ipv4_ifindex) Improve error message.
-	  When neither IP_PKTINFO nor IP_RECVIF is defined, make return value
-	  deterministic (-1).
-
-2004-12-28 Andrew J. Schorr <ajschorr@alumni.princeton.edu>
-
-	* thread.c: (funcname_thread_add_timer_msec) Reduce overflow risk.
-
-2004-12-21 Paul Jakma <paul.jakma@sun.com>
-
-	* if.h: Add more 'non-generic' IFF_ flags.
-	* if.c: IFF_NOXMIT/IFF_VIRTUAL interfaces are 'loopback like'
-	* stream.c: Dont allocate streams with 0 sized data buffers
-
-2004-12-17 Andrew J. Schorr <ajschorr@alumni.princeton.edu>
-
-	* command.c: (do_echo) Added new "echo" command, useful for
-	  watchdog pinging to make sure the daemon is responsive.
-
-2004-12-17 Andrew J. Schorr <ajschorr@alumni.princeton.edu>
-	
-	* pid_output.c: (pid_output_lock) Eliminate static function, and just
-	  use the #ifdef to decide which version of the function to include.
-	  This eliminates a compilation problem with gcc4.  And fix the
-	  non-fcntl version so that it actually compiles.  Exit with
-	  status 1 instead of -1 on error.
-
-2004-12-15 Andrew J. Schorr <ajschorr@alumni.princeton.edu>
-
-	* sigevent.c: (trap_default_signals) Ignore SIGPIPE instead of exiting.
-
-2004-12-10 Andrew J. Schorr <ajschorr@alumni.princeton.edu>
-	
-	* log.c: (zlog_signal,_zlog_assert_failed) Change logging level back to
-	  LOG_ERR instead of LOG_EMERG.
-
-2004-12-09 Andrew J. Schorr <ajschorr@alumni.princeton.edu>
-
-	* log.c: (hex_append) No need to include this function if
-	  HAVE_GLIBC_BACKTRACE is not defined.
-
-2004-12-08 Andrew J. Schorr <ajschorr@alumni.princeton.edu>
-
-	* prefix.c: (prefix_copy) Error message before abort should
-	  have severity LOG_ERR, not LOG_INFO.
-	* memory.c: (mtype_log) Log level should be LOG_DEBUG, not LOG_INFO.
-
-2004-12-07 Andrew J. Schorr <ajschorr@alumni.princeton.edu>
-
-	* {smux.c,zclient.c}: Change level of debug messages to LOG_DEBUG.
-
-2004-12-07 Andrew J. Schorr <ajschorr@alumni.princeton.edu>
-
-	* command.c: (config_write_host) Note that "log trap" is deprecated
-	  when writing out the config.
-
-2004-12-07 Andrew J. Schorr <ajschorr@alumni.princeton.edu>
-
-	* log.h: Replace struct zlog flags and maskpri fields with maxlvl
-	  array to support individual logging levels for each destination.
-	  Remove the 2nd argument to openzlog since the default logging config
-	  should be standardized inside the library.  Replaced the
-	  zlog_set_flag and zlog_reset_flag functions with zlog_set_level.
-	  And zlog_set_file now requires an additional log_level argument.
-	  Declare zlog_proto_names for use inside command.c in the
-	  "show logging" command.  Added defines useful for command
-	  construction.
-	* log.c: (vzlog) Decide where to send the message based on the
-	  individual logging levels configured for each destination.
-	  Remove support for ZLOG_STDERR since it was never actually used.
-	  Support record-priority for terminal monitors.
-	  (zlog_signal,zlog_backtrace_sigsafe) Support destination-specific
-	  logging levels.  Remove stderr support (was never used).  Added
-	  support for terminal monitor logging.
-	  (_zlog_assert_failed) Increase message severity to LOG_EMERG.
-	  (openzlog) Remove 2nd argument since default config should be
-	  standardized in library.  By default, terminal monitoring
-	  is set to debug, and all other logging is disabled.
-	  (zlog_set_flag,zlog_reset_flag) Removed.
-	  (zlog_set_level) New function to replace zlog_set_flag and
-	  zlog_reset_flag.  Supports destination-specific logging levels.
-	  (zlog_set_file,zlog_reset_file) Support file-specific logging level.
-	  (zlog_rotate) Log an error message if fopen fails, and support
-	  new file-specific logging level.
-	* command.h: Change DEFUN_CMD_FUNC_DECL and DEFUN_CMD_FUNC_TEXT so that
-	  command functions will be static instead of global.  Remove
-	  declarations for config_exit and config_help.  Define new macros
-	  DEFUNSH_ATTR, DEFUNSH_HIDDEN, and DEFUNSH_DEPRECATED so we can
-	  have deprecated commands in vtysh.  Similarly, for completeness,
-	  define macros ALIAS_SH, ALIAS_SH_HIDDEN, and ALIAS_SH_DEPRECATED.
-	  Also, fix bug in ALIAS_ATTR macro (didn't matter because it
-	  was never used).
-	* command.c: Make many functions static instead of global.
-	  (facility_name,facility_match,level_match) New functions
-	  to support enhanced destination-specific logging levels.
-	  (config_write_host) Support new destination-specific logging levels.
-	  (config_logmsg) Added new "logmsg" command to help test logging
-	  system.
-	  (show_logging) Added "show logging" command to show the current
-	  configuration of the logging system.
-	  (config_log_stdout_level) Support explicit stdout logging level.
-	  (no_config_log_stdout) Now takes optional LEVEL arg.
-	  (config_log_monitor,config_log_monitor_level,no_config_log_monitor)
-	  New commands creating new "log monitor" commands to set terminal
-	  monitoring log level.
-	  (config_log_file_level) Support explicit file logging level.
-	  (config_log_syslog_level) Support explicit syslog logging level.
-	  (config_log_facility,no_config_log_facility) Implement new
-	  "log facility" command.
-	  (cmd_init) Add hooks for new commands: "show logging", "logmsg",
-	  "log stdout <level>", "log monitor", "log monitor <level>",
-	  "no log monitor", "log file <filename> <level>",
-	  "no log file <filename> <level>", "log syslog <level>",
-	  "log facility", and "no log facility".
-	* vty.h: Added a "level" argument to vty_log so it can support
-	  "log record-priority".  Declare new function vty_log_fixed for
-	  use in signal handlers.
-	* vty.c: (vty_log,vty_log_out) Added a "level" argument to support
-	  "log record-priority" for vty terminal monitors.
-	  (vty_down_level) Use config_exit_cmd.func instead of calling
-	  config_exit directly (since command functions will now be static
-	  instead of global).
-	  (vty_log_fixed) New function to send terminal monitor messages
-	  from inside a signal handler.
-
-2004-12-03 Andrew J. Schorr <ajschorr@alumni.princeton.edu>
-
-	* log.h: Document appropriate use of syslog logging priorities
-	  inside quagga.
-
-2004-12-03 Andrew J. Schorr <ajschorr@alumni.princeton.edu>
-
-	* command.h: Remove fields log_stdout and log_syslog from struct host,
-	  since they are just trying to duplicate information in the
-	  zlog_default structure.  Note that this fixes a bug since those
-	  fields were not registering any logging that was established
-	  in the initial call to openzlog (this affects only the zebra and
-	  ospf6d daemons).  It is probably a bug to turn on any logging by
-	  default in the call to openzlog.
-	* command.c: (config_write_host) Get logging info from zlog_default
-	  instead of now-removed fields host.log_stdout and host.log_syslog.
-	  (config_log_stdout,no_config_log_stdout) Do not set now-removed field
-	  host.log_stdout, since this info is recorded in zlog_default.
-	  (config_log_file) Use XSTRDUP (instead of strdup) to set host.logfile.
-	  (config_log_syslog,config_log_syslog_facility,no_config_log_syslog)
-	  Do not set now-removed field host.log_syslog, since this info is
-	  recorded in zlog_default.
-
-2004-12-03 Andrew J. Schorr <ajschorr@alumni.princeton.edu>
-
-	* version.h.in: Remove declaration for pid_output_lock, this function
-	  is now static, not global.
-	* pid_output.c: (pid_output_lock) This function should be static, not
-	  global.  And remove "old umask" error message, since it was really
-	  an unimportant debug message, not an error.
-	  (pid_output) Need to declare static function pid_output_lock.
-
-2004-11-28 Andrew J. Schorr <ajschorr@alumni.princeton.edu>
-
-	* log.h: Remove several unused fields from struct zlog.  Add comments
-	  for other fields, and add one new field syslog_options that is
-	  used in the new syslog_sigsafe implementation.
-	* log.c: (syslog_sigsafe) New function to send syslog messages in
-	  an async-signal safe way that can be used inside a signal handler.
-	  (syslog_connect) New function to connect to syslog daemon inside a
-	  signal handler.  This function supports only systems where /dev/log
-	  is a unix datagram socket (e.g. not Solaris).
-	  (zlog_signal) Call syslog_sigsafe if syslog logging is enabled.
-	  (zlog_backtrace_sigsafe) Call syslog_sigsafe if syslog logging is
-	  enabled.
-	  (openzlog) Save syslog_options for use in syslog_sigsafe.
-	  (num_append) Fix bug: handle 0 properly.
-	  (hex_append) New function to print a u_long in hex format.
-
-2004-11-28 Hasso Tepper <hasso at quagga.net>
-
-	* command.h: DEFUN_DEPRECATED passes attribute to DEFUN as well.
-
-2004-11-26 Andrew J. Schorr <ajschorr@alumni.princeton.edu>
-
-	* log.c, log.h, memory.c: Change function name from zlog_backtrace_safe
-	  to the more self-explanatory zlog_backtrace_sigsafe.
-
-2004-11-26 Andrew J. Schorr <ajschorr@alumni.princeton.edu>
-
-	* debug.[ch]: Remove unused files.
-	* Makefile.am: Remove references to debug.c and debug.h
-
-2004-11-26 Andrew J. Schorr <ajschorr@alumni.princeton.edu>
-
-	* log.c: (zlog_backtrace) New function to log a backtrace.
-	  (zlog_backtrace_safe) Log a backtrace in an async-signal-safe way.
-	  Unfortunately, this function does not support syslog logging yet.
-	  (zlog_signal) Move backtrace code into separate function
-	  zlog_backtrace_safe.
-	  (_zlog_assert_failed) Call zlog_backtrace before aborting.
-	* log.h: Declare new functions zlog_backtrace and zlog_backtrace_safe.
-	* memory.c: (zerror) Call zlog_backtrace before aborting.
-
-2004-11-26 Andrew J. Schorr <ajschorr@alumni.princeton.edu>
-
-	* Makefile.am: Need to add zassert.h to pkginclude_HEADERS.
-
-2004-11-25 Andrew J. Schorr <ajschorr@alumni.princeton.edu>
-
-	* zebra.h: If not C99 and there's no va_copy macro and there is
-	  a __va_copy macro, define va_copy as __va_copy.
-
-2004-11-25 Andrew J. Schorr <ajschorr@alumni.princeton.edu>
-
-	* pid_output.c: (pid_output_lock) Fix 2 bugs: when locking, should
-	  set l_whence to SEEK_SET, not SEEK_END.  And after writing new
-	  pid to file, must ftruncate to eliminate any extraneous bytes left
-	  over from the last time a pid was written.
-
-2004-11-24 Andrew J. Schorr <ajschorr@alumni.princeton.edu>
-
-	* zassert.h: New header file to declare a quagga-specific assert macro.
-	* log.c: (_zlog_assert_failed) New function called when assert fails
-	  to log the error and abort.
-	* zebra.h: Include "zassert.h" instead of <assert.h>.
-	* regex.c: Include "zassert.h" instead of <assert.h>.
-
-2004-11-23 Andrew J. Schorr <ajschorr@alumni.princeton.edu>
-
-	* sigevent.c: (signal_init) Set up some default signal handlers
-	  so that processes will issue an error message before terminating
-	  or dumping core.
-	  (trap_default_signals) New function to set up signal handlers
-	  for various signals that may kill the process.
-	  (exit_handler) Call zlog_signal, then _exit.
-	  (core_handler) Call zlog_signal, then abort.
-	* log.h: Declare new function zlog_signal.
-	* log.c: (zlog_signal) New function to log information about
-	  a received signal before the process dies.  Try to log a 
-	  backtrace also.
-	  (quagga_signal_handler,signal_set) Should be static.
-
-2004-11-23 Andrew J. Schorr <ajschorr@alumni.princeton.edu>
-
-	* log.c: (vzlog) Take a single va_list argument and use va_copy
-	  as necessary for multiple traversals.
-	  (zlog) Pass only one va_list to vzlog.
-	  (zlog_*,plog_*) Use a macro for boilerplate code; pass only one
-	  va_list to vzlog.
-	  (zlog_set_file) Remove unused 2nd argument (flags).
-	  (zlog_save_cwd,zlog_get_cwd,zlog_free_cwd) Remove unused functions.
-	* log.h: Remove ZLOG_*_INDEX defines (no longer used).
-	  Remove unused 2nd argument from zlog_set_file prototype.
-	  Fix prototype for zlog_rotate.
-	* command.c: (config_log_file) Remove unused 2nd arg to zlog_set_file.
-	* vty.c: (vty_out) Fix stdarg usage to perform multiple traversals
-	  properly.
-	  (vty_log) Must use va_copy for multiple traversals of va_list arg.
-
-2004-11-19 David Young <dyoung@pobox.com>
-
-	* log.c: (safe_strerror) New function: safe wrapper for strerror.
-
-2004-11-19 Andrew J. Schorr <ajschorr@alumni.princeton.edu>
-
-	* sockopt.c: (setsockopt_so_recvbuf) Stop error message from being
-	  printed every time.
-
-2004-11-16 Andrew J. Schorr <ajschorr@alumni.princeton.edu>
-
-	* memory.h: Fix prototype for memory_init().
-	* memory.c: Declare many functions and data structures static instead
-	  of global.  Fix prototype for memory_init().
-
-2004-11-15  Greg Troxel  <gdt@fnord.ir.bbn.com>
-
-	* sockopt.h: Avoid CMSG_ALIGN, and declare that sizes are without
-	alignment (users should use CMSG_SPACE).
-
-	* zebra.h: Rationalize CMSG_SPACE compatibility defines.  Warn if
-	asumming 4-byte alignment, since this isn't safe.
-
-2004-11-15 Andrew J. Schorr <ajschorr@alumni.princeton.edu>
-
-	* memory.c: (zerror) Use zlog_err instead of fprintf to stderr.
-	  Instead of exiting, log currenty memory usage and then abort.
-	  (log_memstats) New function to log memory statistics, called by
-	  zerror.
-	  (show_memory_all) Loop over new mlists array instead of calling
-	  show_memory_vty separately for each memory_list.
-
-2004-11-08 Paul Jakma <paul@dishone.st>
-
-	* buffer.c: Add missing include of log.h.
-	  (buffer_flush_available) written is compared against
-	  mostly against unsigned types, only for the writev do we need
-          signed compare, so declare it as size_t and cast it to ssize_t
-          just for the error compare when we've called writev.
-	* buffer.h: Add comment that buffer data sizes really should be 
-          size_t.
-
-2004-11-07 Paul Jakma <paul@dishone.st>
-
-	* version.h.in: add autoconf configure_input output var
-
-2004-11-04 Andrew J. Schorr <ajschorr@alumni.princeton.edu>
-
-	* vty.h: Remove fields in struct vty that were related to VTY_CONTINUE
-	  capabilities (that were used only in bgpd/bgp_route.c and are now
-	  removed).  Also remove some other fields that were not being
-	  used at all.
-	* vty.c: (vty_execute) Do not test for obsolete status values VTY_START
-	  and VTY_CONTINUE.
-	  (vty_read) Remove calls to vty->output_func since that was part
-	  of the VTY_CONTINUE infrastructure that has been removed.
-	  (vty_flush) Remove code to support VTY_START and VTY_CONTINUE.
-	  (vty_close) Remove code to cancel vty->t_output thread, since that
-	  thread was never actually used.
-
-2004-11-04 Andrew J. Schorr <ajschorr@alumni.princeton.edu>
-
-	* vty.c: Vtysh connections to daemons should use buffering.
-	  (vty_out) Remove exception for vty_shell_serv, just use buffer_write.
-	  (vty_new) Increase output buffer size to 4096 rounded up to a
-	  multiple of pagesize.
-	  (vtysh_read) After command has been executed and all output buffered,
-	  call buffer_flush_available and schedule further writes if the
-	  buffers are not yet empty.
-	  (vtysh_write) New function to flush output to vtysh when the socket
-	  is writeable.
-	  (vty_event) Added new VTYSH_WRITE event for flushing buffers to vtysh
-	  clients.  Also, should save read thread in vty->t_read so the
-	  thread can be cancelled in vty_close.
-	* buffer.h: In struct buffer_data, remove unused "parent" field.
-	  Convert "unsigned char *data" to "unsigned char data[0]" to save
-	  a malloc.  Declare new function buffer_flush_available that works
-	  with non-blocking sockets.
-	* buffer.c: (buffer_data_new) Use a single malloc now that data is
-	  a variable-size array at end of structure.
-	  (buffer_data_free) Just a single free now that data is part of the
-	  structure.
-	  (buffer_write) Simplify the logic to make behavior more transparent.
-	  (buffer_flush) Decrease b->length as data is written out.
-	  (buffer_flush_vty_all) Decrease b->length as buffers are freed.
-	  (buffer_flush_vty) Decrease b->length as data is written out.
-	  (buffer_flush_available) New function to flush non-blocking sockets.
-	  
-2004-11-01 Paul Jakma <paul@dishone.st>
-
-	* sockopt.c: (setsockopt_pktinfo) remove, its unused.
-
-2004-10-31 Paul Jakma <paul@dishone.st>
-
-	* vty.c: As per Andrew's suggestions..
-	  (vty_serv_un) remove flags.
-	  (vtysh_accept) close socket if we cant set NONBLOCK. Add flags.
-	* keychain.c: Convert some more strtoul users to VTY_GET_INTEGER.
-	* memory.h: Add MTYPE_THREAD_FUNCNAME and MTYPE_THREAD_STATS
-	* thread.c: Update stats and funcname alloc/free to use previous
-	  specific memory type defines. Use XCALLOC and sizeof the type,
-          not the pointer.
-	* smux.c: fix int to size_t compile warnings
-
-2004-10-29 Paul Jakma <paul@dishone.st>
-
-	* vty.c: Move setting of sock to O_NONBLOCK from vty_serv_un
-	  to vtysh_accept, where sock is the actual fd we wanted to set to
-          O_NONBLOCK, ie the /connected/ vtysh unix socket.
-
-2004-10-23 Hasso Tepper <hasso at quagga.net>
-
-	* zclient.c: Unbreak reading interface update message. Might fix
-	blocker bugzilla #109.
-
-2004-10-22 Paul Jakma <paul@dishone.st>
-
-	* sockopt.c: (getsockopt_ipv4_ifindex) no ifindex should be 0, not
-          -1. 
-          (setsockopt_pktinfo) unexported
-	* sockopt.h: Cleanup SOCKOPT_CMSG defines a bit. Add a throwaway
-          define for SOPT_SIZE_CMSG_IFINDEX_IPV4 for systems which have
-          neither IP_RECVIF nor IP_PKTINFO (eg openbsd), thanks to Rivo
-          Nurges for highlighting problem and fix.
-          Fix elif that should be an else.
-	* command.h: Cleanup the defines a bit, add helper defines and
-	  collapse all defines to use those. Add an attribute field to
-	  cmd_element to support, eg hidden or deprecated commands, add
-          defun defines for such. All that's left to do is add logic
-          to command.c to check these attributes... ;)
-	* zebra.h: reserve ZEBRA_ROUTE_HSLS
-
-2004-10-19 Hasso Tepper <hasso at quagga.net>
-
-	* version.h.in: Define copyright string QUAGGA_COPYRIGHT.
-	* print_version.c: Remove. print_version () function moved to
-	  command.[c|h].
-	* command.c: Use QUAGGA_COPYRIGHT.
-	* Makefile.am: Remove useless version.c and print_version.c files.
-
-2004-10-19 Andrew J. Schorr <aschorr@telemetry-investments.com>
-
-	* zclient.c: (zebra_interface_address_read) If the destination address
-	  is encoded as all zeroes, load it as a NULL pointer.
-	* if.h: Add comment describing struct connected destination field
-	  and indicating that it may be NULL.  Define macros
-	  CONNECTED_DEST_HOST and CONNECTED_POINTOPOINT_HOST to help
-	  with PtP logic (distinguish between host and subnet addressing).
-	* if.c: (if_lookup_address) Fix PtP logic to handle subnet addressing
-	  properly,
-	  (connected_lookup_address) ditto.
-	  (connected_add_by_prefix) Handle case where destination is NULL,
-	* prefix.[c|h]: New functions ipv4_network_addr and
-	  ipv4_broadcast_addr.
-
-2004-10-13 Hasso Tepper <hasso at quagga.net>
-
-	* command.c: Make CMD_ERR_NOTHING_TODO nonfatal if reading
-	  configuration from file. Fixes critical bugzilla #113.
-	* smux.c, smux.h: Remove all defaults to initialize smux connection to
-	  snmpd by default even if not configured to do so. "smux peer OID
-	  <password>" initializes now connection and "no smux peer" terminates
-	  it.
-
-2004-10-13 Paul Jakma <paul@dishone.st>
-
-	* (global) more const'ification.
-	* sockunion.c: (sockunion_su2str) buffer should be sized
-          SU_ADDRSTRLEN.
-          (sockunion_log) do not return stack variables, strdup buf before
-          return.
-        * vty.h: Fix up the VTY_GET_INTEGER macros. Testing caller supplied
-          values against ULONG_MAX is daft, when caller probably has passed
-          a type that can not hold ULONG_MAX. use a temporary long instead.
-          Add VTY_GET_LONG, make VTY_GET_INTEGER_RANGE use it, make
-	  VTY_GET_INTEGER a define for VTY_GET_INTEGER_RANGE.
-
-2004-10-11 Hasso Tepper <hasso at quagga.net>
-
-	* command.h: Sync DEFUNSH with other macros.
-	* sockunion.c, sockunion.h: More const strings.
-
-2004-10-11 Paul Jakma <paul@dishone.st>
-
-	* thread.c: (funcname_thread_add_timer) 
-	  (funcname_thread_add_timer_msec) Fix mistakes from last change.
-	  Pointed out by Liu Xin in [quagga-dev 1609].
-	* if.h: mtu's should be unsigned.
-	* routemap.{c,h}: const char updates
-	* smux.{c,h}: ditto
-
-2004-10-10 Paul Jakma <paul@dishone.st>
-
-	* version.h.in: (pid_output*) add const qualifier.
-	* command.h: Change DEFUN func to take const char *[] rather
-          than char **, to begin process of fixing compile warnings in lib/.
-          Nearly all other changes in this commit follow from this change.
-        * buffer.{c,h}: (buffer_write) pointer-arithmetic is gccism, take
-          const void * and cast an automatic const char *p to it.
-          (buffer_putstr) add const
-        * command.c: (zencrypt) const qualifier
-          (cmd_execute_command_real) ditto
-          (cmd_execute_command_strict) ditto
-          (config_log_file) ditto. 
-          Fix leak of getcwd() returned string.
-        * memory.{c,h}: Add MTYPE_DISTRIBUTE_IFNAME for struct dist ifname.
-        * distribute.{c,h}: Update with const qualifier.
-          (distribute_free) use MTYPE_DISTRIBUTE_IFNAME
-          (distribute_lookup) Cast to char *, note that it's ok.
-          (distribute_hash_alloc) use MTYPE_DISTRIBUTE_IFNAME.
-          (distribute_get)  Cast to char *, note that it's ok.
-        * filter.c: Update with const qualifier.
-        * if.{c,h}: ditto.
-        * if_rmap.{c,h}: ditto.
-          (if_rmap_lookup) Cast to char *, note that it's ok.
-          (if_rmap_get) ditto.
-        * log.{c,h}: Update with const qualifier.
-        * plist.{c,h}: ditto.
-        * routemap.{c,h}: ditto.
-        * smux.{c,h}: ditto. Fix some signed/unsigned comparisons.
-        * sockopt.c: (getsockopt_cmsg_data) add return for error case.
-        * vty.c: Update with const qualifier.
-          
-2004-10-08 Hasso Tepper <hasso at quagga.net>
-
-	* routemap.c, routemap.h: Make some string arguments const.
-
-2004-10-05 Paul Jakma <paul@dishone.st>
-
-	* version.h.in: print_version declaration is here, not in automake
-	  generated version.h.
-
-2004-10-08 Hasso Tepper <hasso at quagga.net>
-
-	* command.c, command.h: Make argument of cmd_make_strvec function
-	  const.
-	* command.c: Make hostname commands usable in vtysh again.
-
-2004-10-07 Hasso Tepper <hasso at quagga.net>
-
-	* command.c, pid_output.c, print_version.c, vty.c, vty.h: Make more
-	  strings const.
-
-2004-10-05 Hasso Tepper <hasso at quagga.net>
-
-	* *.[c|h]: Make many strings cons and a lot of int -> unsigned int
-	  changes to fix warnings.
-
-2004-10-05 Paul Jakma <paul@dishone.st>
-
-	* sockopt.{c,h}: add sockopt_iphdrincl_swab_{htosys,systoh},
-          functions to change byte order between system IP_HDRINCL order
-          and host order.
-	* thread.c: (funcname_thread_add_timer_timeval) new function, add
-          timer at specified timeval.
-	  (funcname_thread_add_timer) use funcname_thread_add_timer_timeval.
-	  (funcname_thread_add_timer_msec) ditto
-
-2004-10-04 Hasso Tepper <hasso at quagga.net>
-
-	* memory.c, memory.h: Make char * argument of strdup functions const.
-	* prefix.c, prefix.h: Make many arguments const. Reorder stuff in
-	  header.
-	* log.h: Make log message const in struct message.
-	* log.c: Fix some indenting.
-	* network.c, network.h: Make second argument of writen() const.
-
-2004-10-03  Hasso Tepper  <hasso at quagga.net>
-
-	* command.h: Introduce SERVICE_NODE for "service <...>" commands.
-	* command.c: Don't initialize commands that don't make sense if vtysh
-	  is used.
-	* vty.c: Make VTY_NODE appear in vtysh.
-
-2004-10-03 James R. Leu <jleu at mindspring.com>
-
-	* zclient.c, zclient.h: zclient functions for router id handling.
-	* zebra.h: New message types for router id handling.
-
-2004-09-27 Paul Jakma <paul@dishone.st>
-
-	* zebra.h: Add WANT_OSPF_WRITE_FRAGMENT for ospfd
-	  to try to fragment oversized packets. Enabled only for Linux.
-	  Add HAVE_IP_HDRINCL_BSD_ORDER to define struct ip byte order,
-	  to consolidate various ad-hoc platform defines for same thing.
-
-2004-09-26 Hasso Tepper <hasso at quagga.net>
-
-	* vty.c, sockopt.c: Fix compiler warnings.
-
-2004-09-23 Hasso Tepper <hasso at quagga.net>
-
-	* linklist.h: Remove list and listnode typedefs.
-	* *.[c|h]: list -> struct list *, listnode -> struct listnode *.
-
-2004-09-17 Paul Jakma <paul@dishone.st>
-
-	* sockopt.c: Add missing bracket
-
-2004-09-17 Paul Jakma <paul@dishone.st>
-
-	* sockopt.{c,h}: Add setsockopt_so_recvbuf, for ripd and ripngd.
-
-2004-09-13 Paul Jakma <paul@dishone.st>
-
-	* command.c: Update the copyright string in the default motd.
-
-2004-08-31  David Wiggins  <dwiggins@bbn.com>
-
-	* hash.c (hash_iterate): Save next pointer before calling
-	procedure, so that iteration works even if the called procedure
-	deletes the hash backet.
-
-	* linklist.h (listtail): new macro, not yet used.
-
-2004-08-27 Hasso Tepper <hasso at quagga.net>
-
-	* command.c: Install "terminal length" commands only if vty is used.
-	  Vtysh will handle it itself.
-
-2004-08-26  Greg Troxel  <gdt@fnord.ir.bbn.com>
-
-	* sockopt.h: Define method-independent macro for callers of
-	get_ifindex to use for cmsg length.
-
-2004-08-19 Paul Jakma <paul@dishone.st>
-
-	* zebra.h: add MAX and MIN defines (eg for ospf6d)
-
-2004-08-19 Paul Jakma <paul@dishone.st>
-
-	* sockopt.c: include sockopt.h
-	  rename some of the _pktinfo_ functions to _ifindex, where that is
-	  their purpose.
-          (getsockopt_ipv6_pktinfo_ifindex) renamed to
-	  getsockopt_ipv6_ifindex.
-	  (setsockopt_ipv4_pktinfo) renamed to setsockopt_ipv4_ifindex
-	  (setsockopt_pktinfo) update with previous and add comment re
-	  AF_INET portability.
-	  (setsockopt_ifindex) generic ifindex function ala
-	  setsockopt_pktinfo.
-	  (getsockopt_ipv4_pktinfo_ifindex) renamed to
-	  getsockopt_ipv4_ifindex.
-	  (getsockopt_ipv4_ifindex) rejiggling to reduce repeated
-          ifdef/elses. pktinfo case forgot to set ifindex.
-          (getsockopt_pktinfo_ifindex) renamed to 
-          getsockopt_ifindex. update some calls to renamed functions.
-        * sockopt.h: Update renamed exported functions
-          Rename the CMSG_SIZE macros to IFINDEX.
-          Guard IPv4 PKTINFO in a conditional define.
-
-2004-08-18 Paul Jakma <paul@dishone.st>
-
-	* vty.c: (vty_serv_un) set unix vty socket to nonblocking
-	  to prevent inadvertent blocking of daemons by use of
-	  vtysh. TODO: disentangle manual paging from the buffer_write
-	  path so that unix vty can use this path too and be reliable.
-	  
-2004-07-23  Greg Troxel  <gdt@poblano.ir.bbn.com>
-
-	* sockopt.c (getsockopt_ipv4_pktinfo_ifindex): Make this compile
-	on NetBSD, and add comments to make it less confusing.  Change the
-	sense of the SUNOS_5 test to make parallel structure between the
-	variables and the code.
-
-2004-07-23 Paul Jakma <paul@dishone.st>
-
-	* sockopt.h: Add SOPT_SIZE_CMSG_PKTINFO{_IPV{4,6}} define, for
-	  sizeof pktinfo as appropriate, to be used when allocating msg
-	  buffers. export setsockopt_pktinfo() and
-	  getsockopt_pktinfo_ifindex()
-	* sockopt.c: (setsockopt_pktinfo_ifindex) new function to portably
-	  set received ifindex sock option.
-	  (getsockopt_pktinfo_ifindex) portably retrieve ifindex.
-	  (getsockopt_cmsg_data) retrieve indicated control info from 
-	  message header.
-	  (getsockopt_ipv6_pktinfo_ifindex) ipv6 version of above.
-	  (setsockopt_ipv4_pktinfo) v4 version
-	  (setsockopt_pktinfo) the exported version
-	  (getsockopt_ipv4_pktinfo_ifindex) v4 specific version
-	  (getsockopt_pktinfo_ifindex) the exported version
-
-2004-07-14 Paul Jakma <paul@dishone.st>
-
-	* sigevent.c: (quagga_signal_handler) add a global caught flag, set
-	  the flags to a constant rather increment to be kinder. 
-	  (quagga_sigevent_process) new function, to do core of what
-	  quagga_signal_timer did. dont block signals at all as sig->caught
-	  is volatile sig_atomic_t and should be safe to access from signal
-	  and normal contexts. The signal blocking is unneeded paranoia, but
-	  is left intact under an ifdef, should some platform require it.
-	  Check global caught flag before iterating through array. 
-	  (quagga_signal_timer) nearly everything moved to
-	  quagga_sigevent_process. Left in under ifdef, in case some
-	  platform could use a regular timer check for signals.
-	* sigevent.h: quagga_sigevent_process declaration.
-	* thread.c: (thread_fetch) check for signals at beginning of 
-	  scheduler loop, check for signals if select returns EINTR.
-	 
-2004-07-13  Greg Troxel  <gdt@poblano.ir.bbn.com>
-
-	* sigevent.c: Don't block SIGTRAP and SIGKILL.  Blocking SIGTRAP
-	confuses gdb, at least on NetBSD 2.0_BETA, where the block
-	succeeds.
-
-2004-07-09 Paul Jakma <paul@dishone.st>
-
-	* Merge Kunihiro's 'show route-map' change and add 
-	  compatibility aliases for route-map continue
-	* jhash.{c,h}: New files. Bob Jenkins' public domain hashing 
-	  function, as implemented in linux kernel by David Miller.
-
-2004-07-09 Juris Kalnins <juris@mt.lv>
-
-	* if.c: (if_cmp_func) fix for interface names where name is same,
-	  but one has no number, eg "devtyp" and "devtyp0".
-	  
-2004-06-30  Greg Troxel  <gdt@poblano.ir.bbn.com>
-
-	* Makefile.am: Make libzebra shared.
-
-2004-06-21 Paul Jakma <paul@dishone.st>
-
-	* ChangeLog: fix my last update config.h -> zebra.h ;)
-	* zebra.h: Fix gcc check.
-	
-2004-06-11 Sowmini Varadhan <sowmini.varadhan@sun.com>
-
-	* filter.c: (access_list_remark_cmd) buffer_putstr doesnt need cast
-	  to u_char. (ipv6_access_list_remark_cmd) ditto.
-	  if.c: ditto
-	* network.c: (readn/writen) pointer arg should be type u_char.
-	* plist.c: needs to include stream.h, not declare stream functions
-	  internally.
-	  (various) Add static qualifier to internal functions.
-	  (prefix_list_type_str) extraneous breaks in switch statement.
-	  (ip_prefix_list_description_cmd) buffer_putstr doesnt need cast
-	* stream.h: depends on plist.h and export stream_put_prefix
-	* vty.c: (vty_<telnet option build functions>) should use 
-	  unsigned char, telnet options are 0 -> 255.
-	* zclient.c: various u_char<->char type cleanups.
-	* zebra.h: Having to define CMSG_* can apply to more than just
-	  BSDI_NRL. 
-	  
-2004-06-09 Paul Jakma <paul@dishone.st>
-
-	* zebra.h: __attribute__ is a gcc'ism
-	
-2004-06-04 Paul Jakma <paul@dishone.st>
-
-        * type mismatch fixes
-        
-2004-05-18 Hasso Tepper <hasso@estpak.ee>
-	
-	* pqueue.[c|h]: Added as part of ospf6d merge from Zebra repository.
-
-2004-05-08 Paul Jakma <paul@dishone.st>
-
-	* zclient.c (zapi_ipv4_route) Follow Sowmini's lead and describe
-	  message format.
-
-2004-05-08 Sowmini Varadhan <sowmini.varadhan@sun.com>
-
-	* zclient.c: (zapi_ipv4_add) collapsed into zapi_ipv4_route
-	  (zapi_ipv4_delete) ditto.
-	  (zapi_ipv4_route) add/delete a route by way of cmd arg.
-	  (zapi_ipv6_add) collapsed into zapi_ipv6_route.
-	  (zapi_ipv6_delete) ditto.
-	  (zapi_ipv6_route) add/delete a route by way of cmd arg.
-	  (zebra_interface_address_delete_read) collapsed into 
-	  zebra_interface_address_read.
-	  (zebra_interface_address_delete_read) ditto.
-	  (zebra_interface_address_read) read address add/delete messages
-	  by way of type argument. Describe command message format.
-	  (zebra_interface_add_read) Unconditionally read new ifmtu6 field.
-	  Describe command message format.
-	  (zebra_interface_state_read) Unconditionally read new ifmtu6 field.
-	  (zclient_redistribute_set) Collapsed into zclient_redistribute
-	  (zclient_redistribute_unset) ditto
-	  (zclient_redistribute) set/unset redistribution.
-	  (zclient_redistribute_default_set) Collapsed into
-	  zclient_redistribute_default.
-	  (zclient_redistribute_default_unset) ditto.
-	  (zclient_redistribute_default) Redistribute default set/unset.
-	* zclient.h: delete zapi_ipv{4,6}_add, zapi_ipv{4,6}_delete. Add
-	  zapi_ipv{4,6}_route. delete zclient_redistribute_set/unset. Add
-	  zclient_redistribute. Ditto for
-          zclient_redistribute_default_{set/unset}.
-          
-2004-05-08 Sowmini Varadhan <sowmini.varadhan@sun.com>
-
-	* if.h: Add mtu6 field to struct interface, IPv6 MTU may differ
-	  from IPv4, and Solaris treats the MTU's differently.
-	  Add connected_add_by_prefix, for use by later patch.
-	* if.c: (connected_add_by_prefix) Add prefix to connected list.
-	  (if_flag_dump) Solaris: Dump IFF_IPv4/6 flag
-	  (if_dump) Dump mtu6 flag, for HAVE_IPV6.
-	* command.c: (sockunion_getsockname) use socklen_t for len.
-	  (sockunion_getpeername) ditto.
-	  	  
-2004-04-21 Boris Kovalenko <boris@tagnet.ru>
-
-	* daemon.c: (daemon) fix check for error return from setsid
-	
-2004-01-19 Paul Jakma <paul@dishone.st>
-
-	* sigevent.{c,h}: New files, implement event handled signals.
-	  see signal_init() in sigevent.h.
-	  
-2003-12-23  Vincent Jardin  <jardin@6wind.com>
-
-	* {command.c, memory.c, vty.c, zebra.h}: Add isisd support
-
-2003-12-22  Greg Troxel  <gdt@fnord.ir.bbn.com>
-
-	* vty.c (vty_use_backup_config): Don't free filenames before using
-	them for unlink.
-
-2003-08-20 Yasuhiro Ohara <yasu@sfc.wide.ad.jp>
-
-	* command.c: Fix <cr> display problem for command line
-	  description
-
-2003-05-24 Anil Madhavapeddy
-
-	* (sockunion.c): Incorrect bounds specified in sockunion_log()
-
-2003-05-08 Sergiy Vyshnevetskiy <serg @ vostok.net>
-
-	* vty.c: -A option
-
-2003-04-19 Hasso Tepper <hasso@estpak.ee>
-
-	* rip_routemap.c: sync daemon's route-map commands to have same
-	syntax
-
-2002-09-28  Yasuhiro Ohara <yasu@sfc.wide.ad.jp>
-
-	* vty.c (vty_flush): One line more on vty.
-
-2002-09-27  Kunihiro Ishiguro  <kunihiro@ipinfusion.com>
-
-	* vector.c (vector_lookup): Add new function.
-
-2002-08-19  Kunihiro Ishiguro  <kunihiro@ipinfusion.com>
-
-	* thread.c (timeval_adjust): Fix unconditional crush due to
-	FreeBSD's select() system call timeval value check.
-
-2002-07-07  Kunihiro Ishiguro  <kunihiro@ipinfusion.com>
-
-	* zebra-0.93 released.
-
-2002-06-21  Kunihiro Ishiguro  <kunihiro@ipinfusion.com>
-
-	* if.c (ifc_pointopoint): Add ifc_pointopoint() accoding to Frank
-	van Maarseveen's suggestion.
-
-2002-06-18  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* command.c: Change bcopy() to memcpy().
-
-2001-12-12  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* command.c (config_password): Fix host.password clear bug.
-	Reported by Wang Jian <lark@linux.net.cn>.
-
-2001-08-29  Kunihiro Ishiguro  <kunihiro@ipinfusion.com>
-
-	* thread.c (thread_should_yield): New function to check thread
-	should yeild it's execution to other thread.  Suggested by: Rick
-	Payne <rickp@ayrnetworks.com>
-
-2001-08-20  Kunihiro Ishiguro  <kunihiro@ipinfusion.com>
-
-	* thread.c (thread_timer_cmp): Rewrite function.
-
-	* hash.c: Add hash_get().  Change hash_pull() to hash_release().
-
-2001-08-19  Kunihiro Ishiguro  <kunihiro@ipinfusion.com>
-
-	* zebra-0.92a released.
-
-2001-08-15  Kunihiro Ishiguro  <kunihiro@ipinfusion.com>
-
-	* zebra-0.92 released.
-
-2001-08-12  Akihiro Mizutani <mizutani@dml.com>
-
-	* prefix.c (netmask_str2prefix_str): Convert "1.1.0.0 255.255.0.0"
-	string to "1.1.0.0/16".
-
-2001-08-10  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* filter.c (access_list_lookup): access_list_lookup's first
-	argument is changed from address family to AFI.
-
-	* plist.c: (prefix_list_lookup): Likewise.
-
-2001-07-27  Akihiro Mizutani <mizutani@dml.com>
-
-	* plist.c: ge and le display order is changed.  Old compatible
-	rule (len <= ge-value <= le-value) is removed.
-
-2001-07-08  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* prefix.h: Temporary fix for alignment of prefix problem.
-
-2001-06-21  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* prefix.h (struct prefix): Remove safi and padding field.
-	(struct prefix_ipv4): Likewise.
-	(struct prefix_ipv6): Likewise.
-	(struct prefix_ls): Likewise.
-	(struct prefix_rd): Likewise.
-
-	* command.h (enum node_type): Preparation for BGP new config.
-
-	* vty.c (vty_end_config): Likewise.
-
-2001-06-17  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* routemap.c (route_map_rule_delete): Call func_free when
-	route-map rule is deleted.
-
-2001-06-14  "Akihiro Mizutani" <mizutani@dml.com>
-
-	* routemap.c (route_map_index_lookup): Prevent to use deny and
-	permit for same route-map sequence.
-
-2001-04-12  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* vty.c (vty_read_config): Fix warning.
-
-2001-03-08  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* command.c (IPV6_PREFIX_STR): Add '.' and '%' for IPv6 address
-	strings.
-
-2001-03-07  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* zebra.h (_XPG4_2): Define _XPG4_2 and __EXTENSIONS__ for
-	CMSG_FIRSTHDR.
-
-2001-03-07  Michael Rozhavsky <mrozhavsky@opticalaccess.com>
-
-	* zebra.h (struct in_pktinfo): structure in_pktinfo declaration.
-
-2001-02-19  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* memory.c (memory_list_lib): Add MTYPE_NEXTHOP for "show memory
-	lib" member.
-
-2001-02-13  Matthew Grant <grantma@anathoth.gen.nz>
-
-	* vty.c (vty_read_config): Revert check of integrate_default when
-	VTYSH is defined.
-
-2001-02-13  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* vty.c (vty_read_config): Do not check integrate_default.  That
-	should be used only by vtysh.
-
-2001-02-08  Matthew Grant <grantma@anathoth.gen.nz>
-
-	* vty.c (vty_serv_un): Set umask 0077.
-	(vty_read_config): Stat for vtysh Zebra.conf, if found startup and
-	wait for boot configuration.
-
-	* if.c (if_lookup_address): Make it smart implementation.
-
-	* sockopt.c (setsockopt_multicast_ipv4): Set up a multicast socket
-	options for IPv4 This is here so that people only have to do their
-	OS multicast mess in one place rather than all through zebra,
-	ospfd, and ripd .
-
-2001-02-04  Akihiro Mizutani <mizutani@dml.com>
-
-	* plist.c (vty_prefix_list_install): Even when argument is
-	invalid, new memory is allocated.  Now memory allocation is done
-	after argument check.
-
-2001-02-01  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* zebra-0.91 is released.
-
-2001-01-31  Akihiro Mizutani <mizutani@dml.com>
-
-	* vty.c (vty_login): Add vty login command.
-
-2001-01-31  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* vty.c (vty_reset): Close accept socket.
-
-2001-01-30  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* memory.h (enum): MTYPE_ATTR_TRANSIT is added for unknown transit
-	attribute.
-
-2001-01-22  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* zclient.c (zebra_interface_address_add_read): Fetch interface
-	address flag.
-	(zebra_interface_address_delete_read): Likewise.
-
-2001-01-16  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* table.c (route_node_match_ipv4): Utility function for IPv4
-	address lookup.
-	(route_node_match_ipv6): Utility function for IPv4 address lookup.
-
-2001-01-15  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* if.c: Delete RIP_API part until new implementation comes out.
-
-2001-01-13  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* hash.h (struct Hash): Rename alloc to count.  Change type to
-	unsigned long.
-
-	* stream.c (stream_getc_from): New function.
-	(stream_getw_from): Likewise.
-
-	* zebra.h (ZEBRA_FLAG_STATIC): Add new flag for persistent route.
-
-2001-01-11  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* flap.c: File is removed.
-
-	* flap.c: Likewise.
-
-	* roken.h: Likewise.
-
-	* buffer.c (buffer_new): Remove type option to buffer_new().
-
-2001-01-10  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* zclient.c (zapi_ipv4_delete): Remove OLD_RIB part.
-
-2001-01-09  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* zebra-0.90 is released.
-
-	* command.c: Update Copyright year.
-
-2001-01-09  Matthew Grant <grantma@anathoth.gen.nz>
-
-	* if.c (if_create): Register connected_free() function for
-	deletion.
-	(if_delete): Free connected information when the interface is
-	deleted.
-	(if_lookup_by_index): Fix argument type from int to unsigned int.
-	(connected_add): Keep list in order if old info found, essential
-	for repeatable operation in some daemons.
-
-2001-01-09  endo@suri.co.jp (Masahiko Endo)
-
-	* vty.c (vty_flush): When vty->statis is VTY_CLOSE do not add vty
-	read thread.
-
-2001-01-08  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* filter.c (access_list_delete): Access-list name is not freed.
-
-	* plist.c (prefix_list_delete): Prefix-list name is not freed.
-
-2000-12-29  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* zclient.c (zclient_start): Change to use UNIX domain
-	socket for zebra communication.
-
-	* vector.c (vector_init): vector_alloc and vector_data_alloc is
-	removed.  All memory allocation count should be maintained by
-	XMALLOC and XFREE macros.
-
-2000-12-28  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* zebra.h (ZEBRA_NEXTHOP_IFINDEX): Define ZEBRA_NEXTHOP_* values.
-
-2000-12-27  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* zebra.h (ZEBRA_ERR_RTEXIST): Make zebra error code to negative
-	value.
-
-2000-12-25  "Wataru Uno" <wataru@po.ntts.co.jp>
-
-	* vty.c (vtysh_read): Don't allocate new buffer because buffer is
-	allocated in vty_new ().
-
-2000-12-14  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* memory.h (enum): Add MTYPE_AS_FILTER_STR.
-
-	* command.c (config_write_terminal): Display "end" at the end of
-	configuration.
-
-	* plist.c (vty_prefix_list_install): Use AF_INET to determine
-	lenum length.
-
-2000-12-13  "Wataru Uno" <wataru@po.ntts.co.jp>
-
-	* buffer.c (buffer_flush_vty): If IOV_MAX defined in the System,
-	then all lines write by IOV_MAX.
-
-2000-12-12  Michael Rozhavsky <mrozhavsky@opticalaccess.com>
-
-	* command.c (config_write_file): Robust method for writing
-	configuration file and recover from backing up config file.
-
-2000-11-29  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* smux.c (smux_connect): More fail check.
-	(smux_trap): When SMUX connection is not established, do nothing.
-
-2000-11-28  Gleb Natapov <gleb@nbase.co.il>
-
-	* thread.c (thread_fetch): Execut event list first.  Old event
-	list is renamed to ready list.  With this change, event thread is
-	executed before any other thread.
-
-	* thread.h (struct thread_master): Add ready list.
-
-2000-11-28  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* linklist.c (listnode_add_after): Add node right after the
-	listnode pointer.
-
-2000-11-27  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* smux.h: Pass struct variable to WriteMethod.
-
-2000-11-25  Frank van Maarseveen <F.vanMaarseveen@inter.NL.net>
-
-	* if.c (if_lookup_address): When looking up interface with IP
-	address, Sometimes multiple interfaces will match.  Now PtP
-	interfaces prevail in such a case which seem the right thing to
-	do: There will probably also be host routes which usually prevail
-	over network routes.
-
-2000-11-25  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* smux.c (smux_trap): SMUX trap implementation.
-
-2000-11-19  Akihiro Mizutani <mizutani@dml.com>
-
-	* plist.c: Add automatic conversion function of an old rule. 
-	ex.) 10.0.0.0/8 ge 8 -> 10.0.0.0/8 le 32
-
-2000-11-16  Yon Uriarte <ukl2@rz.uni-karlsruhe.de>
-
-	* zclient.c (zebra_interface_add_read): Read hardware address when
-	hw_addr_len is greater than 0.
-
-2000-11-15  Akihiro Mizutani <mizutani@dml.com>
-
-	* plist.c: The rule of "len <= ge-value <= le-value" 
-	was changed to "len < ge-value <= le-value".
-
-2000-11-09  Yasuhiro Ohara  <yasu@sfc.wide.ad.jp>
-
-	* memory.[ch]: Added #define and functions for ospf6d.
-
-	* log.[ch]: some platform says that the data of used va_list
-	is undefined. Changed to hold list of va_list for each
-	vsnprintf.
-
-2000-11-07  Rick Payne <rickp@rossfell.co.uk>
-
-	* memory.h (enum): Add MTYPE_COMMUNITY_REGEXP.
-
-2000-11-06  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* command.c (config_exit): Fix bug of missing break after case
-	BGP_VPNV4_NODE.
-
-2000-10-30  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* vector.c (vector_unset): Check i is not nevative.
-
-2000-10-24  Arkadiusz Miskiewicz <misiek@pld.org.pl>
-
-	* smux.c (smux_sock): Set terminating '\0'.  Check address family.
-
-	* vty.c (vty_serv_sock_addrinfo): Set terminating '\0'. Use
-	gai_strerror.  Check address family.
-
-2000-10-23  Jochen Friedrich <jochen@scram.de>
-
-	* smux.c: Use linklist rather than vector.
-	(smux_getnext): A SMUX subagent has to behave as if it manages the
-	whole SNMP MIB tree itself. It's the duty of the master agent to
-	collect the best answer and return it to the manager. See RFC 1227
-	chapter 3.1.6 for the glory details :-). ucd-snmp really behaves
-	bad here as it actually might ask multiple times for the same
-	GETNEXT request as it throws away the answer when it expects it in
-	a different subtree and might come back later with the very same
-	request.
-
-2000-10-23  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* command.c (cmd_init): Log related command are only installed for
-	terminal mode.
-
-2000-10-21  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* Makefile.am (libzebra_a_SOURCES): Remove duplicated buffer.c.
-
-	* zebra.h: Remove #warn directive.
-
-2000-10-20  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* keychain.c (keychain_init): Register "key chain" command to
-	KEYCHAIN_NODE and KEYCHAIN_KEY_NODE.
-
-	* vty.c (vty_end_config): Fix missing vty_cinfig_unlock for other
-	CONFIG_NODE.
-
-	* command.c (config_end): Likewise.
-
-	* keychain.c (keychain_get): Key is sorted by it's identifier
-	value.
-
-2000-10-19  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* linklist.c (list_delete_all_node): Call delete function if it is
-	defined.
-
-	* command.c (cmd_execute_command_strict): Add modification for
-	vtysh.
-	(cmd_execute_command_strict): Remove first argument cmdvec because
-	it is global varibale in command.c.
-
-2000-10-18  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* command.c (cmd_init): Install
-	copy_runningconfig_startupconfig_cmd only in terminal mode.
-
-	* linklist.c (list_delete_node): Simplify the function.
-	(listnode_lookup): Renamed from list_lookup_node.
-
-2000-10-17  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* stream.h: Undef stream_read and stream_write without
-	parenthesis.
-
-	* newlist.c: File removed.
-
-	* newlist.h: Likewise.
-
-	* linklist.c (list_new): Remove list_init().  To allocate new
-	linked list, please use list_new().
-	(listnode_add): Remove list_add_node().  To add new node to linked
-	list, please use listnode_add().
-	(list_delete_by_val): Revemove fucntion.
-
-2000-10-16  Nobuaki Tanaka <nobby@po.ntts.co.jp>
-
-	* table.c (route_table_free): Reimplement route_table_free().
-
-2000-10-11  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* keychain.c (keychain_get): Register key_delete_func to key
-	list's delete function.  Use linklist.c instead of newlist.c.
-
-2000-10-04  Akihiro Mizutani <mizutani@dml.com>
-
-	* filter.c (access_list_remark): Add access-list's remark command.
-	(no_access_list): "no access-list 100 permit any" error message
-	bug is fixed.
-
-2000-10-03  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* memory.h (enum): Add MTYPE_SOCKUNION.
-
-2000-10-02  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* zebra-0.89 is released.
-
-2000-10-01  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* linklist.c (list_add_node_head): Delete unused function.
-	(list_add_node_tail): Likewise.
-
-2000-09-26  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* stream.c (stream_read_unblock): Add new function for unblocking
-	read.
-
-2000-09-26  Jochen Friedrich <jochen@nwe.de>
-
-	* smux.c (smux_register): Fix bug of can't register more than one
-	MIB with SMUX.
-
-2000-09-26  Makoto Otsuka <otsuka@inl.ntts.co.jp>
-
-	* vty.c (vty_close): Fix memory leak of sb_buffer.
-	(vty_new): Likewise.
-
-2000-09-21  steve@Watt.COM (Steve Watt)
-
-	* log.h: Do not declare zlog_priority[0] variable.
-
-2000-09-12  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* linklist.h (struct _list ): Add member cmp for compare function.
-	(struct _list ): Member up is deleted
-
-2000-09-12  David Lipovkov <dlipovkov@OpticalAccess.com>
-
-	* if.c: Include RIP_API header when RIP API is enabled.
-
-2000-09-10  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* prefix.c (prefix_free): Siplify prefix_free().
-
-	* keychain.c (key_match_for_accept): strncmp check bug is fixed.
-
-2000-09-07  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* zebra.h: Merge roken.h into zebra.h.
-
-2000-09-05  Akihiro Mizutani <mizutani@dml.com>
-
-	* routemap.c (route_map_init_vty): Install route-map command to
-	RMAP_NODE.
-
-2000-08-22  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* thread.c (thread_get_id): Remove pthread related garbage.
-
-	* command.h (struct host): Likewise.
-
-	* zebra.h: Likewise.
-
-2000-08-20  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* command.h (node_type ): Add AAA node for authentication.
-
-	* vty.c (vty_close): Do not close stdout.
-
-2000-08-18  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* vty.c (vty_init_vtysh): Added for vtysh.
-
-	* distribute.c (districute_list_prefix_all): Interface independent
-	filter can be set.
-	(distribute_list_all): Likewise.
-	(config_show_distribute): Display current distribute-list status
-	for "show ip protocols".
-
-2000-08-18  Akihiro Mizutani <mizutani@dml.com>
-
-	* command.c (config_terminal_no_length): no terminal monitor ->
-	terminal no monitor
-	(cmd_init): Do not install service_terminal_length_cmd into
-	ENABLE_NODE.
-
-	* vty.c (terminal_no_monitor): no terminal length -> terminal no
-	length.
-
-2000-08-17  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* zebra-0.88 is released.
-
-2000-08-17  Magnus Ahltorp <ahltorp@nada.kth.se>
-
-	* vty.h (struct vty ): Add iac_sb_in_progress and sb_buffer for
-	better IAC handling.
-
-	* vty.c (vty_telnet_option): Change telnet option handling.
-
-2000-08-15  Gleb Natapov <gleb@nbase.co.il>
-
-	* zclient.c (zclient_redistribute_unset):  New function added.
-
-2000-08-14  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* zclient.c (zebra_interface_add_read): Change ifindex restore
-	size from two octet to four.
-	(zebra_interface_state_read): Likewise.
-	(zebra_interface_address_add_read): Likewise.
-
-2000-08-13  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* vty.c (vty_event): Use vector_set_index() instead of
-	vector_set().
-
-2000-08-07  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* zebra.h (ZEBRA_XXX_DISTANCE_DEFAULT): Define Default
-	Administrative Distance of each protocol.
-
-2000-08-07  Matthew Grant <grantma@anathoth.gen.nz>
-
-	* if.h (struct interface ): Add new member bandwidth to struct
-	interface.
-
-	* zclient.c (zebra_interface_add_read): Fetch bandwidth value.
-	(zebra_interface_state_read): Likewise.
-
-2000-08-07  Gleb Natapov <gleb@nbase.co.il>
-
-	* routemap.c (route_map_event_hook): New hook route_map_event_hook
-	is added.  This hook is called when route-map is changed. The
-	parameters passed to the hook are 'event' and 'route-map name'
-
-	* routemap.h: Add prototype for route_map_event_hook().
-
-2000-08-06  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* zclient.c (zebra_ipv4_route): zebra_ipv4_route(),
-	zebra_ipv4_add(), zebra_ipv4_delete() are removed.
-
-	* routemap.c (route_map_empty): Add new function.
-	(route_map_delete): Use route_map_index_delete() instead of
-	route_map_index_free().
-	(route_map_index_free): Function removed.
-
-2000-08-06  Gleb Natapov <gleb@nbase.co.il>
-
-	* routemap.c (route_map_index_delete): Add check for route-map is
-	empty or not.
-
-2000-08-03  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* zclient.c (zebra_ipv4_add): Change socket arguemnt with struct
-	zclient.
-
-2000-08-02  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* zclient.h (struct zebra): Add obuf for output buffer.
-
-	* if.c: Remove #ifdef NRL enclosing if_nametoindex() and
-	if_indextoname().
-
-2000-08-02  David Lipovkov <davidl@nbase.co.il>
-
-	* if.h (IF_PSEUDO_UNSET): IF_PSEUDO related macro added.
-	(IF_UNKNOWN_SET): IF_UNKNOWN related macro deleted.
-
-	* if.c (interface_pseudo): Add "pseudo" command to interface node.
-	(no_interface_pseudo): Add "no pseudo" command to interface node.
-
-	* zclient.c (zebra_interface_add_read): Set pseudo flag when it is
-	send from zebra.
-
-2000-08-01  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* zebra.h (ZEBRA_IPV4_NEXTHOP_LOOKUP): Add new message.
-	(ZEBRA_IPV6_NEXTHOP_LOOKUP): Likewise.
-
-	* vty.c (vty_serv_un): Use AF_UNIX for backward compatibility.
-
-2000-07-31  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* vty.c: Use vector for VTY server thread listing instead of
-	single value.
-
-2000-07-30  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* keychain.c (no_key_chain): "no key chain WORD" command is added.
-
-2000-07-29  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* command.c (config_from_file): If command fail in
-	KEYCHAIN_KEY_NODE, down to KEYCHAIN_NODE.
-
-	* vty.h (struct vty ): Add index_sub member.
-
-2000-07-27  Akihiro Mizutani <mizutani@dml.com>
-
-	* if.c: Help strings updates.
-
-2000-07-11  Akihiro Mizutani <mizutani@dml.com>
-
-	* command.c (no_config_enable_password): Add "no enable password"
-	command.
-	(config_write_host): Display password string.
-
-	* routemap.c (route_map_delete_match): Add support for delete
-	match without argument.
-	(route_map_delete_set): Likewise.
-
-2000-07-09  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* command.h (node_type ): Change KEYCHAIN_NODE and
-	KEYCHAIN_KEY_NODE place just before INTERFACE_NODE.
-
-2000-07-09  Jochen Friedrich <jochen@scram.de>
-
-	* smux.c (config_write_smux): Fixes the option to override OID and
-	password for SMUX.
-
-2000-07-09  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* command.h (node_type ): Add SMUX_NODE for SMUX configuration.
-
-2000-07-09  Toshiaki Takada  <takada@zebra.org>
-
-	* command.c: Sort descvec command's help.
-
-	* vty.c (vty_describe_command): Display '<cr>' at the end of
-	descriptions.
-
-2000-07-05  Toshiaki Takada  <takada@zebra.org>
-
-	* command.c (cmd_ipv6_match), (cmd_ipv6_prefix_match):  Fix bug
-	treatment of double colon.
-
-2000-07-04  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* zclient.h: Add zclient_redistribute_default_{set,unset}().
-
-	* keychain.c: New file for authentication key management.
-	* keychain.h: Likewise.
-	
-	* tcpfilter.c: New file for TCP/UDP base filtering using ipfw or
-	ipchains.
-	* tcpfilter.h: Likewise.
-	
-	* flap.h: New file for route flap dampening.
-	* flap.c: Likewise.
-
-2000-07-04  Toshiaki Takada <takada@zebra.org>
-
-	* filter.c (struct filter): Add exact flag.
-	(access_list): Add exact-match command.
-	(ipv6_access_list): Add exact-match command.
-	
-2000-07-03  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* zebra.h (ZEBRA_REDISTRIBUTE_DEFAULT_ADD): New message for
-	request default route.
-
-2000-07-01  Hideaki YOSHIFUJI ($B5HF#1QL@(B) <yoshfuji@ecei.tohoku.ac.jp>
-
-	* smux.c: Add IPv6 smux connection code.
-
-2000-06-15  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* vty.c (vty_complete_command): To cooperate readline library,
-	returned string is newly allocated.  So some match function case
-	need, free of memory.
-
-2000-06-12  Akihiro Mizutani <mizutani@dml.com>
-
-	* distribute.c: Fix help strings.
-
-2000-06-11  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* command.c (cmd_complete_command): Add check for vector_slot
-	(vline, index) is not NULL when calculating lcd.
-	(cmd_entry_function): First check variable arguemnt to prevent it
-	from completion.
-
-2000-06-10  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* vty.h (struct vty ): Add output_count member for displaying
-	output route count.  Remove arugment arg from output_func because
-	the value is passed by vty argument.  Change output to output_rn.
-	Add output_clean function pointer member.  Add output_type member.
-
-2000-06-10  Toshiaki Takada <takada@zebra.org>
-
-	* command.c (show_startup_config): Add "show startup-config"
-	command.
-
-2000-06-06  Akihiro Mizutani <mizutani@dml.com>
-
-	* filter.c: Fix help strings.
-
-2000-06-05  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* prefix.h (struct prefix_rd): New prefix structure for routing
-	distinguisher.
-	(struct prefix): Add padding to every prefix structure.
-
-
-	* routemap.c (route_map_add_match): When completely same match
-	statement exists, don't duplicate it.
-
-2000-06-05  Akihiro Mizutani <mizutani@dml.com>
-
-	* routemap.c: Change NAME to WORD.
-
-	* plist.c: Fix help strings.
-
-2000-06-02  Akihiro Mizutani <mizutani@dml.com>
-
-	* routemap.c: Fix route-map help strings.
-
-2000-06-01  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* command.c (cmd_filter_by_completion): Fix CMD_VARARG treatment
-	to filter other non vararg commands.
-
-	* routemap.c (route_map_init_vty): Use install_default() for
-	install common commands into route-map node..
-
-2000-06-01  Akihiro Mizutani  <mizutani@dml.com>
-
-	* command.h (OSPF_STR):  Macro added.
-
-2000-05-31  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* command.c (cmd_complete_command): LCD completion must not modify
-	installed command string.
-
-	* plist.c (ipv6_prefix_list): Fix wrong syntax definition.  Change
-	X:X::X:X to X:X::X:X/M.
-
-2000-05-31  Toshiaki Takada  <takada@zebra.org>
-
-	* vty.c (show_history):  New defun added.
-
-2000-05-30  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* command.h (CMD_COMPLETE_LIST_MATCH): New define for completion
-	list.  CMD_COMPLETE_MATCH is used for LCD completion.
-
-	* vty.c (vty_complete_command): Matched string's LCD is completed.
-
-	* command.c (cmd_lcd): New function for calculate LCD of matched
-	strings.
-
-2000-05-26  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* command.c (install_default): config_write_terminal_cmd,
-	config_write_file_cmd, config_write_memory_cmd are added to
-	default node.
-
-	* memory.c (memory_init): Divide show memory command into each
-	sort.
-
-	* command.c (cmd_init): config_write_terminal_cmd,
-	config_write_file_cmd, config_write_memory_cmd are added to
-	CONFIG_NODE.
-
-	* routemap.c (route_map_index_free): New function.
-	(no_route_map_all): New DEFUN for "no route-map NAME".
-
-	* filter.c (no_access_list_all): New DEFUN for delete access-list
-	with NAME.
-	(no_ipv6_access_list_all): Likewise.
-
-2000-05-23  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* plist.c: Change IPV6_PREFIX to X:X::X:X.  When "any" is
-	specified, user can not use "ge" and "le" statement.
-
-2000-05-22  Thomas Molkenbur <tmo@datus.datus.com>
-
-	* routemap.c (route_map_add_set): Fix bug of next pointer missing.
-
-	* table.c (route_table_free): Like wise.
-
-2000-05-22  Toshiaki Takada  <takada@zebra.org>
-
-	* vty.c (vty_stop_input): Set history pointer to the latest one.
-
-	* vty.c (vty_hist_add): Do not add command line history when input
-	is as same as previous one.
-
-2000-05-14  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* memory.h (enum): Add MTYPE_ECOMMUNITY and MTYPE_ECOMMUNITY_VAL.
-
-2000-05-13  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* command.h (node_type ): Add BGP_VPNV4_NODE.
-
-2000-05-08  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* vty.c (vtysh_accept): Add cast of struct sockaddr * to bind
-	argument.  Reported by: Vesselin Mladenov <mladenov@netbg.com>.
-
-	* filter.c (ipv6_access_list): Add IPv6 prefix example instead of
-	IPv4 example.  Reported by: Love <lha@s3.kth.se>.
-
-	* command.c (cmd_complete_command): Make it sure last element of
-	matchvec is NULL.  This fix problem which cause crush in
-	vty_complete_command().  Reported by: JINMEI Tatuya
-	<jinmei@isl.rdc.toshiba.co.jp>.
-
-2000-04-28  Love <lha@s3.kth.se>
-
-	* prefix.h (struct prefix): Add padding.
-
-2000-04-28  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* command.c (show_version): Update copyright year.
-
-2000-04-27  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* routemap.c (route_map_apply): When map is NULL, return deny.
-
-2000-04-26  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* filter.c (access_list_apply): When access is NULL, return deny.
-
-	* plist.c (prefix_list_apply): When plist is NULL, return deny.
-
-2000-04-23  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* command.h (node_type ): Change RDISC_NODE to IRDP_NODE.
-
-2000-04-18  Toshiaki Takada  <takada@zebra.org>
-
-	* filter.[ch] (access_list_add_hook), (access_list_delete_hook):
-	Add argument for hook function to give struct access_list *.
-
-2000-04-17  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* plist.c (prefix_list_entry_match): In case of le nor ge is
-	specified, exact match is performed.
-	(prefix_list_entry_match): Add any entry matching check.
-
-2000-04-09  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* vty.c (exec_timeout): Separate timeout setting to minutes and
-	seconds.
-	(no_exec_timeout): Add "no exec-timeout" command.
-
-	* vty.h (VTY_TIMEOUT_DEFAULT): Change default value from 300 to
-	600.
-
-2000-03-31  Jochen Friedrich <jochen@scram.de>
-
-	* smux.h (SMUX_CLOSE): The SMUX_CLOSE PDU is implicit integer, so
-	it is a primitive encoding and not constructed.
-
-2000-03-28  Toshiaki Takada  <takada@zebra.org>
-
-	* memory.[ch] (enum): Add MTYPE_OSPF_EXTERNAL_INFO.
-
-2000-03-26  Love <lha@s3.kth.se>
-
-	* zclient.c (zclient_read): Add nbytes size check for
-	ZEBRA_HEADER_SIZE.  Check return value of steam_read ().
-
-2000-03-26  Rick Payne <rickp@rossfell.co.uk>
-
-	* routemap.c: Add flexible route-map commands such as on-match
-	next, on-match goto N.
-
-	* routemap.h: Likewise
-
-2000-03-23  Adrian Bool <aid@u.net.uk>
-
-	* command.c (config_log_trap): Add new command "log trap
-	PRIORITY".
-
-2000-03-14  Toshiaki Takada  <takada@zebra.org>
-
-	* memory.c (struct memory_list): Add Link List and Link Node
-	to view.
-	
-	* memory.h (enum): Remove MTYPE_OSPF_EXTERNAL_ROUTE.
-	
-2000-01-20  Hideto Yamakawa <hideto.yamakawa@soliton.co.jp>
-
-	* str.c (snprintf): Fix bug of calling sprintf instead of
-	vsprintf.
-
-2000-01-16  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* memory.h (enum): Add MTYPE_RIP_PEER.
-
-2000-01-15  Toshiaki Takada  <takada@zebra.org>
-
-	* memory.h (enum): Add MTYPE_OSPF_CRYPT_KEY.
-
-2000-01-15  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* command.h (node_type ): Add MASC_NODE for masc.
-
-2000-01-09  Wang Jianliang <wangjl@soim.net>
-
-	* routemap.c (route_map_index_add): When route_map_index is not
-	empty and insert new item at the head, it can cause core dump.
-	Fix "if (index == map->head)" to "if (point == map->head).
-	(route_map_add_set): If there is an old set command, override old
-	set command with new one.
-	(route_map_index_delete): Use while() instead of for for() for
-	logical correctness.
-
-1999-12-26  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* memory.h (enum): Add MTYPE_BGP_STATIC.
-
-1999-12-23  Alex Zinin <zinin@amt.ru>
-	* zebra.h, zclient.*: dynamic int up/down message
-	support
-
-1999-12-10  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* thread.c (thread_cancel_event): Add a function for clean up
-	events.
-
-1999-12-09  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* dropline.c: Delete file.
-	dropline.h: Linewise.	
-
-1999-12-14  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* filter.c (access_list_filter_delete): Wrong pointer
-	access->master was pointed out after access is freed.  I store
-	master value at the beginning of the function.
-
-1999-12-08  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* vty.c (exec_timeout): Change of VTY timeout affect to current
-	VTY connection.
-	(vty_accept): Instead of immediate exit() return -1.
-
-1999-12-07  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* vty.c (vty_configure_lock): Configuration lock function added.
-	Only one VTY can use CONFI_NODE at the same time.
-
-	* log.c: Delete zvlog_* functions.  Now zlog_* does the same
-	thing.
-
-	* log.c (log_init): Function removed.
-	(log_close): Likewise.
-	(log_flush): Likewise.
-	(log_open): Likewise.
-
-	* vty.c (terminal_monitor): Add new command.
-	(no_terminal_monitor): Likewise.
-
-	* log.c (old_log): Function removed.
-	(old_log2): Likewise.
-	(old_log_warn): Likewise.
-
-1999-12-04  Toshiaki Takada  <takada@zebra.org>
-
-	* command.c (cmd_ipv6_match): New function added.
-	(cmd_ipv6_prefix_match): Likewise.
-	
-1999-12-04  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* command.c (cmd_ipv6_match): 
-
-	* table.c: Delete #ifdef HAVE_MBGPV4.
-
-	* prefix.h (struct prefix): Add safi member.
-	(struct prefix_ipv4): Likewise.
-	(struct prefix_ipv6): Likewise.
-
-1999-12-04  Rumen Svobodnikov <rumen@linux.tu-varna.acad.bg>
-
-	* memory.c (struct mstat): Revert to support MEMORY_LOG.
-
-1999-11-25  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* version.h: Bump up to 0.81c for testing new kernel codes.
-
-1999-11-21  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* thread.h (struct thread): Pthread support is disabled all
-	platform.
-
-1999-11-21  Michael Handler <handler@sub-rosa.com>
-
-	* Include <limits.h> and <strings.h> under SUNOS_5.
-
-1999-11-21  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* sockunion.c (in6addr_cmp): Enclosed by #define HAVE_IPV6
-1999-11-13  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* command.h (node_type ): Add BGP_IPV4_NODE and BGP_IPV6_NODE.
-
-1999-11-12  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* command.c (disable): Add `disable' command.
-
-1999-11-09  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* plist.c (vty_prefix_list_install): Add any check.
-
-1999-11-04  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* command.h (node_type ): Add DUMP_NODE.
-
-1999-11-03  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* smux.c: Change default SMUX oid to compatible with gated.
-
-1999-10-30  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* if_rmap.c: New file added.
-
-	* if_rmap.h: New file added.
-
-1999-10-29  Alex Zinin  <zinin@amt.ru>
-
-	* hash.c: add hash_free() function
-
-1999-10-25  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* hash.c (hash_clean): Add clean function.
-
-	* plist.c (prefix_list_reset): Add reset function.
-
-	* filter.c (access_list_reset): Add reset function.
-
-1999-10-17  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* client.c: Merged with zclient.c.
-	* client.h: Merged with zclient.h.
-
-1999-10-15  Jordan Mendelson <jordy@wserv.com>
-
-	* md5.c: Imported from GNU C Library.
-	* md5-gnu.h: Likewise.
-
-1999-10-15  Jochen Friedrich <jochen@scram.de>
-
-	* smux.c (smux_getresp_send): SMUX_GETRSP codes improvement.
-
-1999-10-06  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* smux.h: New file added.
-
-	* snmp.c: Rename to smux.c.
-
-1999-10-02  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* command.c (cmd_execute_command_strict): Filter ambious commands.
-	(cmd_filter_by_string): Change to return enum match_type.
-
-1999-10-01  Toshiaki Takada  <takada@zebra.org>
-
-	* vty.c (vty_describe_fold): New function which does VTY
-	description line fold.
-	* vty.c (vty_describe_command): Set description column.
-
-1999-09-30  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* plist.c (prefix_list_init_ipv4): VTY user interface is improved.
-
-1999-09-26  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* command.c (cmd_filter_by_string): Fix bug of CMD_IPV4 and
-	CMD_IPV4_PREFIX check.  Both return type must be exact_match.
-
-1999-09-24  Toshiaki Takada  <takada@zebra.org>
-
-	* command.c (cmd_filter_by_completion),
-	(is_cmd_ambiguous): Check IPv4 address, IPv4 prefix and range 
-	parameter matches range.
-
-1999-09-22  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* routemap.c (route_map_apply): Returm RM_DENYMATCH when no match
-	is performed.
-
-1999-09-21  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* vty.c (vty_read): Control-C stop VTY_MORE mode.
-
-1999-09-20  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* command.h (node_type ): Add ACCESS_IPV6_NODE and
-	PREFIX_IPV6_NODE.
-
-	* distribute.h: New file added.
-
-	* command.h (node_type ): Delete DISTRIBUTE_NODE.
-
-1999-09-18  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* vty.c (vty_terminate_all): New function added for reload
-	support.
-
-1999-09-06  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* memory.h (enum): Add new type MTYPE_OSPF_EXTERNAL_ROUTE.
-
-1999-08-31  Janos Farkas <chexum@shadow.banki.hu>
-
-	* vty.c (vty_read): Handle also 0x7f (alt-backspace), just like
-	esc-ctrl-h (delete word backwards).
-
-1999-08-24  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* if.h: Add if_nametoindex for NRL.
-
-1999-08-23  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* if.c (if_create): New function.
-
-1999-08-22  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* snmp.c: New file.
-
-1999-08-21  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* stream.c (stream_put): stream_memcpy () is changed to stream_put
-	().  stream_get () is added.
-
-1999-08-18  Toshiaki Takada  <takada@zebra.org>
-
-	* memory.h (enum): Add MTYPE_OSPF_LSA_DATA.
-	
-1999-08-18  Yasuhiro Ohara  <yasu@sfc.wide.ad.jp>
-
-	* table.c (route_table_finish): add function frees table.
-
-1999-08-12  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* memory.h (enum): Add MTYPE_RTADV_PREFIX.
-
-1999-08-11  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* if.h (struct interface ): hw_address, hw_address_len added.
-
-1999-08-10  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* if.h (struct interface ): Change structure member if_data to
-	info, index to ifindex.
-
-1999-08-08  Rick Payne <rickp@rossfell.co.uk>
-
-	* routemap.c: Multi protocol route-map modification.
-
-	* routemap.c (route_map_apply): Route match process bug is fixed.
-
-1999-08-05  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* thread.c (thread_fetch): When signal comes, goto retry point.
-
-1999-08-04  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* Makefile.am: Add sockopt.c and sockopt.h
-	* sockopt.c: New file.
-	* sockopt.h: New file.
-	
-1999-08-02  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* version.h (ZEBRA_VERSION): Release zebra-0.75
-
-1999-08-01  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* memory.h (enum): Add MTYPE_RIPNG_AGGREGATE.
-
-1999-07-31  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* sockunion.h: Add sockunion_getpeername ().
-
-1999-07-27  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* version.h: Release zebra-0.74
-
-1999-07-26  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* command.h (struct host): Delete lines from struct host.  Add
-	lines to struct vty.
-
-	* command.c: Delete `lines LINES'.  Terminal display line settings
-	should be done by `terminal length' command.
-
-1999-07-24  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* memory.h (enum): MTYPE_OSPF_PATH are added.
-
-1999-07-22  Toshiaki Takada  <takada@zebra.org>
-
-	* memory.h (enum): MTYPE_OSPF_NEXTHOP is added.
-
-1999-07-21  Toshiaki Takada  <takada@zebra.org>
-
-	* linklist.c (list_add_node_prev), (list_add_node_next),
-	(list_add_list): New function added.
-
-	* table.c (route_table_free): New function added.
-	
-1999-07-21  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* plist.c (config_write_prefix): Set write flag when configuration
-	is written.
-
-1999-07-15  Yasuhiro Ohara  <yasu@sfc.wide.ad.jp> 
-
-	* prefix.c : prefix_cmp() added. change apply_mask() to
-	apply_mask_ipv4(), and new apply_mask() added.
-
-1999-07-14  Yasuhiro Ohara  <yasu@sfc.wide.ad.jp>
-
-	* prefix.c (prefix2str): append prefixlen.
-
-1999-07-13  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* command.c (config_terminal): Change "config terminal" to
-	"configure terminal".  Reported by Georg Hitsch
-	<georg@atnet.at>.
-	(config_terminal_length): `terminal length <0-512>' is added.  At
-	this moment this command is only usef for vty interface.
-	Suggested by Georg Hitsch <georg@atnet.at>.
-
-1999-07-12  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* routemap.c (rulecmp): Add wrapper function of strcmp.
-
-1999-07-08  Rick Payne <rickp@rossfell.co.uk>
-
-	* sockunion.c (inet_aton): Fix bug of inet_aton.
-
-1999-07-08  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* version.h (ZEBRA_VERSION): Start zebra-0.73
-
-1999-07-06  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* version.h: Bump up to 0.72.
-
-1999-07-05  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* command.c (install_default): New function for install default
-	commands to the node.
-
-	* memory.h (enum): MTYPE_NEXTHOP is added.
-
-1999-07-01    <kunihiro@zebra.org>
-
-	* command.c (no_banner_motd): `no banner motd' command added.
-
-1999-06-30  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* regex.c: Update to glibc-2.1.1's posix/regex.c
-
-	* regex-gnu.h: Update to glibc-2.1.1's posix/regex.h
-
-	* prefix.h (IPV4_ADDR_SAME): Macro added.
-	(IPV6_ADDR_SAME): Likewise.
-
-1999-06-29  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* memory.h (enum): Add MTYPE_OSPF_VERTEX
-
-	* version.h: Bump up to 0.71.
-
-	* vty.c (vty_serv_sock_addrinfo): Use addrinfo function to bind
-	VTY socket when IPv6 is enabled.
-
-1999-06-28  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* vty.c (vty_serv_sock): Change vty_serv_sock determine which
-	address family to bind.
-
-	* command.c: Add quit command.
-
-1999-06-26  NOGUCHI kay <kay@dti.ad.jp>
-
-	* vty.c (vty_read_config): Fix bug of configuration file path
-	detection.
-
-1999-06-25  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* version.h: Bump up to 0.70.
-
-1999-06-17  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* buffer.h (GETL): Remove GETL macro.
-
-	* version.h: Bump up to 0.69.
-
-1999-06-14  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* if.c (connected_add): Commented out connected_log.
-
-1999-06-13  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* command.h (struct cmd_element ): strvec and descvec is combined
-	into newstrvec.
-
-	* command.c (desc_make): Function removed.
-	(desc_next): Function removed.
-
-	* command.h (struct cmd_element ): docvec is removed from struct
-	cmd_element.
-
-1999-06-12  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* command.c (cmd_execute_command): Remove command NULL check.
-
-	* command.h (struct cmd_element ): Add newstrvec entry to struct
-	cmd_element.
-	(DEFUN2): DEFUN2 macro is removed.  DEFUN is extended to support
-	(a|b|c) statement.
-	(DESC): DESC macro is removed.
-
-	* vty.c (vty_complete_command): When return value is
-	CMD_ERR_NO_MATCH, don't display error message.
-
-1999-06-08  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* table.c (route_next_until): New function.
-
-	* version.h: Bump up to 0.68.
-
-1999-06-06  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* vty.c (vty_close): Free vty->buf when vty is closed.
-
-	* memory.h (enum): Add MTYPE_COMMUNITY_ENTRY and
-	MTYPE_COMMUNITY_LIST.
-
-	* vty.h (struct vty ): Change buf from static length buffer to
-	variable length buffer.
-
-	* vty.c (vty_ensure): New function added.
-	
-1999-06-04  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* command.h (node_type ): Add COMMUNITY_LIST_NODE.
-
-	* command.c (config_enable_password): Freeing host.enable bug is
-	fixed.
-	(config_enable_password): Add argc count check.
-
-1999-05-31  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* version.h: Bump up to 0.67.
-
-1999-05-30  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* command.c (zencrypt): New function for encrypt password.
-
-	* command.h (struct host): Add password_encrypt and
-	enable_encrypt.
-
-1999-05-30  Jochen Friedrich <jochen@scram.de>
-
-	* command.h (struct host): New member encrypt is added for
-	encrypted password.
-
-1999-05-30  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* vty.c: Remove all_digit_check function.  Instead use all_digit.
-
-	* prefix.c (all_digit): New function for checking string is made
-	from digit character.
-
-1999-05-25  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* Makefile.am (libzebra_a_SOURCES): Add zclient.c.
-	(noinst_HEADERS): Add zclient.h
-
-	* zclient.[ch]: New file for zebra client routine.
-
-	* memory.h (enum): Add MTYPE_ZEBRA.
-
-1999-05-19  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* version.h (ZEBRA_VERSION): Update to 0.66.
-
-1999-05-15  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* buffer.h (GETC,GETW): Macro deleted.
-
-1999-05-15  Carlos Alberto Barcenilla <barce@frlp.utn.edu.ar>
-
-	* prefix.h (IPV4_NET0, IPV4_NET127): Macro added.
-
-1999-05-15  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* vty.c (service_advanced_vty): New command added.
-	(no_service_advanced_vty): Likewise.
-
-1999-05-14  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* vty.c (vty_auth): If advanced flag is set and enable password is
-	not set, directly login to the ENABLE_NODE.  This feature is
-	originally designed and implemented by Stephen R. van den Berg
-	<srb@cuci.nl>.
-
-	* command.h (host): Add advanced flag to struct host for advanced
-	vty terminal interface.
-
-	* version.h (ZEBRA_VERSION): Update to 0.65 for next beta release.
-
-1999-05-14  Stephen R. van den Berg <srb@cuci.nl>
-
-	* command.h (node_type ): Add TABLE_NODE.
-	
-	* vty.c (vty_telnet_option): Check host.lines value.
-
-	* command.c (config_lines): DEFUN for 'lines LINES' command.
-
-	* zebra.h: Include <sys/utsname.h> for uname().
-	(RT_TABLE_MAIN): Defined as 0 if OS does not support multiple
-	routing table.
-
-	* vty.c (vty_auth): Directly login to the ENABLE_NODE when enable
-	password is not set.
-	(vty_prompt): Get machine's hostname when hostname is not set.
-
-1999-05-11  James Willard <james@whispering.org>
-
-	* command.c (config_exit): Close connection when `exit' command is
-	executed at ENABLE_NODE.
-
-1999-05-10  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* vty.c (vty_stop_input): `C-c' key change node to ENABLE_NODE.
-
-	* command.c (cmd_execute_command_strict): Matched command size
-	check added.
-	(cmd_make_desc_line): New function for DEFUN2.
-
-	* command.h (struct cmd_element ): Add descsize.
-
-1999-05-09  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* command.h (struct cmd_element ): Remame descvec to docvec.
-	(struct cmd_element ): Add descvec for new description system.
-
-	* command.c (desc_make): Check cmd->descvec.
-
-1999-05-06  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* memory.h (enum): Add MTYPE_CLUSTER, MTYPE_CLUSTER_VAL.
-
-1999-05-05  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* version.h (ZEBRA_VERSION): Bump up to 0.64 for next beta
-	release.
-
-1999-05-04  Yasuhiro Ohara <yasu@sfc.wide.ad.jp>
-
-	* linklist.c (list_delete_all_node): bug fix. 
-	previous code loses current position when node
-	is deleted.
-
-1999-05-03  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* command.h (DESC): Macro added.
-	(struct cmd_element2): Delete struct cmd_element2.
-
-	* plist.c (prefix_list): Sequential number option check is added.
-
-1999-05-02  Yasuhiro Ohara <yasu@sfc.wide.ad.jp>
-
-	* log.c (zvlog_{debug,info,notice,warn,err}): have been
-	added. now we can log both console and file, but still 
-	need some fix about config write.
-
-1999-05-02  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* log.c (zvlog_debug): Fix yasu's change.
-
-1999-05-01  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* plist.c (prefix_list): Fix typo.
-
-1999-04-30  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* Set version to 0.63 for first beta package.
-
-1999-04-27  Carlos Barcenilla <barce@frlp.utn.edu.ar>
-
-	* prefix.c (str2prefix_ipv4): Fix prefix length check.
-	(str2prefix_ipv6): Likewise.
-
-1999-04-25  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* memory.h (enum): Add MTPYE_PREFIX_LIST and
-	MTYPE_PREFIX_LIST_ENTRY.
-
-	* command.h (node_type ): Add PREFIX_NODE.
-
-1999-04-25  Carlos Barcenilla <barce@frlp.utn.edu.ar>
-
-	* command.c: ALIAS (config_write_memory_cmd) and ALIAS
-	(copy_runningconfig_startupconfig_cmd) is added.
-
-	* table.c (route_node_lookup): Unused match variable deletion.
-
-1999-04-24  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* Makefile.am (libzebra_a_SOURCES): plist.c added.
-	(noinst_HEADERS): plist.h added.
-
-	* plist.c, plist.h: New file added.
-
-	* memory.h (enum): Rename MTYPE_AS_PASN to MTYPE_AS_STR.
-	* memory.c: Likewise.
-
-1999-04-19  Carlos Alberto Barcenilla <barce@frlp.utn.edu.ar>
-
-	* command.c (show_version): `show version' command added.
-
-1999-04-19  Kunihiro Ishiguro <kunihiro@zebra.org>
-
-	* prefix.c (str2prefix_ipv6): Prefix length overflow check.
-
-1999-04-19  Carlos Alberto Barcenilla <barce@frlp.utn.edu.ar>
-
-	* prefix.c (str2prefix_ipv4): Prefix length overflow check.
-
-1999-04-19  Alex Bligh <amb@gxn.net>
-
-	* prefix.c (sockunion2hostprefix): Function added.
-	(sockunion2prefix): Address family was not set.  Now it is set.
-	
-	* vty.c: VTY access-class command is added.
-
-1999-04-18  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* memory.c: Change xmalloc to zmalloc.  xcalloc, xrealloc, xfree,
-	xstrdup are likewise.
-
-1999-04-18  Yasuhiro Ohara <yasu@sfc.wide.ad.jp>
-
-	* thread.c: Add thread_execute for other routing daemon.
-	OSPF tasks need to be generated by "sheduled" and "executed".
-
-1999-04-13  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* buffer.c: Rewrite buffer_write and buffer_flush related
-	functions for fixing bugs.  Reason of the problem and fix is
-	suggested by Alex Bligh <amb@gxn.net>.
-	
-1999-04-12  Alex Bligh <amb@gxn.net>
-
-	* command.c (cmd_entry_function_descr): Added for variable
-	argument help display.
-
-1999-04-07  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* regex.c, regex-gnu.h: Imported from GNU sed-3.02 distribution.
-
-1999-03-24  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* stream.c: stream_fifo_free bug is fixed.
-
-1999-03-19  Toshiaki Takada  <takada@zebra.org>
-
-	* stream.c (stream_strncpy): Added for getting any length bytes
-	from stream.
-
-1999-03-16  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* version.h (ZEBRA_BUG_ADDRESS): New macro added.
-
-1999-03-14  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* buffer.c (buffer_flush_window): If ep is same as buffer's size
-	length and lp is overrun one octet.
-
-1999-03-13  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* vty.h: add VTY's timeout function.
-
-1999-03-05    <kunihiro@zebra.org>
-
-	* command.h (node_type ): Add OSPF6_node.
-
-1999-03-04  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* zebra.h: Check HAVE_SYS_SELECT_H when include <sys/select.h>
-
-1999-03-03  Jeroen Ruigrok/Asmodai <asmodai@wxs.nl>
-
-	* zebra.h: Include <net/if_var.h> if it exists.
-
-1999-03-02  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* getopt.[ch],getopt1.c: Sync with glibc-2.1.
-
-	* log.c (zlog): Tempolary ZLOG_STDOUT feature added.
-
-	* command.h: Include vector.h and vty.h
-
-1999-02-25  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* routemap.h (struct route_map_rule_cmd): Add prefix arguemnt.
-
-	* routemap.c (route_map_apply_index): Add prefix argument.
-	(route_map_apply): Likewise.
-
-	* memory.h (enum): Add MTYPE_ROUTE_MAP_COMPILED.
-
-	* stream.c: Add stream_fifo related functions.
-
-1999-02-24  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* daemon.c: Return integer value.  File descriptor close is added.
-
-	* memory.h (enum): add MTYPE_OSPF_LSA.
-
-1999-02-23  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* rsh.c: Remove empty file.
-
-1999-02-22    <kunihiro@zebra.org>
-
-	* routemap.c: Add add/delete hook to route_map_master.
-
-1999-02-19  Peter Galbavy  <Peter.Galbavy@knowledge.com>
-
-	* str.[ch] added to supply wrappers for snprintf(), strlcat() and
-	strlcpy on system without these.
-
-1999-02-18  Peter Galbavy  <Peter.Galbavy@knowledge.com>
-
-	* syslog support added
-
-1999-02-02  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* filter.c (access_list_add_hook): added for hook function management.
-	* filter.c (access_list_delete_hook): Likewise.
-
-1999-01-19  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* stream.c: New file.
-	* stream.h: New file.
-	* Divide stream related fucntions from buffer.[ch] into stream.[ch].
-	
-1999-01-14  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* memory.h (enum): add MTYPE_STREAM, MTYPE_STREAM_DATA
-
-	* buffer.c (stream_new): Set MTYPE_STREAM to XMALLOC argument.
-
-1998-12-23  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* routemap.c: route_map_index_delete() added.
-
-1998-12-22  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* buffer.c (buffer_empty): check cp instead of sp.
-
-1998-12-17  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* radix.[ch]: Deleted.
-
-1998-12-15  Magnus Ahltorp <map@stacken.kth.se>
-
-	* buffer.c: Prototype fixes.
-	* prefix.c: Likewise.
-	* sockunion.c: Likewise.
-	* sockunion.h: Likewise.
-
-1998-12-14  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* vty.c (vty_read): DELETE key works as vty_delete_char.
-
-1998-12-13  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* log.c (time_print): chane %y to %Y.
-
-1998-12-10  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* distribute.c: new file.
-
-1998-12-09  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* filter.c: Remove all of struct prefix_{ipv4,ipv6} and add
-	complete support of IPv6 access list.
-
-	* command.c (config_write_element): function delete.
-	(config_write_host): function add.  password and enable password
-	isn't printed to vty interface.
-
-1998-12-08  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* filter.c: Change prefix_ipv4 to prefix and add support of
-	prefix_ipv6 filtering.
-
-1998-12-07  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* Makefile.am (INCLUDES): add @INCLUDES@ for Linux IPv6 inet6-apps
-	header includes.
-
-1998-12-05  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* log.c (log_flush): fix function name typo.
-
-1998-12-04  Yasuhiro Ohara <yasu@sfc.wide.ad.jp>
-
-	* memory.h: OSPF memory type is added.
-
-1998-11-15  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* command.c (sort_node): add sort_node() for pretty printing of
-	command on vty interface.
-	(config_password): delete the restriction of charaster of password
-	string.
-
-1998-09-05  Kunihiro Ishiguro  <kunihiro@debian.zebra.org>
-
-	* prefix.c (prefix_ipv4_any): add prefix_ipv4_any().
-
-1998-08-25  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* network.h: New file.
-
-1998-08-24  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* vty.c (vty_will_echo): function name change from vty_off_echo.
-
-1998-08-18  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* buffer.h: add PUTC,PUTW,PUTL macros.
-
-1998-07-22  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* route.[ch]: renamed to prefix.[ch]
-
-1998-06-09  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* prefix_in, prefix_in6 is replaced by prefix_ipv4, prefix_ipv6.
-
-	* Makefile.am: @INCLUDES@ is deleted from INCLUDES.
-
-1998-06-07  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* host.[ch]: merged with command.[ch]
-
-1998-05-08  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* Makefile.am (libzebra_a_SOURCES): add route.c to libzebra_a_SOURCES.
-
-1998-05-07  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* route.c (str2prefix): str2prefix () is gone.
-
-1998-05-03  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* vty.c (vty_read_config): change CONDIR to SYSCONFDIR.
-
-	* .cvsignore: add file.
-
-	* memory.c (xerror): add arguent `type' and `size'.
-
-	* socket.c: deleted.
-
-1998-05-02  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* vector.c: malloc,free,realloc -> XMALLOC,XFREE,XREALLOC.
-	* linklist.c: same as above.
-
-1998-04-30  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* filter.[ch]: added.
-
-1998-04-01  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* vty.c (config_who): return CMD_SUCCESS
-
-1998-04-01  Jochen Friedrich <jochen@scram.de>
-
-	* table.c (route_dump_node): route_dump_node is IPv6 specific
-	function so move #ifdef to the end of route_dump_node ().
-
-1998-03-05  "Hannes R. Boehm" <hannes@boehm.org>
-
-	* if.c: DEFUN(interface_desc) added.
-
-1998-03-05  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* if.c: separated from ripd/rip_interface.c
-
-1998-03-04  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* thread.[ch] : added.
-
-1998-02-14  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* vty.c (vty_delete_char): fix size bug.
-	(vty_backward_pure_word): function added.
-	(vty_read): ESC + 'f' perform vty_forward_word.
-	(vty_read): ESC + 'b' perform vty_backward_word.
-
-1998-02-11  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* radix.c (radix_lookup_rt): add mask check.
-	(radix_delete_duproute): add mask check.
-
-1998-02-10  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* command.c (config_write_file): fix vty -> file_vty.
-
-1998-02-06  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* command.c (cmd_filter_ambiguous): add complex type treatment.
-
-1998-02-05  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* vty.c (vty_time_print): function added.
-	(vty_complete_command): now [...] element isn't shown by completion.
-
-1998-01-26  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* command.c : change from cmd_install_node() to install_node().
-
-1998-01-16  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* route.[ch]: struct rt{} is replaced by struct prefix{}.
-
-1998-01-06  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* command.c (cmd_execute_command): check command length.
-
-	* timer.c (zebra_timer_set): add zebra_timer_set.
-
-1998-01-05  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* command.h (node_type ): add ZEBRA_NODE.
-
-	* command.c (config_exit): add RIP_NODE.
-	(config_write_file): add RIP_NODE.
-
-1998-01-04  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* print_version.c (print_version): Now Copyright is 1996-1998.
-
-	* sockunion.c (sockunion_log): moved from ../zebra/route.c
-
-1997-12-30  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* host.c (config_logfile): change 'log PATH' to 'logfile PATH'.
-
-	* sockunion.c (sockunion_sameprefix): add same prefix for
-	sockunion.
-
-1997-12-29  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* radix.[ch] : are moved from ../zebra directroy.
-	
-	* command.c (config_from_file): if command execution failed down
-	level to CONFIG_NODE.
-
-	* host.c: config_log function which enable 'log FILENAME' command.
-
-1997-12-23  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* vty.c: add vty_transpose_chars ().  Now you can use '^T' to
-	transpose character.
-
-	* command.c: cmd_cmdsize add, this is useful to check incomplete
-	command.
-
-1997-12-07  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* fd.h: add family for address family
-
-1997-12-06  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* command.o
-	* vty.o
-	* host.o    is moved from ../zebra
-
-1997-08-14  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* make library directory.
-
diff --git a/m4/ChangeLog b/m4/ChangeLog
deleted file mode 100644
index 0a60d6a..0000000
--- a/m4/ChangeLog
+++ /dev/null
@@ -1,16 +0,0 @@
-2007-02-02  Greg Troxel  <Greg Troxel <gdt@ir.bbn.com>>
-
-	* Makefile.am: remove all the m4 files; they are crufty (2004) and
-	quagga CVS users should have newer libtool by now.
-
-2004-08-31  Greg Troxel  <gdt@poblano.ir.bbn.com>
-
-	* Makefile.am (EXTRA_DIST): New - just has EXTRA_DIST.  (Using a
-	directory in EXTRA_DIST in the parent was causing 'make dist' to fail.)
-
-2004-08-19 Paul Jakma <paul@dishone.st>
-
-	* *.m4: import of libtool CVS m4 autoconf files. These only
-	  configure libtool support for languages where configure has
-	  already called AC_PROG_<lang>, less fragile.
-	* README.txt: doc file for contents of this directory.
diff --git a/ospf6d/ChangeLog b/ospf6d/ChangeLog
deleted file mode 100644
index f4ad928..0000000
--- a/ospf6d/ChangeLog
+++ /dev/null
@@ -1,1199 +0,0 @@
-2007-10-22 Phil Spagnolo <phillip.a.spagnolo@boeing.com>
-
-	* ospf6_asbr.c: (ospf6_asbr_lsentry_remove) Remove shortcut
-	  of LSDB search - it's based on assumption non-BEST routes
-	  can't have ASBR routes, which appears to be wrong. Safest to
-	  search.
-
-2007-06-07 Pavol Rusnak <prusnak@suse.cz>
-
-	* ospf6_lsa.c: (no_debug_ospf6_lsa_hex_cmd) Fix bug: must use strcmp
-	  to compare strings.
-
-2007-04-27 Andrew J. Schorr <ajschorr@alumni.princeton.edu>
-
-	* ospf6_snmp.c: (ospfv3AreaEntry, ospfv3AreaLsdbEntry) Fix some
-	  zlog_debug printf formats to work with 64-bit size_t.
-
-2007-03-08 David Siebörger d.sieborger@ru.ac.za
-
-	* ospf6_neighbor.c: (ospf6_neighbor_show) Fix bug #322, ospf6d
-	  wasn't updated to match thread times changing to relative
-	  time.
-
-2007-02-27  Pavol Rusnak <prusnak@suse.cz>
-
-	* ospf6_lsa.c: (ospf6_lsa_handler_name) Fix bug: must use strcmp
-	  to compare strings.
-
-2007-02-02  Greg Troxel  <Greg Troxel <gdt@ir.bbn.com>>
-
-	* ospf6d.h: remove declaration of errno (should be via header)
-
-2006-03-01  Yasuhiro Ohara  <yasu@sfc.wide.ad.jp>
-
-	* ospf6_asbr.c: fix bug of needless forwarding address
-	* ospf6d.h: version 0.9.7r
-
-2006-02-22  Yasuhiro Ohara  <yasu@sfc.wide.ad.jp>
-
-	* valgrind check and memory fix
-	* route table identification string added
-	* ospf6d.h: version 0.9.7q
-
-2005-10-20  Yasuhiro Ohara  <yasu@sfc.wide.ad.jp>
-
-	* ospf6_neighbor.c: add the calling of ospf6_maxage_remove ()
-	when the neighbor went out of Exchange/Loading.
-
-2005-10-06  Yasuhiro Ohara  <yasu@sfc.wide.ad.jp>
-
-	* ospf6_asbr.c: fix bug of calculating AS-External routes
-	  in other areas. Add debugging function for border-router
-	  calculation.
-	* ospf6d.h: version 0.9.7p
-
-2005-10-01 Andrew J. Schorr <ajschorr@alumni.princeton.edu>
-
-	* ospf6_asbr.c: Remove local hard-coded tables zroute_name and
-	  zroute_abname. Change the ZROUTE_NAME macro to use new library
-	  function zebra_route_string().  Remove the ZROUTE_ABNAME macro.
-	  (ospf6_asbr_external_route_show): Replace ZROUTE_ABNAME() with
-	  a call to zebra_route_char(), and be sure to fix the format string,
-	  since we now have a char instead of a char *.
-	* ospf6_zebra.c: Remove local hard-coded tables zebra_route_name and
-	  zebra_route_abname.  Note that the zebra_route_name[] table
-	  contained mixed-case strings, whereas the zebra_route_string()
-	  function returns lower-case strings.
-	  (ospf6_zebra_read_ipv6): Change debug message to use new library
-	  function zebra_route_string() instead of zebra_route_name[].
-	  (show_zebra): Use new library function zebra_route_string() instead
-	  of zebra_route_name[].
-
-2005-08-09 Paul Jakma <paul.jakma@sun.com>
-
-	* ospf6_asbr.c: (ospf6_asbr_redistribute_add) Fix sense of testing
-	  of route_map_apply return code, it can return many things other
-	  than RMAP_MATCH which do not indicate DENY. Should test explicitly
-	  for equality to RMAP_DENYMATCH instead.
-
-2005-06-24 Harald Welte <laforge@gnumonks.org>
-
-	* ospf6_abr.[ch], ospf6_area.[ch]: Add area filter-list (in|out)
-	  support and area import and export lists support.
-
-2005-06-24 Yasuhiro Ohara <yasu@sfc.wide.ad.jp>
-
-	* ospf6_message.c: Changed to be insensitive to changes of neighbors'
-	  IP source address in the OSPF packets. It was sometimes problematic
-	  in actual operation (needed some operational cost: restarting
-	  all-neighbor routers when I/F NIC was changed). Due to this change,
-	  a previously safe case, attaching multiple interface to the same
-	  link will now be dengerous and will not work. Remedy to that should
-	  be applied later.
-
-2005-06-24 Yasuhiro Ohara  <yasu@sfc.wide.ad.jp>
-
-	* ospf6_interface.c: fix the way inactivity_timer is called. Because
-	  inactivity_timer() deletes the neighbor from the neighbor_list, it
-	  cannot be called by thread_execute() from inner side of the
-	  neighbor_list for-loop.
-
-2005-05-31 Hasso Tepper <hasso at quagga.net>
-
-	* ospf6d.c: No need for double ';'. Fixes parsing "show ipv6 ospf6
-	  database ..." commands for vtysh by extract.pl. Remove duplicate
-	  install_element calls.
-
-2005-04-11 Andrew J. Schorr <ajschorr@alumni.princeton.edu>
-
-	* ospf6_zebra.c (ospf6_zebra_redistribute, ospf6_zebra_no_redistribute):
-	  Change 2nd arg to zebra_redistribute_send from zclient->sock
-	  to zclient.
-
-2005-04-07 Paul Jakma <paul@dishone.st>
-
-	* (global) Fix up list loops to match changes in lib/linklist,
-	  and some basic auditing of usage.
-	* ospf6_abr.c: (ospf6_abr_examin_brouter) change to a single
-	  scan of the area list, rather than scanning all areas first for
-	  INTER_ROUTER and then again for INTER_NETWORK. According to
-	  16.2, the scan should be area specific anyway, and further
-	  ospf6d does not seem to implement 16.3 anyway.
-
-2005-04-02 Andrew J. Schorr <ajschorr@alumni.princeton.edu>
-
-	* ospf6_interface.[ch]: (ospf6_interface_lookup_by_name) Remove unused
-	  function.
-
-2005-04-02 Andrew J. Schorr <ajschorr@alumni.princeton.edu>
-
-	* ospf6_zebra.c: (ospf6_zebra_if_del) Previously, this whole function
-	  was commented out.  But this is not safe: we should at least update
-	  the ifindex when the interface is deleted.  So the new version
-	  updates the interface status and sets ifp->ifindex to
-	  IFINDEX_INTERNAL.
-	  (ospf6_zebra_route_update) Use if_indextoname properly.
-
-2005-04-02 Andrew J. Schorr <ajschorr@alumni.princeton.edu>
-
-	* ospf6_route.c: (ospf6_route_show, ospf6_route_show_detail) Protect
-	  against the possibility that the string returned by if_indextoname
-	  may not terminate with '\0'.
-
-2005-03-02 Vincent Jardin <Vincent.Jardin@6wind.com>
-
-	* ospf6_zebra.c: Fix core dump when router-id is provided with
-	  an empty ospf6d.conf file (no context router ospf6) because
-	  ospf6_create has not been called yet.
-
-2005-01-25 Paul Jakma <paul@dishone.st>
-
-	* ospf6_asbr.c: Add "hsls" to the zroute_name const char array.
-
-2004-12-24 Hasso Tepper <hasso at quagga.net>
-
-	* *.c: Change level of debug messages to LOG_DEBUG.
-
-2004-12-07 Andrew J. Schorr <ajschorr@alumni.princeton.edu>
-
-	* ospf6_main.c: (main) The 2nd argument to openzlog has been removed.
-	  Note that stdout logging will no longer be enabled by default when
-	  not running as a daemon.
-
-2004-12-03 Andrew J. Schorr <ajschorr@alumni.princeton.edu>
-
-	* ospf6_main.c: (sigint,sigterm) Use zlog_notice for termination
-	  message.
-	  (main) Remove commented-out call to pid_output_lock (which should
-	  never be called other than from inside pid_output).  And use
-	  zlog_notice to print the startup message, which now includes
-	  the vty port.
-
-2004-11-26 Hasso Tepper <hasso at quagga.net>
-
-	* ospf6_snmp.c: Fix compile: listnode -> struct listnode *.
-
-2004-11-25 Hasso Tepper <hasso at quagga.net>
-
-	* ospf6_main.c: Make group to run as configurable.
-
-2004-11-05 Phil Spagnolo <phillip.a.spagnolo@boeing.com>
-       * ospf6_flood.c:  When adding a thread to retransmit an lsa after 
-    rxmt_interval, the ospf6d used thread_add_event().  However, 
-    thread_add_event() executes immediately and ignores the delay parameter.  
-    This was causing unnecesary unicast LSU sends.  Adding the thread has 
-    been changed to use thread_add_timer() which will expire after delay.  
-    After the fix results appear consistent with expectation.
-
-2004-10-12 Hasso Tepper <hasso at quagga.net>
-
-	* ospf6_snmp.c: Remove defaults used to initialize smux connection to
-	  snmpd. Connection is initialized only if smux peer is configured.
-
-2004-10-11 Hasso Tepper <hasso at quagga.net>
-
-	* osp6_top.c, ospf6_top.h: Better handling for router-id. If we use
-	  common one, don't output it into configuration - only statically
-	  configured one.
-
-2004-10-10 Paul Jakma <paul@dishone.st>
-
-	* Makefile.am: fix listing of ospf_snmp.c in noinst_HEADERS
-	* ospf6_route.c: Add const qualifier to various char arrays of
-          constants. signed/unsigned fixes.
-          (ospf6_linkstate_table_show) argv is const
-        * ospf6_snmp.c: listnode typedef is dead.
-          (ospf6_snmp_init) Take struct thread_master arg, needed for
-          smux_init.
-        * ospf6_snmp.h: update ospf6_snmp_init declaration.
-        * ospf6d.c: (ospf6_init) add const qualifier to sargv, pass master
-          to ospf_snmp6_init.
-	* ospf6_asbr.c: const char update.
-	* ospf6_interface.c: ditto, plus signed/unsigned fixes.
-	  (ipv6_ospf6_cost) Check whether cost fits in u_int32_t and use
-          strtoul.
-	* ospf6_intra.c: const char update. Parenthesise expression.
-	* ospf6_lsa.c: signed/unsigned and const char updates.
-	* ospf6_proto.c: ditto.
-	* ospf6_message.c: ditto.
-	* ospf6_lsdb.c: signed/unsigned update.
-	* ospf6_main.c: const char update.
-	* ospf6_neighbor.c: ditto.
-	* ospf6_spf.c: ditto.
-	* ospf6_top.c: ditto.
-	
-2004-10-06  Yasuhiro Ohara  <yasu@sfc.wide.ad.jp>
-
-	* ospf6_snmp.c: add partial support for SNMP
-	(i.e. ospfv3AreaLsdbTable).
-	* OSPFv3-MIB.txt: Net-SNMP translate Unsigned32 range
-	(0..'FFFFFFFF'h) incorrectly to (0..-1). Those parts for
-	Unsigned32 range are changed to (0..4294967295).
-	Also, doubtful 'not-accessible's are changed to read-only.
-
-2004-10-06  Yasuhiro Ohara  <yasu@sfc.wide.ad.jp>
-
-	* ospf6_snmp.[ch], OSPFV3-MIB.txt: start supporting SNMP.
-	it follows draft-ietf-ospf-ospfv3-mib-08.txt, but change
-	OSPFv3 tree to {experimental 102} based on
-	http://www.iana.org/assignments/smi-numbers:
-	Prefix: iso.org.dod.internet.experimental (1.3.6.1.3.)
-	   102   OSPFv3    OSPF for IPv6   [Joyal]
-
-2004-10-03 Hasso Tepper <hasso at quagga.net>
-
-	* ospf6_zebra.c: Use router id from zebra daemon if it wasn't set in
-	configuration.
-
-2004-09-25  Hasso Tepper  <hasso at estpak.ee>
-
-	* ospf6_asbr.c, ospf6_lsa.c, ospf6_proto.c, ospf6_proto.h: Fix
-	compiler warnings.
-
-2004-09-23 Hasso Tepper <hasso at quagga.net>
-
-	* *.[c|h]: list -> struct list *, listnode -> struct listnode *.
-
-2004-09-13  Yasuhiro Ohara  <yasu@sfc.wide.ad.jp>
-
-	* ospf6_intra.c, ospf6_route.[ch]: try to fix assertion failure
-	in brouter's route_remove
-	* ospf6d.h: version 0.9.7o
-
-2004-09-12  Yasuhiro Ohara  <yasu@sfc.wide.ad.jp>
-
-	* ospf6_route.c: route_count_assert bug fix
-	* ospf6d.h: version 0.9.7n
-
-2004-09-03  Yasuhiro Ohara  <yasu@sfc.wide.ad.jp>
-
-	* ospf6_area.c, ospf6_route.c, ospf6_top.c, ospf6d.c:
-	"show intra-route" function and "show SPF result" function is
-	changed.
-	* ospf6_neighbor.c: Changed to update stub intra-prefix origination
-	when it is not DR.
-	* ospf6_route.h: resolv conflict between best flag and
-	active-summary flag.
-	* ospf6d.h: version 0.9.7m
-
-2004-09-02  Yasuhiro Ohara  <yasu@sfc.wide.ad.jp>
-
-	* ospf6_asbr.c: E-bit check in examining AS-External-LSA
-	* ospf6_abr.c: E-bit set in receiving Inter-Area-Router-LSA
-
-2004-09-02  Yasuhiro Ohara  <yasu@sfc.wide.ad.jp>
-
-	* *.[ch]: Logging LSAs of particular type is added.
-	lsa_handler is now using vector in order to adjust
-	existing LSA modules.
-	* ospf6d.h: version 0.9.7l
-
-2004-08-28  Hasso Tepper  <hasso at quagga.net>
-
-	* ospf6_main.c: Modify for sigevents.
-
-2004-08-26  Hasso Tepper  <hasso@estpak.ee>
-
-	* ospf6_interface.c, ospf6_top.c, ospf6d.c: for vtysh.
-
-2004-08-19  Yasuhiro Ohara  <yasu@sfc.wide.ad.jp>
-
-	* ospf6_asbr.c: Bug in ASBR check fixed.
-	* ospf6d.h: version 0.9.7k
-
-2004-08-19  Yasuhiro Ohara  <yasu@sfc.wide.ad.jp>
-
-	* ospf6_asbr.c: Bug in AS-External Origination fixed.
-	* ospf6d.h: version 0.9.7j
-
-2004-08-15  Yasuhiro Ohara  <yasu@sfc.wide.ad.jp>
-
-	* *.c: Area support almost done. (almost ! ;p)
-	* ospf6d.h: version 0.9.7i
-
-2004-08-15  Yasuhiro Ohara  <yasu@sfc.wide.ad.jp>
-
-	* ospf6_message.c: Bug cause BadLSReq is fixed.
-	* ospf6_abr.c: Border Router check.
-	* ospf6d.h: version 0.9.7h
-
-2004-08-14  Yasuhiro Ohara  <yasu@sfc.wide.ad.jp>
-
-	* ospf6_area.[ch], ospf6_abr.[ch]: area range,
-	border-routers, Inter-Area-Router-LSA origination
-	* ospf6d.h: version 0.9.7g
-
-2004-08-12  Yasuhiro Ohara  <yasu@sfc.wide.ad.jp>
-
-	* *.[c,h]: LSA refreshing is changed and cleaned up.
-	* ospf6d.h: version 0.9.7f
-
-2004-08-01  Yasuhiro Ohara  <yasu@sfc.wide.ad.jp>
-
-	* ospf6_abr.[ch]: add files for abr function.
-	* *.c: VTY_NEWLINE -> VNL
-	* ospf6d.h: version 0.9.7e
-	  show database functions are rewritten.
-
-2004-07-23  Hasso Tepper  <hasso@estpak.ee>
-
-	* ospf6_interface.c, ospf6_zebra.c: use ifp->mtu6 instead of
-	  ifp->mtu.
-
-2004-07-23 Paul Jakma <paul@dishone.st>
-
-	* ospf6_main.c: Delete LOG_PERROR, not portable.
-	* ospf6_network.c: (ospf6_set_pktinfo) use setsockopt_ipv6_pktinfo
-
-2004-07-06  Yasuhiro Ohara  <yasu@sfc.wide.ad.jp>
-
-	* ospf6_message.c, ospf6_interface.c: add a command to configure
-	ospf6 ifmtu on a interface.
-	* ospf6d.h: version 0.9.7d
-
-2004-05-18  Hasso Tepper <hasso@estpak.ee>
-
-	* *.*: Merge rewritten ospf6d from Zebra repository.
-	* ospf6_network.c, ospf6_main.c: Merged privs stuff back in.
-	* ospf6_zebra.c: Sync back to zclient changes.
-	* ospf6_asbr.c: Added isis to the routings list.
-	* ospf6_main.c: "version.h" -> <lib/version.h>
-
-2004-05-17  Yasuhiro Ohara  <yasu@sfc.wide.ad.jp>
-
-	* ospf6_flood.[ch], ospf6_lsa.[ch], ospf6_lsdb.h, ospf6_message.c
-	ospf6_neighbor.c: Fix crash bug and change the way to count
-        how many neighbors include paticular LSA on its retrans-list.
-	* ospf6d.h: version 0.9.7c
-
-2004-05-03  Yasuhiro Ohara  <yasu@sfc.wide.ad.jp>
-
-	* ospf6_message.[ch], ospf6_interface.c: adjust send/recv buffer
-	size to interface MTUs.
-	* ospf6d.h: version 0.9.7b
-
-2003-08-18  Yasuhiro Ohara  <yasu@sfc.wide.ad.jp>
-
-	* *.[ch]: rewrite all source code from scratch
-	* ospf6d.h: version 0.9.7
-
-2003-08-11  Taisuke Sasaki <sasaki@soft.net.fujitsu.co.jp>
-
-        * ospf6_ism.c: DR Election bug fix.
-
-2003-04-25  Yasuhiro Ohara  <yasu@sfc.wide.ad.jp>
-
-	* ospf6_asbr.c: AS-External LSA refresh was based on the
-	prefix of the obsolete LSA. It was wrong so fixed.
-	* version: 0.9.6p
-
-2002-11-09  Vincent Jardin  <jardin@6wind.com>
-
-	* ospf6_interface.c: update link-local address on interface creation.
-
-2002-11-09  Yasuhiro Ohara  <yasu@sfc.wide.ad.jp>
-
-	* ospf6_asbr.c: apply MinLSInterval to AS-External-LSA origination.
-	* ospf6_lsa.c: change not to issue flooding caused by expire event
-	when the received LSA is (already) MaxAge.
-	* ospf6_spf.c: fix a bug which is that ospf6d calculates
-	wrong nexthop when failed to find Link-LSA for the neighbor.
-	* ospf6_damp.c ospf6_dbex.c ospf6_neighbor.c ospf6_spf.c:
-	some clean up
-	* version: 0.9.6o
-
-2002-10-04  Yasuhiro Ohara  <yasu@sfc.wide.ad.jp>
-
-	* ospf6_asbr.c: bug of failing ASE lsa refresh fixed.
-	* version: 0.9.6n
-
-2002-10-01  Yasuhiro Ohara  <yasu@sfc.wide.ad.jp>
-
-	* ospf6_asbr.c: AS-External-LSA origination function
-	is re-written.
-	* ospf6_damp.[ch]: New feature that damps flaps is added.
-	* version: 0.9.6m
-
-2002-07-14  Yasuhiro Ohara  <yasu@sfc.wide.ad.jp>
-
-	* ospf6_spf.c: unwanted assert() in ospf6_spf_nexthop_calculation()
-	is deleted.
-	* version: 0.9.6l
-
-2002-07-14  Yasuhiro Ohara  <yasu@sfc.wide.ad.jp>
-
-	* ospf6_dbex.c: bug that ospf6d fails to refresh self-originated
-	LSA if he have not the LSA before has been fixed.
-	* ospf6_asbr.c: bug of failing removing ASE LSA when remove
-	message arrived from zebra has been fixed.
-	* version: 0.9.6k
-
-2002-07-13  Yasuhiro Ohara  <yasu@sfc.wide.ad.jp>
-
-	* ospf6_zebra.c: bug reported [zebra 14642] fixed.
-	The bug was related to the synchronization between zebra
-	and ospf6d. Now synchronization will be correctly done.
-	* version: 0.9.6j
-
-2002-07-07  Yasuhiro Ohara  <yasu@sfc.wide.ad.jp>
-
-	* ospf6_lsdb.c: bug fixed in ospf6_lsdb_type_router ().
-	* ospf6_dbex.c: because of retrans list structure changed
-	due to LSDB change, removal of old instance from retrans-list
-	is not necessary anymore. this caused crash but now fixed.
-	* version: 0.9.6i
-
-2002-07-07  Kunihiro Ishiguro  <kunihiro@ipinfusion.com>
-
-	* zebra-0.93 released.
-
-2002-07-07  Yasuhiro Ohara  <yasu@sfc.wide.ad.jp>
-
-	* ospf6_lsdb.c: entirely rewritten. now ospf6d uses
-	radix tree by using lib/table.[ch] for LSDB lookup.
-	* ospf6_abr.c, ospf6_asbr.c, ospf6_intra.c: hook changed
-	due to rewriting of lsdb module.
-	* ospf6_neighbor.c: lack of check existence and find correct
-	instance of the LSA which is going to be removed from neighbor's
-	retransmission was filled.
-	* version: 0.9.6h
-
-2002-07-07  Yasuhiro Ohara  <yasu@sfc.wide.ad.jp>
-
-	* ospf6_intra.c: bug fix for Intra-route deletion.
-	* ospf6_route.c: bug fix for path comparison.
-	* version: 0.9.6g
-
-2002-06-28  Yasuhiro Ohara  <yasu@sfc.wide.ad.jp>
-
-	* ospf6_route.c: some logs trying to find the situation
-	when assert occur are added. route duration statistics
-	added.
-	* ospf6_zebra.c: trying to fix the problem reported by
-	[zebra 14318] but not yet sure.
-	* version: 0.9.6f
-
-2002-06-25  Yasuhiro Ohara  <yasu@sfc.wide.ad.jp>
-
-	* ospf6_intra.c: new file for management of intra-prefix LSA.
-	* ospf6_abr.c: inter area route calculation code added.
-	* version: 0.9.6e
-
-2002-06-22  Yasuhiro Ohara  <yasu@sfc.wide.ad.jp>
-
-	* ospf6_asbr.c: All AS-External route was removed when
-	one of the ASBR path was gone, but the route from other ASBR
-	path should stay remained. this bug is fixed.
-	* version: 0.9.6d
-
-2002-06-22  Yasuhiro Ohara  <yasu@sfc.wide.ad.jp>
-
-	* ospf6_route.c: route table calculation bug fixed. [zebra 14105]
-	* ospf6_spf.c, ospf6_route.c, etc.: log message cleaned up.
-	* version: 0.9.6c
-
-2002-04-27  Yasuhiro Ohara  <yasu@sfc.wide.ad.jp>
-
-	* ospf6_route.c: [zebra 13514] bug fix.
-	thanks to Harald Koch.
-	* version: 0.9.6b
-
-2002-04-22  Yasuhiro Ohara  <yasu@sfc.wide.ad.jp>
-
-	* ospf6_dump.c: fix bug of log function
-	* ospf6_area.c: fix bug of intra route deletion
-	* version: 0.9.6a
-
-2002-04-20  Yasuhiro Ohara  <yasu@sfc.wide.ad.jp>
-
-	* merged with "current" version.
-	* version: 0.9.6
-
-2001-03-11  Yasuhiro Ohara  <yasu@sfc.wide.ad.jp>
-
-	* ospf6_lsdb.c ospf6_spf.c: log message changed for debug.
-
-2001-02-20  Yasuhiro Ohara  <yasu@sfc.wide.ad.jp>
-
-	* version: 0.9.5i
-
-	* ospf6_asbr.c: Added code that finds alternative
-	AS-External route when remove AS-External route.
-	This is temporary fix ...
-
-	* ospf6_redistribute.c: remove redistributed routes
-	immediately when 'no redistribute ...'
-
-2001-02-20  Yasuhiro Ohara  <yasu@sfc.wide.ad.jp>
-
-	* version: 0.9.5h
-
-	* ospf6_spf.c, ospf6_lsa.c: Change to originate Link-LSA on
-	point-to-point links.
-
-	* ospf6_message.c: Bug of log messages of self-originated
-	Hello packet fixed.
-
-2001-02-09  Yasuhiro Ohara  <yasu@sfc.wide.ad.jp>
-
-	* version: 0.9.5g
-	* ospf6_asbr.c: fix for the bug that AS-External route
-	is not get removed.
-
-2001-02-09  Yasuhiro Ohara  <yasu@sfc.wide.ad.jp>
-
-	* ospf6_lsdb.c: crash bug while receiving wrong LSA scope bit
-	has been temporarily fixed
-
-2001-12-20  Yasuhiro Ohara  <yasu@sfc.wide.ad.jp>
-
-	* ospf6_asbr.[ch]: The byte order bug in encoding/decoding
-	the bits/metric field in AS-External-LSA fixed.
-	Fixed to update E-bit in Router-LSA of itself.
-	Reported by Taisuke Sasaki ([zebra 11548]).
-
-	* README: updated.
-
-	* version: 0.9.5f
-
-2001-11-21  Yasuhiro Ohara  <yasu@sfc.wide.ad.jp>
-
-	* ospf6_prefix.c: Intra-prefix-LSA bug fixed.
-	* ospf6_abr.[ch]: added (only just placeholder yet)
-
-2001-11-20  Yasuhiro Ohara  <yasu@sfc.wide.ad.jp>
-
-	* ospf6_route.c: fix to overwrite a prefix when another
-	addition to the prefix is given. freeze function changed
-	not to remove routes by default.
-
-	* version: 0.9.5e
-
-2001-11-19  Yasuhiro Ohara  <yasu@sfc.wide.ad.jp>
-
-	* version: 0.9.5d
-
-	* ospf6_lsa.c ospf6_spf.c: SPF Calculations are now
-	scheduled by hook.
-
-	* ospf6_route.c: ospf6_route_add bug fix,
-	ospf6_route_remove_all corrected.
-
-2001-11-15  Yasuhiro Ohara  <yasu@sfc.wide.ad.jp>
-
-	* ospf6_hook.[ch]: added.
-	* Almost half of the code has been rewritten.
-	especially, ospf6_route.[ch]. Hook call has been injected
-	much.
-	* ospf6_asbr.[ch]: added.
-
-2001-10-17  Yasuhiro Ohara  <yasu@sfc.wide.ad.jp>
-
-	* ospf6_dbex.c: ospf6d was wrong to omit reoriginating
-	of LSA when the self-originated LSA was received from others.
-	fixed.
-	* ospf6d.h: version: 0.9.5c
-
-2001-10-16  Yasuhiro Ohara  <yasu@sfc.wide.ad.jp>
-
-	* ospf6_lsa.c: 'force-prefix' was not executed. fixed.
-	* ospf6d.h: version: 0.9.5b
-
-2001-10-13  Yasuhiro Ohara  <yasu@sfc.wide.ad.jp>
-
-	* ospf6_interface.c: 'passive-interface' is now moved to
-	'ipv6 ospf6 passive' in INTERFACE NODE. 'prefix-list' which
-	specifies the filter prefix for connected address prefix also
-	moved to INTERFACE NODE as 'ipv6 ospf6 advertise prefix-list WORD'.
-	The old obsoleted commands are still acceptable though. New command
-	'ipv6 ospf6 advertise force-prefix' added, which which tells ospf6d
-	to advertise rather prefix than stub local-address even on loopback
-	or pointopoint interfaces.
-
-	* ospf6_dump.c: 'ospf6 debug hello' -> 'ospf6 debug message hello'.
-	same for other message type. The older is still acceptable.
-
-	* ospf6_lsa.c: Changed AS-External generation to new one which uses
-	LSA hooks. Delete old garbage.
-
-2001-10-02  Yasuhiro Ohara  <yasu@sfc.wide.ad.jp>
-
-	* ospf6d.c: turn off and turn on sequence with
-	'no interface' 'interface' cmds was not work. fixed.
-
-	* ospf6_lsa.c: generating Intra-Area-Prefix-LSA for stub
-	did not care duplicate prefixes. fixed.
-
-2001-09-07  Yasuhiro Ohara  <yasu@sfc.wide.ad.jp>
-
-	* ospf6_message.c: There was a bug that prevent LSDB
-	to syncronize. It was a DbDesc packet bug that Slave
-	sends two different DbDesc packet on the same sequence
-	number. This cause many LSAs are dropped when Exchanging
-	LSDB, because the latter DbDesc packet that have the same
-	sequence number will be ignored as duplicate packet.
-	This seems to be exist at least before 0.9.4 version.
-	Now this is the most stable candidate.
-
-	* ospf6d.h: version 0.9.5a
-
-2001-09-06  Yasuhiro Ohara  <yasu@sfc.wide.ad.jp>
-
-	* ospf6_zebra.c ospf6_spf.c ospf6_lsa.c :
-	delete nexthop check to certify the nexthop is Link-local address.
-	Suppress Link-LSA origination on links other than Broadcast.
-	SPF's nexthop calculation first checks linklocal address
-	in Link-LSA, then checks source address of neighbor's packets.
-
-	* ospf6_interface.c ospf6_ism.c ospf6_lsa.c ospf6_nsm.c:
-	intra-area-prefix-lsa origination func moved to new one.
-
-	* ospf6_interface.h ospf6d.[ch] ospf6_lsa.c: 
-	interface_area_cmd now changed to have 'passive'
-	and 'prefix-list' option.
-
-	* ospf6_prefix.c:
-	clean up.
-
-2001-09-04  Yasuhiro Ohara  <yasu@sfc.wide.ad.jp>
-
-	* ospf6_dbex.c ospf6_interface.c ospf6_ism.c ospf6_lsa.[ch]:
-	clean up and new LSA origination functions added.
-
-	* ospf6_route.c ospf6_lsdb.c: make vty function more
-	clean/understandable.
-
-	* ospf6d.h: version 0.9.5
-
-2001-08-24  Kunihiro Ishiguro  <kunihiro@ipinfusion.com>
-
-	* ospf6_lsdb.c: Use IS_LSA_MAXAGE macro instead of
-	ospf6_lsa_is_maxage.
-
-	* ospf6_lsa.h (IS_LSA_MAXAGE): Add new macro to check MaxAge.
-
-2001-08-21  Yasuhiro Ohara  <yasu@sfc.wide.ad.jp>
-
-	* ospf6_lsdb.c: if There's no previous prefix
-	ospf6d was wrongly not calculate the prefix.
-	this reported by (v6 16029) is fixed.
-
-	* ospf6_neighbor.c: Instance of LSA Summary included
-	in DbDesc packet was wrongly freed. The bug cause
-	malformed DbDesc, ExChange <-> ExStart flapping,
-	and then crash.
-
-	* ospf6d.h: version 0.9.4
-
-2001-08-21  Yasuhiro Ohara  <yasu@sfc.wide.ad.jp>
-
-	* ospf6_route.[ch]: Showing format is changed.
-	'show ipv6 route ospf6' -> 'show ipv6 ospf6 route'
-	'show ipv6 route ospf6 external' ->
-	'show ipv6 ospf6 route redistribute'
-
-	* ospf6_lsdb.c ospf6_lsa.c ospf6_neighbor.c ospf6_interface.c:
-	memory leak in LS list fixed.
-
-	* all: clean up
-
-	* ospf6d.h: version 0.9.3
-
-2001-08-20  Kunihiro Ishiguro  <kunihiro@ipinfusion.com>
-
-	* ospf6d.c (ospf6_timeval_sub_equal): Remove function.
-
-	* ospf6_spf.c (ospf6_timeval_cmp): Rewrite ospf6_timeval_cmp().
-	(ospf6_timeval_add_equal): Function moved from ospf6d.c
-	
-2001-08-19  Kunihiro Ishiguro  <kunihiro@ipinfusion.com>
-
-	* zebra-0.92a released.
-
-2001-08-15  Kunihiro Ishiguro  <kunihiro@ipinfusion.com>
-
-	* zebra-0.92 released.
-
-2001-08-09  Yasuhiro Ohara  <yasu@sfc.wide.ad.jp>
-
-	* ospf6_lsdb.c ospf6_neighbor.c:
-	LSDB function/structure and LS list function has been rewritten.
-	memory leak has been decreased.
-
-	* ospf6_lsa.[ch] ospf6_dbex.c: garbage code has been deleted.
-
-	* ospf6d.h: version 0.9.2
-
-2001-08-07  Yasuhiro Ohara  <yasu@sfc.wide.ad.jp>
-
-	* ospf6_dbex.c ospf6_lsdb.c:
-	Retransmition list had a critical bug that breaks LSDB
-	synchronization. When new LSA be added to retrans-list,
-	old must be removed, but it was not. So new LSA dropped,
-	and LSA Acknowledgement did not work. The bug was fixed.
-
-	* ospf6d.h: version 0.9.1
-
-2001-06-20  Yasuhiro Ohara  <yasu@sfc.wide.ad.jp>
-
-	* ospf6_spf.c: crash bug fix in temporary treat code for
-	Router-LSA whose LS-ID != 0
-
-	* ospf6_dbex.c: RFC2328 13.(4) was wrongly coded.
-	    (4) Else if the LSA's LS age is equal to MaxAge, and there is
-            currently *NO* instance of the LSA in the router's link state
-	    ...
-
-	* ospf6_lsa.c: RFC2328 13.1 checksum tie breaker
-	had been neglected, and has just added now.
-
-	* ospf6d.h: version 0.9.0
-	ospf6d expected to work with hitachi gr2000 from these fixes.
-
-2001-06-12  Yasuhiro Ohara  <yasu@sfc.wide.ad.jp>
-
-	* ospf6_lsa.c: Fix bug in creating Intra-Area-Prefix-LSA.
-	DR was mis-include others prefixes advertised by their Link-LSA.
-
-	* ospf6_route.c: Fix bug in calculating intra area routes.
-	Not all prefixes in Intra-Area-Prefix-LSA was calculated.
-
-	* ospf6_spf.c:
-	Changed to quit when a error occured in calculating SPF tree.
-	Very messy hack for the bug reported by [zebra 8807]. This
-	is not tested yet.
-	Changed to quit SPF calculation when a nexthop calculation
-	errors.
-
-	* ospf6_zebra.c:
-	Support for interface address deletion.
-
-	* ospf6d.h:
-	version: 0.8.y
-
-2001-04-18  Yasuhiro Ohara  <yasu@sfc.wide.ad.jp>
-
-	* ospf6d.h
-	Due to previous change (DR Election algorithm changed),
-	backward compatibility will be lost from this version.
-	version: 0.8.x
-
-2001-04-18  Yasuhiro Ohara  <yasu@sfc.wide.ad.jp>
-
-	* ospf6_message.c ospf6_ism.c:
-	Bug of router_id comparison
-
-2001-04-17  Yasuhiro Ohara  <yasu@sfc.wide.ad.jp>
-
-	* ospf6_dbex.c: ospf6_dbex_is_maxage_to_be_dropped() had
-	some bug causing Loading state lasts long.
-	version: 0.8.v
-
-2001-04-08  Yasuhiro Ohara  <yasu@sfc.wide.ad.jp>
-
-	* ospf6_route.c: BUG in AS-External route calculation fixed.
-	It was using OLD LSDB...
-	Version: 0.8.u-
-
-2001-04-08  Yasuhiro Ohara  <yasu@sfc.wide.ad.jp>
-
-	* ospf6_area.c, ospf6_dbex.c, ospf6_interface.c,
-	ospf6_lsa.c, ospf6_lsdb.c, ospf6_lsdb.h, ospf6_message.c,
-	ospf6_neighbor.c, ospf6_neighbor.h, ospf6_nsm.c,
-	ospf6_redistribute.c, ospf6_route.c, ospf6_spf.c:
-	Delete old LSDB function.
-
-	* ospf6d.h:
-	Version: 0.8.u
-
-2001-04-05  Yasuhiro Ohara  <yasu@sfc.wide.ad.jp>
-
-	* ospf6_area.c, ospf6_area.h, ospf6_dbex.c, ospf6_interface.c,
-	ospf6_interface.h, ospf6_lsa.c, ospf6_lsdb.c, ospf6_lsdb.h,
-	ospf6_message.c, ospf6_nsm.c, ospf6_redistribute.c, ospf6_route.c,
-	ospf6_spf.c, ospf6_top.c, ospf6_top.h, ospf6d.h:
-	Changed to use New LSDB.
-	Version: 0.8.t
-
-2001-04-02  Yasuhiro Ohara  <yasu@sfc.wide.ad.jp>
-
-	* ospf6_lsa.c:
-	Interface stub check in Intra-Area-Prefix-LSA origination 
-	was wrong. - fixed.
-
-	* ospf6_area.h, ospf6_dbex.c, ospf6_interface.c,
-	ospf6_interface.h, ospf6_lsa.c, ospf6_lsa.h, ospf6_lsdb.c,
-	ospf6_message.c, ospf6_neighbor.c, ospf6_nsm.c,
-	ospf6_redistribute.c, ospf6_top.c, ospf6_top.h, ospf6d.c:
-	New LSDB functions, but not changed to be used.
-
-	* ospf6d.h:
-	Version: 0.8.s
-
-2001-03-28  Yasuhiro Ohara  <yasu@sfc.wide.ad.jp>
-
-	* ospf6_area.c ospf6_area.h ospf6_dbex.c ospf6_dump.c
-	ospf6_interface.c ospf6_interface.h ospf6_lsa.c
-	ospf6_message.c ospf6_redistribute.c ospf6_spf.c ospf6_top.c
-	ospf6_top.h ospf6_zebra.c ospf6d.c ospf6d.h: cleaning.
-
-2001-03-24  Yasuhiro Ohara  <yasu@sfc.wide.ad.jp>
-
-	* ospf6d.h:
-	version: 0.8.r
-
-	* ospf6_neighbor.[ch], ospf6_lsa.[ch]:
-	just clean up and log clearify.
-
-	* ospf6_message.[ch]:
-	Packet receiving function and dumping OSPFv3 packet has been
-	changed simple and clean.
-
-	* ospf6_dbex.[ch], ospf6_interface.[ch], ospf6_lsdb.[ch],
-	  ospf6_neighbor.[ch], ospf6_nsm.[ch]:
-	LSList(i.e. summary list, request list, retrans list, etc) have
-	been rewritten based on new LSDB module. The main LSDB have not
-	yet shifted to this new module, but will shift eventually.
-	This change expected to resolve the problem that the ospf6d keeps
-	on sending redundant LSUpdate/LSAck.
-
-	* ospf6_interface.c: changed default MTU from 1500 to 1280.
-	It was possible that the ospf6d could not send packet (e.g.
-	LSUpdate in response to LSReq in my case) when the packet
-	size accidentally reached near 1500 (I was forget about IP
-	header :p). It is a bit illegal to set MTU 1280 constantly,
-	but I failed once with I/F MTU from kernel (through zebra),
-	and thinks that 1280 is more stable than kernel variable.
-	Comments will be appriciated.
-
-2001-03-15  Yasuhiro Ohara  <yasu@sfc.wide.ad.jp>
-
-	* ospf6_dbex.c, ospf6_interface.c, ospf6_ism.c, ospf6_lsdb.[ch],
-	  ospf6_neighbor.c, ospf6_spf.c, ospf6d.c:
-	Fix for crash. ospf6d has ever been crashing when
-	'no interface' command executed, and when starting up with
-	the configuration which does not include 'router ospf6'.
-	these has been fixed.
-
-2001-02-24  Yasuhiro Ohara  <yasu@sfc.wide.ad.jp>
-
-	* ospf6_lsa.c, ospf6_message.c:
-	LSA summary (exchanged while Adjacency bring up) may expire
-	(may reach MaxAge). Handling this has been added but
-	it's a little bit quick hack.
-
-	* ospf6_message.c:
-	Thread chain bug fixed. Read network thread chain has been cut
-	when receive packets on not-enabled interface. this was wrong
-	and fixed.
-
-2001-02-24  Yasuhiro Ohara  <yasu@sfc.wide.ad.jp>
-
-	* ospf6_message.c:
-	I/F MTU check part on sending packet had some bug, and it's fixed.
-	Ospf6d has believed a value from zebra as I/F MTU, but from now
-	I/F MTU is set to constant 1500. This is workaround for ATM.
-
-2001-02-01  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* zebra-0.91 is released.
-
-2001-01-04  Yasuhiro Ohara  <yasu@sfc.wide.ad.jp>
-
-	* just code clean up of almost all module.
-	* ospf6_dump.c, ospf6_lsa.c: file dependency.
-	* ospf6_mesg.[ch]: changed filename to ospf6_message.[ch]
-
-2001-01-09  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* zebra-0.90 is released.
-
-2001-01-04  Yasuhiro Ohara  <yasu@sfc.wide.ad.jp>
-
-	* ospf6_mesg.c,ospf6_lsa.c: doubly cancel thread bug fixed.
-	version 0.8.k CRASHed for this.
-	* ospf6_lsa.c: bug of logging fixed.
-	version: 0.8.l
-
-2001-01-04  Yasuhiro Ohara  <yasu@sfc.wide.ad.jp>
-
-	* ospf6_neighbor.c: fix typo when trying to delete
-	MaxAge AS-External LSA. MaxAge LSA remaining bug is expected
-	to be fixed.
-	version: 0.8.k
-
-2001-01-04  Yasuhiro Ohara  <yasu@sfc.wide.ad.jp>
-
-	* ospf6_mesg.c: add I/F Mtu check for sending LS Update.
-
-	* ospf6_dbex.c, ospf6_mesg.c, ospf6_neighbor.c, ospf6_neighbor.h,
-	ospf6_spf.c: Changed type of hisaddr field in ospf6_neighbor
-	structure, from sockaddr_in6 to in6_addr. No protocol/processing
-	changed.
-
-2001-01-04  Yasuhiro Ohara  <yasu@sfc.wide.ad.jp>
-
-	* ospf6_mesg.c, ospf6_neighbor.[ch]: Speed up of
-	Database Exchange.
-	version: 0.8.j
-
-	Because the LS Request list was checked only when attempt
-	to send (retransmit) LS Request packet, Loading state lasted
-	long (for RxmtInterval) unexpectedly. This was fixed; LS Request
-	packet will be send as soon as one received a LS Update packet.
-
-2001-01-01  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* ospf6d.h (OSPF6_VTYSH_PATH): Change "/tmp/ospf6d" to
-	/tmp/.ospf6d".
-
-2000-12-29  Yasuhiro Ohara  <yasu@sfc.wide.ad.jp>
-
-	* ospf6_dump.[ch]: simplified.
-
-2000-12-19  Yasuhiro Ohara  <yasu@sfc.wide.ad.jp>
-
-	* ospf6_route.c: Fix bug of using unavailable route.
-	version: 0.8.d
-
-2000-11-30  Yasuhiro Ohara  <yasu@sfc.wide.ad.jp>
-
-	* ospf6_spf.c: calculate statistics. version: 0.8.d
-
-2000-11-26  Yasuhiro Ohara  <yasu@sfc.wide.ad.jp>
-
-	* ospf6_mesg.c, ospf6_nsm.c: LSDB sync bug fixed.
-	version: 0.8.c
-
-2000-11-26  Yasuhiro Ohara  <yasu@sfc.wide.ad.jp>
-
-	* ospf6_dbex.c: Start debugging and cleaning.
-
-	* ospf6_area.c, ospf6_dbex.c, ospf6_interface.c, ospf6_lsa.c,
-	ospf6_proto.c, ospf6_top.c: add some function to clarify codes.
-
-2000-11-26  Yasuhiro Ohara  <yasu@sfc.wide.ad.jp>
-
-	* ospf6_spf.c: Delete old garbage (which was enclosed by #if 0)
-
-	* ospf6_redistribute.c: "redistribute ospf6" was generated in
-	"router ospf6" in config file. It is a bug, and fixed.
-	wrong warning message was deleted.
-
-	* ospf6_main.c: If daemon mode, ospf6d was silent even if
-	the config file was wrong. It is a bug, and fixed.
-
-	* ospf6_route.c, ospf6_zebra.c: Zebra syncronization method
-	has been changed. delete garbages. allow nexthop of :: in case
-	of connected route.
-
-	* ospf6_dbex.c: Delete annoying log messages.
-
-	* ospf6_lsa.c: Changed string for LSA log.
-
-2000-11-21  Yasuhiro Ohara  <yasu@sfc.wide.ad.jp>
-
-	* ospf6_spf.c: some careless bug fixed.
-
-	* ospf6_route.c: changed not to send garbage route
-          whose nexthop is not linklocal address.
-
-2000-11-09  Yasuhiro Ohara  <yasu@sfc.wide.ad.jp>
-
-        * ospf6_rtable.c: renamed to ospf6_route.c
-        whole functionality has been rewritten as new code.
-        new functions not yet installs routes; the old
-        functions still remains. cleaning log messages.
-
-	* ospf6_spf.c: whole functionality has been rewritten
-	as new code. new command "show ipv6 ospf6 spf node",
-	"show ipv6 ospf6 spf tree", "show ipv6 ospf6 spf table"
-	has been added. Memory leak was fixed. cleaning log messages.
-
-	* ospf6d version: 0.7.c
-
-2000-10-02  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* zebra-0.89 is released.
-
-2000-09-10  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* ospf6_lsdb.c (ospf6_lsdb_remove_maxage_lsa): Fix compile
-	warnings.
-
-2000-08-17  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* zebra-0.88 is released.
-
-2000-08-06  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* ospf6_rtable.h (struct ospf6_nexthop): Change ifindex type from
-	unsigned long to unsigned int.
-
-2000-04-28  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* ospf6d.h: Include some headers for avoid warning.
-
-	* ospf6_routemap.h: Add newfile.
-
-1999-11-21  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* ospf6_network.c: Respect IPV6_JOIN_GROUP and IPV6_LEAVE_GROUP
-	rather than RFC2133.
-
-1999-10-21  Jun-ichiro itojun Hagino <itojun@itojun.org>
-
-	* ospf6_network.c (ospf6_ipv6_decode_ipv4): Fix bug of conversion
-	from IPv4 Mapped Address to IPv4 address.
-
-1999-08-08  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* ospf6_lsa.c (construct_link_lsa): Enclose KAME specific part by
-	#ifdef/#endif.
-
-1999-07-29  Yasuhiro Ohara  <yasu@sfc.wide.ad.jp>
-
-	* ospf6_mesg.c: add new message process function.
-
-1999-07-25  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* ospf6_main.c (sighup): Call of log_rotate() removed.
-
-1999-07-24  Yasuhiro Ohara  <yasu@sfc.wide.ad.jp>
-
-	ospf6_dbex.{c,h}: variable "acknowledge" has been deleted.
-
-1999-07-22  Yasuhiro Ohara  <yasu@sfc.wide.ad.jp>
-
-	* *.{c,h}: lsa data structure has been drastically
-	changed.
-
-1999-07-16  Yasuhiro Ohara  <yasu@sfc.wide.ad.jp>
-
-	* *.{c,h}: bug of updating LSA's which is self
-	originated has been fixed.
-
-1999-07-14  Yasuhiro Ohara  <yasu@sfc.wide.ad.jp>
-
-	* *.{c,h} : log clean up.
-
-1999-07-05  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* ospf6d.c (ospf6_init): Change to use install_default.
-
-1999-07-03  Yasuhiro Ohara <yasu@sfc.wide.ad.jp>
-
-	* ospf6_rtable.c (nexthop_*): added some function that handles
-	new nexthop structure.
-
-1999-07-01  Rick Payne <rickp@rossfell.co.uk>
-
-	* ospf6_zebra.c (ospf6_zebra_init): Install standard commands to
-	ZEBRA_NODE.
-
-1999-06-09  Yasuhiro Ohara <yasu@sfc.wide.ad.jp>
-
-	* ospf6_rtable.h: added for new routing table of ospf6d
-
-1999-05-14  Stephen R. van den Berg <srb@cuci.nl>
-
-	* ospf6_main.c (signal_init): SIGTERM call sigint.
-	(sigint): Loggging more better message.
-
-1999-05-13  Yasuhiro Ohara <yasu@sfc.wide.ad.jp>
-
-	*ospf6_spf.c (get_prefix_lsa_of_vertex): bug fix about network vertex.
-
-1999-05-08  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* ospf6_network.c (send_linkstate_ack): Check HAVE_SIN6_SCOPE_ID
-	is defined.
-	* ospf6_mesg.c (make_hello): Likewise.
-	* ospf6_lsa.c (lsa_flood): Likewise.
-
-1999-05-07  Yasuhiro Ohara <yasu@sfc.wide.ad.jp>
-
-	* ospf6_spf.c, etc: Many bug fix.
-        intra-area-prefix-LSA treatment changed.
-        network byte order of neighbor ifid changed.
-
-1999-05-07  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* ospf6_zebra.h (struct zebra): Add hitory entry to structure.
-
-1999-05-05  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* ospf6_main.c (main): Add KAME check for binding vty socket.
-	(main): Delete old interface get routine garbage.
-
-	* ospf6d.c: Change all `show ip6' statement to `show ipv6'.
-	(show_ipv6_ospf6_requestlist): Add description.
-
-1999-05-04  Yasuhiro Ohara <yasu@sfc.wide.ad.jp>
-
-	* ospf6_lsa.c, etc: Many bug fix, now two routers
-	on the same segment can become FULL neighbor state
-	each other.
-
-1999-05-03  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* Makefile.am: Add file dependency.
-	(depend): Add target.
-
-1999-05-02  Yasuhiro Ohara <yasu@sfc.wide.ad.jp>
-
-	* Clean up and fix have been almost done. This code
-	now testing stage of Intra area routing.
-
-	* Configuration Vty become more similar to Cisco.
-
-1999-04-22  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* Trim training newline from zlog format arguemnt.
-	
-	* ospf6_dump.c (ospf6_err): Commented out ospf6_err and
-	ospf6_warn.  Same kind of function should be implemented as
-	zlog_err or zlog_warn or someting.
-
-	* ospf6d.c: Change OSPF_NODE to OSPF6_NODE.
-	Change OSPF_DEFAULT_CONFIG to OSPF6_DEFAULT_CONFIG.
-	
-
-1999-04-21  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* ospf6_mesg.c (make_hello): Add check of SIN6_LEN
-
-1999-04-16  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* ospf6_neighbor.c: Change list_clear_all to list_delete_all_node.
-	Remove list_delete_all fuction and use lib/linklist.c's one.
-	
-1999-04-14  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* mcast_join(),mcast_leave()'s argument socket length is removed.
-
-1999-04-08    <kunihiro@zebra.org>
-
-	* ospf6_zebra.h (ospf_zebra_read): Fix typo.
-
-	* ospf6_interface.h: Tempolary add struct rt_addrinfo.
-
-1999-03-05  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* Merge from ospfd-zebra-990303 codes.
-
-1999-02-23  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* Makefile.in: add new file.
-
-	* Makefile.am: @INCLUDES@ is added for OS/library specific IPv6
-	directory search.
-
-	* Import files from Yasuhiro Ohara <yasu@sfc.wide.ad.jp>'s ospfd.
-	Impterted files are:
-	Makefile.am, ospf_area.h, ospf_dump.c, ospf_interface.c,
-	ospf_interface.h, ospf_lsa.c, ospf_lsa.h, ospf_main.c,
-	ospf_mesg.c, ospf_mesg.h, ospf_neighbor.c,
-	ospf_neighbor.h,ospf_network.c, ospf_network.h, ospf_proto.h,
-	ospf_spf.c, ospf_spf.h, ospf_types.h, ospfd.c, ospfd.h
diff --git a/ospfclient/ChangeLog b/ospfclient/ChangeLog
deleted file mode 100644
index e678aff..0000000
--- a/ospfclient/ChangeLog
+++ /dev/null
@@ -1,71 +0,0 @@
-2005-11-24 Paul Jakma <paul.jakma@sun.com>
-
-	* ospf_apiclient.c: add static qualifier to relevant functions.
-	* ospfclient.c: ditto
-
-2005-04-20 Paul Jakma <paul@dishone.st>
-
-	* Makefile.am: Add @INCLUDES@ and srcdir to allow out-of-tree
-	  builds to work.
-
-2004-06-30  Greg Troxel  <gdt@poblano.ir.bbn.com>
-
-	* Makefile.am: Add libtool/shlib support.
-
-2003-01-10  Ralph Keller <keller@tik.ee.ethz.ch>
-	* New ChangeLog
-	
-2003-01-08  Ralph Keller <keller@tik.ee.ethz.ch>
-	* apiclient message passing bug resolved 
-	* (proposed by Masahiko)
-
-2002-10-09  Ralph Keller <keller@tik.ee.ethz.ch>
-	* Includes patch in OSPFd for ISM, NSM, neighbor
-	
-2002-09-16  Ralph Keller <keller@tik.ee.ethz.ch>
-	* Current patch vs. Zebra-0.93b 
-
-2002-08-22  Ralph Keller <keller@tik.ee.ethz.ch>
-	* Bugfix: LSA updates are now received only once even 
-	* if multiple opaque types are registered 
-
-2002-08-06  Ralph Keller <keller@tik.ee.ethz.ch>
-	* Upgrade of OSPF API to Zebra-0.93a.
-
-2002-06-13  Ralph Keller <keller@tik.ee.ethz.ch>
-	* Opaque LSA origination bug fixed by Masahiko. 
-	* This code is based on 0.93-pre
-
-2002-05-03  Ralph Keller <keller@tik.ee.ethz.ch>
-	* Upgrade to newest Zebra from CVS repository. ospf_flood_through
-	* function did not work after upgrade. Function 
-	* ospf_apiserver_flood_opaque_lsa added. Also byte order problem
-	* with port numbers resolved.
-
-2002-05-02  Ralph Keller <keller@tik.ee.ethz.ch>
-
-	* new autoconf and automake files, now called configure.in
-	* instead of configure.ac
-
-2002-04-24  Ralph Keller <keller@tik.ee.ethz.ch>
-
-	* reverse channel now works (syncport and syncport+1)
-	* ospf_apiclient.c: standard includes removed (not needed)
-	* bzero replaced with memset
-
-2002-04-18  Ralph Keller <keller@tik.ee.ethz.ch>
-
-	* 2-way phase connection setup
-
-2002-04-05  Ralph Keller <keller@tik.ee.ethz.ch>
-
-        * Changes incorporated as proposed by Masahiko
-
-2002-04-05  Ralph Keller <keller@tik.ee.ethz.ch>
-
-        * autoconf and automake-style Makefile
-	
-2002-04-04  Ralph Keller <keller@tik.ee.ethz.ch>
-
-        * 1st public release of OSPF API
-	
diff --git a/ospfd/ChangeLog b/ospfd/ChangeLog
deleted file mode 100644
index 30e2d60..0000000
--- a/ospfd/ChangeLog
+++ /dev/null
@@ -1,4984 +0,0 @@
-2007-09-18 Denis Ovsienko
-
-	* ospf_network.c: (ospf_adjust_sndbuflen) Don't complain
-	  about getting more buffer space, than requested.
-	* ospfd.[ch]: (ospf_new) Abandon OSPF_SNDBUFLEN_DEFAULT
-	  and consider OS's initial buffer size instead.
-	* ospf_interface.c: (ospf_if_up) Fix missing argument.
-
-2007-08-21 Denis Ovsienko
-
-	* ospfd.h: Extend struct ospf with maxsndbuflen field and
-	  define its default value.
-	* ospfd.c: (ospf_new) init maxsndbuflen
-	* ospf_interface.c: (ospf_if_up) Call ospf_adjust_sndbuflen()
-	  for each regular interface being brought up.
-	* ospf_network.[ch]: (ospf_adjust_sndbuflen) New function
-	  makes sure ospf socket sending buffer is large enough
-	  to cover the biggest interface MTU we have seen ever.
-	* ospf_packet.c: (ospf_write) Use maxsndbuflen to decide on
-	  the biggest amount of data we are going to send at once.
-
-2007-08-07 Paul Jakma <paul.jakma@sun.com>
-
-	* ospf_spf.c: (ospf_spf_next) Finish off the explanatory
-	  comment made in previous commit
-
-2007-08-07 Atis Elsts <atis@mikrotik.com>
-
-	* ospf_spf.c: (ospf_spf_next) Sort heap in correct direction
-	  after vertex cost is changed, thus fixing incorrect SPF
-	  calculation on certain topologies.
-
-2007-08-06 Paul Jakma <paul.jakma@sun.com>
-
-	* ospf_lsa.c: (router_lsa_flags) Bug #331, NSSA regression caused
-	  caused ASBRs to not advertise E-bit into NSSA areas.
-
-2007-05-09 Milan Kocian <milon@wq.cz>
-
-	* ospf_vty.c: Fix commands: 'ip ospf authentication A.B.C.D',
-	  'no ip ospf authentication A.B.C.D', 'no ip ospf
-	  authentication-key A.B.C.D'. Simply fix argv's indexes and
-          argc check in DEFUN functions.
-
-2007-05-07 Paul Jakma <paul.jakma@sun.com>
-
-	* ospf_spf.c: (ospf_vertex_new) Dont init vertices to infinity,
-	  just let 0 be a special case.
-	  (ospf_spf_add_parent) 0 distance candidate vertex is special,
-	  cost still to be initialised - asserting that new distance
-	  is <= existing only makes sense where w already has a cost.
-	  (ospf_spf_next) Infinite cost links should not be followed,
-	  bar those of the root.
-
-2007-04-30 Andrew J. Schorr <ajschorr@alumni.princeton.edu>
-
-	* ospfd.c: (ospf_network_match_iface) Comment out
-	  COMPATIBILITY_MODE.  Going forward, the ospf "network" command
-	  will use a simple test: does the network command prefix
-	  contain the connected (destination) prefix of the interface?
-
-2007-04-21 Andrew J. Schorr <ajschorr@alumni.princeton.edu>
-
-	* ospf_interface.c: (ospf_if_set_multicast) Fix bug: was testing
-	  interface passive status improperly in light of the recent
-	  'passive-interface default' patch.  Now need to test
-	  OSPF_IF_PASSIVE_STATUS(oi) instead of
-	  OSPF_IF_PARAM(oi, passive_interface).
-
-2007-03-23 Paul Jakma <paul.jakma@sun.com>
-
-	* ospf_spf.c: (various) Add more debug statements.
-	  (ospf_nexthop_calculation) Fix silly regression causing ospfd
-	  to fail to calculate paths past networks not attached to root
-	  vertex, introduced with bug #330 fixes.
-
-2007-03-14 Andrew J. Schorr <ajschorr@alumni.princeton.edu>
-
-	* ospf_snmp.c: (ospf_snmp_neighbor_state) New function to
-	  map internal quagga neighbor states to SNMP standard values.
-	  (ospfNbrEntry) Call new ospf_snmp_neighbor_state function.
-
-2007-03-14 Andrew J. Schorr <ajschorr@alumni.princeton.edu>
-
-	* ospf_zebra.c: (ospf_zebra_add, ospf_zebra_delete) Fix bug
-	  where inet_ntoa was used twice in the same debug message,
-	  which doesn't work because there's a single shared buffer
-	  for the returned string.  The fix is to use inet_ntop.
-
-2007-02-27 Andrew J. Schorr <ajschorr@alumni.princeton.edu>
-
-	* ospfd.c: (ospf_terminate) Exit immediately if ospf is not
-	  actually running (e.g. the config file was empty).  Fixes
-	  bug where SIGTERM would not kill ospfd.
-
-2007-02-26 Paul Jakma <paul.jakma@sun.com>
-
-	* ospf_spf.c: Fix regression introduced with bug #330 fix: The
-	  cost update added to ospf_spf_add_parent only handled PtP
-	  case, differing from same functionality in higher-level
-	  ospf_spf_next. Regression diagnosed by Anders Pedersen,
-	  mailnews+router-quagga-dev@news.cohaesio.com.
-	  (ospf_vertex_new) Initialise vertices to max-cost.
-	  (ospf_spf_init) Root vertex always creates with 0 cost.
-	  (ospf_spf_add_parent) Remove the buggy V->W cost calculating
-	  code, instead take the new distance as a parameter.
-	  (ospf_nexthop_calculation) Take distance as parameter, so it
-	  can be passed down to add_parent.
-	  (ospf_spf_next) Dont initialise candiate vertex distance,
-	  vertex_new does so already. Pass distance down to
-	  nexthop_calculation (see above).
-
-2007-01-24 Paul Jakma <paul.jakma@sun.com>
-
-	* ospf_spf.c: Bug #330: Nexthop calculation sometimes may fail,
-	  and it needs to indicate this result to SPF.
-	  (ospf_spf_add_parent) Flush of parent list needs to be done here,
-	  for simplicity.
-	  (ospf_nexthop_calculation) Caller needs to know whether
-	  nexthop calculation succeeded. Every return statement must
-	  correctly indicate such.
-	  (ospf_spf_next) Queueing/prioritisation of vertices in SPF
-	  must take into account whether nexthop_calculation succeeded,
-	  or SPF may fail to find best paths.
-
-2006-12-12 Andrew J. Schorr <ajschorr@alumni.princeton.edu>
-
-	* ospf_interface.c: (ospf_if_is_configured, ospf_if_lookup_by_prefix,
-	  ospf_if_lookup_recv_if) Simplify logic using new CONNECTED_PREFIX
-	  macro.
-	* ospf_lsa.c: (lsa_link_ptop_set) Using the new CONNECTED_PREFIX
-	  macro, both options collapse into the same code.
-	* ospf_snmp.c: (ospf_snmp_if_update) Simplify logic using new
-	  CONNECTED_ID macro.
-	  (ospf_snmp_is_if_have_addr) Simplify logic using new CONNECTED_PREFIX
-	  macro.
-	* ospf_vty.c: (show_ip_ospf_interface_sub) Use new CONNECTED_PEER macro
-	  instead of testing the IFF_POINTOPOINT flag.
-	* ospfd.c: (ospf_network_match_iface) Use new CONNECTED_PEER macro
-	  instead of testing with if_is_pointopoint.  And add commented-out
-	  code to implement alternative (in my opinion) more elegant behavior
-	  that has no special-case treatment for PtP addresses.
-	  (ospf_network_run) Use new CONNECTED_ID macro to simplify logic.
-
-2006-12-04 Andrew J. Schorr <ajschorr@alumni.princeton.edu>
-
-	* ospfd.c: (ospf_network_run) Remove an offending 'break' statement.
-	  Previously, after creating a single ospf_interface on a given
-	  network interface, the code would skip to the next interface
-	  without considering other connected addresses on the interface.
-	  After removing the 'break', we now consider all connected addresses.
-
-2006-11-30 Andrew J. Schorr <ajschorr@alumni.princeton.edu>
-
-	* ospf_zebra.c: (ospf_router_id_update_zebra,
-	  ospf_interface_address_add, ospf_interface_address_delete)
-	  If (IS_DEBUG_OSPF (zebra, ZEBRA_INTERFACE)) is enabled, then
-	  add a debug message about what Zebra is telling us.
-	  (ospf_zebra_add_discard) Add a debug message matching the one
-	  already in ospf_zebra_delete_discard.
-
-2006-11-28 Andrew J. Schorr <ajschorr@alumni.princeton.edu>
-
-	* ospf_vty.c: (ospf_passive_interface_default) Take additional
-	  'newval' arg so we can update ospf->passive_interface_default inside
-	  this function.  More importantly, we now call ospf_if_set_multicast
-	  on all ospf_interfaces.
-	  (ospf_passive_interface, no_ospf_passive_interface) Fix bug:
-	  for 'default' case, argv[0] is undefined, so we must test for
-	  (argc == 0) before using argv[0].  And since
-	  ospf_passive_interface_default now calls ospf_if_set_multicast as
-	  needed, we can just return after calling
-	  ospf_passive_interface_default.
-
-2006-10-24 Andrew J. Schorr <ajschorr@alumni.princeton.edu>
-
-	* ospf_zebra.c: (ospf_redistribute_default_set) Fix bug where
-	  a new value for ospf->default_originate was being ignored
-	  if a previous 'default-information originate' command
-	  had already been processed.
-
-2006-10-22 Yar Tikhiy <yar@comp.chem.msu.su>
-
-	* (general) Add support for passive-interface default (with
-	  minor edits by Paul Jakma).
-	* ospf_interface.h: Add OSPF_IF_PASSIVE_STATUS macro, looking
-	  at configured value, or the global 'default' value, as
-	  required.
-	* ospf_interface.c: (ospf_if_new_hook) Leave passive
-	  unconfigured per default, allowing global 'default' to
-	  take effect for unconfigured interfaces.
-	* ospf_packet.c: (various) use OSPF_IF_PASSIVE_STATUS
-	* ospf_vty.c: (ospf_passive_interface_default) new function,
-	  unset passive from all interfaces if default is enabled, as
-	  the per-iface settings become redundant.
-	  (ospf_passive_interface_update) new func, update passive
-	  setting taking global default into account.
-	  ({no,}ospf_passive_interface_addr_cmd) Add support for
-	  'default' variant of command.
-	  (show_ip_ospf_interface_sub) Update to take global
-	  default into account when printing passive status.
-	  (ospf_config_write) ditto.
-	* ospfd.c: (ospf_new) set global passive-interface default.
-	* ospfd.h: (struct ospf) Add field for global
-          passive-interface.
-	  
-2006-09-25 Andrew J. Schorr <ajschorr@alumni.princeton.edu>
-
-	* ospf_packet.c: (ospf_packet_dup, ospf_make_md5_digest) 
-	  Fix zlog_warn messages to eliminate compiler warnings.
-	  (ospf_hello) Improve warning messages to show why we
-	  are complaining.
-
-2006-08-28 Andy Gay <andy@andynet.net>
-
-	* ospf_packet.c: (ospf_make_db_desc) Assert added with More-bit
-	  fixes does not hold up with addition of Ogier DB-Exchange
-	  optimisation, which can empty the db-summary list in between
-	  sent DD packets. Remove assert, update More-bit always when
-	  in Exchange.
-
-2006-08-27 J.J. Krabbendam <jkrabbendam@aimsys.nl>
-
-	* ospfd.c: (ospf_finish_final) default redistribute should be
-	  unset too, fixes bug where reconfiguring ospfd completely
-	  can no longer enable default redistribution.
-
-2006-08-25 Paul Jakma <paul.jakma@sun.com>
-
-	* (general) Bug #134. Be more robust to backward time changes,
-	  use the newly added libzebra time functions.
-	  In most cases: recent_time -> recent_relative_time()
-	  gettimeofday -> quagga_gettime (QUAGGA_CLK_MONOTONIC, ..)
-	  time -> quagga_time.
-	  (ospf_make_md5_digest) time() call deliberately not changed.
-	  (ospf_external_lsa_refresh) remove useless gettimeofday, LSA
-	  tv_orig time was already set in ospf_lsa_new, called via
-	  ospf_external_lsa_new.
-
-2006-08-04 Paul Jakma <paul.jakma@sun.com>
-
-	* ospf_lsdb.c: (ospf_lsdb_delete_entry) new function, consolidate
-	  exact same functionality replicated in other functions.
-	  (ospf_lsdb_add) Strip out code by using ospf_lsdb_delete_entry.
-	  (ospf_lsdb_delete) ditto.
-	  (ospf_lsdb_delete_all) ditto.
-
-2006-08-03 Paul Jakma <paul.jakma@sun.com>
-
-	* ospf_packet.c: (ospf_make_db_desc) Unset the DD More bit
-	  after constructing the packet, if appropriate. 
-	  (ospf_db_desc_proc) Speed up Exchange, slave should raise
-	  ExchangeDone earlier, as RFC mandates, by forming its reply
-	  before deciding whether both sides are done, avoids a
-	  needless round of empty DD packet exchanges at the end of
-	  Exchange, hence speeding up ExchangeDone.
-	  Implement draft-ogier-ospf-dbex-opt DB-exchange optimisation.
-	  (ospf_db_desc) use UNSET_FLAG macro.
-
-2006-07-27 Andrew J. Schorr <ajschorr@alumni.princeton.edu>
-
-	* ospfd.c: (ospf_router_id_update) Fix and document the algorithm for
-	  selecting the router ID: if there is not a statically configured ID,
-	  then stick to the most recent value to avoid disruptive changes.
-	  This should fix bug #288.
-
-2006-07-26 Paul Jakma <paul.jakma@sun.com>
-
-	* ospf_lsa.{c,h}: (ospf_lsa_unlock) Change to take a double pointer
-	  to the LSA to be 'unlocked', so that, if the LSA is freed, the
-	  callers pointer to the LSA can be NULLed out, allowing any further
-	  use of that pointer to provoke a crash sooner rather than later.
-	* ospf_*.c: (general) Adjust callers of ospf_lsa_unlock to match
-	  previous. Try annotate 'locking' somewhat to show which 'locks'
-	  are protecting what LSA reference, if not obvious.
-	* ospf_opaque.c: (ospf_opaque_lsa_install) Trivial: remove useless
-	  goto, replace with return.
-	* ospf_packet.c: (ospf_make_ls_ack) Trivial: merge two list loops,
-	  the dual-loop predated the delete-safe list-loop macro.
-
-2006-07-25 Paul Jakma <paul.jakma@sun.com>
-
-	* ospf_neigbor.h: (struct ospf_neighbor) Add some additional
-	  neighbour state statistics fields, timestamps for progressive
-	  and regressive state changes, and pointer to event string
-	  for the latter state change.
-	* ospf_nsm.c: (nsm_notice_state_change) Update new state changs
-	  history as required.
-	* ospf_vty.c: (show_ip_ospf_neighbor_detail_sub) Print out above
-	  new per-neighbour state change stats.
-
-2006-07-10 Paul Jakma <paul.jakma@sun.com>
-
-	* ospf_nsm.c: (nsm_change_state) call nsm_clear_adj for all
-	  adjacency losses, hence removing need for nsm_reset_nbr.
-	  (nsm_reset_nbr) kill it, clear_adj in previous does fine.
-	  (nsm_kill_nbr,nsm_start) remove nsm_reset_nbr call.
-	  (ospf_nsm_event) Allow NSM function to be NULL, this along with
-	  removal of nsm_reset_nbr, allows a bunch of now useless functiosn
-	  to be removed.
-	  Remove some useless variables.
-	  (nsm_ignore) now useless, remove.
-	  (nsm_bad_ls_req) ditto
-	  (nsm_seq_number_mismatch)   "
-	  (nsm_oneway_received)       "
-	  (nsm_inactivity_timer)      "
-	  (nsm_ll_down)               "
-	  (NSM) replace removed action functions with NULL.
-	  (nsm_notice_state_changes) Move state change logging code to new
-	  func to declutter nsm_change_state and ospf_nsm_event.
-	  Log event with AdjChange, it's useful to know.
-	  (nsm_change_state) move adjchange and snmp logging to previous.
-	  (ospf_nsm_event) call nsm_notice_state_changes from here.
-	  Move the debug message to entry of function, so it gets out
-	  even if something goes wrong.
-	  Record state change timestamp and event in nbr struct.
-	* ospf_neighbor.h: (struct ospf_neighbor) Add fields to record
-	  timestamp of last NSM change and event.
-	* ospf_vty.c: (show_ip_ospf_neighbor_detail_sub) Print 
-	  last state change timestamp and event, if available.
-
-2006-07-10 Andrew J. Schorr <ajschorr@alumni.princeton.edu>
-
-	* ospf_packet.c: (ospf_hello) Improve NetworkMask mismatch warning
-	  message to include interface name and conflicting prefix lengths.
-
-2006-07-07 Paul Jakma <paul.jakma@sun.com>
-
-	* ospf_nsm.h: Add a NSM_Deleted neighbour state, to act as dummy
-	  state indicating the neighbour is to be deleted.
-	* ospf_nsm.c: (general) Use the NSM_Deleted state to delete
-	  neighbours, thus allowing code to be slightly more obvious
-	  in its flow.
-	  (nsm_timer_set) Add NSM_Deleted. Add another timer the code
-	  missed.
-	  (nsm_kill_nbr) No need for special case call to nsm_change_state
-	  anymore.
-	  Make the assert and error-handling for same case more readable
-	  (Andrew Schorr)
-	  Remove the call to ospf_nbr_delete, nsm_change_state can do
-	  this generally now via NSM_Deleted.
-	  (struct ... NSM) Add the dummy NSM_Deleted state, the 3 events
-	  that can lead to nsm_kill_nbr all now transition the NBR to
-	  NSM_Deleted and the general change_state function can be left
-	  to do the work.
-	  (ospf_nsm_event) Special casing of events and early-return can
-	  be removed now.
-	  On transition into Deleted, delete the nbr.
-	* ospf_dump.c: (ospf_nsm_state_msg) Add Deleted.
-
-2006-07-06 Paul Jakma <paul.jakma@sun.com>
-
-	* ospf_nsm.c: (ospf_nsm_event) LLDown event also results in nbr
-	  being deleted, requires early-return too. Likely explains
-	  some crash reports after interface events.
-
-2006-07-04 Paul Jakma <paul.jakma@sun.com>
-
-	* ospf_nsm.c: (general) Various small cleanups from Andrew's
-	  review of last set of patches.
-	  (nsm_timer_set) Loading, Full and default can share
-	  same code too.
-	  (nsm_should_adj) Can just be one big OR.
-	  (nsm_twoway_received) Collapse into return statement.
-
-2006-07-02 Paul Jakma <paul.jakma@sun.com>
-
-	* ospf_nsm.c: (nsm_should_adj) New function, just consolidate the
-	  10.4 adjacency check from nsm_twoway_received/nsm_adj_ok.
-	  (nsm_twoway_received/nsm_adj_ok) Use former.
-	  (nsm_clear_adj) clear adjacency related state for a
-	  neighbour, needed for some state changes from > ExStart down
-	  to ExStart or less, which need not go through nsm_reset_nbr.
-	  (nsm_reset_nbr) move code to former. Should be static.
-	  (ospf_nsm_event) Don't allow action functions to change
-	  next_state if the NSM tables do not indicate next_state is
-	  conditional, log warning if one tries - existing code
-	  appears fine though.
-	  Remove long dead code.
-	  Use nsm_clear_adj for state changes that take down
-	  adjacencies to TwoWay/ExStart.
-	  (nsm_timer_set) ls_req timer should be OFF in early states.
-	  Compact several identical sections.
-	  Set inactivity timer to OFF for Down, for documentary
-	  purposes.
-	  (nsm_kill_nbr) Oops, action function shouldn't try return
-	  1 for error.
-	* ospf_lsa.c: (ospf_translated_nssa_refresh) CID #13.
-
-2006-06-30 Andrew J. Schorr <ajschorr@alumni.princeton.edu>
-
-	* ospf_vty.c: (show_ip_ospf_neighbor_id) Should show all instances
-	  of that neighbor (since it may appear on multiple interfaces)
-	  instead of bailing out after showing the first match.
-
-2006-06-29 Andrew J. Schorr <ajschorr@alumni.princeton.edu>
-
-	* ospf_nsm.c: (nsm_twoway_received) When deciding whether to
-	  change from state Init to ExStart, the test for whether the
-	  neighboring router is DR or BDR should be against the
-	  local router's notion of DR/BDR, not the neighbor's view.
-
-2006-06-28 Erik Muller <erikm@internap.com>
-
-	* ospfd.h: Define 2 new struct ospf config flags:
-	  OSPF_LOG_ADJACENCY_CHANGES and OSPF_LOG_ADJACENCY_DETAIL
-	* ospf_nsm.c (nsm_change_state): Log adjacency changes if
-	  requested.
-	* ospf_vty.c (ospf_log_adjacency_changes): New command function
-	  to implement ospf subcommand "log-adjacency-changes [detail]".
-	  (no_ospf_log_adjacency_changes) Turn off log-adjacency-changes.
-	  (show_ip_ospf) Show whether adjacency changes are logged.
-	  (ospf_config_write) Add "log-adjacency-changes [detail]" to config.
-	  (ospf_vty_init) Add ospf_log_adjacency_changes and
-	  no_ospf_log_adjacency_changes.
-
-2006-06-26 Paul Jakma <paul.jakma@sun.com>
-
-	* ospf_abr.c: (general) NSSA translate-candidate ABRs need to
-	  be ASBRs, or other routers may rightfully refuse to install
-	  translated type-5s LSAs. reported by dendroot@gmail.com.
-	  (ospf_abr_nssa_check_status) Detect change in translator
-	  state when ABR, and inc/dec redistribute count as when we
-	  leave/enter the disabled state - so that translate-enabled
-	  ABR properly sets ASBR bit on non-NSSA areas.
-	  Run the resulting function through indent to clean it up.
-	* ospf_lsa.c: (router_lsa_flags) For purposes of ASBR bit,
-	  NSSA area is same as stub area.
-	  
-2006-06-24 Andrew J. Schorr <ajschorr@alumni.princeton.edu>
-
-	* ospf_snmp.c: (ospfTrapNbrStateChange, ospfTrapIfStateChange) Improve
-	  info log message to indicate why the trap is being sent.
-
-2006-06-24 Andrew J. Schorr <ajschorr@alumni.princeton.edu>
-
-	* ospf_dump.c: (config_write_debug) Fix typo to show debug ospf nsm
-	  status properly (not ism status).
-
-2006-06-17 Andrew J. Schorr <ajschorr@alumni.princeton.edu>
-
-	* ospf_vty.c: ({no_,}ospf_passive_interface) Replace if_lookup_by_name
-	  with a call to if_get_by_name -- if the interface does not exist
-	  already, it should be created.  And remove the obsolete warning
-	  message.
-
-2006-06-15 Paul Jakma <paul.jakma@sun.com>
-
-	* ospf_interface.h: (struct ospf_if_info) Add reference counts
-	  for multicast group memberships. Add various macros to help
-	  manipulate/check membership state.
-	* ospf_interface.c: (ospf_if_set_multicast) Maintain the
-	  ospf_if_info reference counts, and only actually drop
-	  memberships if it hits 0, to avoid losing membership when
-	  OSPF is disabled on an interface with multiple active OSPF
-	  interfaces.
-	* ospf_packet.c: (ospf_{hello,read}) Use the new macros to
-	  check/set
-	  multicast membership.
-	* ospf_vty.c: (show_ip_ospf_interface_sub) ditto.
-	  
-2006-05-31 Paul Jakma <paul.jakma@sun.com>
-
-	* ospf_lsdb.c: (ospf_lsdb_delete) robustify against NULL arguments,
-	  print warning.
-	* ospf_lsa.c: (ospf_discard_from_db) ditto.
-	  (ospf_maxage_lsa_remover) Check lsa->lsdb for validity, possible
-	  mitigation (but not solution) for bug #269.
-
-2006-05-30 Paul Jakma <paul.jakma@sun.com>
-
-	* ospf_packet.c: (ospf_read) Debug message about packets
-	  received on unenabled interfaces should be conditional on
-	  debug being set.
-
-2006-05-23 Paul Jakma <paul.jakma@sun.com>
-
-	* ospf_vty.c: (general) Replace in-place route redistribution
-	  command and help strings with the new auto-generated defines
-	  from lib/route_types.h
-
-2006-05-13 Paul Jakma <paul.jakma@sun.com>
-
-	* ospf_lsa.c: (ospf_translated_nssa_refresh) fix the sanity
-	  check to match the assert, small error in CID #13 fix.
-
-2006-05-12 Paul Jakma <paul.jakma@sun.com>
-
-	* ospf_lsa.c: (ospf_lsa_action) Get rid of the ospf_lookup
-	  call, which is not checked for NULL return, by stripping out
-	  functionality which is never used, hence fixing Coverity CID
-	  #29.
-	  (struct lsa_action) remove unused member.
-	  (ospf_translated_nssa_refresh) Add non-assert sanity check,
-	  in case DEBUG isn't defined.
-	  Debug message when no type7 exists should print the ID from
-	  the type5, not the type7, fixes CID #13.
- 	* ospf_interface.c: (ospf_if_exists) Fix missing NULL return
-	  check on ospf_lookup, CID #27.
-	* ospf_asbr.c: (ospf_redistribute_withdraw) remove ospf_lookup
-	  call by taking the struct ospf * as argument, which the
-	  caller has, fixing CID #28.
-	* ospf_asbr.h: (ospf_redistribute_withdraw) update declaration
-	* ospf_zebra.c: (ospf_redistribute_unset) update call to
-	  ospf_redistribute_withdraw to match.
-	* ospf_ia.c: (ospf_update_router_route) ospf->backbone could be
-	  NULL when passed to ospf_find_asbr_route_through_area,
-	  check for NULL first, CID #14.
-	* ospf_ism.c: (ism_change_state) NULL check on oi->area is
-	  useless, it's always valid. Only possibility where it
- 	  couldn't be is if there is a race between abr_task and
-	  cleaning up oi's, in which case a NULL check here isn't going
-	  to do anything. Fixes CID #15.
-
-2006-05-11 Paul Jakma <paul.jakma@sun.com>
-
-	* ospf_vty.c: (general) Audit ospf_lookup calls in commands,
-	  ensure check for NULL result, make vty messages consistent. 
-	  (show_ip_ospf_interface) Missing NULL check on ospf_lookup
-	  result, fixes Coverity CID #70.
-	  (no_ospf_area_filter_list) Check NULL result from
-	  ospf_area_lookup_by_area_id, fixes Coverity CID #69
-	* ospf_route.c: (ospf_route_delete_same_ext) Fix deref before
-	  NULL check by moving into check-protected block, fix CID #49.
-	* ospf_abr.c: (ospf_area_range_cost_set) Shouldn't create a new
-	  range, should just lookup to see if one exists, the new range
-	  is just leaked. Fixes CID #46.
-	* ospf_lsa.c: (ospf_default_originate_timer) Let the thread
-	  take (struct ospf *) as thread argument, rather than (struct
-	  ospf *)->default_originate, thus avoiding having to call
-	  ospf_lookup.
-	* ospf_zebra.c: (ospf_redistribute_default_set) change setup
-	  of ospf_default_originate_timer thread to match.
-	* ospfd.c: (ospf_router_id_update) ditto.
-
-2006-04-24 Paul Jakma <paul.jakma@sun.com>
-
-	* (general) More Virtual-link fixes, again with much help in
-	  testing / debug from Juergen Kammer. Primarily in SPF.
-	* ospf_spf.h: Add guard. ospf_interface.h will include this
-	  header.
-	* ospf_interface.h: Modify ospf_vl_lookup definition to take
-	  struct ospf as argument, so as to allow for NULL area
-	  argument.
-	  (struct ospf_vl_data) Remove out_oi, instead add a struct
-	  vertex_nexthop, to use as initial nexthop for backbone paths
-	  through a vlink.
-	* ospf_interface.c: (ospf_vl_lookup) Modified to allow
-	  NULL area to be passed to indicate "any" (first) area.
-	  Add extra debug.
-	  (ospf_vl_set_params) vl_oi -> nexthop. Add extra debug.
-	  (ospf_vl_up_check) Fix debug, inet_ntoa returns a static
-	  buffer..
-	* ospf_route.c: (ospf_intra_add_router) Vlinks dont go through
-	  backbone, don't bother checking.
-	* ospf_spf.c: (static struct list vertex_list) Record vertices
-	  that will need to be freed.
-	  (cmp) Order network before router vertices, as required,
-	  wasn't implemented.
-	  (vertex_nexthop_free) Mild additional robustness check.
-	  (vertex_parent_free) Take void argument, as this function
-	  is passed as list deconstructor for vertex parent list.
-	  (ospf_vertex_new) More debug. Set deconstructor for parent
-	  list. Track allocated vertices on the vertex_list.
-	  (ospf_vertex_free) Get rid of the tricky recursive cleanup of
-	  vertices. Now frees only the given vertex. 
-	  (ospf_vertex_add_parent) Fix assert.
-	  (ospf_nexthop_calculation) Fix calculation of nexthop for
-	  VLink vertices, lookup the vl_data and use its previously
-	  recorded nexthop information.
-	  (ospf_spf_calculate) Vertices are freed simply by deleting
-	  vertex_list nodes and letting ospf_vertex_free as deconstructor
-	  work per-node.
-	  (ospf_spf_calculate_timer) Trivial optimisation, leave
-	  backbone SPF calculation till last to reduce SPF churn on
-	  VLink updates.
-	* ospf_vty.c: (ospf_find_vl_data) update call to ospf_vl_lookup
-	  (no_ospf_area_vlink_cmd) ditto.
-	  (show_ip_ospf_interface_sub) For Vlinks, the peer address is
-	  more interesting than the output interface.
-
-2006-04-03 Paul Jakma <paul.jakma@sun.com>
-
-	* (general) Fix issues with handling of Vlinks and entries
-	  in the nbrs route-table which were highlighted by the
-	  nsm/nbr_self fixes from bug #234. Many thanks to Juergen
-	  Kammer for his help and efforts in testing out debug patches to
-	  pinpoint the issue.
-	* ospf_interface.c: (ospf_vl_new) Add nbr_self for Vlink.
-	* ospf_neighbor.c: (ospf_nbr_key) new static function, helper
-	  to create key in nbrs table for a given nbr.
-	  (ospf_nbr_delete) Use ospf_nbr_key. Add an assert() to
-	  document an expected state.
-	  (ospf_nbr_add_self) Ditto.
-	  (ospf_nbr_lookup_by_addr) Add an assert.
-	* ospf_nsm.c: (nsm_kill_nbr) Can never kill the nbr_self
-	  psuedo-neighbour.
-
-2006-03-27 Paul Jakma <paul.jakma@sun.com>
-
-	* ospf_lsa.c: (ospf_lsa_checksum) Add an explicit cast to avoid
-	  the ambiguities of ANSI and C99 C with respect to type
-	  conversion. Detailed problem report and test case with
-	  example data supplied by Dmitry Ivanov <dimss@telecentrs.lv>.
-
-2006-03-25 Paul Jakma <paul.jakma@sun.com>
-
-	* ospf_interface.c: (ospf_if_lookup_recv_if) Ignore loopbacks,
-	  we can never ever receive packets on those. Should fix
-	  case where CARP is run with address in same subnet as real
-	  interface. Problem report and diagnosis thanks to:
-	  Landon Fuller <landonf@opendarwin.org>.
-	  However, ospf_read() still can't deal deterministically with
-	  multiple interfaces in same subnet.
-
-2006-03-23 Steve Lawson <steve.lawson@aheadcomusa.com>
-
-	* ospf_lsa.c: (ospf_lsa_install) Fix incorrect byte-order 
-	  conversion of OSPF_MAX_SEQUENCE_NUMBER
-
-2006-01-19 Paul Jakma <paul.jakma@sun.com>
-
-        * (general) various miscellaneous compiler warning fixes.
-           Remove redundant break statements from switch clauses
-           which return.
-           return from main, not exit, cause it annoys SOS.
-           Remove stray semi-colons which cause empty-statement
-           warnings.
-
-2006-01-18 Juergen Kammer <j.kammer@eurodata.de>
-
-	* ospf_lsa.c: (ospf_router_lsa_new) dont take reference to the
-	  stream data until it is constructed, data reference is
-	  volatile due to the potential resize in link_info_set
-
-2006-01-18 Paul Jakma <paul.jakma@sun.com>
-
-	* ospf_lsa.c: (link_info_set) Resize the stream if required and
-	  possible. Return number of links added.
-	  (lsa_link_*_set) use return value from previous.
-	* ospf_lsa.h: Add OSPF_ROUTER_LSA_LINK_SIZE define.
-	  
-2006-01-17 Paul Jakma <paul.jakma@sun.com>
-
-	* ospf_packet.c: (ospf_verify_header) print out the types
-	  involved if there's a mismatch.
-	* ospf_zebra.c: (ospf_zebra_add) Adjust to new zserv format.
-
-2006-01-10 Len Sorensen <lennartsorensen@ruggedcom.com>
-
-	* (general) Bug #234, see also [quagga-dev 3902].
-	  Fix problem with nbr_self not being properly reinitialised
-	  when an interface comes up, after having been down.
-	  Some re-arrangement done by Paul Jakma, any bugs introduced
-	  on top of Len's suggested changes are his.
-	* ospf_neighbor.c: (ospf_nbr_add_self) centralise
-	  initialisation of nbr_self parameters here.
-	* ospf_interface.c: (ospf_if_new) deleting initialisation of
-	  parameters of nbr_self, just rely on call to
-	  ospf_nbr_add_self.
-	  (ospf_if_cleanup) ditto.
-	* ospfd.c: (ospf_network_run) ditto.
-
-2006-01-10 Juris Kalnins <juris@mt.lv>
-
-	* ospf_zebra.c: (ospf_interface_address_delete) fix rare leak of 
-	  struct connected in an error case.
-	* ospf_packet.c: (ospf_make_md5_digest) fix odd, if not
-	  undefined effect, assignment of an increment expression.
-
-2006-01-10 Paul Jakma <paul.jakma@sun.com>
-
-	* ospfd.c: (ospf_network_run) checking to see if router-id
-	  is set should be on ospf->router_id, not router_id_static.
-	  This was causing ospfd to not start if router-id had not
-	  been configured statically.
-	  (ospf_if_update) ditto.
-	* ospf_vty.c: (config_write_ospf_distribute) trim down
-	  redundant strings.
-
-2005-11-26 Paul Jakma <paul.jakma@sun.com>
-
-	* ospf_api.c: (struct opaque_lsa) change from gcc zero-length
-	  array to C99 incomplete type array.
-	* (general) s/graceful/deferred/ in all files, the former term 
-	   is confusing wrt OSPF Graceful-Restart.
-	* ospfd.c: (ospf_deferred_shutdown_check) dont return
-	  a function which returns void. SOS complains about this.
-	  (ospf_finish)
-
-2005-11-20 Paul Jakma <paul.jakma@sun.com>
-
-        * ospfd.h: remove the OSPF_ROUTER_ID_UPDATE_DELAY define
-          (struct ospf) remove the router_id timer thread.
-          remove export of ospf_router_id_update_timer.   
-        * ospfd.c: (ospf_router_id_update) call ospf_if_update to
-          poke interfaces into action after ID has been configured.
-          (ospf_router_id_update_timer) removed.
-          (ospf_finish_final) t_router_id_update timer is gone.
-          (ospf_network_run) router-id update timer gone.
-          call ospf_router_id_update directly if ID not configured.
-          In the per-iface loop, don't ospf_if_up interfaces if
-          ID is still not configured. The update function will call
-          ospf_if_update anyway.
-          (ospf_if_update) ID update timer is gone. Just return if no
-          ID is set.
-        * ospf_vty.c: (ospf_router_id) call ospf_router_id_update, no
-          timer needed.
-        * ospf_zebra.c: (ospf_router_id_update_zebra) call
-          ospf_router_id_update directly, not via timer.  
-        * ospf_abr.c: (ospf_abr_announce_network_to_area) check
-          returned LSA of ospf_summary_lsa_refresh and print warning if
-          it failed.
-          (ospf_abr_announce_network_to_area) similar
-          (ospf_abr_announce_rtr_to_area) similar 
-        * ospf_lsa.c: (ospf_router_lsa_new) check LSA returned is valid.
-          (ospf_router_lsa_originate) similar
-          (ospf_router_lsa_refresh, ospf_network_lsa_new) similar  
-          (ospf_summary_lsa_new) Check ID is valid.
-          (ospf_summary_lsa_originate) ditto, and check returned LSA from
-           previous function is !NULL.
-          (ospf_summary_lsa_refresh) check ospf_summary_lsa_new return
-           is !NULL.
-          (ospf_summary_asbr_lsa_new) ID valid check.
-          (ospf_summary_asbr_lsa_originate) similar.
-
-2005-11-16 Andrew J. Schorr <ajschorr@alumni.princeton.edu>
-
-	* ospf_dump.h: Define OSPF_TIME_DUMP_SIZE as appropriate buffer size
-	  for use with ospf_timer_dump and ospf_timeval_dump.
-	* ospf_vty.c: Change all buffer sizes used with ospf_timer_dump and
-	  ospf_timeval_dump to have size OSPF_TIME_DUMP_SIZE.
-	  (show_ip_ospf_interface_sub) Fix possible buffer overflow in
-	  call to ospf_timer_dump.
-
-2005-11-16 Andrew J. Schorr <ajschorr@alumni.princeton.edu>
-
-	* ospf_ism.h: (OSPF_ISM_TIMER_OFF) Improve macro syntax by enclosing
-	  in 'do {...} while(0)'.
-
-2005-11-14 Paul Jakma <paul.jakma@sun.com>
-
-	* ospfd.c: (ospf_new) stub-shutdown should just default to
-	  unconfigured, too strange otherwise.
-	  (ospf_finish_final) t_opaque_lsa_self TIMER_OFF should be
-	  preprocessor conditional on HAVE_OPAQUE_LSA.
-	* ospfd.h: (struct ospf) remove the SHUTDOWN_DEFAULT define.
-	  no longer used, plus it wasn't in range that the command
-	  accepted.
-	* ospf_zebra.h: Depends on vty.h, include it.
-
-2005-11-11 Paul Jakma <paul.jakma@sun.com>
-
-	* ospf_spf.c: (ospf_canonical_nexthops_free) Free only
-	  the nexthops pointing to the root vertex. We may visit a
-	  vertex twice or the vertex may have some inherited nexthops,
-	  if we free other nexthops we could crash.
- 
-2005-11-04 Paul Jakma <paul.jakma@sun.com>
-
-	* ospf_{dump,spf,vty}.c: Oops, use the internal tv_sub
-	  function rather than unportable timersub.
-
-2005-11-03 Paul Jakma <paul.jakma@sun.com>
-
-	* ospf_apiserver.c: (apiserver_sync_callback) stray semi-colon
-	* ospf_packet.c: include checksum.h, remove the in_cksum extern
-	* prototypes.
-	* ospf_te.h: Add braces, quell warning.
-	* ospf_packet.c: Change level of some warnings to
-	  informational.
-
-2005-10-29 Paul Jakma <paul.jakma@sun.com>
-
-	* (general) RFC3137 stub-router support
-	* ospfd.h: Add OSPF_OUTPUT_COST_INFINITE define.
-	  (struct ospf_master) Add a OSPF_MASTER_SHUTDOWN flag for
-	  options, to allow shutdown to distinguish between complete
-	  shutdown and shutdown of a subset of ospf instances.
-	  (struct ospf)
-	  Add stub_router_{startup,shutdown_}time, configuration of startup
-	  and shutdown time for stub-router.
-	  Add t_graceful_shutdown struct thread, timer for graceful
-	  shutdown, if needed.
-	  (struct ospf_area) Add stub_router_state - run time state of
-	  stub-router for an area. Add flags for ADMIN, IS and WAS
-	  states.
-	  Add t_stub_router, timer thread to resend router-lsa for an
-	  area.
-	* ospf_lsa.c: (ospf_link_cost) new simple function to spit out
-	  either the given lnks cost or infinite cost if stub-router is
-	  in effect.
-	  (lsa_link_{ptop,broadcast,virtuallink,ptomp}_set) use
-	  previous function for transit-links.
-	  (ospf_stub_router_timer) timer thread for end of startup stub
-	  router. Change state as required for the area and setup
-	  re-origination of router-lsa.
-	  (ospf_stub_router_check) Check/do whether stub-router should be
-	  enabled, and whether it requires timer to be setup.
-	  (ospf_router_lsa_new) call previous function at top.
-	  (ospf_router_lsa_originate) no external callers, made static.
-	* ospf_lsa.h: (ospf_router_lsa_originate) removed.
-	* ospf_main.c: (sigint) make static.
-	  remove call to exit, as ospf_terminate now deals with
-	  exiting.
-	* ospf_route.c: (ospf_terminate) removed, now in ospfd.c.
-	* ospf_vty.c: (show_ip_ospf_area) print out state of
-	  stub-router, if active.
-	  (show_ip_ospf) print out configuration of stub-router
-	  support, and details of graceful-shutdown if the timer is
-	  active.
-	  ((no)?ospf_max_metric_router_lsa_{admin,startup,shutdown}) new
-	  commands to (de-)?configure stub-router support.
-	  (config_write_stub_router) write out config of stub-router.
-	  (ospf_config_write) call previous.
-	  (ospf_vty_init) install the new stub-router commands.
-	* ospfd.c: various functions made static.
-	  (ospf_new) Set defaults for stub-router. Graceful shutdown
-	  is made to default on, just to be adventerous.
-	  (ospf_graceful_shutdown_finish) new function, final part of
-	  shutdown.
-	  (ospf_graceful_shutdown_timer) timer thread wrapper for
-	  graceful-shutdown.
-	  (ospf_graceful_shutdown_check) check whether to setup timer
-	  for shutdown or proceed directly to final shutdown.
-	  (ospf_terminate) moved here from ospf_route.c, call
-	  ospf_finish for each instance.
-	  (ospf_finish) renamed to ospf_finish_final and made static.
-	  (ospf_finish) new function, exported wrapper around
-	  ospf_graceful_shutdown_check.
-	  (ospf_finish_final) complete shutdown of an instance.
-	  Add missing TIMER_OFF's of two timer threads.
-	  (ospf_area_free) opaque self lsa timer should be turned off.
-
-2005-10-23 Paul Jakma <paul.jakma@sun.com>
-
-	* ospf_apiserver.c: (ospf_apiserver_term) This function should
-	  not have side-effects (eg segv) if no apiserver instances are
-	  active, ie be robust.
-	* ospf_vty.c: (show_ip_ospf) fix display of SPF timer if it
-	  has not yet been run.
-
-2005-10-21 Paul Jakma <paul.jakma@sun.com>
-
-	* ospf_dump.c: (ospf_timeval_dump) fix ms adjustment, thanks to
-	  Andrew Schorr.
-	* ospf_vty.c: (ospf_config_write) fix write out of spf timers
-	  configuration.
-
-2005-10-21 Paul Jakma <paul.jakma@sun.com>
-
-	* (general) SPF millisecond resolution timer with adaptive,
-	  linear back-off holdtime. Prettification of ospf_timer_dump.
-	* ospf_dump.c: (ospf_timeval_dump) new function. The guts of
-	  ospf_timer_dump, but made to be more dynamic in printing out
-	  the relative timeval, sliding the precision printed out
-	  according to the value.
-	  (ospf_timer_dump) guts moved to ospf_timeval_dump.
-	* ospf_dump.h: export ospf_timeval_dump.
-	* ospf_flood.c: (ospf_flood) remove gettimeofday, use
-	  the libzebra exported recent_time instead, as it's not
-	  terribly critical to have time exactly right - the dropped
-	  LSA will be retransmited to us if we don't ACK it.
-	* ospf_packet.c: (ospf_ls_upd_timer) Ditto, but here we're
-	  not transmitting, just putting LSA back on update transmit list.
-	* ospfd.h: delay and holdtimes should be unsigned.
-	  Add spf_max_holdtime and spf_hold_multiplier.
-	  Update default defines for delay and hold time to be in msec.
-	  (struct ospf) change the SPF timestamp to a struct timeval.
-	  Remove ospf_timers_spf_(un)?set.
-	* ospfd.c: (ospf_timers_spf_{set,unset}) removed.
-	  (ospf_new) initialise spf_max_holdtime and spf_hold_multiplier
-	* ospf_spf.c: (ospf_spf_calculate) SPF timestamp is a timeval
-	  now, update with gettimeofday.
-	  (ospf_spf_calculate_schedule) Change SPF timers to millisecond
-	  resolution.
-	  Make the holdtime be adaptive, with a linear increase in
-	  holdtime ever consecutive SPF run which occurs within holdtime
-	  of previous SPF, bounded by spf_max_holdtime.
-	* ospf_vty.c: Update spf timers commands.
-	  (ospf_timers_spf_set) trivial helper. 
-	  (ospf_timers_throttle_spf_cmd) new command to set SPF delay,
-	  initial hold and max hold times with millisecond resolution.
-	  (ospf_timers_spf_cmd) Deprecated. Accept the old values,
-	  convert to msec, truncate to new limits.
-	  (no_ospf_timers_throttle_spf_cmd) set timers to defaults.
-	  (no_ospf_timers_spf_cmd) deprecated form, same as previous.
-	  (show_ip_ospf_cmd) Display SPF parameters and times.
-	  (show_ip_ospf_neighbour_header) Centralise the 'sh ip os ne'
-	  header.
-	  (show_ip_ospf_neighbor_sub) Fix the field widths. Get rid of
-	  the multiple spaces which were making the lines even longer.
-	  (show_ip_ospf_neighbor_cmd) Use show_ip_ospf_neighbour_header
-	  (show_ip_ospf_neighbor_all_cmd) ditto and fix the field
-	  widths for NBMA neighbours.
-	  (show_ip_ospf_neighbor_int) Use header function.
-	  (show_ip_ospf_nbr_nbma_detail_sub) use sizeof for timebuf,
-	  local array - safer.
-	  (show_ip_ospf_neighbor_detail_sub) ditto
-	  (ospf_vty_init) install the new SPF throttle timer commands.
-	  
-2005-10-21 Paul Jakma <paul.jakma@sun.com>
-
-	* (general) OSPF fast, sub-second hello and 1s dead-interval
-	  support.
-	* ospf_dump.c: (ospf_timer_dump) Print out milliseconds too.
-	  Callers typically specify a length of 9, so most see
-	  millisecs unless they specify the additional length.
-	* ospf_interface.h: (struct ospf_interface) new interface param, 
-	  fast_hello.
-	* ospf_interface.c: (ospf_if_table_lookup) add brackets,
-	  gcc warning fix.
-	  (ospf_new_if_params) Initialise fast_hello param.
-	  (ospf_free_if_params) Check whether fast_hello is configured.
-	  (ospf_if_new_hook) set fast_hello to default.
-	* ospf_ism.h: Wrap OSPF_ISM_TIMER_ON inside do {} while (0) to
-	  prevent funny side-effects from its if statement when this
-	  macro is used conditionally by other macros.
-	  (OSPF_ISM_TIMER_MSEC_ON) new macro, set in milliseconds.
-	  (OSPF_HELLO_TIMER_ON) new macro to set hello timer according
-	  to whether fast_hello is set.
-	* ospf_ism.c: Update all setting of the hello timer to use
-	  either OSPF_ISM_TIMER_MSEC_ON or OSPF_HELLO_TIMER_ON. The
-	  former is used when hello is to be sent immediately.
-	* ospf_nsm.c: ditto
-	* ospf_packet.c: (ospf_hello) hello-interval is not checked
-	  for mismatch if fast_hello is set.
-	  (ospf_read) Annoying nit, fix "no ospf_interface" to be debug
-	  rather than a warning, as it can be perfectly normal to
-	  receive packets when logical subnets are used.
-	  (ospf_make_hello) Set hello-interval to 0 if fast-hellos are
-	  configured.
-	* ospf_vty.c: (ospf_auto_cost_reference_bandwidth) annoying
-	  nit, don't vty_out if this command is given, it gets tired
-	  quick.
-	  (show_ip_ospf_interface_sub) Print the hello-interval 
-	  according to whether fast-hello is set or not.
-	  Print the extra 5 millisec characters from (ospf_timer_dump)
-	  if fast-hello is configured.
-	  (ospf_vty_dead_interval_set) new function, common to all
-	  forms of dead-interval command, to set dead-interval and
-	  fast-hello correctly. If a dead-interval is given, unset
-	  fast-hello, else if a hello-multiplier is set, set
-          dead-interval to 1 and fast-hello to given multiplier.
-	  (ip_ospf_dead_interval_addr_cmd) use
-	  ospf_vty_dead_interval_set().
-	  (ip_ospf_dead_interval_minimal_addr_cmd) ditto.
-	  (no_ip_ospf_dead_interval) Unset fast-hello.
-	  (no_ip_ospf_hello_interval) Bug-fix, unset of hello-interval
-	  should set it to OSPF_HELLO_INTERVAL_DEFAULT, not
-	  OSPF_ROUTER_DEAD_INTERVAL_DEFAULT.
-	  (config_write_interface) Write out fast-hello.
-	  (ospf_config_write) Write a comment about 
-	  "auto-cost reference-bandwidth" having to be equal on all
-	  routers. Hopefully just as noticeable as old practice of
-	  writing to vty, but less annoying.
-	  (ospf_vty_if_init) install the two new dead-interval
-	  commands.
-	* ospfd.h: Add defines for OSPF_ROUTER_DEAD_INTERVAL_MINIMAL
-	  and OSPF_FAST_HELLO_DEFAULT.
-
-2005-10-18 Paul Jakma <paul.jakma@sun.com>
-
-	* (general) SPF memory management cleanup and fix for rare
-	  double-free bug.
-	* ospf_spf.h: (struct vertex_parent) New struct to hold parent
-	  specific data, eg the backlink and the parent vertex pointer,
-	  and point to the appropriate general struct vertex_nexthop.
-	  (struct vertex_nexthop) remove parent vertex pointer, so
-	  this struct can be shared across vertices.
-	  (struct vertex) rename list child to list children. Remove
-	  list of nexthops, replace with list of vertex_parents.
-	* ospf_spf.c: (update_stat) trivial, remove cast from void *.
-	  (vertex_nexthop_new) remove init of parent - field is gone
-          from struct vertex_nexthop.
-          (ospf_canonical_nexthops_free) Remove the canonical
-          vertex_nexthop memory objects. These are the vertex_nexthops
-          attached to the first level of router vertices from the root.
-          (vertex_parent_new) new function, create a vertex_parent.
-          (vertex_parent_free) ditto, but free it.
-          (ospf_vertex_new) Update to match changes to struct vertex.
-          (ospf_vertex_free) Recursively free a struct vertex and its
-          children. The parent list is used as a reference count.
-          vertex_nexthops must be free seperately, if required.
-          (ospf_vertex_dump) update to match struct vertex changes.
-          Print out backlink of parents too.
-          (ospf_vertex_add_parent) ditto.
-          (ospf_lsa_has_link) update comment.
-          (ospf_nexthop_add_unique) removed, not needed anymore.
-          (ospf_nexthop_merge) ditto.
-          (ospf_spf_consider_nexthop) renamed to ospf_spf_add_parent.
-          Simplified to just create vertex_parent and add it.
-          (ospf_spf_flush_parents) new function, flush out the parent
-	  list.
-	  (ospf_nexthop_calculation) Take the relevant route_lsa_link
-	  as an argument, which simplifies things and removes the need
-	  for the hack in ospf_nexthop_add_unique - ospf_spf_next
-	  already knew exactly which link the cost calculated was for.
-	  Update to match struct vertex changes too.
-	  (ospf_spf_next) Don't create a vertex for W unnecessarily, if
-          it's there's a vertex already created for W, use it, and
-          hence there's no need to free it either.
-          Update some manipulation/comparisons of distance to match.
-          Flush the parent list if a lower cost path is found.
-          (ospf_spf_route_free) unused, removed.
-          (ospf_spf_dump) match the struct vertex changes, and dump the
-          ifname if possible.
-          (ospf_spf_calculate) At end of SPF, free the canonical nexthops
-          and call ospf_vertex_free on the root vertex to free the
-	  entire tree.
-	* ospf_interface.c: (ospf_vl_set_params) match struct vertex
-          changes.
-        * ospf_route.c: (ospf_intra_route_add) ditto
-          (ospf_route_copy_nexthops_from_vertex) ditto
-          
-2005-10-11 Paul Jakma <paul.jakma@sun.com>
-
-	* ospf_api.c: sign warnings.
-	* ospf_apiserver.c: sign warning and convert all the struct
-	  in_addr initialisations so as not to make assumptions about
-	  how this struct is organised, initialise the s_addr member
-	  explicitely.
-	* ospf_packet.c: Add const qualifier to auth_key.
-
-2005-10-06 Alain Ritoux <alain.ritoux@6wind.com>
-
-	* ospf_snmp.c: Avoid mixing interface and ospf_interface objects
-	  which now allows snmpwalk to work with ospfIfTable and 
-	  also with ospfIfMetricTable
-
-2005-10-01 Andrew J. Schorr <ajschorr@alumni.princeton.edu>
-
-	* ospf_dump.c: Remove local hard-coded table ospf_redistributed_proto.
-	  (ospf_redist_string) New function implemented using new library
-	  function zebra_route_string().  Note that there are a few differences
-	  in the output that will result: the new function returns strings
-	  that are lower-case, whereas the old table was mixed case.  Also,
-	  the old table mapped ZEBRA_ROUTE_OSPF6 to "OSPFv3", whereas the
-	  new function returns "ospf6".
-	* ospfd.h: Remove extern struct message ospf_redistributed_proto[],
-	  and add extern const char *ospf_redist_string(u_int route_type)
-	  instead.
-	* ospf_asbr.c: (ospf_external_info_add) In two messages, use
-	  ospf_redist_string instead of LOOKUP(ospf_redistributed_proto).
-	* ospf_vty.c: Remove local hard-coded table distribute_str.
-	  (config_write_ospf_redistribute,config_write_ospf_distribute): Use
-	  new library function zebra_route_string() instead of distribute_str[].
-	* ospf_zebra.c: (ospf_redistribute_set,ospf_redistribute_unset,
-	  ospf_redistribute_default_set,ospf_redistribute_check)
-	  In debug messages, use ospf_redist_string() instead of
-	  LOOKUP(ospf_redistributed_proto).
-
-2005-09-30 Vincent Jardin <vincent.jardin@6wind.com>
-
-	* ospf_dump.c, ospf_ia.c, ospf_spf.c, ospf_ase.c:
-	  remove unused DEBUG
-
-2005-09-29 Alain Ritoux <alain.ritoux@6wind.com>
-
-	* ospf_ism.c: generate SNMP traps on Interface state change
-	* ospf_nsm.c: generate SNMP traps on Neighbour state change
-	* ospf_snmp.[ch]: support for SNMP traps for interface and neighbours.
-
-2005-09-29 Alain Ritoux <alain.ritoux@6wind.com>
-
-	* ospf_vty.c: forece default route LSA to be re_issued whenever
-	  cost is changed ( [no] ip ospf area XXX default-cost YYY)
-	  Support ignore-mtu option
-	* ospfd.h: define OSPF_MTU_IGNORE_DEFAULT
-	* ospf_packet.c: support ignore-mtu option
-	* ospf_interface.h: field added for skipping MTU check 
-	* ospf_interface.c: fix memory leak in ospf_crypt_key_delete()
-	  Set mtu_ignore field to default value
-	* ospf_abr.[ch]: export ospf_abr_announce_network_to_area()
-	* ospf_ism.h: add MACRO to convert internal ISM status into SNMP
-	  correct values
-	* ospf_snmp.c: add sanity check on LSA type in lsdb_lookup_next()
-	  convert OSPFIFSTATE internal status into SNMP values
-
-2005-09-28 Alain Ritoux <alain.ritoux@6wind.com>
-
-	* ospf_packet.c: use new md5 API
-
-2005-09-19 Andrew J. Schorr <ajschorr@alumni.princeton.edu>
-
-	* ospf_lsa.h: (ospf_external_lsa_flush) Comment out the 5th argument
-	  (nexthop) since it is not used in the function (except inside
-	  some commented-out code).
-	* ospf_lsa.c: (ospf_external_lsa_flush,ospf_external_lsa_refresh)
-	  Comment out the 5th argument to ospf_external_lsa_flush.
-	* ospf_asbr.c: (ospf_redistribute_withdraw) Comment out 5th arg
-	  to ospf_external_lsa_flush.
-	* ospf_vty.c: (no_ospf_default_information_originate) Eliminate 5th
-	  uninitialized nexthop arg to ospf_external_lsa_flush.
-	* ospf_zebra.c: (ospf_zebra_read_ipv4) Comment out 5th arg
-	  to ospf_external_lsa_flush.
-	* ospfd.c: (ospf_network_set) Comment out 5th arg
-	  to ospf_external_lsa_flush.
-
-2005-09-17 Andrew J. Schorr <ajschorr@alumni.princeton.edu>
-
-	* ospf_opaque.c:
-	  (ospf_opaque_lsa_refresh_schedule,ospf_opaque_lsa_flush_schedule)
-	  No need to call ospf_lookup(), just use lsa0->area->ospf instead.
-
-2005-08-21 Hasso Tepper <hasso at quagga.net>
-
-	* ospf_vty.c: Make "show ip ospf neighbor xxx" commands work.
-	  Interface should be specified by name now.
-
-2005-08-17 Hasso Tepper <hasso at quagga.net>
-
-	* ospf_vty.c: Check carefully if interface exists before trying to
-	  print info about it.
-
-2005-08-05 Hasso Tepper <hasso at quagga.net>
-
-	* ospf_zebra.c: Don't assert/stop before type == ZEBRA_ROUTE_MAX if
-	  dealing with routemaps. There is ospf->route_map[ZEBRA_ROUTE_MAX]
-	  for default-information.
-
-2005-07-26 Paul Jakma <paul.jakma@sun.com>
-
-	* ospf_abr.c: (ospf_abr_announce_network_to_area) SET_FLAG
-	  should be on lsa not old, which may be freed for one thing,
-	  obviously.
-
-2005-07-12 Paul Jakma <paul.jakma@sun.com>
-
-	* ospfd.h: add OSPF_ABR_DEFAULT for convenience, make 
-	  OSPF_ABR_CISCO be the default ABR type.
-	* ospfd.c: (ospf_new) initialise abr_type to OSPF_ABR_DEFAULT
-	* ospf_vty.c: (no_ospf_abr_type_cmd) add standard as a negatable
-	  abr_type. default abr_type should be OSPF_ABR_DEFAULT.
-	  (ospf_config_write) test whether default abr_type against
-	  OSPF_ABR_DEFAULT, rather than any specific ABR_TYPE.
-
-2005-06-20 Hasso Tepper <hasso at quagga.net>
-
-	* ospf_nsm.c: Make database exchange for NSSA database work. 
-
-2005-06-13 Paul Jakma <paul.jakma@sun.com>
-
-	* ospf_spf.c: Try get more information on a SEGV under 
-	  ospf_spf_vertex_add_parent.
-	  (ospf_vertex_free) NULL out the child and nexthop lists
-	  (ospf_vertex_add_parent) nexthop and child can not be NULL
-	  vertex_nexthop's parent->child list can not be NULL
-	  (ospf_spf_next) w and cw are per-loop iteration variables, move
-	  declarations into loop body.
-	  
-2005-06-07 Hasso Tepper <hasso at quagga.net>
-
-	* ospf_apiserver.c: Fix obvious error in notifying clients about ISM
-	  changes - oi->ifp->status doesn't give to us info about ISM,
-	  oi->state does.
-
-2005-06-01  Akihiro Mizutani  <mizutani@net-chef.net>
-
-	* ospf_ism.c (ospf_elect_bdr/ospf_elect_dr): Fix DR election bug.
-
-2005-05-26 Paul Jakma <paul.jakma@sun.com>
-
-	* ospf_abr.c: (ospf_abr_update_aggregate) Fix comment, cost bug itself
-	  had been fixed long ago by Sowmini.
-
-2005-05-19 Paul Jakma <paul.jakma@sun.com>
-
-	* ospf_interface.c: (ospf_if_table_lookup) Fix a serious bug
-	  a less serious one. 
-	  1: this function is supposed to lookup
-	  entries in the oifs ospf_interface route_table and return either
-	  an existing oi or NULL to indicate not found, its caller depends
-	  on this, yet this function uses route_node_get which /always/
-	  returns a route_node - one is created if none exists. Use
-	  route_node_lookup instead. This should fix root cause of the
-	  reports of the (ospf_add_to_if) assert being hit.
-	  2: oi's are inserted into this table with prefixlength set to
-	  /32 (indeed, it should be a hash table, not a route_table),
-	  however prefixlength to lookup was not changed, if no valid entry
-	  can be inserted other than /32, then nothng but /32 should be
-	  looked up. This possibly only worked by fluke..
-	  Fix confirmed by 2 reporters (one list, one IRC), definitely a
-	  backport candidate once it has been incubated in HEAD for a while.
-	  Thanks to Patrick Friedel and Ivan Warren for testing.
-	  
-2005-05-11 Paul Jakma <paul.jakma@sun.com>
-
-	* (general) Fix memory leaks in opaque AS-scope LSAs, reported and
-	  with much debugging done by by scott collins <scollins@agile.tv>.
-	* ospf_lsa.c: (ospf_discard_from_db) dont call
-	  ospf_ase_unregister_external_lsa for opaque-lsa's, opaques are
-	  never registered with ase in the first place.
-	* ospf_packet.c: (general) Disabuse opaque related code of its
-          tendency to try gather up things into temporary lists.
-          (ospf_ls_upd) remove the temporary lists opaque uses, call
-          opaque functions inline, just like all other types.
-          (ospf_ls_ack) ditto.
-          (ospf_recv_packet) fixup sign warning.
-        * ospf_opaque.c: (general) fix the unneeded use of lists, and
-          untwist some of the logic.
-          (ospf_opaque_self_originated_lsa_received) take a single LSA
-          as argument, not a list of them. Remove the list loop. Logic 
-          otherwise unchanged.
-          (ospf_opaque_ls_ack_received) Mostly ditto. But untwist the logic,
-          move the actions up into the switch block, remove the goto's and
-          sanitise the logic near the end a bit.
-        * ospf_opaque.h: Adjust definitions of aforementioned functions
-          in ospf_opaque.c to match.
-         
-2005-05-07 Yar Tikhiy <yar@comp.chem.msu.su>
-
-	* ospf_network.c: Log ifindex on multicast membership leave/join
-	  events.
-
-2005-05-06 Paul Jakma <paul.jakma@sun.com>
-
-        * (general) extern and static qualifiers added. 
-          unspecified arguments in definitions fixed, typically they should
-          be 'void'.
-          function casts added for callbacks.
-          Guards added to headers which lacked them.
-          Proper headers included rather than relying on incomplete
-          definitions.
-          gcc noreturn function attribute where appropriate.
-        * ospf_opaque.c: remove the private definition of ospf_lsa's 
-          ospf_lsa_refresh_delay.
-        * ospf_lsa.h: export ospf_lsa_refresh_delay
-        * ospf_packet.c: (ospf_make_md5_digest) make *auth_key const, 
-          correct thing to do - removes need for the casts later.
-        * ospf_vty.c: Use vty.h's VTY_GET_INTEGER rather than ospf_vty's
-          home-brewed versions, shuts up several warnings.
-        * ospf_vty.h: remove VTY_GET_UINT32. VTY_GET_IPV4_ADDRESS and
-          VTY_GET_IPV4_PREFIX moved to lib/vty.h.
-        * ospf_zebra.c: (ospf_distribute_list_update_timer) hacky
-          overloading of the THREAD_ARG pointer should at least use
-          uintptr_t.
-
-2005-04-15 Zhipeng Gong <zpgong@cdc.3upsystems.com>
-
-	* ospf_abr.c: (ospf_abr_announce_network_to_area) dont forget
-	  to approve LSAs for the case where metric has changed, lsa gets
-	  flushed otherwise. (backport candidate).
-
-2005-04-11 Andrew J. Schorr <ajschorr@alumni.princeton.edu>
-
-	* ospf_zebra.c (ospf_zebra_add): Call zclient_send_message instead
-	  of writen.
-
-2005-04-02 Andrew J. Schorr <ajschorr@alumni.princeton.edu>
-
-	* ospf_interface.h: (ospf_if_lookup_by_name) Remove declaration of a
-	  function that does not exist.
-
-2005-04-02 Andrew J. Schorr <ajschorr@alumni.princeton.edu>
-
-	* ospf_zebra.c: (zebra_interface_if_lookup) Must use
-	  if_lookup_by_name_len.
-
-2005-04-02 Andrew J. Schorr <ajschorr@alumni.princeton.edu>
-
-	* ospf_interface.c: (ospf_vl_new) Use strnlen to fix call to if_create.
-
-2005-04-02 Andrew J. Schorr <ajschorr@alumni.princeton.edu>
-
-	* ospf_vty.c: (show_ip_ospf_interface_sub) Show ifindex and interface
-	  flags to help with debugging.
-	* ospf_zebra.c: (ospf_interface_delete) After deleting, set ifp->ifindex
-	  to IFINDEX_INTERNAL.
-	  (zebra_interface_if_lookup) Make function static.  Tighten up code.
-
-2005-03-31 Andrew J. Schorr <ajschorr@alumni.princeton.edu>
-
-	* ospf_dump.c: (show_debugging_ospf) Show if ospf event debugging
-	  is turned on.
-
-2005-03-29 Andrew J. Schorr <ajschorr@alumni.princeton.edu>
-
-	* ospf_zebra.c: (ospf_interface_state_up) If the MTU of an operative
-	  interface changes, print a debug message and call ospf_if_reset()
-	  to simulate down/up on the interface.
-	* ospf_interface.h: Declare new function ospf_if_reset().
-	* ospf_interface.c: (ospf_if_reset) New function to call ospf_if_down
-	  and ospf_if_up for all ospf interfaces attached to an interface.
-
-2005-03-29 Andrew J. Schorr <ajschorr@alumni.princeton.edu>
-
-	* ospf_packet.c: (ospf_write_frags) Enhance error message to
-	  show MTU.  Also make function static.
-	  (ospf_write) Enhance error message to show interface name and MTU.
-	  Also make function static.
-
-2005-03-29 Andrew J. Schorr <ajschorr@alumni.princeton.edu>
-
-	* ospf_vty.c: (show_ip_ospf_interface_sub) Display interface MTU and
-	  bandwidth; this is useful for debugging problems.  Also, the function
-	  should be static.
-
-2005-03-27 Hasso Tepper <hasso at quagga.net>
-
-	* ospf_snmp.c: Don't crash in snmp query if ospf instance doesn't
-	  exist at all.
-
-2005-03-25 Hasso Tepper <hasso at quagga.net>
-
-	* ospfd.h: Include log.h, fixes compile with gcc-4.0.
-
-2005-03-13 Andrew J. Schorr <ajschorr@alumni.princeton.edu>
-
-	* ospf_lsa.c: (ospf_lsa_refresh_walker) If the system clock jumps
-	  backward, then current time may be less than
-	  ospf->lsa_refresher_started.  This was causing invalid values
-	  for ospf->lsa_refresh_queue.index resulting in infinite loops.
-	  Problem fixed by casting the expression to unsigned before taking
-	  the modulus.
-
-2005-02-23 Andrew J. Schorr <ajschorr@alumni.princeton.edu>
-
-	* ospfd.h: Add new field struct stream *ibuf to struct ospf.
-	* ospfd.c: (ospf_new) Check return code from ospf_sock_init.
-	  Allocate ibuf using stream_new(OSPF_MAX_PACKET_SIZE+1).
-	  (ospf_finish) Call stream_free(ospf->ibuf.
-	* ospf_packet.c: (ospf_read) Call stream_reset(ospf->ibuf) and then
-	  pass it to ospf_recv_packet for use in receiving the packet
-	  (instead of allocating a new stream for each packet received).
-	  Eliminate all calls to stream_free(ibuf).
-	  (ospf_recv_packet) The struct stream *ibuf is now passed in as
-	  an argument.  No need to use recvfrom to peek at the packet
-	  header (to see how big it is), just use ospf->ibuf which is
-	  always large enough (this eliminates a system call to recvfrom).
-	  Therefore, no need to allocate a stream just for this packet,
-	  and no need to free it when done.
-
-2005-02-23 Vincenzo Eramo <eramo at infocom.ing.uniroma1.it>
-
-	* ospf_lsa.h: New flag to the LSA structure for the SPF calculation.
-	* ospf_lsdb.h: Export ospf_lsdb_clean_stat() function.
-	* ospf_spf.h: Add link to the LSA stat structure into vertex.
-	* ospf_spf.c: New functions cmp() and update_stat() to manage
-	  candidates. Remove ospf_spf_has_vertex(), ospf_vertex_lookup(),
-	  ospf_install_candidate() and ospf_spf_register() functions not needed
-	  any more. Update ospf_vertex_new(), ospf_spf_next() and
-	  ospf_spf_calculate() functions to use pqueue instead of linked list.
-
-2005-02-21 Hasso Tepper <hasso at quagga.net>
-
-	* ospf_ase.c: Don't show messages related to the ase calculations if
-	  we are not debugging.
-
-2005-02-19 Hasso Tepper <hasso at quagga.net>
-
-	* ospf_api.h: char isn't always signed, but it has to be it here.
-
-2005-02-19 Paul Jakma <paul.jakma@sun.com>
-
-	* ospf_packet.c: (ospf_stream_copy) remove
-	  (ospf_packet_dup) use stream_copy instead of ospf_stream_copy
-
-2005-02-17 Andrew J. Schorr <ajschorr@alumni.princeton.edu>
-
-	* ospf_packet.c: (ospf_recv_packet) If there is somehow a runt
-	  packet in the queue, it must be discarded.  Improve warning messages.
-	  Fix scope to static.
-	  (ospf_read) Fix bug: should reset the read thread in all cases
-	  to make sure we continue to get incoming messages.
-
-2005-02-15 Paul Jakma <paul.jakma@sun.com>
-
-	* ospf_packet.c: (ospf_recv_packet) Fix silly error wrt allocating
-	  ibuf. Thanks Andrew.
-
-2005-02-14 Paul Jakma <paul.jakma@sun.com>
-
-	* ospf_packet.c: (ospf_recv_packet) use stream_recvmsg.
-
-2005-02-11 Hasso Tepper <hasso at quagga.net>
-
-	* ospf_lsdb.c: Fix sum of checksums calculation.
-
-2005-02-09 Andrew J. Schorr <ajschorr@alumni.princeton.edu>
-
-	* ospf_packet.c: (ospf_write) If sendmsg fails, give more info in the
-	  error message.
-	  
-2005-02-08 Andrew J. Schorr <ajschorr@alumni.princeton.edu>
-
-	* ospf_interface.h: Reduce structure padding by putting new u_char
-	  field multicast_memberships in a better spot (grouped with
-	  other u_char fields type and state).
-
-2005-02-08 Andrew J. Schorr <ajschorr@alumni.princeton.edu>
-
-	* ospf_interface.h: Improve passive_interface comment.  Add new
-	  multicast_memberships bitmask to struct ospf_interface to track
-	  active multicast subscriptions.  Declare new function
-	  ospf_if_set_multicast.
-	* ospf_interface.c: (ospf_if_set_multicast) New function to configure
-	  multicast memberships properly based on the current
-	  multicast_memberships status and the current values of the
-	  ospf_interface state, type, and passive_interface status.
-	  (ospf_if_up) Remove call to ospf_if_add_allspfrouters (this is
-	  now handled by ism_change_state's call to ospf_if_set_multicast).
-	  (ospf_if_down) Remove call to ospf_if_drop_allspfrouters (now
-	  handled by ism_change_state).
-	* ospf_ism.c: (ospf_dr_election) Remove logic to join or leave
-	  the DRouters multicast group (now handled by ism_change_state's call
-	  to ospf_if_set_multicast).
-	  (ism_change_state) Add call to ospf_if_set_multicast to change
-	  multicast memberships as necessary to reflect the new interface state.
-	* ospf_packet.c: (ospf_hello) When a Hello packet is received on a
-	  passive interface: 1. Increase the severity of the error message
-	  from LOG_INFO to LOG_WARNING; 2. Add more information to the error
-	  message (packet destination address and interface address);
-	  and 3. If the packet was sent to ospf-all-routers, then try
-	  to fix the multicast group memberships.
-	  (ospf_read) When a packet is received on an interface whose state
-	  is ISM_Down, enhance the warning message to show the packet
-	  destination address, and try to update/fix the multicast group
-	  memberships if the packet was sent to a multicast address.
-	  When a packet is received for ospf-designated-routers, but the
-	  current interface state is not DR or BDR, then increase the
-	  severity level of the error message from LOG_INFO to LOG_WARNING,
-	  and try to fix the multicast group memberships.
-	* ospf_vty.c: (ospf_passive_interface) Call ospf_if_set_multicast for
-	  any ospf interface that may have changed from active to passive.
-	  (no_ospf_passive_interface) Call ospf_if_set_multicast for
-	  any ospf interface that may have changed from passive to active.
-	  (show_ip_ospf_interface_sub) Show multicast group memberships.
-
-2005-02-08 Paul Jakma <paul@dishone.st>
-
-	* ospf_packet.c: (various) Remove unneeded stream_set_putp abuse.
-
-2005-02-02 Andrew J. Schorr <ajschorr@alumni.princeton.edu>
-
-	* ospf_packet.c: (ospf_read) Fix bug: must check for state ISM_Down,
-	  not for event ISM_InterfaceDown.  And improve the message by
-	  adding the interface flags.
-
-2005-01-30 Andrew J. Schorr <ajschorr@alumni.princeton.edu>
-
-	* ospf_network.c: (ospf_sock_init) Save errno before calling
-	  ospfd_privs.change.
-
-2005-01-29 Andrew J. Schorr <ajschorr@alumni.princeton.edu>
-
-	* ospf_packet.c: (ospf_packet_add) If oi->obuf is NULL, print
-	an error message and return.
-	(ospf_read) If the interface state is ISM_InterfaceDown, issue
-	a warning message and ignore the packet.
-
-2005-01-10  Greg Troxel  <gdt@fnord.ir.bbn.com>
-
-	* ospf_packet.h: Remove commented out definition of
-	OSPF_MAX_PACKET; neither it or the uncommented one are used any more.
-
-	* ospf_packet.c (ospf_make_ls_upd): Leave room for authentication
-	when deciding if an update will fit.
-	(ospf_packet_authspace): Factor out calculation of size required
-	for authentication.
-	(ospf_make_db_desc): Use ospf_max_packet, not OSPF_MAX_PACKET.
-	Don't confuse readers that there is a macro.
-
-2004-12-30 Andrew J. Schorr <ajschorr@alumni.princeton.edu>
-
-	* ospf_network.c: Improve all setsockopt error messages to give detailed
-	  information on the arguments.
-
-2004-12-29 Andrew J. Schorr <ajschorr@alumni.princeton.edu>
-
-	* ospf_packet.c: (ospf_db_desc) Reduce severity of "Negotiation done"
-	  messages from LOG_WARNING to LOG_INFO, since this seems to be
-	  normal.
-
-2004-12-29 Andrew J. Schorr <ajschorr@alumni.princeton.edu>
-
-	* ospf_packet.c: (ospf_read) Always look up the interface if
-	  ospf_recv_packet returns NULL ifp, since some platforms such
-	  as Solaris 8 appear to support ifindex retrieval but don't.
-
-2004-12-22 Hasso Tepper <hasso at quagga.net>
-
-	* ospf_dump.c: Show debug configuration in vtysh.
-	* ospf_vty.c: Fix "show ip ospf" output. Router can't be elected in
-	  any case if it's configured as "translate-never".
-	* ospf_lsdb.[ch]: New function to calculate sum of checksums.
-	* ospf_vty.c: Bugfix to show really number of AS external LSAs, not
-	  number of all LSAs with AS scope, this includes opaque as LSAs as
-	  well, show this number separately. Show numbers and sums of
-	  checksums for each type of LSAs.
-	* ospf_lsa.c: Calculate checksum before putting LSA into database.
-
-2004-12-15 Andrew J. Schorr <ajschorr@alumni.princeton.edu>
-
-	* ospf_interface.h: Declare new function ospf_default_iftype.
-	* ospf_interface.c: (ospf_default_iftype) New function to centralize
-	  this logic in one place.
-	* ospf_zebra.c: (ospf_interface_add) Use new function
-	  ospf_default_iftype.
-	* ospf_vty.c: (no_ip_ospf_network,config_write_interface) Fix logic
-	  by using new function ospf_default_iftype.
-
-2004-12-11 Andrew J. Schorr <ajschorr@alumni.princeton.edu>
-
-	* ospf_packet.c: (ospf_db_desc) Should be static, not global.
-	  (ospf_hello,ospf_db_desc,ospf_ls_upd,ospf_ls_ack) Improve warning
-	  messages to include identifying information (e.g. router id).
-	* ospf_nsm.c: (nsm_change_state) Improve info message to include
-	  router id and state names.
-
-2004-12-09  Greg Troxel  <gdt@fnord.ir.bbn.com>
-
-	* ospf_apiserver.c (ospf_apiserver_term): Obtain struct
-	ospf_apiserver * from listnode.  Remove unused variables.  Follows
-	suggestion from Jay Fenlason.
-
-2004-12-08 Andrew J. Schorr <ajschorr@alumni.princeton.edu>
-
-	* *.c: Change level of debug messages to LOG_DEBUG.
-
-2004-12-07 Andrew J. Schorr <ajschorr@alumni.princeton.edu>
-
-	* ospf_main.c: (main) The 2nd argument to openzlog has been removed.
-
-2004-12-03 Andrew J. Schorr <ajschorr@alumni.princeton.edu>
-
-	* ospf_packet.c: (ospf_db_desc) Reduce priority on a debug message
-	  from LOG_NOTICE to LOG_DEBUG.
-
-2004-12-03 Andrew J. Schorr <ajschorr@alumni.princeton.edu>
-
-	* ospf_main.c: (sigint) Use zlog_notice for termination message.
-	  (main) Issue a startup announcement using zlog_notice.
-
-2004-11-30 Andrew J. Schorr <ajschorr@alumni.princeton.edu>
-
-	* ospf_packet.c: (ospf_db_desc_proc) Fix spelling of packet in warning
-	  message and in comment.
-	  (ospf_db_desc) Warning message that a packet is being discarded
-	  should give the router id of the packet source.  Fix spelling
-	  of packet in two warning messages.
-	  (ospf_ls_req) Warning message that a link state request is being
-	  discarded should give the router id of the neighbor that sent it.
-
-2004-11-26 Andrew J. Schorr <ajschorr@alumni.princeton.edu>
-
-	* ospf_main.c: Remove #include "debug.h" (was not being used, and
-	  lib/debug.h has now been deleted).
-
-2004-11-25 Hasso Tepper <hasso at quagga.net>
-
-	* ospf_main.c: Make group to run as configurable.
-
-2004-11-15  Greg Troxel  <gdt@fnord.ir.bbn.com>
-
-	* ospf_packet.c (ospf_recv_packet): Assume CMSG_SPACE is present
-	and works (lib/zebra.h provides if OS doesn't).
-
-2004-11-15 Paul Jakma <paul@dishone.st>
-
-	* ospf_{apiserver,te}.c: ospf_lsa_free's should be ospf_lsa_unlock.
-
-2004-11-12 Paul Jakma <paul@dishone.st>
-
-	* ospf_ia.c: (process_summary_lsa) Only an ABR has any reason to
-          ignore stub area summary default. Even so it seems a strange
-          check, add a comment to that effect.
-
-2004-11-04 Paul Jakma <paul@dishone.st>
-
-	* ospfd.c: (ospf_network_match_iface) revert to previous network
-          statement match behaviour.
-
-2004-11-02 Paul Jakma <paul@dishone.st>
-
-	* ospf_packet.c: (ospf_write_frags) remove iov arg, msg already points
-	  to it. Add convenience pointer to msg->msg_iov[1], and use this,
-	  fixing the unfortunate borkenness introduced in moving of this code 
-	  to a function.
-	  (ospf_write) remove iovp and fix up call to previous.
-	  (ospf_ls_upd_packet_new) cast size to long int - unfortunately 
-          glibc's size_t format modifier is not portable.
-
-2004-10-31 Paul Jakma <paul@dishone.st>
-
-	* ospf_packet.c: (ospf_write_frags) Add debug output
-	  (ospf_write) set type early, so we can pass it to
-	  ospf_write_frags.
-	  (ospf_ls_upd_packet_new) print size in debug output when too large
-	  packet is encountered.
-	* ospf_zebra.c: (ospf_distribute_list_update_timer) Ugly misuse of
-	  THREAD_ARG to store an integer, but it should at least use same
-          same type to retrieve the value. Assert value is sane.
-
-2004-10-22 Paul Jakma <paul@dishone.st>
-
-	* ospf_network.c: (ospf_sock_init) call neutral setsock_ifindex()
-          function.
-        * ospf_packet.c: (ospf_read) manually look up ifindex
-          if system could not have returned one, eg openbsd, thanks to Rivo
-	  Nurges for highlighting problem and fix.
-          Change setsockopt_pktinfo to setsockopt_ifindex.
-
-2004-10-19 Andrew J. Schorr <aschorr@telemetry-investments.com>
-
-	* ospf_snmp.c: (ospf_snmp_if_update) Fix logic to handle PtP links
-	  with dedicated subnets properly.
-	* ospf_lsa.c: (lsa_link_ptop_set) ditto.
-	* ospfd.c: (ospf_network_match_iface) ditto.
-	  (ospf_network_run) ditto.
-	* ospf_interface.c: (ospf_if_is_configured) ditto.
-	  (ospf_if_lookup_by_prefix) ditto.
-	  (ospf_if_lookup_recv_if) ditto.
-	* ospf_vty.c: (show_ip_ospf_interface_sub) Display the peer or
-	  broadcast address if present.
-
-2004-10-13 Hasso Tepper <hasso at quagga.net>
-
-	* ospf_main.c: Unbreak compilation with ospfapi disabled.
-	* ospf_snmp.c: Remove defaults used to initialize smux connection to
-	  snmpd. Connection is initialized only if smux peer is configured.
-
-2004-10-12 Hasso Tepper <hasso at quagga.net>
-
-	* ospf_main.c, ospf_opaque.c: Unbreak ospfclient compilation - move
-	  static variable from ospf_main.c into ospf_opaque.c.
-
-2004-10-11 Hasso Tepper <hasso at quagga.net>
-
-	* ospf_main.c, ospf_opaque.c: Disable ospfapi init by default. New
-	  command line switch to enable it.
-
-2004-10-11 Paul Jakma <paul@dishone.st>
-
-	* ospf_dump.c: (ospf_ip_header_dump) Assume header is in host order
-	  remove ntohs that should have dissappeared. Take struct ip
-	  as argument, caller has to know there's an IP header at start of
-	  stream anyway.
-	* ospf_dump.h: update declaration of ospf_ip_header_dump.
-	* ospf_packet.c: (ospf_write) correct call to 
-	  sockopt_iphdrincl_swab_htosys which was munging the header.
-	  (ospf_recv_packet) ip_len is needed for old OpenBSD fixup.
-	  (ospf_read) sockopt_iphdrincl_swab_systoh ip header as soon as
-	  we have it.
-	* (global) Const char update and signed/unsigned fixes.
-	* (various headers) size defines should be unsigned.
-	* ospf_interface.h: remove duplicated defines, include the
-	  authoritative header - though, these defines should probably
-          be moved to a dedicated header, or ospfd.h.
-	* ospf_lsa.h: (struct lsa) ls_seqnum should be unsigned.
-	* ospf_packet.c: (ospf_write) cast result of shift to unsigned.
-	  
-2004-10-08 Hasso Tepper <hasso at quagga.net>
-	
-	* *.[c|h]: Fix compiler warnings: make some strings const, signed ->
-	  unsigned, remove unused variables etc.
-
-2004-10-07  Greg Troxel  <gdt@claude.ir.bbn.com>
-
-	* ospf_apiserver.c (ospf_apiserver_unregister_opaque_type): Don't
-	use of variable names 'node' and 'nextnode' to avoid possible
-	conflict with list macros.  Move variable declaration inside for
-	loop after a statement to top of function.
-
-2004-10-07 Paul Jakma <paul@dishone.st>
-
-	* ospf_snmp.c: Missed list typedef update
-	* ospf_dump.c: Include sockopt.h for header swab functions.
-
-2004-10-05 Paul Jakma <paul@dishone.st>
-
-	* ospf_packet.c: replace ospf_swap_iph_to... with
-          sockopt_iphdrincl_swab_...
-
-2004-10-03 James R. Leu <jleu at mindspring.com>
-
-	* ospf_zebra.c: Read router id related messages from zebra daemon.
-	  Schedule router-id update thread if it's changed.
-	* ospfd.c: Remove own router-id selection function. Use router id from
-	  zebra daemon if it isn't manually overriden in configuration.
-
-2004-09-27 Paul Jakma <paul@dishone.st>
-
-	* ospf_dump.c: (ospf_ip_header_dump) Use HAVE_IP_HDRINCL_BSD_ORDER
-	  Apply to offset too. Print ip_cksum, lets not worry about
-	  possible 2.0.37 compile problems.
-	* ospf_packet.c: (ospf_swap_iph_to{n,h}) Use
-	  HAVE_IP_HDRINCL_BSD_ORDER.
-	  (ospf_recv_packet) ditto.
-	  (ospf_write) Fixup iov argument to ospf_write_frags.
-          (struct msghdr).msg_name is caddr_t on most platforms.
-	  (ospf_recv_packet) ditto. And msg_flags is not always there
-          memset struct then set fields we care about rather than 
-          initialise all fields individually.
-
-2004-09-26 Hasso Tepper <hasso at quagga.net>
-
-	* ospf_abr.c, ospf_dump.c, ospf_lsa.c, ospf_packet.c, ospf_vty.c,
-	  ospf_zebra.c: Fix compiler warnings.
-
-2004-09-24 Paul Jakma <paul@dishone.st>
-
-        * ospf_apiserver.{c,h}: lists typedef removal cleanup.
-          update some list loops to LIST_LOOP. some miscellaneous indent
-          fixups.
-          (ospf_apiserver_unregister_opaque_type) fix listnode_delete of
-          referenced node in loop.
- 	  (ospf_apiserver_term) loops calling ospf_apiserver_free, which
-          deletes referenced nodes from apiserver_list, fixed.
-        * ospf_interface.h: lists typedef removal cleanup.
-        * ospf_opaque.{c,h}: lists typedef removal cleanup. update some list 
-          loops to LIST_LOOP. miscellaneous style and indent fixups.
-        * ospf_te.{c,h}: ditto
-	* ospf_packet.c: lists typedef removal cleanup.
-          (ospf_write) ifdef fragmentation support. move actual
-	  fragmentation out to a new, similarly ifdefed, function.
-	  (ospf_write_frags) fragmented write support, moved from previous.
-
-2004-09-23 Hasso Tepper <hasso at quagga.net>
-
-	* *.[c|h]: list -> struct list *, listnode -> struct listnode *.
-
-2004-09-12 Paul Jakma <paul@dishone.st>
-
-	* ospf_packet.c: Fix bugzilla #107
- 	  (ospf_packet_max) get rid of the magic 88 constant
-	  (ospf_swab_iph_ton) new function. set ip header to network order,
-	  taking BSDisms into account.  
-	  (ospf_swab_iph_toh) the inverse. 
-	  (ospf_write) Add support for IP fragmentation, will only work on
-	  linux though, other kernels make it impossible. get rid of the
-	  magic 4 constant.  
-	  (ospf_make_ls_upd) Bound check to end of stream, not to 
-	  interface mtu.  
-	  (ospf_ls_upd_packet_new) New function, allocate upd packet
-	  taking oversized LSAs into account.
-	  (ospf_ls_upd_queue_send) use ospf_ls_upd_packet_new to allocate,
-	  rather than statically allocating mtu sized packet buffer, which
-	  actually was wrong - it didnt take ip header into account, which
-	  should not be included in packet buffer.
-	  (ospf_ls_upd_send_queue_event) minor tweaks and remove
-	  TODO comment.
-	  
-2004-08-31  David Wiggins  <dwiggins@bbn.com>
-
-	* ospf_spf.c (ospf_spf_calculate): Many more comments and debug
-	  print statements.  New function ospf_vertex_dump used in debugging.
-
-2004-08-31  David Wiggins  <dwiggins@bbn.com>
-
-	* ospf_spf.h (struct vertex): Comments for flags and structure members.
-
-2004-08-31  David Wiggins  <dwiggins@bbn.com>
-
-	* ospf_route.c: When finding an alternate route, log cost as well.
-
-2004-08-31  David Wiggins  <dwiggins@bbn.com>
-
-	* ospf_interface.c (ospf_lookup_if_params): Initialize af in
-	  struct prefix allocated on stack.
-
-2004-08-31  David Wiggins  <dwiggins@bbn.com>
-
-	* ospf_packet.c (ospf_ls_ack_send_delayed): In p2mp mode, send
-	  acks to AllSPFRouters, rather than All-DR.
-
-2004-08-27  Hasso Tepper  <hasso at quagga.net>
-
-	* ospf_vty.c: Don't print ospf network type under interface only
-	  if interface is in broadcast mode and interface type really is
-	  broadcast. Fixes Bugzilla #108.
-
-2004-08-27  David Wiggins  <dwiggins@bbn.com>
-
-	* ospf_spf.c (ospf_nexthop_calculation): Initialize address family
-	  in on-stack struct prefix_ipv4.  Fixes point-to-multipoint SPF
-	  calculation.
-
-2004-08-26  Greg Troxel  <gdt@fnord.ir.bbn.com>
-
-	* ospf_packet.c (ospf_recv_packet): adjust size declaration of
-	  buffer used to get interface index so that it compiles on other
-	  than Linux and includes the required alignment space.  Probably
-	  this was only working on sparc/sparc64 because most of
-	  sockaddr_dl was not being written.
-
-2004-08-19 Paul Jakma <paul@dishone.st>
-
-	* ospf_packet.c: update to match sockopt renames.
-	
-2004-08-04 Paul Jakma <paul@dishone.st>
-
-	* ospf_spf.c: (ospf_spf_consider_nexthop) Add comment about issue.
-	  Compare only against list head - all nexthops must be same cost
-	  anyway, fixes a reference-listnode-after-delete bug noted by
-	  Kir Kostuchenko.
-	  (ospf_nexthop_calculation) Use ospf_spf_consider_nexthop for all
-	  candidates attached to root.
-	  
-2004-07-27 Paul Jakma <paul@dishone.st>
-
-        * ospf_packet.c: (ospf_ls_upd_send_queue_event) fix thinko from
-          last fix for ospfd wedging due to oversize LSAs: dont list loop on
-          ospf_ls_upd_queue_send() - guaranteed segfault.
-          
-2004-07-27 Paul Jakma <paul@dishone.st>
-
-	* ospf_opaque.c: (ospf_opaque_lsa_flush_schedule) do not NULL out
-	  the LSA as then free_opaque_info_per_id() can never unlock (and
-	  free) the LSA. Reported by Gunnar Stigen.
-	  
-2004-07-23 Paul Jakma <paul@dishone.st>
-
-	* ospf_network.c: Replace PKTINFO/RECVIF with call to
-	  setsockopt_pktinfo
-	* ospf_packet.c: Use getsockopt_pktinfo_ifindex and
-	  SOPT_SIZE_CMSG_PKTINFO_IPV4.
-
-2004-07-14 Paul Jakma <paul@dishone.st>
-
-	* ospf_packet.c: (ospf_ls_upd_send_queue_event) Partial fix for 
-	  problem reported by Peter Frost amongst others, where function
-	  will spin indefinitely if update list contains LSAs greater than
-	  MTU-headers or other condition leading to update list never being
-          cleared. Problem of what to do with these LSAs remains.
-          (ospf_make_ls_upd) add comment about large LSA problem,
-	  indentation cleanup.
-
-2004-07-01  Greg Troxel  <gdt@fnord.ir.bbn.com>
-
-	* Makefile.am (lib_LTLIBRARIES): make libospf shared
-
-2004-06-30  Greg Troxel  <gdt@poblano.ir.bbn.com>
-
-	* Makefile.am: Add shlib support.
-
-2004-06-10 Hasso Tepper <hasso@estpak.ee>
-
-	* *: Removed ifdefs HAVE_NSSA.
-
-2004-06-06 Paul Jakma <paul@dishone.st>
-
-	* ospf_dump.c,ospf_lsa.c: Fix typos of merge of previous.
-	  ospf_flood.c: (ospf_process_self_originated_lsa) fix zlog format
-
-2004-05-31 Sagun Shakya <sagun.shakya@sun.com>
-
-	* ospf_dump.c: (ospf_lsa_header_dump) LOOKUP can return null if
-	  index is out of range.
-	  ospf_flood.c: endianness fix
-	  ospf_lsa.c: Missing ntohl's on (struct lsa *)->data->ls_seqnum
-	  in various places.
-	  
-2004-05-10 Hasso Tepper <hasso@estpak.ee>
-
-	* ospf_zebra.c, ospfd.c: Move ospf_prefix_list_update() function
-	  to ospf_zebra.c from ospfd.c and add redistribution updates if
-	  route-map is used in redistribution.
-	* ospf_main.c: Remove now useless call to ospf_init().
-
-2004-05-08 Paul Jakma <paul@dishone.st>
-
-	* ospf_zebra.c: Sync with lib/zclient changes
-	
-2004-05-05 Paul Jakma <paul@dishone.st>
-
-	* ospf_network.c: (ospf_sock_init) Check whether IP_HDRINCL is
-	  defined. Warn at compile and runtime. Use 
-	  IPTOS_PREC_INTERNETCONTROL otherwise.
-	* ospf_packet.c:  (ospf_associate_packet_vl) cleanup, move 
-	  some of the checks up to ospf_read, return either a 
-	  virtual link oi, or NULL. 
-	  (ospf_read) Cleanup, make it responsible for checks. Remove
-	  the nbr lookup - moved to ospf_neighbor. Adjust all nbr
-	  lookups to use new wrappers exported by ospf_neighbor.
-	* ospf_neighbor.h: Add ospf_neigbour_get and ospf_nbr_lookup.
-	* ospf_neighbor.c: (ospf_neigbour_get) Index ospf_interface 
-	  neighbour table by router-id for virtual-link ospf_interfaces, 
-	  not by peer_addr (which breaks for asymmetric vlinks)
-	  (ospf_nbr_lookup) add a wrapper for nbr lookups to deal with
-	  above.
-	* ospf_interface.c: (ospf_vl_set_params) Catch changes of interface
-	  address for either end of a virtual-link, and hence potential cost
-	  changes.
-	  
-2004-04-22 Hasso Tepper <hasso@estpak.ee>
-
-	* ospf_zebra.c: Don't ignore reject/bh routes, it's the only way
-	  to "summarize" routes in ASBR at the moment.
-
-2004-04-20 Hasso Tepper <hasso@estpak.ee>
-
-	* ospfd.c: Unset NP flag if area is going to be normal or stub.
-	  Fixes UNH OSPF_NSSA.1.2a comment.
-	* ospf_abr.c: Originate default into stub/nssa area even if
-	  summaries are disabled.
-	* ospf_zebra.c: Don't attempt to redistribute 127.0.0.0/8.
-
-2004-04-19 Hasso Tepper <hasso@estpak.ee>
-
-	* ospf_vty.c: Don't warn that export- and import-list can't be
-	  configured to backbone area if they are applied and are working
-	  fine.
-
-2004-02-19 Sowmini Varadhan <sowmini.varadhan@sun.com>
-
-	* ospf_packet.c: Don't drop packets in Solaris x86.
-	  [quagga-dev 1005].
-
-2004-03-18 Amir Guindehi <amir@datacore.ch>
-
-	* ospf_opaque.c: Attempt to correct the incorrect behavior of
-	Quagga's ospfd in the special situation that a node's opaque
-	capability has changed as "ON -> OFF -> ON". [quagga-dev 843].
-
-2004-02-19 Sowmini Varadhan <sowmini.varadhan@sun.com>
-
-	* ospf_abr.c: (ospf_abr_update_aggregate) UNH 3.12b,c, address range
-	  should be configured with the highest cost path within the range,
-	  not lowest.
-	  
-2004-02-17 Paul Jakma <paul@dishone.st>
-
-	* ospf_zebra.c: (ospf_interface_delete) Do not delete the interface
-	  params, nor the interface structure, if an interface delete 
-	  message is received from zebra.
-	* ospf_interface.c: (ospf_if_delete_hook) Delete the interface
-	  params and interface, ie that which was previously removed in
-	  (ospf_interface_delete) above.
-
-2004-02-11 Hasso Tepper <hasso@estpak.ee>
-	* ospf_interface.c, ospf_zebra.c: Don't attempt to read path->oi->ifp
-	  if oi doesn't exist any more.
-
-2004-02-11 Vadim Suraev <vadim.suraev@terayon.com>
-	* ospf_packet.c (ospf_ls_upd): Router should flush received network
-	  LSA if it was originated with older router-id ([zebra 14710] #6).
-
-2003-12-08 Mattias Amnefelt <mattiasa@kth.se>
-
-	* ospf_packet.c: (ospf_recv_packet) OpenBSD now leaves iph.ip_len 
-	  network byte order.
-
-2003-12-05  Greg Troxel  <gdt@poblano.ir.bbn.com>
-
-	* ospfd.c (ospf_network_match_iface): Rewrite code for clarity
-	while trying not to change semantics.  Add ifdefed-out code to
-	avoid matching ppp interfaces whose destination address does not
-	also match the prefix under consideration, to help out people with
-	problems due to as-yet-unfixed bugs with p2p interfaces coming and
-	going.
-
-2003-07-25 kamatchi soundaram <kamatchi@tdd.sj.nec.com>
-
-        * ospf_packet.c (ospf_ls_upd_send_queue_event): get next route
-          node in body of the loop to avoid chance that route node
-          is unlocked and deleted before the next iteration tries to 
-          get next route node.
-
-2003-05-24 Kenji Yabuuchi
-
-	* ospf_interface.c(ospf_if_lookup_recv_if): Use the most specific
-	  match for interface lookup.
-
-2003-05-18 Hasso Tepper <hasso@estpak.ee>
-
-	* ospf_vty.c: Show NSSA LSA route info in "show ip ospf database"
-	output
-
-2003-05-16 Hasso Tepper <hasso@estpak.ee>
-
-	* ospf_lsa.c: Fix handling of NSSA
-
-2003-04-23 Hasso Tepper <hasso@estpak.ee>
-
-	* ospf_vty.c: fix "router xxx" node commands in vtysh
-
-2003-04-19 Hasso Tepper <hasso@estpak.ee>
-
-	* {ospf_abr,ospfd}.c: area id's DECIMAL -> ADDRESS
-	* ospf_routemap.c: sync daemon's route-map commands to have same
-	  syntax.
-	
-2003-04-19 Sergey Vyshnevetskiy <serg@vostok.net>
-
-	* ospf_packet.c: Add missing param to zlog
-	* ospf_flood.c: remove unused vars
-
-2003-04-17 Denis Ovsienko <zebra@pilot.org.ua>
-
-	* ospf_interface.c: fix incorrect memset
-
-2003-04-10 Amir Guindehi <amir@datacore.ch>
-
-	* ospf_lsa.[ch]: opaque LSA fix, use ospf_lookup.
-
-2003-04-03 David Watson <dwatson@eecs.umich.edu>
-
-	* ospf_lsa.c: byte order fix
-
-2002-03-17  Amir Guindehi <amir@datacore.ch>
-
-        * ospf_apiserver.[ch]: Merge Ralph Keller's OSPFAPI support.
-        * ospf_api.[ch]: Merge Ralph Keller's OSPFAPI support.
-	* ospfclient: OSPFAPI demonstration client.
-
-2003-01-23  Masahiko Endo <endo@suri.co.jp>
-
-	* ospf_ism.c: NSM event schedule bug fix.
-
-2002-10-30  Greg Troxel <gdt@ir.bbn.com>
-
-	* ospf_packet.c (ospf_make_md5_digest): MD5 length fix. 
-
-2002-10-23  endo@suri.co.jp (Masahiko Endo)
-
-	* ospf_opaque.c: Update Opaque LSA patch.
-
-2002-10-23  Ralph Keller <keller@tik.ee.ethz.ch>
-
-	* ospf_vty.c (show_ip_ospf_database): Fix CLI parse.
-
-2002-10-23  Juris Kalnins <juris@mt.lv>
-
-	* ospf_interface.c (ospf_if_stream_unset): When write queue
-	becomes empty stop write timer.
-
-2002-10-10  Greg Troxel <gdt@ir.bbn.com>
-
-	* ospf_packet.c (ospf_check_md5_digest): Change >= to > to make it
-	conform to RFC.
-
-2002-07-07  Kunihiro Ishiguro  <kunihiro@ipinfusion.com>
-
-	* zebra-0.93 released.
-
-2002-06-19  Kunihiro Ishiguro  <kunihiro@ipinfusion.com>
-
-	* ospf_spf.c (ospf_nexthop_calculation): Add NULL set to oi and
-	check of l2.  Reported by: Daniel Drown <dan-zebra@drown.org>
-	(ospf_lsa_has_link): LSA Length calculation fix.  Reported by:
-	Paul Jakma <paulj@alphyra.ie>.
-
-	* ospfd.c (ospf_if_update): Fix nextnode reference bug.  Reported
-	by: juris@mt.lv.
-
-2002-01-21  Kunihiro Ishiguro  <kunihiro@ipinfusion.com>
-
-	* ospfd.c: Merge [zebra 11445] Masahiko ENDO's Opaque-LSA support.
-
-2001-08-27  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* ospf_interface.c (ospf_add_to_if): Use /32 address to register
-	OSPF interface information.
-	(ospf_delete_from_if): Likewise.
-
-	* ospf_zebra.c (ospf_interface_address_delete): Likewise.
-
-2001-08-23  Kunihiro Ishiguro  <kunihiro@ipinfusion.com>
-
-	* ospf_zebra.c (ospf_redistribute_unset): When redistribute type
-	is OSPF, do not unset redistribute flag.
-
-2001-08-19  Kunihiro Ishiguro  <kunihiro@ipinfusion.com>
-
-	* zebra-0.92a released.
-
-2001-08-15  Kunihiro Ishiguro  <kunihiro@ipinfusion.com>
-
-	* zebra-0.92 released.
-
-2001-08-12  Kunihiro Ishiguro  <kunihiro@ipinfusion.com>
-
-	* ospfd.c (ospf_config_write): auto-cost reference-bandwidth
-	configuration display.
-
-2001-07-24  David Watson <dwatson@eecs.umich.edu>
-
-	* ospf_spf.c (ospf_spf_next): Modify ospf_vertex_add_parent to
-	check for an existing link before connecting the parent and child.
-	ospf_nexthop_calculation is also modified to check for duplicate
-	entries when copying from the parent.  Finally, ospf_spf_next
-	removes duplicates when it merges two equal cost candidates.
-
-2001-07-23  itojun@iijlab.net
-
-	* ospfd.c (show_ip_ospf_neighbor): Check ospf_top before use it
-	[zebra 8549].
-
-2001-07-23  Kunihiro Ishiguro  <kunihiro@ipinfusion.com>
-
-	* ospf_packet.c (ospf_write): Remove defined(__OpenBSD__) to make
-	it work on OpenBSD.
-
-2001-06-26  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* ospf_zebra.c (config_write_ospf_default_metric): Display
-	default-metric configuration.
-
-2001-06-18  Kunihiro Ishiguro  <kunihiro@ipinfusion.com>
-
-	* ospf_ia.h (OSPF_EXAMINE_SUMMARIES_ALL): Remove old macros.
-
-2001-05-28  Kunihiro Ishiguro  <kunihiro@ipinfusion.com>
-
-	* ospf_snmp.c (ospfIfEntry): Fix interface lookup bug to avoid
-	crush.
-	(ospfIfMetricEntry): Likewise.
-
-2001-03-18  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* ospf_packet.c (ospf_read): Fix typo.  Reported by: "Jen B
-	Lin'Kova" <jen@stack.net>.
-
-2001-03-15  Gleb Natapov <gleb@nbase.co.il>
-
-	* ospf_interface.c (ip_ospf_network): Set interface parameter.
-	(interface_config_write): Add check for OSPF_IFTYPE_LOOPBACK.
-
-	* ospf_zebra.c (ospf_interface_add): Set interface parameter.
-
-2001-02-21  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* ospf_packet.c (ospf_recv_packet): Solaris also need to add
-	(iph.ip_hl << 2) to iph.ip_len.
-
-2001-02-09  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* ospfd.h (OSPF_LS_REFRESH_TIME): Fix OSPF_LS_REFRESH_TIME value.
-	Suggested by: David Watson <dwatson@eecs.umich.edu>.
-
-	* ospf_zebra.c (zebra_init): Remove zebra node.
-
-	* ospfd.c (ospf_area_range_set): Function name is changed from
-	ospf_ara_range_cmd.
-	(ospf_area_range_unset): New function which separated from DEFUN.
-	New commands are added:
-	"no area A.B.C.D range A.B.C.D/M advertise"
-	"no area <0-4294967295> range A.B.C.D/M advertise"
-	"no area A.B.C.D range A.B.C.D/M not-advertise"
-	"no area <0-4294967295> range A.B.C.D/M not-advertise"
-	
-	* ospf_lsa.c (ospf_lsa_more_recent): Fix previous change.
-
-2001-02-08  Matthew Grant <grantma@anathoth.gen.nz>
-
-	* ospf_network.c (ospf_if_add_allspfrouters): Use
-	setsockopt_multicast_ipv4.
-	(ospf_if_drop_allspfrouters): Likewise.
-
-	* ospf_lsa.c (ospf_router_lsa_install): Add rt_recalc flag.
-	(ospf_network_lsa_install): Likewise.
-	(ospf_summary_lsa_install): Likewise.
-	(ospf_summary_asbr_lsa_install): Likewise.
-	(ospf_external_lsa_install): Likewise.
-	(ospf_lsa_install): Call ospf_lsa_different to check this LSA is
-	new one or not.
-
-2001-02-08  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* ospf_zebra.c (ospf_interface_delete): Do not free interface
-	structure when ospfd receive interface delete message to support
-	pseudo interface.
-
-2001-02-01  Dick Glasspool <dick@ipinfusion.com>
-
-	* ospfd.c (area_range_notadvertise): Change area range "suppress"
-	command to "not-advertise".
-
-	* ospfd.h (OSPF_LS_REFRESH_TIME): Change OSPF_LS_REFRESH_TIME from
-	1800 to 60.
-
-	* ospf_abr.c (ospf_abr_update_aggregate): When update_aggregate is
-	updating the area-range, the lowest cost is now saved.
-
-	* ospf_lsa.c (ospf_lsa_more_recent): Routing to compare sequence
-	numbers rather than creating overflow during calculation.
-
-2001-02-01  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* zebra-0.91 is released.
-
-2001-01-31  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* ospf_packet.c (ospf_db_desc_proc): Do not continue process when
-	NSM_SeqNumberMismatch is scheduled.
-	(ospf_ls_req): Free ls_upd when return from this function.
-	(ospf_ls_upd_timer): When update list is empty do not call
-	ospf_ls_upd_send().  Suggested by: endo@suri.co.jp (Masahiko
-	Endo).
-
-2001-01-26  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* ospf_lsa.c (ospf_maxage_flood): Flood LSA when it reaches
-	MaxAge.  RFC2328 Section 14.
-	(ospf_maxage_lsa_remover): Call above function during removing
-	MaxAge LSA.
-
-2001-01-26  Dick Glasspool <dick@ipinfusion.com>
-
-	* ospf_flood.c (ospf_flood_through_as): Function is updated for
-	NSSA Translations now done at ospf_abr.c with no change in P-bit.
-
-	* ospf_lsa.c (ospf_get_nssa_ip): Get 1st IP connection for Forward
-	Addr.
-	(ospf_install_flood_nssa):  Leave Type-7 LSA at Lock Count = 2. 
-
-	* ospf_ase.c (ospf_ase_calculate_route): Add debug codes.
-
-	* ospf_abr.c (ospf_abr_translate_nssa): Recalculate LSA checksum.
-
-	* ospf_packet.h (OSPF_SEND_PACKET_LOOP): Added for test packet.
-
-	* ospf_dump.c (ospf_lsa_type_msg): Add OSPF_GROUP_MEMBER_LSA and
-	OSPF_AS_NSSA_LSA.
-
-	* ospfd.c (data_injection): Function to inject LSA.  This is
-	debugging command.
-
-2001-01-11  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* ospf_route.c (ospf_route_match_same): Remove function.
-	(ospf_route_match_same_new): Renamed to ospf_route_match_same.
-
-	* ospf_zebra.c (ospf_interface_address_delete): Add check for
-	oi->address.  Suggested by Matthew Grant
-	<grantma@anathoth.gen.nz>.
-	(ospf_zebra_add): Remove function.
-	(ospf_zebra_add_multipath): Rename to ospf_zebra_add.
-
-	* ospf_interface.c: Remove HAVE_IF_PSEUDO part.
-
-	* ospf_zebra.c: Likewise.
-
-2001-01-10  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* ospf_ase.c: Remove OLD_RIB part.
-
-	* ospf_route.c: Likewise.
-
-	* zebra-0.90 is released.
-
-	* ospf_packet.c (ospf_recv_packet): Use ip_len adjestment code to
-	NetBSD.
-
-2001-01-09  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* ospf_route.c (ospf_route_delete): Use
-	ospf_zebra_delete_multipath.
-
-2001-01-09  Matthew Grant <grantma@anathoth.gen.nz>
-
-	* ospf_interface.c (ospf_if_cleanup): Function name is renamed
-	from ospf_if_free().  Rewrite whole procudure to support primary
-	address deletion.
-
-	* ospf_zebra.c (ospf_interface_address_delete): Add primary
-	address deletion process.
-
-2001-01-09  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* ospf_packet.c (ospf_recv_packet): OpenBSD has same ip_len
-	treatment like FreeBSD.
-
-2001-01-09  endo@suri.co.jp (Masahiko Endo)
-
-	* ospf_packet.c (ospf_recv_packet): FreeBSD kernel network code
-	strips IP header size from receiving IP Packet.  So we adjust
-	ip_len to whole IP packet size by adding IP header size.
-
-2001-01-08  endo@suri.co.jp (Masahiko Endo)
-
-	* ospf_network.c (ospf_serv_sock): When socket() is failed return
-	immediately.
-	(ospf_serv_sock): Close socket when it is not used.
-
-	* ospf_packet.c (ospf_write): Set sin_len when HAVE_SIN_LEN is
-	defined.
-	(ospf_write): When bind is fined, close sock.
-
-2001-01-07  Gleb Natapov <gleb@nbase.co.il>
-
-	* ospf_zebra.c (ospf_interface_state_up): Fixes coredump that
-	appears when you try to configure bandwidth on the ppp interface
-	that is not yet configured in ospfd.
-
-2001-01-07  Michael Rozhavsky <mrozhavsky@opticalaccess.com>
-
-	* ospf_route.c (show_ip_ospf_route_external): "show ip ospf route"
-	will print nexthops for AS-external routes.
-
-	* ospf_ase.c (ospf_ase_route_match_same): New function to compare
-	ASE route under multipath environment.
-	(ospf_ase_compare_tables): Likewise.
-
-2001-01-01  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* ospfd.h (OSPF_VTYSH_PATH): Change "/tmp/ospfd" to "/tmp/.ospfd".
-
-2000-12-28  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* ospf_route.c (ospf_route_install): Install multipath information
-	to zebra daemon.
-
-	* ospf_zebra.c (ospf_zebra_add_multipath): Function for passing
-	multipath information to zebra daemon.
-
-2000-12-25  Dick Glasspool <dick@ipinfusion.com>
-
-	* ospf_packet.c (ospf_write): Call ospf_packet_delete when sendto
-	fail.
-	(DISCARD_LSA): Add argument N for logging point of DISCARD_LSA is
-	called.
-
-	* ospf_lsa.c (ospf_external_lsa_refresh): NSSA install_flood will
-	leave Type-7 LSA at Lock Count = 2.
-
-	* ospf_flood.c (ospf_flood_through): Flood_though_as updated for
-	NSSA no P-bit off during Area flooding, but P-bit is turned off
-	for mulitple NSSA AS flooding.
-
-	* ospf_ase.c (ospf_ase_calculate_timer): Added calculations for
-	Type-7 LSDB.
-
-	* ospf_abr.c (ospf_abr_translate_nssa): Removed one unlock call.
-	(ospf_abr_announce_nssa_defaults): Corrected Debug from EVENT to
-	NSSA.
-
-2000-12-25  Michael Rozhavsky <mrozhavsky@opticalaccess.com>
-
-	* ospf_zebra.c (ospf_zebra_read_ipv4): Checking the age of the
-	found LSA and if the LSA is MAXAGE we should call refresh instead
-	of originate.
-
-2000-12-18  Dick Glasspool <dick@ipinfusion.com>
-	   	   
-	* ospf_abr.c: Removed redundant "...flood" in
-	announce_network_to_area().  Repaired nssa Unlock by using
-	discard.
-
-	* ospf_packet.c: Removed old NSSA translate during mk_ls_update.
-	
-	* ospfd.c: Free up all data bases including NSSA.
-
-	* ospf_lsa.c: Now allow removal of XLATE LSA's Check in
-	discard_callback. Added routine to get ip addr from within the
-	ifp.
-
-	* ospf_flood.c: Now set Forward Address for outgoing Type-7.
-
-	* ospf_lsa.h: Added prototype for the below. struct in_addr
-	ospf_get_ip_from_ifp (struct interface *ifp).
-
-2000-12-14  Gleb Natapov <gleb@nbase.co.il>
-
-	* ospf_packet.c (ospf_recv_packet): New OSPF pakcet read method.
-	Now maximum packet length may be 65535 bytes (maximum IP packet
-	length).
-
-	* ospf_interface.c (ospf_if_stream_set): Don't make input buffer.
-
-	* ospfd.c (config_write_network_area): Remove unnecessary area
-	lookup code.
-
-2000-12-13  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* ospf_packet.c (ospf_read): Accept packet bigger than MTU value.
-
-2000-12-13  Gleb Natapov <gleb@nbase.co.il>
-
-	* ospfd.c (config_write_network_area): Fix bug in
-	config_write_network_area function.
-
-2000-12-12  Gleb Natapov <gleb@nbase.co.il>
-
-	* ospf_abr.c (ospf_abr_announce_network_to_area): Make Summary
-	LSA's origination and refreshment as same as other type of LSA.
-
-	* ospf_lsa.c (ospf_summary_lsa_refresh): Return struct ospf_lsa *.
-
-	* ospf_lsa.c (ospf_summary_asbr_lsa_refresh): Likewise.
-
-2000-12-08  Dick Glasspool <dick@ipinfusion.com>
-
-	The bulk of NSSA changes are contained herein; This version will
-	require manual setting of "always" for NSSA Translator, and will
-	not perform aggregation yet.
-
-	* ospf_dump.c: "debug ospf nssa" is added.
-
-	* ospf_dump.h: Likewise.
-
-	* ospf_packet.c (ospf_hello): Display router ID on Bad NSSA Hello.
-
-	* ospfd.c: Discard_LSA to stay away from LOCAL_XLT Process NSSA
-	'never, candidate, always'.  Change "suppress" to "not-advertise".
-
-	* ospfd.h: Add TranslatorRole to struct ospf_area.  Add anyNSSA to
-	struct ospf.
-
-	* ospf_ase.c (ospf_ase_calculate_route): External to stay away
-	from LOCAL_XLT
-
-	* ospf_nsm.c (ospf_db_summary_add): External to stay away from
-	LOCAL_XLT
-
-	* ospf_abr.c: Major logic added for abr_nssa_task().  If ABR, and
-	NSSA translator, then do it.  Approve the global list, and flush
-	any unapproved.
-	
-	* ospf_lsa.h: New LSA flag OSPF_LSA_LOCAL_XLT to indicate that the
-	Type-5 resulted from a Local Type-7 translation; not used for
-	flooding, but used for flushing.
-
-	* ospf_flood.c: New NSSA flooding.
-
-2000-12-08  Michael Rozhavsky <mrozhavsky@opticalaccess.com>
-
-	* ospfd.c (ospf_find_vl_data): New function for looking up virtual
-	link data.
-	(ospf_vl_set_security): Virtual link configuration with
-	authentication.
-	(ospf_vl_set_timers): Set timers for virtual link.
-
-	* New commands are added.
-	"area A.B.C.D virtual-link A.B.C.D"
-	"area A.B.C.D virtual-link A.B.C.D hello-interval <1-65535> retransmit-interval <3-65535> transmit-delay <1-65535> dead-interval <1-65535>"
-	"area A.B.C.D virtual-link A.B.C.D hello-interval <1-65535> retransmit-interval <3-65535> transmit-delay <1-65535> dead-interval <1-65535> authentication-key AUTH_KEY"
-	"area A.B.C.D virtual-link A.B.C.D authentication-key AUTH_KEY"
-	"area A.B.C.D virtual-link A.B.C.D hello-interval <1-65535> retransmit-interval <3-65535> transmit-delay <1-65535> dead-interval <1-65535> message-digest-key <1-255> md5 KEY"
-	"area A.B.C.D virtual-link A.B.C.D message-digest-key <1-255> md5 KEY"
-
-	* ospf_packet.c (ospf_check_md5_digest): Add neighbor's
-	cryptographic sequence number treatment.
-	(ospf_check_auth): OSPF input buffer is added to argument.
-	(ospf_read): Save neighbor's cryptographic sequence number.
-
-	* ospf_nsm.c (nsm_change_status): Clear cryptographic sequence
-	number when neighbor status is changed to NSM down.
-
-	* ospf_neighbor.c (ospf_nbr_new): Set zero to crypt_seqnum.
-
-	* ospf_neighbor.h (struct ospf_neighbor): Add cryptographic
-	sequence number to neighbor structure.
-
-2000-11-29  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* ospf_snmp.c (ospfIfLookup): OSPF MIB updates.
-	(ospfExtLsdbEntry): Add OspfExtLsdbTable treatment.
-
-2000-11-28  Michael Rozhavsky <mrozhavsky@opticalaccess.com>
-
-	* ospfd.c (ospf_interface_down): Clear a ls_upd_queue queue of the
-	interface.
-	(ospf_ls_upd_queue_empty): New function to empty ls update queue
-	of the OSPF interface.
-	(no_router_ospf): 'no router ospf' unregister redistribution
-	requests from zebra.
-
-2000-11-28  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* ospf_ism.c (ism_change_status): Increment status change number.
-
-	* ospf_interface.h (struct ospf_interface): Add new member for
-	status change statistics.
-
-	* Makefile.am: Update dependencies.
-
-	* ospf_zebra.c (ospf_interface_add): OSPF SNMP interface update.
-	(ospf_interface_delete): OSPF SNMP interface delete.
-
-	* ospf_snmp.h: New file is added.
-
-2000-11-23  Dick Glasspool <dick@ipinfusion.com>
-
-	* ospfd.h: Add new ospf_area structure member for
-	NSSATranslatorRole and NSSATranslator state.
-
-	* ospfd.c: Provided for eventual commands to specify NSSA
-	elections for "translator- ALWAYS/NEVER/CANDIDATE". Provided for
-	decimal integer version of area-suppress.
-
-	* ospf_flood.c: Flood Type-7's only into NSSA (not AS).
-
-	* ospf_lsa.c: Undo some previous changes for NSSA.  If NSSA
-	translator, advertise Nt bit.
-
-	* ospf_route.c: 1st version of "sh ip os border-routers".
-
-2000-11-23  Michael Rozhavsky <mrozhavsky@opticalaccess.com>
-
-	* ospfd.c (area_vlink): Virtual link can not configured in stub
-	area.
-
-2000-11-23  Gleb Natapov <gleb@nbase.co.il>
-
-	* ospf_packet.c (ospf_db_desc): In states Loading and Full the
-	slave must resend its last Database Description packet in response
-	to duplicate Database Description packets received from the
-	master.  For this reason the slave must wait RouterDeadInterval
-	seconds before freeing the last Database Description packet.
-	Reception of a Database Description packet from the master after
-	this interval will generate a SeqNumberMismatch neighbor
-	event. RFC2328 Section 10.8
-	(ospf_make_db_desc): DD Master flag treatment.
-
-	* ospf_nsm.c (nsm_twoway_received): Move DD related procedure to
-	nsm_change_status().
-	(nsm_bad_ls_req): Likewise.
-	(nsm_adj_ok): Likewise.
-	(nsm_seq_number_mismatch): Likewise.
-	(nsm_oneway_received): Likewise.
-
-	* ospf_neighbor.h (struct ospf_neighbor): New structure member
-	last_send_ts for timestemp when last Database Description packet
-	was sent.
-
-	* ospf_nsm.c (ospf_db_desc_timer): Make it sure nbr->last_send is
-	there.  Call ospf_db_desc_resend() in any case.
-
-2000-11-16  Michael Rozhavsky <mrozhavsky@opticalaccess.com>
-
-	* ospf_lsa.c (lsa_link_broadcast_set): When there is no DR on
-	network (suppose you have only one router with interface priority
-	0). It's router LSA does not contain the link information about
-	this network.
-
-	* ospf_nsm.c (nsm_timer_set): When you change a priority of
-	interface from/to 0 ISM_NeighborChange event should be scheduled
-	in order to elect new DR/BDR on the network.
-
-	* ospf_interface.c (ip_ospf_priority): Likewise.
-
-	* ospf_flood.c (ospf_ls_retransmit_add): When we add some LSA into
-	retransmit list we need to check whether the present old LSA in
-	retransmit list is not more recent than the new
-	one.
-
-2000-11-09  Dick Glasspool <dick@ipinfusion.com>
-
-	* ospf_packet.c: Allows for NSSA Type-7 LSA's throughout the NSSA
-	area.  Any that exit the NSSA area are translated to type-5 LSA's.
-	The instantiated image is restored after translation.
-	(ospf_ls_upd_send_list): Renamed to ospf_ls_upd_queu_send().
-	(ospf_ls_upd_send): Old function which enclosed by #ifdef 0 is
-	removed.
-	(ospf_ls_ack_send): Likewise.
-
-	* ospf_flood.c: NSSA-LSA's without P-bit will be restricted to
-	local area.  Otherwise they are allowed out the area to be
-	translated by ospf_packet.c.
-
-	* ospf_lsa.c: Undo some previous changes for NSSA.
-
-	* ospf_lsdb.h: New access for type 7.
-
-2000-11-07  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* ospf_route.c (ospf_path_exist): New function to check nexthop
-	and interface are in current OSPF path or not.
-	(ospf_route_copy_nexthops_from_vertex): Add nexthop to OSPF path
-	when it is not there.  Reported by Michael Rozhavsky
-	<mrozhavsky@opticalaccess.com>
-
-2000-11-06  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* ospf_dump.c (config_write_debug): Add seventh string "detail" is
-	added for flag is OSPF_DEBUG_SEND | OSPF_DEBUG_RECV |
-	OSPF_DEBUG_DETAIL.
-
-2000-11-06   Michael Rozhavsky <mrozhavsky@opticalaccess.com>
-
-	* ospf_lsa.c (router_lsa_flags): ASBR can't exit in stub area.
-
-2000-11-06  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* ospf_lsa.c (ospf_router_lsa_originate): Reduce unconditional
-	logging.
-
-2000-11-06  Dick Glasspool <dick@ipinfusion.com>
-
-	* ospfd.h: Add ait_ntoa function prototype.
-
-	* ospfd.c (ait_ntoa): New function for displaying area ID and
-	Stub/NSSA status.
-	(show_ip_ospf_interface_sub): Use ait_ntoa.
-	(show_ip_ospf_nbr_static_detail_sub): Likewise.
-	(show_ip_ospf_neighbor_detail_sub): Likewise.
-
-	* ospf_route.c (ospf_intra_route_add): Set external routing type
-	to ospf route.
-	(ospf_intra_add_router): Likewise.
-	(ospf_intra_add_transit): Likewise.
-	(ospf_intra_add_stub): Likewise.
-	(ospf_add_discard_route): Likewise.
-	(show_ip_ospf_route_network): Use ait_ntoa.
-	(show_ip_ospf_route_network): Likewise.
-	(show_ip_ospf_route_router): Likewise.
-
-	* ospf_lsa.c (show_lsa_detail): Use ait_ntoa.
-	(show_lsa_detail_adv_router): Likewise.
-	(show_ip_ospf_database_summary): Likewise.
-
-	* ospf_route.h (struct route_standard): Add new member
-	external_routing.
-
-	* ospf_ia.c (process_summary_lsa): Set external routing tyep to ospf
-	route.
-	(ospf_update_network_route): Likewise.
-	(ospf_update_router_route): Likewise.
-
-2000-11-04  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* ospf_flood.c (ospf_process_self_originated_lsa): Enclose
-	OSPF_AS_NSSA_LSA treatment with #ifdef HAVE_NSSA.
-
-2000-11-03  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* Unconditional logging is enclosed with if (IS_DEBUG_OSPF_EVENT).
-	Please specify "debug ospf event" for enable logging.
-
-	* ospf_ism.c: Do not extern debug flag varible.  It is done by
-	ospf_debug.h
-	* ospf_asbr.c: Likewise.
-	* ospf_lsa.c: Likewise.
-	* ospf_nsm.c: Likewise.
-	* ospf_zebra.c: Likewise.
-
-	* ospf_dump.c (debug_ospf_event): New command "debug ospf event"
-	is added.
-
-	* ospfd.c (router_ospf): Change logging from vty_out() to
-	zlog_info().
-	(ospf_area_stub_cmd): Likewise.
-
-	* ospf_dump.h: Extern term_debug flags.
-	(OSPF_DEBUG_EVENT): Add new flag.
-	(IS_DEBUG_OSPF_EVENT): Add new macro.
-
-2000-11-03  Dick Glasspool <dick@ipinfusion.com>
-
-	* ospf_flood.c (ospf_process_self_originated_lsa):
-	OSPF_AS_NSSA_LSA is treated as same as OSPF_AS_EXTERNAL_LSA.
-	(ospf_flood): Type-5's have no change.  Type-7's can be received,
-	and will Flood the AS as Type-5's They will also flood the local
-	NSSA Area as Type-7's.  The LSDB will be updated as Type-5's, and
-	during re-fresh will be converted back to Type-7's (if within an
-	NSSA).
-	(ospf_flood_through): Incoming Type-7's were allowed here if our
-	neighbor was an NSSA.  So Flood our area with the Type-7 and also
-	if we are an ABR, flood thru AS as Type-5.
-
-	* ospf_lsa.c (ospf_external_lsa_refresh): Flood NSSA both NSSA
-	area and other area.
-
-	* ospf_packet.c (ospf_db_desc_proc): When AS External LSA is
-	exists in DD packet, make it sure that this area is not stub.
-	(ospf_ls_upd_list_lsa): When LSA type is NSSA then set lsa's area
-	to NULL.
-	(ospf_ls_upd): If the LSA is AS External LSA and the area is stub
-	then discard the lsa.  If the LSA is NSSA LSA and the area is not
-	NSSA then discard the lsa.
-
-2000-11-03  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* ospfd.c (ospf_interface_run): Fix bug of Hello packet's option
-	is not properly set when interface comes up.
-
-2000-11-02  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* ospfd.h (OSPF_OPTION_O): Add new hello header option.
-
-2000-11-01  Dick Glasspool <dick@ipinfusion.com>
-
-	* ospf_lsa.h: Define OSPF_MAX_LSA to 8 when HAVE_NSSA is enabled.
-	(OSPF_GROUP_MEMBER_LSA): Define OSPF_GROUP_MEMBER_LSA.
-
-	* ospf_lsa.c (show_database_desc): Add "Group Membership LSA"
-	string.
-
-2000-10-31  Dick Glasspool <dick@ipinfusion.com>
-
-	* ospf_lsa.h (OSPF_AS_NSSA_LSA): Define OSPF_AS_NSSA_LSA.
-	
-	* ospf_lsa.c (show_ip_ospf_database): NSSA database display
-	function is added.  ALIASES which have "show ip ospf database
-	nssa-external" is added.
-	(show_ip_ospf_border_routers): New command "show ip ospf
-	border-routers" is added.
-
-2000-10-30  Dick Glasspool <dick@ipinfusion.com>
-
-	* ospfd.c (router_ospf): NSSA Enabled message is added for
-	testing.
-	(ospf_area_type_set): Are type set for NSSA area.
-	(ospf_area_stub_cmd): Special translation of no_summary into NSSA
-	and summary information. If NSSA is enabled pass the information
-	to ospf_area_type_set().
-	(area_nssa): New commands are added:
-	"area A.B.C.D nssa"
-	"area <0-4294967295> nssa"
-	"area A.B.C.D nssa no-summary"
-	"area <0-4294967295> nssa no-summary"
-	(ospf_no_area_stub_cmd): Special translation of no_summary into
-	NSSA and summary information.  If external_routing is
-	OSPF_AREA_NSSA unset area with ospf_area_type_set (area,
-	OSPF_AREA_DEFAULT).
-	(show_ip_ospf_area): Display NSSA status.
-	(config_write_ospf_area): Show NSSA configuration.
-
-	* ospf_packet.c (ospf_hello): For NSSA support, ensure that NP is
-	on and E is off.
-
-2000-10-26  Gleb Natapov <gleb@nbase.co.il>
-
-	* ospf_lsa.c (ospf_network_lsa_body_set): The network-LSA lists
-	those routers that are fully adjacent to the Designated Router;
-	each fully adjacent router is identified by its OSPF Router ID.
-	The Designated Router includes itself in this list. RFC2328,
-	Section 12.4.2.
-
-2000-10-23  Jochen Friedrich <jochen@scram.de>
-
-	* ospf_snmp.c: ospf_oid and ospfd_oid are used in smux_open after
-	it is registered.  So those variables must be static.
-
-2000-10-18  K N Sridhar <sridhar@euler.ece.iisc.ernet.in>
-
-	* ospfd.c: Add area_default_cost_decimal_cmd and
-	no_area_default_cost_decimal_cmd alias.
-
-2000-10-05  Gleb Natapov <gleb@nbase.co.il>
-
-	* ospfd.c (ospf_network_new): Fix setting area format.
-	(no_router_ospf): Check area existance when calling
-	ospf_interface_down().
-
-	* ospf_flood.c (ospf_external_info_check): Fix bug of refreshing
-	default route.
-
-2000-10-02  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* zebra-0.89 is released.
-
-2000-09-29  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* ospf_snmp.c (ospfHostEntry): OSPF Host MIB is implemented.
-
-	* ospfd.c (ospf_nbr_static_cmp): OSPF neighbor is sorted by it's
-	address.
-
-2000-09-28  Michael Rozhavsky  <mike@nbase.co.il>
-
-	* ospf_interface.c (ospf_if_free):  Fix deleting self neighbor twice.
-
-2000-09-27  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* ospf_packet.c (ospf_read): Solaris on x86 has ip_len with host
-	byte order.
-
-2000-09-25  Toshiaki Takada  <takada@zebra.org>
-
-	* ospfd.c (ospf_compatible_rfc1583), (no_ospf_compatible_rfc1583):
-	Add CISCO compatible command.
-
-2000-09-25  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* ospf_abr.c (ospf_area_range_lookup): New function is added for
-	area range lookup in OSPF-MIB.
-	(ospf_area_range_lookup_next): Likewise.
-
-2000-09-22  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* ospfd.c (no_router_ospf): Delete virtual link before deleting
-	area structure.
-
-	* ospf_lsa.c (ospf_external_lsa_refresh_type): Check
-	EXTERNAL_INFO(type).
-
-	* ospfd.c (no_router_ospf): Call ospf_vl_delete() instead of
-	ospf_vl_data_free().
-
-	* ospf_interface.c (ospf_vl_shutdown): Execute ISM_InterfaceDown
-	when ospf_vl_shutdown is called.
-	(ospf_vl_delete): Call ospf_vl_shutdown() to delete virtual link
-	interface's thread.
-
-2000-09-21  Gleb Natapov  <gleb@nbase.co.il>
-
-	* ospf_lsa.c: New implementation of OSPF refresh.
-
-2000-09-20  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* ospf_snmp.c (ospfLsdbLookup): Add LSDB MIB implementation.
-
-2000-09-18  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* ospf_snmp.c (ospfStubAreaEntry): Add OSPF stub area MIB.
-
-2000-09-18  Gleb Natapov  <gleb@nbase.co.il>
-
-	* ospf_route.h (route_standard):  Change member from `struct area'
-	to area_id.
-
-	* ospf_abr.c (ospf_abr_announce_network), (ospf_abr_should_announce),
-	(ospf_abr_process_network_rt), (ospf_abr_announce_rtr), 
-	(ospf_abr_process_router_rt):
-	* ospf_ase.c (ospf_find_asbr_route),
-	(ospf_find_asbr_router_through_area),
-	* ospf_ia.c (ospf_find_abr_route), (ospf_ia_router_route),
-	(process_summary_lsa), (ospf_update_network_route),
-	(ospf_update_router_route):
-	* ospf_route.c (ospf_intra_route_add), (ospf_intra_add_router),
-	(ospf_intra_add_transit), (ospf_intra_add_stub),
-	(ospf_route_table_dump), (show_ip_ospf_route_network),
-	(show_ip_ospf_route_router), (ospf_asbr_route_cmp),
-	(ospf_prune_unreachable_routers):
-	* ospf_spf.c (ospf_rtrs_print):
-	* ospfd.c (ospf_rtrs_free):  Fix the struct change above.
-
-2000-09-14  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* ospf_network.c (ospf_serv_sock_init): Enclose SO_BINDTODEVICE
-	with ifdef.
-
-2000-09-13  Gleb Natapov  <gleb@nbase.co.il>
-
-	* ospf_ism.c (ospf_elect_dr), (ospf_elect_bdr):  Fix DR election.
-
-	* ospf_network.c (ospf_serv_sock_init):  Add socket option
-	SO_BINDTODEVICE on read socket.
-
-	* ospf_packet.c (ospf_hello):  Ignore Hello packet if E-bit does
-	not match.
-
-	* ospfd.c (ospf_area_check_free), (ospf_area_get),
-	(ospf_area_add_if):  New function added.
-	
-2000-09-13  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* ospf_route.c (ospf_intra_add_router): Update ABR and ASBR router
-	count.
-
-	* ospf_spf.c (ospf_spf_init): Rest ABR and ASBR router count
-	starting SPF calculation.
-
-	* ospfd.h (struct ospf_area): Add ABR and ASBR router count.
-
-2000-09-12  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* ospfd.c (ospf_area_id_cmp): New area structure is sorted by area
-	ID.
-
-	* ospf_lsa.c (ospf_router_lsa_originate): For OSPF MIB update
-	lsa_originate_count.
-	(ospf_network_lsa_originate): Likewise.
-	(ospf_summary_lsa_originate): Likewise.
-	(ospf_summary_asbr_lsa_originate): Likewise.
-	(ospf_external_lsa_originate): Likewise.
-
-2000-09-11  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* ospf_snmp.c (ospf_variables): ospfRouterID's type RouterID
-	syntax is IpAddress.
-	(ospf_admin_stat): New function for OSPF administrative status
-	check.
-
-2000-09-10  Jochen Friedrich <jochen@scram.de>
-
-	* ospf_snmp.c: Implement OSPF MIB skeleton.
-
-2000-09-08  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* ospf_snmp.c: New file is added.
-
-2000-09-07  David Lipovkov <davidl@nbase.co.il>
-
-	* ospf_zebra.c (ospf_interface_delete): Add pseudo interface
-	treatment.
-
-	* ospf_interface.c (interface_config_write): Likewise.
-
-2000-08-17  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* zebra-0.88 is released.
-
-2000-08-17  Michael Rozhavsky  <mike@nbase.co.il>
-
-	* ospfd.c (ospf_area_free):  Remove virtual link configuration only
-	when Area is removed.
-
-2000-08-17  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* ospfd.c (network_area): Revert check for EXTERNAL_INFO
-	(ZEBRA_ROUTE_CONNECT).
-	(no_network_area): Likewise.
-
-2000-08-16  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* ospfd.h (struct ospf): Add distance_table and
-	distance_{all,intra,inter,external}.
-
-	* ospf_zebra.c: Add OSPF distance related functions.
-
-2000-08-15  Gleb Natapov  <gleb@nbase.co.il>
-
-	* ospf_asbr.c (ospf_external_info_find_lsa):  New function added.
-
-	* ospf_lsa.c (ospf_default_external_info),
-	(ospf_default_originate_timer), (ospf_external_lsa_refresh_default):
-	New function added.
-
-	* ospf_zebra.c
-	(ospf_default_information_originate_metric_type_routemap),
-	(ospf_default_information_originate_always_metric_type_routemap):
-	Change name and add route-map function.
-	(ospf_default_information_originate_metric_routemap),
-	(ospf_default_information_originate_routemap),
-	(ospf_default_information_originate_type_metric_routemap):
-	New DEFUN added.
-
-2000-08-14  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* ospf_zebra.c (zebra_interface_if_set_value): Change ifindex
-	restore size from two octet to four.
-
-2000-08-14  Michael Rozhavsky  <mike@nbase.co.il>
-
-	* ospf_ase.c (ospf_ase_incremental_update):  Implement incremental
-	AS-external-LSA in 16.6 of RFC2328.
-
-2000-08-14  Matthew Grant  <grantma@anathoth.gen.nz>
-
-	* ospf_interface.c (ospf_if_get_output_cost):  Change cost
-	calculation algorithm.
-
-	* ospf_packet (ospf_ls_upd):  Fix problem of LSA retransmitting.
-
-2000-08-11  Michael Rozhavsky  <mike@nbase.co.il>
-
-	* ospf_lsa.c (ospf_maxage_lsa_remover):  Fix maxage remover for
-	AS-external-LSAs.
-
-2000-08-10  Toshiaki Takada  <takada@zebra.org>
-
-	* ospfd.c (auto_cost_reference_bandwidth):  New DEFUN added.
-	`auto-cost reference-bandwidth' OSPF router command added.
-
-2000-08-08  Gleb Natapov  <gleb@nbase.co.il>
-
-	* ospf_routemap.c (ospf_route_map_update):  New function added.
-	Add route-map event hook.
-
-2000-08-08  Toshiaki Takada  <takada@zebra.org>
-
-	* ospf_zebra.c (ospf_distribute_check_connected):  If redistribute
-	prefix is connected route on OSPF enabled interface, suppress to
-	announce it.
-
-2000-08-08  Matthew Grant  <grantma@anathoth.gen.nz>
-
-	* ospf_interface.c (ospf_if_get_output_cost):
-	New function added.  Handle bandwidth parameter for cost
-	calculation.
-
-2000-08-08  Michael Rozhavsky  <mike@nbase.co.il>
-
-	* ospf_interface.c (interface_config_write):  Show interface
-	configuration regardless interface is down.
-
-	* ospf_ase.c (ospf_ase_caocluate_route):  Whole rewritten external
-	route calculate function.
-
-2000-08-08  Gleb Natapov  <gleb@nbase.co.il>
-
-	* ospf_routemap.c:  New file added.
-
-	* ospf_asbr.c (ospf_reset_route_map_set_values),
-	(ospf_route_map_set_compare):  New function added.
-
-	* ospf_lsa.c (ospf_external_lsa_body_set):  Set routemap metric
-	with AS-external-LSA.
-
-2000-08-05  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* ospf_ase.c (ospf_ase_calculate_route_add): Pass new->cost to
-	ospf_zebra_add as metric.
-	(ospf_ase_calculate_route_add): Likewise.
-
-	* ospf_route.c (ospf_route_install): Pass or->cost to
-	ospf_zebra_add as metric.
-
-	* ospf_zebra.c (ospf_zebra_add): Add metric arguemnt.
-	(ospf_zebra_delete): Likewise.
-
-2000-08-03  Matthew Grant  <grantma@anathoth.gen.nz>
-
-	* ospf_flood.c (ospf_flood_delayed_lsa_ack):  New function added.
-	Dispatch delayed-ACK with flooding AS-external-LSA across virtual
-	link.
-
-2000-07-31  Matthew Grant  <grantma@anathoth.gen.nz>
-
-	* ospfd.c (show_ip_ospf_area):  Fix lack of VTY_NEWLINE when
-	`show ip ospf'.
-
-	* ospf_interface.c (ospf_if_free):  Fix bug of crash with
-	Point-to-Point interface.
-
-2000-07-27  Michael Rozhavsky  <mike@nbase.co.il>
-
-	* ospf_flood.c (ospf_process_self_originated_lsa):
-	Make sure to clear LSA->param (redistributed external information)
-	before refreshment.
-
-2000-07-27  Gleb Natapov  <gleb@nbase.co.il>
-
-	* ospfd.c (refresh_group_limit), (refresh_per_slice),
-	(refresh_age_diff):  New defun added.  Refresher related parameter
-	can be configurable.
-
-2000-07-27  Akihiro Mizutani  <mizutani@dml.com>
-
-	* ospf_interface.c (interface_config_write):  Print `description'
-	config directive to work.
-
-2000-07-24  Akihiro Mizutani  <mizutani@dml.com>
-
-	* ospf_interface.c (ospf_if_init): Use install_default for
-	INTERFACE_NODE.
-
-2000-07-24  Gleb Natapov  <gleb@nbase.co.il>
-	
-	* ospf_packet.c (ospf_ls_upd_send_list), (ospf_ls_upd_send_event),
-	(ospf_ls_ack_send_list), (ospf_ls_ack_send_event): New function added.
-	This make sending always as many LS update/Ack combined in one ospf
-	packet.
-
-2000-07-24  Gleb Natapov  <gleb@nbase.co.il>
-
-	* ospf_packet.c (ospf_ls_upd_list_lsa):  Set NULL to lsa->area if 
-	LSA is AS-external-LSA.
-
-	* ospf_nsm.c (nsm_reset_nbr):  Do not cancel Inactivity timer.
-
-2000-07-21  Toshiaki Takada  <takada@zebra.org>
-
-	* ospf_zebra.c (ospf_default_originate_timer):  Set timer for
-	`default-information originate'.  Fix some default originate
-	related functions.
-
-2000-07-12  Toshiaki Takada  <takada@zebra.org>
-
-	* ospf_lsa.c (stream_put_ospf_metric):  New function added.
-
-2000-07-12  Toshiaki Takada  <takada@zebra.org>
-
-	* ospf_lsa.c (show_ip_ospf_database_router),
-	(show_ip_ospf_database_network), (show_ip_ospf_database_summary),
-	(show_ip_ospf_database_summary_asbr), (show_ip_ospf_database_externel),
-	(show_router_lsa), (show_any_lsa), (show_router_lsa_self),
-	(show_any_lsa_self):  Functions removed.
-
-	(show_lsa_prefix_set), (show_lsa_detail_proc), (show_lsa_detail),
-	(show_lsa_detail_adv_router_proc), (show_lsa_detail_adv_router):
-	New functions added.  Replace above functions.
-
-	(show_ip_ospf_database_all), (show_ip_ospf_database_self_originated):
-	Functions removed.
-	(show_ip_ospf_database_summary):  New functions added.  Replace
-	above functions.
-
-	(show_ip_ospf_database_cmd):  DEFUN rearranged.
-	(show_ip_ospf_database_type_id_cmd),
-	(show_ip_ospf_database_type_id_adv_router_cmd),
-	(show_ip_ospf_database_type_is_self_cmd):  New ALIASes added.
-	(show_ip_ospf_database_type_adv_rotuer_cmd):  New DEFUN added.
-	(show_ip_ospf_database_type_self_cmd):  New ALIAS added.
-
-2000-07-11  Toshiaki Takada  <takada@zebra.org>
-
-	* ospf_asbr.c (ospf_external_info_new),
-	(ospf_external_info_free):  New functions added.
-
-	* ospf_lsa.h (ospf_lsa):  Add new member `void *param' to set
-	origination parameter for external-LSA.
-	Remove member `redistribute'.
-
-	* ospf_zebra.c (ospf_redistirbute_set):  When `redistribute'
-	command executed, metric and metric-type values are overridden.
-	If one of those is changed refresh AS-external-LSAs for appropriate
-	type.
-
-2000-07-11  Michael Rozhavsky  <mike@nbase.co.il>
-
-	* ospf_lsa.c (ospf_summary_lsa_refresh),
-	(ospf_summary_asbr_lsa_refresh):  Make sure to refresh summary-LSAs.
-
-	* ospf_abr.c (set_metric):  New function added.
-
-2000-07-07  Toshiaki Takada  <takada@zebra.org>
-
-	* ospf_zebra.c (ospf_default_information_originate_metric_type),
-	(ospf_default_information_originate_type_metric):  New defun added.
-	Metic and Metric type can be set to default route.
-	(ospf_default_information_originate_always_metric_type):
-	(ospf_default_information_originate_always_type_metric):
-	New defun added.  Metric and Metric type can be set to default
-	always route.
-	
-	* ospf_zebra.c (ospf_default_metric), (no_ospf_default_metric):
-	New defun added.
-
-2000-07-06  Gleb Natapov  <gleb@nbase.co.il>
-
-	* ospf_flood.c (ospf_flood_through_area):  Fix bug of considering
-	on the same interface the LSA was received from.
-
-2000-07-06  Michael Rozhavsky  <mike@nbase.co.il>
-
-	* ospfd.c (ospf_config_write):  Fix bug of printing `area stub'
-	command with `write mem'.
-
-	* ospfd.c (no_router_ospf):  Remove installed routes from zebra.
-
-	* ospf_zebra.c (ospf_interface_delete):  Fix function to handle
-	zebra interface delete event.
-
-2000-07-06  Toshiaki Takada  <takada@zebra.org>
-
-	* ospf_zebra.c (ospf_default_information_originate),
-	(ospf_default_information_originate_always):  New DEFUN added.
-
-2000-07-05  Michael Rozhavsky  <mike@nbase.co.il>
-
-	* ospf_route.c (ospf_terminate):  Make sure to remove external route
-	when SIGINT received.
-
-2000-07-03  Gleb Natapov  <gleb@nbase.co.il>
-
-	* ospf_flood.c, ospf_ism.c, ospf_lsa,c, ospfd.c:  Make sure to free
-	many structure with `no router ospf'.
-
-2000-06-30  Gleb Natapov  <gleb@nbase.co.il>
-
-	* ospf_neighbor.c (ospf_nbr_new),
-	ospf_nsm.c (nsm_timer_set):  Start LS update timer only
-	when neighbor enters Exchange state.
-
-2000-06-29  Gleb Natapov  <gleb@nbase.co.il>
-
-	* ospf_nsm.c (nsm_timer_set), (nsm_exchange_done),
-	ospf_packet.c (ospf_db_desc_proc):
-	Do not cancel DD retransmit timer when Master.
-
-2000-06-29  Gleb Natapov  <gleb@nbase.co.il>
-
-	* ospf_abr.c (ospf_abr_announce_network_to_area),
-	(ospf_abr_announce_rtr_to_area)
-	ospf_ase.c (ospf_ase_rtrs_register_lsa),
-	ospf_flood.c (ospf_process_self_originated_lsa),
-	(ospf_flood_through_area), (ospf_ls_request_delete),
-	ospf_interface.c (ospf_if_free),
-	ospf_ism.c (ism_change_status),
-	ospf_lsa.c (ospf_router_lsa_update_timer),
-	(ospf_router_lsa_install), (ospf_network_lsa_install),
-	(ospf_lsa_maxage_delete), (ospf_lsa_action),
-	(ospf_schedule_lsa_flood_area),
-	ospf_nsm.c (nsm_change_status),
-	ospf_packet.c (ospf_make_ls_req_func), (ospf_make_ls_ack):
-	Use ospf_lsa_{lock,unlock} for all looking-up of LSA.
-
-	* ospf_flood.c (ospf_ls_request_free):  Function deleted.
-
-	* ospf_lsa.c (ospf_discard_from_db):  New function added.
-
-2000-06-26  Toshiaki Takada  <takada@zebra.org>
-
-	* ospfd.h (ospf): struct member `external_lsa' name changed to
-	`lsdb'.
-
-2000-06-26  Toshiaki Takada  <takada@zebra.org>
-
-	* ospf_lsa.c (ospf_lsa_install), (ospf_router_lsa_install),
-	(ospf_network_lsa_install), (ospf_summary_lsa_install),
-	(ospf_summary_asbr_lsa_install), (ospf_external_lsa_install):
-	Functions re-arranged.
-
-	* ospf_lsa.c (IS_LSA_MAXAGE), (IS_LSA_SELF):  Macro added.
-	
-2000-06-20  Michael Rozhavsky <mike@nbase.co.il>
-
-	* ospf_packet.c (ospf_ls_req), (ospf_ls_upd), (ospf_ls_ack):  Add
-	verification of LS type.
-
-2000-06-20  Gleb Natapov  <gleb@nbase.co.il>
-
-	* ospf_ase.c (ospf_ase_calculate_timer):  Add more sanity check
-	whether rn->info is NULL.
-
-2000-06-20  Toshiaki Takada  <takada@zebra.org>
-
-	* ospfd.c (show_ip_ospf_interface_sub):  Show Router-ID of both
-	DR and Backup correctly with `show ip ospf interface' command.
-
-2000-06-20  Toshiaki Takada  <takada@zebra.org>
-
-	* ospf_lsa.c (ospf_lsa_lock), (ospf_lsa_unlock),
-	(ospf_lsa_discard):  These functions are used for avoiding
-	unexpected reference to freed LSAs.
-
-2000-06-13  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* ospf_packet.c (ospf_ls_upd): Initialize lsa by NULL to avoid
-	warning.
-
-2000-06-12  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* ospf_ase.h (ospf_ase_rtrs_register_lsa): Add prototype.
-
-2000-06-12  Toshiaki Takada  <takada@zebra.org>
-
-	* ospf_lsa.c (ospf_external_lsa_install):  Make sure to register
-	LSA to rtrs_external when replacing AS-external-LSAs in LSDB.
-	Fix core dump.
-
-2000-06-10  Toshiaki Takada  <takada@zebra.org>
-
-	* ospf_lsdb.c (id_to_prefix), (ospf_lsdb_hash_key),
-	(ospf_lsdb_hash_cmp), (ospf_lsdb_new), (ospf_lsdb_iterator),
-	(lsdb_free), (ospf_lsdb_free), (ospf_lsdb_add),	(ospf_lsdb_delete),
-	(find_lsa), (ospf_lsdb_lookup),	(find_by_id),
-	(ospf_lsdb_lookup_by_id), (ospf_lsdb_lookup_by_header):  Functinos
-	removed for migration to new_lsdb.
-
-	* ospf_lsa.c (ospf_summary_lsa_install),
-	(ospf_summary_asbr_lsa_install), (ospf_maxage_lsa_remover),
-	(ospf_lsa_maxage_walker), (ospf_lsa_lookup),
-	(ospf_lsa_lookup_by_id):  Use new_lsdb instead of ospf_lsdb.
-	(count_lsa), (ospf_lsa_count_table), (ospf_lsa_count),
-	(ospf_get_free_id_for_prefix):	Funcitions removed.
-	
-2000-06-09  Gleb Natapov  <gleb@nbase.co.il>
-
-	* ospf_ism.c (ism_interface_down):  Prevent some unneeded DR changes.
-
-	* ospf_packet.c (ospf_db_desc_proc):  Fix memory leak.
-	(ospf_hello):  Always copy router-ID when hello is received.
-
-2000-06-08  Gleb Natapov  <gleb@nbase.co.il>
-
-	* ospf_lsa.h (struct ospf_lsa): Add member of pointer to struct
-	ospf_area.
-
-2000-06-08  Michael Rozhavsky <mike@nbase.co.il>
-
-	* ospf_ase.c (ospf_asbr_route_same):  New function added.
-	This function makes sure external route calculation more 
-	precisely.
-
-2000-06-07  Michael Rozhavsky <mike@nbase.co.il>
-
-	* ospf_ism.c (ism_change_status):  Use ospf_lsa_flush_area for
-	network-LSA deletion instead of using ospf_lsdb_delete.
-	Also cancel network-LSA origination timer.
-
-2000-06-07  Levi Harper  <lharper@kennedytech.com>
-
-	* ospf_interface.c (ospf_if_down): Close read fd when an interface
-	goes down.
-
-2000-06-05  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* ospf_asbr.c (ospf_external_info_lookup): Add explicit brace for
-	avoid ambiguous else.
-
-	* ospf_flood.c (ospf_external_info_check): Likewise.
-
-2000-06-05  Toshiaki Takada  <takada@zebra.org>
-
-	* ospf_nsm.c (nsm_adj_ok):  Fix bug of DR election.
-
-2000-06-04  Toshiaki Takada  <takada@zebra.org>
-
-	* ospf_zebra.c (ospf_default_information_originate),
-	(no_ospf_default_information_originate):  New DEFUN added.
-
-2000-06-03  Toshiaki Takada  <takada@zebra.org>
-
-	* ospf_lsa.h, ospf_asbr.h (external_info):  Struct moved from
-	ospf_lsa.h to ospf_asbr.h.
-
-	* ospf_lsa.c, ospf_asbr.c (ospf_external_info_add),
-	(ospf_external_info_delete):  Function moved from ospf_lsa.c
-	to ospf_asbr.c.
-
-2000-06-03  Toshiaki Takada  <takada@zebra.org>
-
-	* ospf_flood.c (ospf_external_info_check):  New function added.
-	(ospf_process_self_orignated_lsa):  Make sure to flush
-	self-originated AS-external-LSA, when router reboot and no longer
-	originate those AS-external-LSA.
-
-2000-06-02  Toshiaki Takada  <takada@zebra.org>
-
-	* ospf_network.c (ospf_serv_sock):  Remove SO_DONTROUTE
-	socket option.
-
-	* ospf_packet.c (ospf_write):  Set MSG_DONTROUTE flag for
-	unicast destination packets.
-
-2000-06-02  Toshiaki Takada  <takada@zebra.org>
-
-	* ospf_lsdb.c (new_lsdb_delete):  Delete entry from LSDB only when
-	specified LSA matches.
-
-2000-06-02  Gleb Natapov  <gleb@nbase.co.il>
-
-	* ospf_network.c (ospf_serv_sock):  Set SO_DONTROUTE
-	socket option.
-
-2000-06-01  Akihiro Mizutani  <mizutani@dml.com>
-
-	* ospf_dump.c:  Replace string `Debugging functions\n' with DEBUG_STR.
-	Replace string `OSPF information\n' with OSPF_STR.
-
-2000-06-01  Toshiaki Takada  <takada@zebra.org>
-
-	* ospf_lsdb.[ch]:  Use new_lsdb struct for network-LSA instead of
-	ospf_lsdb.
-
-2000-06-01  Toshiaki Takada  <takada@zebra.org>
-
-	* ospf_dump.c (config_debug_ospf_packet), (config_debug_ospf_event),
-	(config_debug_ospf_ism), (config_debug_ospf_nsm),
-	(config_debug_ospf_lsa), (config_debug_ospf_zebra),
-	(term_debug_ospf_packet), (term_debug_ospf_event),
-	(term_debug_ospf_ism), (term_debug_ospf_nsm),
-	(term_debug_ospf_lsa), (term_debug_ospf_zebra):  Repalce debug_ospf_*
-	variable to use for debug option flags.
-	
-	(debug_ospf_packet), (debug_ospf_ism), (debug_ospf_nsm),
-	(debug_ospf_lsa), (debug_ospf_zebra):  Set {config,term}_debug_*
-	flags when vty->node is CONFIG_NODE, otherwise set only term_debug_*
-	flags.
-
-	* ospf_dump.h (CONF_DEBUG_PACKET_ON), (CONF_DEBUG_PACKET_OFF),
-	(TERM_DEBUG_PACKET_ON), (TERM_DEBUG_PACKET_OFF),
-	(CONF_DEBUG_ON), (CONF_DEBUG_OFF), (IS_CONF_DEBUG_OSPF_PACKET),
-	(IS_CONF_DEBUG_OSPF):  New Macro added.
-	
-2000-05-31  Toshiaki Takada  <takada@zebra.org>
-
-	* ospfd.c (clear_ip_ospf_neighbor):  New DEFUN added.
-	Currently this command is used for only debugging.
-
-	* ospf_nsm.c (nsm_change_status):  Make sure thread cancellation
-	for network-LSA when DR has no full neighbors.
-	
-	* ospf_nsm.c (ospf_db_summary_clear):  New function added.
-
-2000-05-30  Toshiaki Takada  <takada@zebra.org>
-
-	* ospf_lsdb.c (new_lsdb_insert):  LSAs are always freed by
-	maxage_lsa_remover when LSA is replaced.
-
-2000-05-25  Gleb Natapov  <gleb@nbase.co.il>
-
-	* ospf_flood.c (ospf_ls_retransmit_delete_nbr_all):  Add argument
-	`struct ospf_area' to remove LSA from Link State retransmission list
-	of neighbor from only one Area.
-
-2000-05-24  Michael Rozhavsky  <mike@nbase.co.il>
-
-	* ospf_lsdb.c (ospf_lsdb_add):  Preserve flags field when
-	overriting old LSA with new LSA.
-
-2000-05-24  Gleb Natapov  <gleb@nbase.co.il>
-
-	* ospf_lsa.c (ospf_router_lsa_body_set):  Fix bug of router-LSA
-	size calculation.
-
-2000-05-22  Michael Rozhavsky  <mike@nbase.co.il>
-
-	* ospf_route.c (ospf_intra_add_stub):
-	* ospf_spf.h (struct vertex):  Use u_int32_t for distance (cost)
-	value instead of u_int16_t.
-
-2000-05-22  Axel Gerlach <agerlach@datus.datus.com>
-
-	* ospf_ia.c (ospf_ia_network_route):  Fix bug of Inter-area route
-	equal cost path calculation.
-
-2000-05-21  Toshiaki Takada  <takada@zebra.org>
-
-	* ospf_ase.c (ospf_ase_calculate_route_delete):  New function added.
-	Make sure, when rotuer route is deleted, related external routes
-	are also deleted.
-
-2000-05-20  Toshiaki Takada  <takada@zebra.org>
-
-	* ospfd.c (ospf_interface_down):  Make sure interface flag is disable
-	and set fd to -1.
-
-2000-05-16  Toshiaki Takada  <takada@zebra.org>
-
-	* ospf_asbr.c (ospf_asbr_should_announce), (ospf_asbr_route_remove):
-	Functions removed.
-
-	* ospfd.h (EXTERNAL_INFO):  Macro added.
-	Substitute `ospf_top->external_info[type]' with it.
-
-2000-05-16  Toshiaki Takada  <takada@zebra.org>
-
-	* ospf_lsa.c (ospf_rtrs_external_remove):  New function added.
-
-2000-05-14  Gleb Natapov <gleb@nbase.co.il>
-
-	* ospf_flood.c (ospf_ls_retransmit_delete_nbr_all)
-	* ospf_lsdb.c (new_lsdb_insert)
-	* ospf_packet.c (ospf_ls_ack):  Fix database synchonization problem.
-
-2000-05-14  Gleb Natapov <gleb@nbase.co.il>
-
-	* ospf_lsa.h (tv_adjust), (tv_ceil), (tv_floor), (int2tv),
-	(tv_add), (tv_sub), (tv_cmp):  Prototype definition added.
-
-	* ospf_nsm.h (ospf_db_summary_delete_all):  Prototype definition added.
-
-2000-05-13  Toshiaki Takada  <takada@zebra.org>
-
-	* ospf_lsa.[ch] (ospf_lsa):  struct timestamp type is changed from
-	time_t to struct timeval.
-	(tv_adjust), (tv_ceil), (tv_floor), (int2tv), (tv_add),
-	(tv_sub), (tv_cmp):  timeval utillity functions added.
-
-2000-05-12  Toshiaki Takada  <takada@zebra.org>
-
-	* ospf_lsa.[ch] (ospf_schedule_update_router_lsas):  Delete function.
-	Change to use macro OSPF_LSA_UPDATE_TIMER instead of using
-	this function.
-	router-LSA refresh timer related stuff is re-organized.
-
-2000-05-10  Gleb Natapov  <gleb@nbase.co.il>
-
-	* ospf_interface.c (ospf_vl_set_params):
-	* ospf_packet.c (ospf_check_network_mask):
-	* ospf_spf.[ch] (ospf_spf_next):
-	Remove field address from `struct vertex', and search for peer
-	address of virtual link in function `ospf_vl_set_params' instead.
-
-2000-05-10  Gleb Natapov  <gleb@nbase.co.il>
-
-	* ospf_packet.c (ospf_ls_upd):  Fix some memory leak related LSA.
-
-2000-05-08  Thomas Molkenbur  <tmo@datus.com>
-
-	* ospf_packet.c (ospf_packet_dup):  Replace ospf_steram_copy()
-	with ospf_stream_dup() to fix memory leak.
-
-2000-05-08  Michael Rozhavsky  <mike@nbase.co.il>
-
-	* ospf_flood.c (ospf_flood_through_area):  Fix the problem of
-	LSA update without DROther.
-
-2000-05-04  Gleb Natapov  <gleb@nbase.co.il>
-
-	* ospf_spf.c (ospf_vertex_free):  Fix memory leak of SPF calculation.
-
-2000-05-03  Toshiaki Takada  <takada@zebra.org>
-
-	* ospf_neighbor.c (ospf_db_summary_add):  Use new_lsdb struct
-	instead linked-list.
-	(ospf_db_summary_count), (ospf_db_summary_isempty):
-	New function added.
-
-	* ospf_lsa.c (ospf_rotuer_lsa):  Re-arrange and divide functions.
-
-2000-05-02  Gleb Natapov  <gleb@nbase.co.il>
-
-	* ospf_lsdb.c (new_lsdb_cleanup):  Fix memory leak.  When LSDB are
-	not needed any more, then free them.
-
-2000-05-02  Toshiaki Takada  <takada@zebra.org>
-
-	* ospfd.c (timers_spf), (no_timers_spf):  New defun added.
-	SPF calculation timers related stuff is rearranged.
-
-	* ospf_spf.c (ospf_spf_calculate_timer_add):  Function removed.
-	SPF timer is scheduled by SPF calculation delay and holdtime
-	configuration variable.
-
-	* ospf_lsa.c (ospf_external_lsa_nexthop_get):  Set AS-external-LSA's
-	forwarding address when nexthop learned by other protocols is
-	in the OSPF domain. 
-
-	* ospf_zebra.c (ospf_redistribute_source_metric_type),
-	(ospf_redistribute_source_type_metric):  Re-arrange DEFUNs and
-	ALIASes.
-
-2000-05-01  Toshiaki Takada  <takada@zebra.org>
-
-	* ospf_flood.c (ospf_ls_retransmit_count),
-	(ospf_ls_retransmit_isempty):  New function added.
-
-	(ospf_ls_retransmit_add), (ospf_ls_retransmit_delete),
-	(ospf_ls_retransmit_clear), (ospf_ls_retransmit_lookup),
-	(ospf_ls_retransmit_delete_all), (ospf_ls_retransmit_delete_nbr_all),
-	(ospf_ls_retransmit_add_nbr_all):  Replace these functions to use
-	new_lsdb.
-
-2000-04-29  Toshiaki Takada  <takada@zebra.org>
-
-	* ospfd.c (no_network_area):  Add check Area-ID whether specified
-	Area-ID with prefix matches config.
-
-2000-04-27  Toshiaki Takada  <takada@zebra.org>
-
-	* ospf_lsa.c (ospf_maxage_lsa_remover): Fix problem of
-	remaining withdrawn routes on zebra.
-
-2000-04-25  Michael Rozhavsky  <mike@nbase.co.il>
-
-	* ospf_nsm.c (nsm_kill_nbr), (nsm_ll_down), (nsm_change_status),
-	(ospf_nsm_event):  Fix network-LSA re-origination problem.
-
-2000-04-24  Toshiaki Takada  <takada@zebra.org>
-
-	* ospf_nsm.c (ospf_db_desc_timer): Fix bug of segmentation fault
-	with DD retransmission.
-
-	* ospf_nsm.c (nsm_kill_nbr): Fix bug of re-origination when
-	a neighbor disappears.
-
-2000-04-23  Michael Rozhavsky  <mike@nbase.co.il>
-
-	* ospf_abr.c (ospf_abr_announce_network_to_area):  Fix bug of
-	summary-LSAs reorigination.  Correctly copy OSPF_LSA_APPROVED
-	flag to new LSA. when summary-LSA is reoriginatd.
-
-	* ospf_flood.c (ospf_flood_through_area):  Fix bug of flooding
-	procedure.  Change the condition of interface selection.
-
-2000-04-21  Toshiaki Takada  <takada@zebra.org>
-
-	* ospf_lsa.c (ospf_refresher_register_lsa): Fix bug of refresh never
-	occurs.
-
-	* ospfd.c (show_ip_ospf_neighbor_id): New defun added.
-	`show ip ospf neighbor' related commands are re-arranged.
-
-2000-04-20  Toshiaki Takada  <takada@zebra.org>
-
-	* ospf_dump.c (debug_ospf_zebra): New defun added.
-	Suppress zebra related debug information.
-
-2000-04-19  Toshiaki Takada  <takada@zebra.org>
-
-	* ospf_zebra.c (ospf_distribute_list_update_timer),
-	(ospf_distribute_list_update), (ospf_filter_update):
-	New function added.  Re-organize `distribute-list' router ospf
-	command.
-
-2000-04-13  Michael Rozhavsky  <mike@nbase.co.il>
-
-	* ospf_packet.c (ospf_make_ls_upd): Add check for MAX_AGE.
-
-2000-04-14  Michael Rozhavsky  <mike@nbase.co.il>
-
-	* ospf_packet.c (ospf_make_ls_upd): Increment LS age by configured 
-	interface transmit_delay.
-
-2000-04-14  Sira Panduranga Rao  <pandu@euler.ece.iisc.ernet.in>
-
-	* ospf_interface.c (ip_ospf_cost), (no_ip_ospf_cost):
-	Add to schedule router_lsa origination when the interface cost changes.
-
-2000-04-12  Toshiaki Takada  <takada@zebra.org>
-
-	* ospf_lsa.c (ospf_refresher_register_lsa),
-	(ospf_refresher_unregister_lsa): Fix bug of core dumped.
-
-	* ospfd.c (no_router_ospf): Fix bug of core dumped.
-
-2000-03-29  Toshiaki Takada  <takada@zebra.org>
-
-	* ospf_nsm.c (nsm_oneway_received): Fix bug of MS flag unset.
-
-2000-03-29  Michael Rozhavsky <mike@nbase.co.il>
-
-	* ospf_lsa.c (ospf_network_lsa):
-	* ospf_nsm.c (ospf_nsm_event): Fix bug of Network-LSA originated
-	in stub network.
-
-2000-03-28  Toshiaki Takada  <takada@zebra.org>
-
-	* ospf_nsm.c (nsm_bad_ls_req), (nsm_seq_number_mismatch),
-	(nsm_oneway_received): Fix bug of NSM state flapping between
-	ExStart and Exchange.
-
-2000-03-28  Toshiaki Takada  <takada@zebra.org>
-
-	* ospf_packet.h (strcut ospf_header): Fix the size of ospf_header,
-	change u_int8_t to u_char.
-
-2000-03-27  Toshiaki Takada  <takada@zebra.org>
-
-	* ospf_lsa.c (ospf_lsa_checksum): Take care of BIGENDIAN architecture.
-
-2000-03-27  Toshiaki Takada  <takada@zebra.org>
-
-	* ospfd.c (ospf_interface_run): Make sure Address family matches.
-
-2000-03-26  Love <lha@s3.kth.se>
-
-	* ospf_packet.c (ospf_write): Chack result of sendto().
-
-2000-03-26  Sira Panduranga Rao  <pandu@euler.ece.iisc.ernet.in>
-
-	* ospf_nsm.c (nsm_oneway_received): Fix bug of 1-WayReceived in NSM.
-
-2000-03-23  Libor Pechacek  <farco@clnet.cz>
-
-	* ospf_lsa.c (ospf_network_lsa)
-	* ospf_lsdb.c (new_lsdb_insert): Fix bug of accessing to
-	unallocated memory.
-
-2000-03-23  Toshiaki Takada  <takada@zebra.org>
-
-	* ospfd.c (ospf_config_write): Fix bug of duplicate line for
-	`area A.B.C.D authentication'.
-
-2000-03-22  Toshiaki Takada  <takada@zebra.org>
-
-	* ospf_debug.c (debug_ospf_lsa), (no_debug_ospf_lsa): Defun added.
-	Suppress all zlog related to LSAs with this config option.
-
-2000-03-21  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* ospf_nsm.c (ospf_nsm_event): Add check for NSM_InactivityTimer.
-
-2000-03-21  Toshiaki Takada  <takada@zebra.org>
-
-	* ospf_packet.c (ospf_ls_upd_timer), (ospf_ls_req):
-	Fix bug of memory leak about linklist.
-
-	* ospf_flood.c (ospf_flood_through_area): Likewise.
-
-2000-03-18  Sira Panduranga Rao  <pandu@euler.ece.iisc.ernet.in>
-
-	* ospf_flood.c (ospf_ls_retransmit_lookup): Add checksum comparison
-	to identify LSA uniquely.  This fix routes lost.
-
-2000-03-18  Toshiaki Takada  <takada@zebra.org>
-
-	* ospf_ase.c (ospf_find_asbr_route): Add sanity check with router
-	routing table.
-
-2000-03-17  Alex Zinin  <zinin@amt.ru>
-	
-        * ospf_spf.[ch]: Bug fix.
-        The 2nd stage of Dijkstra could consider one vertex
-        more than once if there is more than one link
-        between the routers, thus adding extra CPU overhead
-        and extra next-hops.
-        Fixed.
-
-2000-03-15  Sira Panduranga Rao  <pandu@euler.ece.iisc.ernet.in>
-
-        * ospf_nsm.c (nsm_inactivity_timer): Changed to call nsm_kill_nbr().
-
-2000-03-14  Toshiaki Takada  <takada@zebra.org>
-
-        * ospf_route.c (ospf_route_copy_nexthops): Fix bug of memory leak of
-        ospf_path.  Actually ignore merging ospf_route with completely same 
-        paths.
-
-2000-03-12  Toshiaki Takada  <takada@zebra.org>
-
-        * ospf_lsa.c (show_as_external_lsa_detail): fix bug of 
-        external route tag byte order.
-
-2000-03-11  Toshiaki Takada  <takada@zebra.org>
-
-        * ospf_lsdb.c (ospf_lsdb_insert): New function added.
-
-2000-03-09  Toshiaki Takada  <takada@zebra.org>
-
-        * ospf_lsa.c (ospf_external_lsa_install),
-        (ospf_lsa_lookup), (show_ip_ospf_database_all),
-        (show_ip_ospf_database_self_originate): Use struct new_lsdb for
-        LSDB of AS-external-LSAs instead of ospf_lsdb.
-
-        * ospf_lsa.c (ospf_lsa_unique_id): New function added.
-        Use for assigning Unique Link State ID instead of
-        ospf_get_free_id_for_prefix().
-
-2000-03-09  Toshiaki Takada  <takada@zebra.org>
-
-        * ospf_ase.c (ospf_ase_calculate_timer): Fix bug of segmentation
-        fault reported by George Bonser <george@siteROCK.com>.
-
-2000-03-07  Libor Pechacek  <farco@clnet.cz>
-
-        * ospfd.c (ospf_interface_down): Fix bug of segmentation fault.
-
-2000-03-06  Toshiaki Takada  <takada@zebra.org>
-
-        * ospf_route.c (ospf_route_cmp): Change meaning of return values.
-
-2000-03-02  Alex Zinin <zinin@amt.ru>
-        * ospfd.h, ospf_ia.h
-        New Shortcut ABR code. Now area's flag can be configured
-        with Default, Enable, and Disable values.
-        More info will be in the new ver of I-D soon (see IETF web).
-
-2000-02-25  Toshiaki Takada  <takada@zebra.org>
-
-        * ospf_lsa.c (ospf_lsa_header_set), (ospf_external_lsa_body_set),
-        (osfp_external_lsa_originate), (ospf_external_lsa_queue),
-        (ospf_external_lsa_originate_from_queue): New function added.
-        (ospf_external_lsa): Function removed.
-
-        * ospf_zebra.c (ospf_zebra_read_ipv4): Originate AS-external-LSA
-        when listen a route from Zebra, instead creating external route.
-
-        * ospf_asbr.c (ospf_asbr_route_add_flood_lsa),
-        (ospf_asbr_route_add_queue_lsa),
-        (ospf_asbr_route_install_lsa), (ospf_asbr_route_add):
-        Functions removed.
-
-        * ospf_ase.c (process_ase_lsa): Function will not be used.
-        (ospf_ase_calculate), (ospf_ase_calculate_route_add),
-        (ospf_ase_calculate_new_route), (ospf_ase_caluculate_asbr_route):
-        process_ase_lsa () is separated to these functions.
-
-        OSPF AS-external-LSA origination is whole re-organized.
-
-2000-02-18  Toshiaki Takada  <takada@zebra.org>
-
-        * ospf_packet.c (ospf_ls_upd): Fix bug of OSPF LSA memory leak.
-
-        * ospf_asbr.c (ospf_asbr_route_add_flood_lsa),
-        (ospf_asbr_route_add_queue_lsa): Fix bug of OSPF external route
-        memory leak.
-
-2000-02-12  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-        * ospf_asbr.c (ospf_asbr_route_install_lsa): Re-calculate LSA
-        checksum after change Advertised Router field.
-
-2000-02-09  Toshiaki Takada  <takada@zebra.org>
-
-        * ospf_asbr.c (ospf_external_route_lookup): Add new function.
-
-2000-02-08  Toshiaki Takada  <takada@zebra.org>
-
-        * ospfd.c (ospf_router_id_get), (ospf_router_id_update),
-        (ospf_router_id_update_timer): Router ID decision algorithm is changed.
-        Router ID is chosen from all of eligible interface addresses even if
-        it is not enable to OSPF.
-
-2000-02-08  Toshiaki Takada  <takada@zebra.org>
-
-        * ospf_asbr.c (ospf_asbr_route_add): Function divided to
-        ospf_asbr_route_add_flood_lsa, ospf_asbr_route_add_queue_lsa and
-        ospf_asbr_route_install_lsa.  If Router-ID is not set, then LSA is
-        waited to install to LSDB.
-        `0.0.0.0 adv_router' AS-external-LSA origination bug was fixed.
-
-2000-02-01  Sira Panduranga Rao  <pandu@euler.ece.iisc.ernet.in>
-
-        * ospf_flood.c (ospf_ls_retransmit_lookup): Compare LS seqnum
-        in the ACK before deleting.
-
-        * ospf_packet.c (ospf_hello): Reset the flags after a shutdown
-        and no shutdown of the interface.
-
-2000-01-31  Toshiaki Takada  <takada@zebra.org>
-
-        * ospf_packet.c (ospf_ls_req): Send multiple Link State Update
-        packets respond to a Link State Request packet.
-
-        * ospfd.c (show_ip_ospf_neighbor_detail_sub): Show thread state.
-
-        * ospf_interface.c (ospf_vl_new): Crash when backbone area
-        is not configured and set virtual-link to no-backbone area,
-        bug fixed.
-
-2000-01-30  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-        * ospf_neighbor.h (struct ospf_neighbor): Add pointer to last send
-        LS Request LSA.
-
-        * ospf_packet.c (ospf_ls_upd): Comment out LS request list
-        treatment.  That should be done in OSPF flooding procedure.
-
-        * ospf_flood.c (ospf_flood_through_area): Enclose
-        ospf_check_nbr_loding inside if-else close.
-
-2000-01-31  Toshiaki Takada  <takada@zebra.org>
-
-        * ospf_packet.c (ospf_make_ls_upd): Fix bug of #LSAs counting.
-
-2000-01-29  Toshiaki Takada  <takada@zebra.org>
-
-        * ospf_packet.c (ospf_make_md5_digest): Fix bug of md5 authentication.
-
-2000-01-28  Toshiaki Takada  <takada@zebra.org>
-
-        * ospfd.c (show_ip_ospf): Show Number of ASE-LSAs.
-
-2000-01-27  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-        * ospf_packet.c (ospf_make_db_desc): Don't use rm_list for
-        removing LSA from nbr->db_summary.
-
-2000-01-27  Sira Panduranga Rao <pandu@euler.ece.iisc.ernet.in>
-
-        * ospf_packet.c (ospf_ls_upd_send): Set AllSPFRouters to
-        destination when the link is point-to-point.
-        (ospf_ls_ack_send_delayed): Likewise.
-
-2000-01-27  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-        * ospf_flood.c (ospf_ls_request_delete_all): Fix bug of next
-        pointer lookup after the node is freed.
-
-2000-01-26  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-        * ospf_asbr.c (ospf_asbr_route_add): Instead of scanning all AS
-        external route, use ospf_top->external_self.
-
-2000-01-27  Toshiaki Takada  <takada@zebra.org>
-
-        * ospf_lsa.c (ospf_forward_address_get): New function added.
-
-        * ospf_asbr.c (ospf_asbr_check_lsas): Originate AS-external-LSA
-        only when it should be replaced.
-
-2000-01-25  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-        * ospf_flood.c (ospf_ls_retransmit_clear): Delete list node.
-
-        * ospf_lsa.c (ospf_lsa_free): Reduce logging message using
-        ospf_zlog value.
-
-        * ospf_ism.c (ism_change_status): Fix bug of DR -> non DR status
-        change.  Self originated LSA is freed but not deleted from lsdb.
-
-2000-01-24  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-        * ospf_ism.c (ism_interface_down): Don't use router_id for
-        detecting self neighbor structure.  Instead of that compare
-        pointer itself.
-
-        * ospf_neighbor.c (ospf_nbr_free): Cancel all timer when neighbor
-        is deleted.
-        (ospf_nbr_free): Free last send packet.
-
-        * ospf_neighbor.h (struct ospf_neighbor): Remove host strucutre.
-        Instead of that src is introduced.
-
-        * ospf_nsm.h: Enclose macro defenition with do {} while (0).
-
-2000-01-17  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-        * ospfd.c: Change part of passive interface implementation.  For
-        passive interface just disabling sending/receiving Hello on the
-        interface.
-
-2000-01-16  Kai Bankett <kai.bankett@vew-telnet.net>
-
-        * ospf_interface.h (OSPF_IF_PASSIVE): Add passive flag.
-        * ospf_interface.c (ospf_if_lookup_by_name): Add new function.
-        * ospf_lsa.c (ospf_router_lsa): Skip passive interface.
-        * ospfd.c (passive_interface): New command passive-interface is
-        added.
-        (ospf_config_write): Print passive interface.
-
-2000-01-15  Toshiaki Takada  <takada@zebra.org>
-
-        * ospf_interface.h (crypt_key): New struct added to store
-        multiple cryptographic autheitication keys.
-        (ospf_interface): struct changed.
-
-        * ospf_interface.c: ospf_crypt_key_new, ospf_crypt_key_add,
-        ospf_crypt_key_lookup, ospf_crypt_key_delete: new functions added.
-
-        * ospf_packet.c (ip_ospf_message_digest_key): Changed to store
-        multiple cryptographic authentication keys.
-
-2000-01-14  Toshiaki Takada  <takada@zebra.org>
-
-        * ospf_interface.c: DEFUN (if_ospf_*) commands changed name to
-        ip_ospf_* ().
-        Old notation `ospf *' still remains backward compatibility.
-
-1999-12-29  Alex Zinin  <zinin@amt.ru>
-        * ospf_lsa.c: ospf_lsa_more_recent() bug fix
-        * ospf_nsm.c, ospf_packet.c: remove nbr data struct when
-          int goes down, also check DD flags correctly (bug fix)
-
-1999-12-28  Alex Zinin  <zinin@amt.ru>
-        * "redistribute <source> metric-type (1|2) metric <XXX>" added
-
-1999-12-23  Alex Zinin  <zinin@amt.ru>
-        * added RFC1583Compatibility flag
-        * added dynamic interface up/down functionality
-
-1999-11-19  Toshiaki Takada  <takada@zebra.org>
-
-        * ospf_neighbor.h (struct ospf_neighbor): Add member state_change
-        for NSM state change statistics.
-
-1999-11-19  Toshiaki Takada  <takada@zebra.org>
-
-        * ospfd.c (show_ip_ospf_neighbor_detail),
-        (show_ip_ospf_neighbor_int_detail): DEFUN Added.
-
-1999-11-14  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-        * ospf_asbr.c (ospf_asbr_check_lsas): Add check of
-        lsa->refresh_list.
-
-1999-11-11  Toshiaki Takada  <takada@zebra.org>
-
-        * ospf_ia.[ch] (OSPF_EXAMINE_SUMMARIES_ALL): Macro added.
-        This macro is expanded to ospf_examine_summaries ()
-        for SUMMARY_LSA and SUMMARY_LSA_ASBR.
-        (OSPF_EXAMINE_TRANSIT_SUMMARIES_ALL): Macro added.
-        This macro is expanded to ospf_examine_transit_summaries ()
-        for SUMMARY_LSA and SUMMARY_LSA_ASBR.
-
-1999-11-11  Toshiaki Takada  <takada@zebra.org>
-
-        * ospf_lsa.[ch] (ospf_find_self_summary_lsa_by_prefix): Changed to
-        macro OSPF_SUMMARY_LSA_SELF_FIND_BY_PREFIX.
-        (ospf_find_self_summary_asbr_lsa_by_prefix): Changed to
-        macro OSPF_SUMMARY_ASBR_LSA_SELF_FIND_BY_PREFIX.
-        (ospf_find_self_external_lsa_by_prefix): Changed to
-        macro OSPF_EXTERNAL_LSA_SELF_FIND_BY_PREFIX.
-
-1999-11-11  Toshiaki Takada  <takada@zebra.org>
-
-        * ospfd.c (ospf_abr_type): ospf_abr_type_cisco, ospf_abr_type_ibm,
-        ospf_abr_type_shortcut and ospf_abr_type_standard DEFUNs are
-        combined.
-        * ospfd.c (no_ospf_abr_type): no_ospf_abr_type_cisco,
-        no_ospf_abr_type_ibm and no_ospf_abr_type_shortcut DEFUNS are
-        combined.
-
-1999-11-10  Toshiaki Takada  <takada@zebra.org>
-
-        * ospf_route.c (ospf_lookup_int_by_prefix): Move function to
-        ospf_interface.c and change name to ospf_if_lookup_by_prefix ().
-
-1999-11-01  Alex Zinin <zinin@amt.ru>
-        * ospf_packet.c 
-        some correction to LSU processing
-
-        * ospf_lsa.c ospfd.h 
-        randomize initial LSA refreshment interval
-        and limit the size of LSA-group to 10
-        to let randomization work more effectively.
-
-1999-10-31  Alex Zinin <zinin@amt.ru>
-        * ospf_interface.c 
-        cancel t_network_lsa_self
-        when freeing int structure
-
-        *  ospf_abr.c ospf_asbr.c ospf_flood.c ospf_lsa.c 
-           ospf_lsa.h ospf_lsdb.h ospfd.c ospfd.h
-
-        Summary and ASE LSA refreshment functions
-        added---LSA refreshment is paced to 70 LSAs
-        per sec to avoid link overflow. Refreshment events
-        are further randomized within a 10 sec interval
-        to avoid syncing.
-        
-        Also the sigfault of memcmp() in ospf_lsa_is_different()
-        is fixed.
-
-1999-10-30  Alex Zinin <zinin@amt.ru>
-        * ospf_nsm.c 
-        Fix the bug where MAX_AGE LSAs
-        are included into the DB summary.
-
-        * ospf_interface.c 
-        allocate 2*MTU input buffer instead of just MTU
-        for the cases when the other router mistakenly
-        sends larger packets thus causing fragmentation, etc.
-
-        * ospf_nsm.c
-        in nsm_reset_nbr() lists should be freed
-        not when they are empty.
-
-1999-10-29  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-        * ospf_zebra.c (ospf_acl_hook): Move OSPF_IS_ASBR and OSPF_IS_ABR
-        check inside of if (ospf_top).
-
-1999-10-29  Alex Zinin <zinin@amt.ru>
-        * ospf_lsa.c ospf_lsdb.c :
-        add assertion in lsa and lsa->data alloc functions,
-        as well as in lsdb_add for new->data
-
-        * ospf_lsdb.c: free hash table correctly
-
-1999-10-28  John Capo <jc@irbs.com>
-
-        * ospf_packet.h (OSPF_PACKET_MAX): Correct MAX packet length
-        calculation
-
-1999-10-27  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-        * OSPF-TRAP-MIB.txt: New file added. Edited version of RFC1850.
-
-        * OSPF-MIB.txt: New file added.  Edited version of RFC1850.
-
-1999-10-27  Alex Zinin  <zinin@amt.ru>
-        * ospfd, ospf_zebra, ospf_abr
-        "area import-list" command is added.
-        This command allows to filter the inter-area routes
-        injected into an area. Access list hook function
-        extended to invalidate area exp/imp lists.
-
-1999-10-25  Yoshinobu Inoue  <shin@nd.net.fujitsu.co.jp>
-
-        * ospfd.c (ospf_interface_run): Enable to detect P2P network
-        on an OSPF interface.
-
-1999-10-19  Jordan Mendelson  <jordy@wserv.com>
-
-        * ospf_lsdb.c (ospf_lsdb_add): Fix bug of crash
-        in ospf_ls_retransmit_lookup ().
-
-1999-10-19  Vladimir B. Grebenschikov <vova@express.ru>
-
-        * ospf_route.c: Workaround about installation of OSPF routes into
-        the zebra daemon.  Add checking of existance routes.  Free
-        ospf_top->old_table if it exists.
-
-1999-10-15  Jordan Mendelson <jordy@wserv.com>
-
-        * Add support for MD5 authentication.
-
-1999-10-12  Alex Zinin  <zinin@amt.ru>
-        * ospfd.c, ospfd.h, ospf_abr.c:
-          a new command "area export-list" was added, it allows
-          the admin. to control which intra-area routes are
-          announced to other areas by the ABR
-
-1999-10-12  Alex Zinin  <zinin@amt.ru>
-        * ospf_asbr.c (ospf_asbr_check_lsas): Fix bug of coredump
-          when "no redistribute" is used after a distribute list
-          denying some networks was used
-
-1999-10-05  Toshiaki Takada  <takada@zebra.org>
-
-        * ospf_route.c (ospf_path_dup): New function added.
-
-1999-10-05  Toshiaki Takada  <takada@zebra.org>
-
-        * ospf_interface.[ch]: Some of VL related funciton name changed.
-
-1999-09-27  Alex Zinin  <zinin@amt.ru>
-
-        * ospf_zebra.c: Distribute-list functionality added
-
-1999-09-27  Toshiaki Takada  <takada@zebra.org>
-
-        * ospfd.c (show_ip_ospf): Fix bug of segmentation fault when no ospf
-        instance exists.
-
-1999-09-25  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-        * ospfd.c (ospf_interface_down): Fix bug of misusing nextnode()
-        instead of node->next.  Reported by Hiroki Ishibashi
-        <ishibasi@dcd.abk.nec.co.jp>.
-
-        * ospf_route.c (show_ip_ospf_route): Add check for ospf is enabled
-        or not.
-
-1999-09-23  Alex Zinin  <zinin@amt.ru>
-
-        * stub area support added
-
-1999-09-23  Alex Zinin  <zinin@amt.ru>
-
-        * fwd_addr in ASE-LSAs is now set correctly
-        * ASE routing changed to check the fwd_addr
-        and skip the route if the addr points to one
-        of our interfaces to avoid loops.
-
-1999-09-22  Alex Zinin  <zinin@amt.ru>
-
-        * ospf_interface:
-        ospf_vls_in_area() added, it returns 
-        the number of VLs configured through the area
-
-        * ospf_interface.c ospf_lsa.c ospf_lsdb.c ospfd.c 
-        honor correct mem alloc
-
-1999-09-22  Alex Zinin  <zinin@amt.ru>
-
-        * memory.[ch]:
-        Some OSPF mem types added,
-        plus more info in "show mem"
-
-1999-09-21  Alex Zinin  <zinin@amt.ru>
-
-        * ospfd.c:
-        "area range substitute" added.
-        It can be used on NAT-enabled (IP-masquarade)
-        routers to announce private networks
-        from an area as public ones into the outside
-        world (not in the RFC, btw :)
-
-1999-09-21  Alex Zinin  <zinin@amt.ru>
-
-        * ospfd.c:
-        "area range suppress" added.
-        This command allows to instruct the router
-        to be silent about specific ranges, i.e.,
-        it is a method of route filtering on area
-        borders
-
-1999-09-21  Alex Zinin  <zinin@amt.ru>
-
-        * ospfd.c VLs removed when "no network area" executed
-
-1999-09-20  Alex Zinin  <zinin@amt.ru>
-
-        * ospf_ase.c bug fix for not-zero fwd_addr 
-        and directly connected routes.
-
-1999-09-20  Yon Uriarte <yon@plannet.de>
-
-        * ospf_packet.c (ospf_make_ls_req): Introduce delta value for
-        checking the length of OSPF packet exceeds MTU or not.
-
-        * ospf_lsa.c (ospf_lsa_different): Apply ntohs for checking
-        l1->data->length.
-
-1999-09-18  Alex Zinin  <zinin@amt.ru>
-
-        * ospf_lsa.c bug fix for ospf_network_lsa() to
-        include itself into the RID list
-
-1999-09-10  Alex Zinin  <zinin@amt.ru>
-
-        * Alternative ABR behaviors IBM/Cisco/Shortcut
-        implemented
-
-1999-09-10  Alex Zinin  <zinin@amt.ru>
-
-        * router and network-LSA origination
-        changed to honor MinLSInterval
-
-1999-09-08  Alex Zinin  <zinin@amt.ru>
-
-        * modified ABR behavior to honor VLs and transit
-          areas
-
-1999-09-07  Alex Zinin  <zinin@amt.ru>
-
-        * completed VL functionality
-
-1999-09-06  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-        * ospf_asbr.c: New file.
-        ospf_asbr.h: New file.
-
-        * ospf_zebra.c (ospf_redistribute_connected): Add redistribute
-        related stuff.
-
-1999-09-05  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-        * ospfd.h (OSPF_FLAG_VIRTUAL_LINK): Change OSPF_FLAG_VEND to
-        OSPF_FLAG_VIRTUAL_LINK for comprehensiveness.
-
-1999-09-03  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-        * ospf_spf.c (ospf_spf_register): Change name from
-        ospf_spf_route_add() to ospf_spf_register().
-        Include "ospfd/ospf_abr.h" for ospf_abr_task() prototype.
-
-1999-09-02  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-        * ospf_lsa.c (ospf_external_lsa_install): Change to update
-        lsa->data rather than install new one, when same id lsa is already
-        installed.
-
-1999-09-01  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-        * ospf_lsa.c (ospf_router_lsa_install): Return lsa value.
-        (ospf_network_lsa_install): Likewise.
-        (ospf_summary_lsa_install): Likewise.
-        (ospf_summary_asbr_lsa_install): Likewise.
-        (ospf_external_lsa_install): Likewise.
-
-        * ospf_spf.c (ospf_spf_calculate): Comment out debug function
-        ospf_rtrs_print().
-
-1999-08-31  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-        * ospf_spf.c (ospf_rtrs_free): Add ospf_spf_calculate() for
-        freeing rtrs.
-
-1999-08-31  Toshiaki Takada  <takada@zebra.org>
-
-        * ospf_lsa.c (show_ip_ospf_database_summary),
-        (show_ip_ospf_database_summary_asbr),
-        (show_ip_ospf_database_external): New function added.
-        `show ip ospf database summary',
-        `show ip ospf database asbr-summary'
-        `show ip ospf database external' command can be used.
-
-        * ospf_lsa.c (ospf_lsa_count_table): New function added.
-        (show_ip_ospf_database_all): show nothing if a type of LSA
-        does not exist.
-        
-1999-08-31  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-        * ospf_lsa.c (ospf_maxage_lsa_remover): Preserve next pointer when
-        the node is deleted.
-
-1999-08-31  Toshiaki Takada  <takada@zebra.org>
-
-        * ospf_flood.c (ospf_ls_retransmit_lookup): change to return
-        struct ospf_lsa *.
-        (ospf_ls_request_new), (ospf_ls_request_free),
-        (ospf_ls_request_add), (ospf_ls_request_delete),
-        (ospf_ls_request_delete_all), (ospf_ls_request_lookup):
-        New function added.
-
-        * ospf_packet.c (ospf_ls_upd_send_lsa): New function added.
-
-        * ospf_lsa.h (LS_AGE): Slightly change macro definition.
-
-        * ospf_lsa.c (ospf_lsa_more_recent), (ospf_lsa_diffrent):
-        Use LS_AGE macro.
-
-1999-08-30  Alex Zinin <zinin@amt.ru>
-        
-        * ospfd.c
-        fix a bug with area range config write
-        added "show ip ospf" command, it will be enhanced later on
-
-1999-08-30  Alex Zinin <zinin@amt.ru>
-
-        * ospf_lsa.c
-        updated ospf_router_lsa() to honor flags (B-bit)
-
-1999-08-30  Alex Zinin <zinin@amt.ru>
-
-        * ospf_abr.c
-        wrote major functions implementing ABR activity
-
-1999-08-30  Alex Zinin <zinin@amt.ru>
-
-        * ospf_ia.c ospf_route.c ospf_route.h 
-        fixed the bug with ospf_route.origin field.
-        Now it holds pointer to lsa_header
-
-1999-08-30  Alex Zinin <zinin@amt.ru>
-
-        * ospf_flood.c ospf_flood.h:
-        transformed ospf_flood_if_select into ospf_flood_through_area()
-        added new ospf_flood_if_select() and ospf_flood_through_as()
-
-1999-08-30  Toshiaki Takada  <takada@zebra.org>
-
-        * ospf_flood.[ch]: New file added.
-
-        * ospf_packet.c (ospf_lsa_flooding),
-        (ospf_lsa_flooding_select_if): functions move to ospf_flood.c
-
-        * ospf_neighbor.c (ospf_put_lsa_on_retransm_list),
-        (ospf_remove_lsa_from_retransm_list),
-        (ospf_nbr_remove_all_lsas_from_retransm_list),
-        (ospf_lsa_remove_from_ls_retransmit):
-        (ospf_lsa_retransmit): functions move to
-        ospf_flood.c, and change function's name:
-
-        ospf_put_lsa_on_retransm_list ()
-          -> ospf_ls_retransmit_add ()
-        ospf_remove_lsa_from_retransm_list ()
-          -> ospf_ls_retransmit_delete ()
-        ospf_nbr_remove_all_lsas_from_retransm_list ()
-          -> ospf_ls_retransmit_clear ()
-        ospf_lsa_remove_from_ls_retransmit ()
-          -> ospf_ls_retransmit_delete_nbr_all ()
-        ospf_lsa_retransmit ()
-          -> ospf_ls_retransmit_add_nbr_all ()
-
-        * ospf_lsa.c (ospf_lsa_lookup_from_list): function move to
-        ospf_flood.c, and change name to ospf_ls_retransmit_lookup ().
-
-1999-08-30  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-        * ospf_neighbor.c (ospf_nbr_lookup_by_addr): Use
-        route_node_lookup() instead of route_node_get().
-
-        * ospf_packet.c (ospf_ls_upd): Temporary comment out (6) check.
-
-1999-08-30  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-        * ospf_route.c (ospf_lookup_int_by_prefix): Add check of
-        oi->address.
-
-1999-08-29  Alex Zinin <zinin@amt.ru>
-        * ospf_lsa.c 
-        MaxAge LSA deletion functions added.
-
-1999-08-29  Alex Zinin <zinin@amt.ru>
-        * ospf_neighbor.c 
-        ospf_nbr_lookup_by_addr(): added route_unlock_node()
-        when function returns NULL if (rn->info == NULL)
-
-1999-08-29  Alex Zinin <zinin@amt.ru>
-        * ospfd.c
-        added a hack for area range deletion
-        
-1999-08-29  Alex Zinin <zinin@amt.ru>
-        * ospf_lsa.h 
-        included lsdb field into struct ospf_lsa, to find
-        LSDB easier when removing MaxAge LSAs.
-
-1999-08-29  Alex Zinin <zinin@amt.ru>
-        * ospf_lsa.c ospf_neighbor.c ospf_nsm.c 
-          ospf_packet.c changed to honor new retransmit list
-          management functions
-
-1999-08-29  Alex Zinin <zinin@amt.ru>
-        * ospf_neighbor.c , .h added new retransmit list functions.
-
-1999-08-29  Alex Zinin <zinin@amt.ru>
-        * Makefile.in
-        added ospf_ase, ospf_abr, ospf_ia
-
-1999-08-29  Alex Zinin <zinin@amt.ru>
-        * ospf_spf.c:
-        - changed ospf_next_hop_calculation() to include interface
-          and nexthop addr for directly connected routers---more informative
-          and solves problem with route installation into the kernel
-        - changed ospf_nexthop_out_if_addr() to support routers, not only
-          transit networks
-        - added ospf_process_stubs();
-
-1999-08-29  Alex Zinin <zinin@amt.ru>
-        * ospf_lsa.c:
-        - changed ospf_router_lsa() to provide correct links
-          for p-t-p interfaces;
-        - changed ospf_summary_lsa_install() to support table
-          of self-originated summary-LSAs;
-        - added ospf_summary_asbr_lsa_install() and ospf_external_lsa_install()
-        - changed ospf_lsa_install() accordingly
-        - changed show_ip_ospf_database_router_links() to support p-t-p
-
-1999-08-29  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-        * ospf_packet.c (ospf_make_db_desc): Only master can clear more
-        flag.
-
-1999-08-29  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-        * ospf_packet.c (ospf_read): Add check of IP src address.
-
-1999-08-28  Alex Zinin <zinin@amt.ru>
-        * ospf_neighbor.h
-        added ospf_nbr_lookup_by_routerid()
-
-1999-08-28  Alex Zinin <zinin@amt.ru>
-        * ospfd.h
-        added ABR/ASBR flag definitions and fields;
-        added iflist field to area structure;
-        summary_lsa_self and summary_lsa_asbr_self are changed
-        to be route tables;
-        added ranges field---configured area ranges;
-        A separate Routers RT added;
-        area range config commands and config write added
-
-
-1999-08-28  Alex Zinin <zinin@amt.ru>
-        * ospf_route.c :
-        ospf_route_free()--added code to free the list of paths;
-        The following functions added:
-                ospf_intra_add_router();
-                ospf_intra_add_transit();
-                ospf_intra_add_stub();
-        the last function uses new ospf_int_lookup_by_prefix();
-        show_ip_ospf_route_cmd()--changed to support new RT structure;
-        added ospf_cmp_routes()--general route comparision function;
-        added ospf_route_copy_nexthops() and ospf_route_copy_nexthops_from_vertex()
-        they are used in ASE and IA routing;
-        added ospf_subst_route() and ospf_add_route();
-
-1999-08-28  Alex Zinin <zinin@amt.ru>
-        * ospf_route.h :
-        changed struct ospf_path to include output interface,
-        changed struct ospf_route to support IA and ASE routing.
-        added prototypes of the function used in IA and ASE modules.
-
-1999-08-28  Alex Zinin <zinin@amt.ru>
-        * ospf_lsa.h ospf_lsa.c :
-        added ospf_my_lsa(), an interface independent version of
-        ospf_lsa_is_self_originated(), it will be used in ASE and IA-routing.
-
-1999-08-27  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-        * ospf_interface.c (interface_config_write): Add check for
-        oi->nbr_self.
-
-1999-08-25  Toshiaki Takada  <takada@zebra.org>
-
-        * ospf_lsa.c (ospf_lsa_dup): New function added.
-
-        * ospf_packet.c (ospf_write), (ospf_read): Print send/recv
-        interface in debug message.
-
-1999-08-25  Toshiaki Takada  <takada@zebra.org>
-
-        * ospf_packet.c (ospf_ls_ack_send): The name is changed from
-        `ospf_ls_ack_send'.
-        (ospf_ls_ack_send_delayed) (ospf_ls_ack_timer): New function added.
-        Delayed Link State Acknowledgment is scheduled by timer.
-
-1999-08-25  Alex Zinin  <zinin@amt.ru>
-
-        * ospf_lsa.c (ospf_router_lsa): Incorrectly included link to
-        a stub network instead of link to a transit network into
-        originated router-LSA, bug fixed.
-
-1999-08-24  Toshiaki Takada  <takada@zebra.org>
-
-        * ospfd.c (ospf_update_router_id): New function added.
-
-        * ospf_network.c (ospf_write): Create new socket per transmission.
-        And select outgoing interface whether dst is unicast or multicast.
-
-        * ospf_packet.c: LSA flooding will work.        
-
-1999-08-24  VOP <vop@unity.net>
-
-        * ospf_route.c: Include "sockunion.h"
-
-1999-08-24  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-        * ospf_network.c (ospf_serv_sock_init): Enclose
-        IPTOS_PREC_INTERNETCONTROL setting with #ifdef for OS which does
-        not have the definition.
-
-1999-08-23  Toshiaki Takada  <takada@zebra.org>
-
-        * ospf_packet.c: Fix bug of DD processing.
-
-1999-08-18  Toshiaki Takada  <takada@zebra.org>
-
-        * ospf_lsa.c (show_ip_ospf_database): Show actual `LS age'.
-
-1999-08-17  Toshiaki Takada  <takada@zebra.org>
-
-        * ospf_lsa.h (OSPF_MAX_LSA): The value of OSPF_MAX_LSA is
-        corrected.  The bug of `mes_lookup' is fixed.  
-        This had been reported by Poul-Henning Kamp <phk@freebsd.org>.
-
-        * ospf_lsa.c (ospf_router_lsa_install): The name is changed from
-        `ospf_add_router_lsa'.
-        (ospf_network_lsa_install): The name is changed from
-        `ospf_add_network_lsa'.
-
-        * ospf_interface.h (ospf_interface): Add member `nbr_self'.
-
-        * ospf_interface.c (ospf_if_is_enable): New function added.
-
-1999-08-16  Toshiaki Takada  <takada@zebra.org>
-
-        * ospf_lsa.h (struct lsa_header): The name is changed from
-        `struct ospf_lsa'.
-        (struct ospf_lsa): New struct added to control each LSA's aging
-        and timers.     
-
-        * ospf_lsa.c (ospf_lsa_data_free): The name is change from
-        `ospf_lsa_free'.
-        (ospf_lsa_data_new), (ospf_lsa_new), (ospf_lsa_free),
-        (ospf_lsa_different), (ospf_lsa_install): New function added.
-
-        * ospf_packet.c (ospf_ls_upd_list_lsa): New function added.
-
-1999-08-12  Toshiaki Takada  <takada@zebra.org>
-
-        * ospf_nsm.c (nsm_reset_nbr): New function added.
-        KillNbr and LLDown neighbor event call this function.
-        
-1999-08-10  Toshiaki Takada  <takada@zebra.org>
-
-        * ospf_packet.c (ospf_ls_retransmit)
-        (ospf_ls_upd_timer): New function added.
-        Set retransmission timer for Link State Update.
-
-1999-07-29  Toshiaki Takada  <takada@zebra.org>
-
-        * ospf_ism.c (ospf_dr_election): Fix bug of DR election.
-
-1999-07-28  Toshiaki Takada  <takada@zebra.org>
-
-        * ospf_network.c (ospf_serv_sock_init): Set IP precedence field
-        with IPTOS_PREC_INTERNET_CONTROL.
-
-        * ospf_nsm.c (nsm_change_status): Schedule NeighborChange event
-        if NSM status change.
-        
-        * ospf_packet.c (ospf_make_hello): Never include a neighbor in
-        Hello packet, when the neighbor goes down.
-
-1999-07-26  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-        * Makefile.am (noinst_HEADERS): Add ospf_route.h.
-
-        * ospf_route.c (show_ip_ospf_route): Add `show ip ospf route'
-        command.
-
-1999-07-25  Toshiaki Takada  <takada@zebra.org>
-
-        * ospf_lsa.c (ospf_router_lsa): Fix bug of LS sequence number
-        assignement.
-
-1999-07-25  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-        * ospf_route.c (ospf_route_table_free): New function added.
-
-        * ospf_spf.c (ospf_spf_next): Free vertex w when cw's and w's
-        distance is same.
-
-        * ospfd.h (struct ospf): Add old_table.
-
-        * ospf_main.c (sighup): Call of log_rotate () removed.
-
-        * ospf_lsa.c (ospf_lsa_is_self_originated): Fix bug of checking
-        area->lsa as self LSA.  This should be area->lsa_self.
-
-1999-07-24  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-        * ospf_zebra.c (ospf_zebra_add): ospf_zebra_add
-        (),ospf_zebra_delete () added.
-
-        * ospf_spf.c (ospf_spf_calculate): Call ospf_intra_route_add ().
-
-1999-07-24  Toshiaki Takada  <takada@zebra.org>
-
-        * ospf_lsa.c: Change LS sequence number treatment.
-        (ospf_lsa_is_self_originated): New function added.
-        (show_ip_ospf_database_self_originated): New DEFUN added.
-        
-1999-07-23  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-        * ospf_interface.c (ospf_if_lookup_by_addr): Add loopback check.
-
-1999-07-22  Toshiaki Takada  <takada@zebra.org>
-
-        * ospf_spf.c (ospf_nexthop_new), (ospf_nexthop_free),
-        (ospf_nexthop_dup): function added.
-        (ospf_nexthop_calculation): function changed.
-
-        * ospf_interface.c (ospf_if_lookup_by_addr): function added.
-        
-1999-07-21  Toshiaki Takada  <takada@zebra.org>
-
-        * ospf_spf.c (ospf_spf_closest_vertex): function removed.
-        
-1999-07-21  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-        * ospf_spf.c (ospf_spf_next): Apply ntohs for fetching metric.
-
-1999-07-21  Toshiaki Takada  <takada@zebra.org>
-
-        * ospf_neighbor.c (ospf_nbr_lookup_by_router_id): fundtion removed.
-
-        * ospf_lsa.c (show_ip_ospf_database_router): describe each
-        connected link.
-
-1999-07-21  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-        * ospf_spf.c (ospf_spf_next): V is router LSA or network LSA so
-        change behavior according to LSA type.
-        (ospf_lsa_has_link): Link check function is added.
-
-1999-07-20  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-        * ospf_spf.c (ospf_spf_calculate_schedule): Add new function for
-        SPF calcultion schedule addtition.
-        (ospf_spf_calculate_timer_add): Rough 30 sec interval SPF calc
-        timer is added.
-        (ospf_spf_next_router): Delete ospf_spf_next_network ().
-
-        * ospf_lsa.c (show_ip_ospf_database_all): Network-LSA display
-        header typo correction.  Display of router LSA's #link added.
-
-1999-07-19  Toshiaki Takada  <takada@zebra.org>
-
-        * ospf_packet.c (ospf_check_network_mask): Added new function for
-        receiving Raw IP packet on an appropriate interface.
-
-1999-07-16  Toshiaki Takada  <takada@zebra.org>
-
-        * ospfd.c (ospf_router_id): new DEFUN added.
-
-1999-07-15  Toshiaki Takada  <takada@zebra.org>
-
-        * ospf_spf.c (ospf_spf_init), (ospf_spf_free),
-        (ospf_spf_has_vertex), (ospf_vertex_lookup),
-        (ospf_spf_next_router), (ospf_spf_next_network),
-        (ospf_spf_closest_vertex), (ospf_spf_calculate):
-        function added.
-
-1999-07-13  Toshiaki Takada  <takada@zebra.org>
-
-        * ospf_ism.c: fix bug of DR Election.
-
-        * ospf_nsm.c: fix bug of adjacency forming.
-
-1999-07-05  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-        * ospfd.c (ospf_init): Change to use install_default.
-
-1999-07-01  Rick Payne <rickp@rossfell.co.uk>
-
-        * ospf_zebra.c (zebra_init): Install standard commands to
-        ZEBRA_NODE.
-
-1999-06-30  Toshiaki Takada  <takada@zebra.org>
-
-        * ospf_dump.c: Whole debug command is improved.
-        (ISM|NSM) (events|status|timers) debug option added.
-        (show_debugging_ospf): new DEFUN added.
-
-1999-06-30  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-        * ospf_lsa.c (ospf_lsa_lookup_from_list): Change !IPV4_ADDR_CMP to
-        IPV4_ADDR_SAME.
-
-1999-06-29  Toshiaki Takada  <takada@zebra.org>
-
-        * ospf_dump.c (ospf_summary_lsa_dump): Add summary-LSA dump routine.
-        (ospf_as_external_lsa_dump): Add AS-external-LSA dump routine.
-
-        * ospf_nsm.c (nsm_twoway_received): fix condtion of adjacnet.
-
-        * ospf_ism.c (ospf_dr_election): fix DR Election.
-        
-        * ospf_dump.c (ospf_nbr_state_message): fix `show ip ospf neighbor'
-        command's state.
-
-1999-06-29  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-        * ospf_dump.c (ospf_router_lsa_dump): Add router-LSA dump routine.
-
-1999-06-28  Toshiaki Takada  <takada@zebra.org>
-
-        * ospf_lsa.c (show_ip_ospf_database_network): fix bug of
-        `show ip ospf database network' command output.
-
-        * ospf_nsm.c (nsm_inactivity_timer): Clear list of Link State
-        Retransmission, Database Summary and Link State Request.
-
-        * ospf_packet.c (ospf_ls_req_timer): New function added.
-        Set Link State Request retransmission timer.
-
-1999-06-27  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-        * ospf_main.c (main): Change default output from ZLOG_SYSLOG to
-        ZLOG_STDOUT.
-
-        * ospfd.c (ospf_init): Register show_ip_ospf_interface_cmd and
-        show_ip_ospf_neighbor_cmd to VIEW_NODE.
-
-        * ospf_lsa.c (ospf_lsa_init): Register show_ip_ospf_database_cmd
-        and show_ip_ospf_database_type_cmd to VIEW_NODE.
-
-1999-06-25  Toshiaki Takada  <takada@zebra.org>
-
-        * ospf_packet.c: fix bug of DD making.
-        fix bug of LS-Update reading.
-        
-1999-06-23  Toshiaki Takada  <takada@zebra.org>
-
-        * ospf_packet.c: All type of packets are changed to use
-        fifo queue structure.
-        (ospf_fill_header) function added.
-
-1999-06-22  Toshiaki Takada  <takada@zebra.org>
-
-        * ospf_packet.c (ospf_packet_new): New function added to handle
-        sending ospf packet by fifo queue structure.
-        (ospf_packet_free), (ospf_fifo_new), (ospf_fifo_push),
-        (ospf_fifo_pop), (ospf_fifo_head), (ospf_fifo_flush),
-        (ospf_fifo_free): Likewise.
-
-1999-06-21  Toshiaki Takada  <takada@zebra.org>
-
-        * ospf_nsm.c (ospf_db_desc_timer): function added.
-        (nsm_timer_set) function added.
-        * ospf_dump.c (ospf_option_dump): function added.
-        * ospf_packet.c (ospf_ls_req) (ospf_make_ls_req): function added.
-
-1999-06-20  Toshiaki Takada  <takada@zebra.org>
-
-        * ospf_lsa.c (ospf_lsa_more_recent): function added.
-        * ospf_neighbor.h (struct ospf_neighbor): Change member ms_flag
-        to dd_flags.
-        
-1999-06-19  Toshiaki Takada  <takada@zebra.org>
-
-        * ospf_lsa.c: DEFUN (show_ip_ospf_database) Added.
-        * ospf_interface.c (if_ospf_cost), (if_ospf_dead_interval),
-        (if_ospf_hello_interval), (if_ospf_priority),
-        (if_ospf_retransmit_interval), (if_ospf_transmit_delay)
-        argument changed from NUMBER to <range>.
-        DEFUN (if_ospf_network_broadcast),
-        DEFUN (if_ospf_network_non_broadcast),
-        DEFUN (if_ospf_network_point_to_multipoint),
-        DEFUN (if_ospf_network_point_to_point) functions are combined to
-        DEFUN (if_ospf_network).
-        
-1999-06-18  Toshiaki Takada  <takada@zebra.org>
-
-        * ospf_lsa.c: ospf_add_router_lsa (), ospf_add_network_lsa (),
-        ospf_lsa_lookup (), ospf_lsa_count () Added.
-
-1999-06-15  Toshiaki Takada  <takada@zebra.org>
-
-        * DEFUN (ospf_debug_ism), DEFUN (ospf_debug_nsm),
-        DEFUN (no_ospf_debug_ism), DEFUN (no_ospf_debug_nsm) Added.
-        `debug ospf ism' command shows debug message.
-        `debuf ospf nsm' command shows debug message.
-
-1999-06-14  Toshiaki Takada  <takada@zebra.org>
-
-        * ospf_lsa.c: ospf_network_lsa () Added.
-        ospf_lsa_checksum () Added.
-        * DEFUN (ospf_debug_packet), DEFUN (no_ospf_debug_packet) Added.
-        `debug ospf packet' command shows debug message.
-
-1999-06-13  Toshiaki Takada  <takada@zebra.org>
-
-        * ospf_packet.h: Remove struct ospf_ls_req {}, ospf_ls_upd {},
-        ospf_ls_ack {}.
-
-1999-06-11  Toshiaki Takada  <takada@zebra.org>
-
-        * ospf_dump.c: fix IP packet length treatment.
-
-1999-06-10  Toshiaki Takada  <takada@zebra.org>
-
-        * ospf_ism.h: Add OSPF_ISM_EVENT_EXECUTE() Macro Added.
-        * ospf_nsm.h: Add OSPF_NSM_EVENT_EXECUTE() Macro Added.
-
-        * ospf_packet.c: ospf_db_desc (), ospf_db_desc_send () Added.
-        ospf_make_hello (), ospf_make_db_desc () Added.
-        ospf_db_desc_proc () Added.n
-
-        * Database Description packet can be processed.
-
-1999-06-08  Toshiaki Takada  <takada@zebra.org>
-
-        * ospf_lsa.c: New file.
-        
-1999-06-07  Toshiaki Takada  <takada@zebra.org>
-
-        * ospf_neighbor.c: ospf_fully_adjacent_count () Added.
-
-1999-06-07  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-        * ospf_spf.[ch]: New file.
-
-1999-05-30  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-        * ospf_zebra.c: Changed to use lib/zclient.c routines.
-
-        * ospf_zebra.h (zebra_start): Remove struct zebra.
-
-1999-05-29  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-        * ospfd.c (ospf_config_write): Add cast (unsigned long int) to
-        ntohl for sprintf warning.
-
-1999-05-19  Toshiaki Takada  <takada@zebra.org>
-
-        * ospf_ism.c (ospf_dr_election): Join AllDRouters Multicast group
-        if interface state changes to DR or BDR.
-
-1999-05-14  Stephen R. van den Berg <srb@cuci.nl>
-
-        * ospf_main.c (signal_init): SIGTERM call sigint.
-        (sigint): Logging more better message.
-
-1999-05-12  Toshiaki Takada  <takada@zebra.org>
-
-        * ospfd.c: Fix bug of `no router ospf' statement, it will work.
-
-1999-05-11  Toshiaki Takada  <takada@zebra.org>
-
-        * ospf_neighbor.c: ospf_nbr_free () Added.
-
-1999-05-10  Toshiaki Takada  <takada@zebra.org>
-
-        * ospfd.h: struct ospf_area { }, struct ospf_network { } Changed.
-        * Fix bug of `no network' statement, it will work.
-
-1999-05-07  Toshiaki Takada  <takada@zebra.org>
-
-        * ospf_interface.c, ospf_zebra.c: Fix bug of last interface is not
-        updated by ospf_if_update ().
-
-1999-04-30  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-        * Makefile.am (noinst_HEADERS): Add ospf_lsa.h for distribution.
-
-1999-04-25  Toshiaki Takada <takada@zebra.org>
-
-        * ospf_interface.c: DEFUN (no_if_ospf_cost),
-        DEFUN (no_if_ospf_dead_interval),
-        DEFUN (no_if_ospf_hello_interval),
-        DEFUN (no_if_ospf_priority),
-        DEFUN (no_if_ospf_retransmit_interval),
-        DEFUN (no_if_ospf_transmit_delay) Added.
-
-        interface_config_write () suppress showing interface
-        default values.
-
-1999-04-25  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-        * ospf_dump.c (ospf_timer_dump): If thread is NULL return "inactive".
-
-        * ospfd.c (ospf_if_update): Fix bug of using ospf_area { } instead
-        of ospf_network { }.  So `router ospf' statement in ospfd.conf
-        works again.
-        (ospf_if_update): Call ospf_get_router_id for updating router ID.
-
-1999-04-25  Toshiaki Takada  <takada@zebra.org>
-
-        * ospf_interface.c: DEFUN (if_ospf_network) deleted.
-        DEFUN (if_ospf_network_broadcast),
-        DEFUN (if_ospf_network_non_broadcast),
-        DEFUN (if_ospf_network_point_to_multipoint),
-        DEFUN (if_ospf_network_point_to_point),
-        DEFUN (no_if_ospf_network) Added.
-
-1999-04-23  Toshiaki Takada  <takada@zebra.org>
-
-        * ospfd.h: struct area { } changed to struct ospf_network { }.
-        Add struct ospf_area { }.
-        * ospfd.c: Add ospf_area_lookup_by_area_id (), ospf_network_new (),
-        and ospf_network_free ().
-        DEFUN (area_authentication), DEFUN (no_area_authentication) Added.
-
-1999-04-22  Toshiaki Takada  <takada@zebra.org>
-
-        * ospf_lsa.h: New file.
-        * ospf_packet.h: LSA related struct definition are moved to
-        ospf_lsa.h.
-        * ospf_packet.c: ospf_verify_header () Added.
-
-1999-04-21  Toshiaki Takada  <takada@zebra.org>
-
-        * ospf_ism.c: ospf_elect_dr () and related function is changed.
-        DR Election bug fixed.
-        * ospf_dump.c: ospf_nbr_state_message (), ospf_timer_dump () Added.
-        * ospfd.c: DEFUN (show_ip_ospf_neighbor) Added.
-
-1999-04-19  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-        * ospf_main.c (main): access_list_init () is added for vty
-        connection filtering.
-
-1999-04-16  Toshiaki Takada  <takada@zebra.org>
-
-        * ospfd.c: DEFUN (show_ip_ospf_interface) Added.
-        * ospf_neighbor.c: ospf_nbr_count () Added.
-        
-1999-04-15  Toshiaki Takada  <takada@zebra.org>
-
-        * ospfd.h: struct ospf { } Changed.
-        * ospfd.c: ospf_lookup_by_process_id () Deleted.
-        * ospf_ism.c: ospf_wait_timer () Added. WaitTimer will work.
-
-1999-04-14  Toshiaki Takada  <takada@zebra.org>
-
-        * ospf_ism.c: ospf_elect_dr () Added.
-        * ospf_network.c: ospf_if_ipmulticast () Added.
-
-1999-04-11  Toshiaki Takada  <takada@zebra.org>
-
-        * ospf_interface.c: interface_config_write (),
-        DEFUN (if_ip_ospf_cost),
-        DEFUN (if_ip_ospf_dead_interval),
-        DEFUN (if_ip_ospf_hello_interval),
-        DEFUN (if_ip_ospf_priority),
-        DEFUN (if_ip_ospf_retransmit_interval) and
-        DEFUN (if_ip_ospf_transmit_delay) Added.
-
-1999-04-08  Toshiaki Takada  <takada@zebra.org>
-
-        * ospf_dump.c: ospf_packet_db_desc_dump () Added.
-        * ospf_neighbor.c: ospf_nbr_bidirectional () Added.
-        * ospf_nsm.c: nsm_twoway_received () Added.
-
-1999-04-02  Toshiaki Takada  <takada@zebra.org>
-
-        * ospf_neighbor.c: New file.
-        * ospf_neighbor.h: New file.
-        * ospf_nsm.c: New file.
-        * ospf_nsm.h: New file.
-        * ospf_packet.c: Add ospf_make_header (), ospf_hello () and
-        ospf_hello_send (). Now OSPFd can receive Hello and send Hello.
-
-1999-03-27  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-        * ospf_packet.c: Add ospf_recv_packet ().  Now OSPF Hello can receive.
-
-1999-03-19  Toshiaki Takada  <takada@zebra.org>
-
-        * ospf_packet.c: New file.
-        * ospf_packet.h: New file.
-        * ospf_network.c: New file.
-        * ospf_network.h: New file.
-        * ospfd.h: move OSPF message structure has moved to ospf_packet.h.
-
-1999-03-17  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-        * ospf_zebra.c (ospf_zebra_get_interface): Fix for IPv6 interface
-        address.
-
-        * Makefile.am (install-sysconfDATA): Overwrite install-sysconfDATA
-        for install ospfd.conf.sample as owner read only file.
-
-        * ospf_main.c (usage): Change to use ZEBRA_BUG_ADDRESS.
-
-1999-03-15  Toshiaki Takada  <takada@zebra.org>
-
-        * ospf_ism.c: New file.
-        * ospf_ism.h: New file.
-        * ospf_dump.c: New file.
-        * ospf_dump.h: New file.
-
-        * ospfd.h: Add (struct ospf), (struct config_network),
-        (struct message) structure.
-
-        * ospf_interface.c: Add ospf_if_match_network ().
-        * ospf_interface.h (struct ospf_interface): Change struct members.
-
-        * ospfd.c: ospf_lookup_by_process_id (), ospf_network_new (),
-        DEFUN (network_area): Added.
-
-        * ospfd.conf.sample: Change sample configuration.
-
-1999-03-05  Toshiaki Takada  <takada@zebra.org>
-
-        * ospf_interface.c: New file.
-        * ospf_interface.h: New file.
-        * ospf_zebra.h: New file.
-        * ospf_zebra.c: Add interface function for zebra daemon.
-        * ospfd.c: New file.
-
-1999-02-23  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-        * Move IPv6 codes and files to ospf6d directory.
-
-1999-02-18  Peter Galbavy  <Peter.Galbavy@knowledge.com>
-
-        * syslog support added
-
-1998-12-22  Toshiaki Takada  <takada@zebra.org>
-
-        * ospfd.h: New file.
-        * ospf_lsa.h: New file.
-
-1998-12-15  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-        * Makefile.am: New file.
-        * ospf_main.c: New file.
-
diff --git a/pkgsrc/ChangeLog b/pkgsrc/ChangeLog
deleted file mode 100644
index 79ade41..0000000
--- a/pkgsrc/ChangeLog
+++ /dev/null
@@ -1,15 +0,0 @@
-2004-08-31  Greg Troxel  <gdt@poblano.ir.bbn.com>
-
-	* Rename scripts to *.sh.in, and use autoconf-style substitution
-	  for prefix and localstatedir.
-	
-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.
-
-
diff --git a/ripd/ChangeLog b/ripd/ChangeLog
deleted file mode 100644
index 60baef5..0000000
--- a/ripd/ChangeLog
+++ /dev/null
@@ -1,1217 +0,0 @@
-2008-05-29 Stephen Hemminger <stephen.hemminger@vyatta.com>
-
-	* ripd.c: (rip_auth_md5) fix bogus empty string test
-
-2008-03-13 Paul Jakma <paul.jakma@sun.com>
-
-	* ripd.c/rip_interface.c: Remove 0 entries from rip_msg 
-	  ri_version_msg struct message's, not needed with recent fixes
-	  to mes_lookup.
-
-2007-04-27 Andrew J. Schorr <ajschorr@alumni.princeton.edu>
-
-	* ripd.c: (rip_vty_out_uptime) Remove unused variable timer_now.
-
-2007-04-11 Emmanuel Vize <emmanuel.vize@6wind.com>
-
-	* ripd.c: (rip_vty_out_uptime) Use new thread_timer_remain_second
-	  to display properly the route timeout, displayed by "show ip rip"
-
-2007-03-21 Andrew J. Schorr <ajschorr@alumni.princeton.edu>
-
-	* ripd.c: (show_ip_rip_status) Use new thread_timer_remain_second
-	  function instead of rip_next_thread_timer to display the time until
-	  next update properly.
-	  (rip_next_thread_timer) Remove obsolete function.
-
-2006-12-12 Andrew J. Schorr <ajschorr@alumni.princeton.edu>
-
-	* rip_interface.c: (rip_interface_multicast_set) Use new CONNECTED_ID
-	  macro to simplify logic.
-	  (rip_request_interface_send) Fix minor bug: ipv4_broadcast_addr does
-	  not give a useful result if prefixlen is 32 (we require a peer
-	  address in such cases).
-	* ripd.c: (rip_update_interface) Fix same bug as above.
-
-2006-09-11 Paul Jakma <paul.jakma@sun.com>
-
-	* ripd.c: (rip_read) remove gratuitous use of mid-function
-	  declaration of vrecv, bug #278.
-	* rip_routemap.c: (route_set_metric) underflow check needs to
-	  use signed, problem identified and diagnosed by Pavel
-	  Nikiforov in bug #293.
-
-2006-06-29 Paul Jakma <paul.jakma@sun.com>
-
-	* rip_zebra: (general) convert redistribute commands to use
-	  the auto-generated defines.
-
-2006-05-04 Paul Jakma <paul.jakma@sun.com>
-
-	* (general) Fixes for bugs #261 and 262. Thanks to
-	  Konstantin V. Gavrilenko <kos@arhont.com> for the problem
-	  reports, testing of a series of proposed patches and comment
-	  on the proposed changes in behaviour.
-	* rip_interface.c: (ip_rip_authentication_mode_cmd) Parse all
-	  of the command before making any changes to configured state.
-	* ripd.c: (rip_read) RIP version control should be absolute and
-          always apply, fixes bug #261 by allowing RIPv1 to be disabled.
-	  Fix bug #262: If authentication is enabled, then
-	  unauthenticated packets should not be accepted. We do however
-	  make an exception for RIPv1 REQUEST packets, to which we will
-	  reply as RIPv1 can now be disabled fully, to allow ripd to
-	  still provide routing /information/ to simple devices.
- 
-2006-04-28 Andrew J. Schorr <ajschorr@alumni.princeton.edu>
-
-	* ripd.c: (rip_update_process) Try to fix the logic for sending
-	  an updated on each connected network.  The new code will
-	  attempt to send the update on each connected network, whereas
-	  the previous code seemed to be attempting to avoid sending
-	  more than one RIPv1 update on a given interface, but was coded
-	  incorrectly.  The actual effect of the old code was to send
-	  an update only on the first connected address in the cases
-	  where the interface is not multicast, or RIPv2 is not being used.
-
-2006-01-30 Alain Ritoux <alain.ritoux@6wind.com>
-
-        * ripd.c: correct bug that allowed route learnt through RIP to take
-	  precedence over connectd routes
-
-2006-01-19 Paul Jakma <paul.jakma@sun.com>
-
-        * ripd.c: (main) return from main, not exit, cause it annoys SOS.
-
-2006-01-17 Paul Jakma <paul.jakma@sun.com>
-
-	* ripd.c: (rip_auth_md5) remove pdigest, not needed.
-	  Use a local buffer for the auth_str, where it can be properly 
-	  nul padded. Do so, hence fixing MD5 authentication.  
-	  Key looked up via key ring should be used in preference to 
-	  the RIPv1 simple password, not other way around.
-	  No need to copy around digests, we can reference them
-	  directly.
-	  The auth_len received can't be trusted, some implementations
-	  lie (e.g. older ripd).
-	  (rip_auth_md5_ah_write) rename len local variable to doff
-	  to be consistent with other functions.
-	  (rip_auth_header_write) add the missing return.
-	  (rip_auth_md5_set) use the proper constructs to access stream.
-	  
-2005-10-30 Andrew J. Schorr <ajschorr@alumni.princeton.edu>
-
-	* ripd.c: (rip_response_process) Instead of calling
-	  rip_interface.c:if_valid_neighbor(), call the equivalent
-	  library function if_lookup_address().
-	* rip_interface.c: (if_valid_neighbor) Remove function, since it is
-	  essentially equivalent to the if_lookup_address() library function.
-	* ripd.h: (if_valid_neighbor) Remove function declaration.
-
-2005-10-28 Paul Jakma <paul.jakma@sun.com>
-
-	* Makefile.am: Add rip_interface.h, or else it doesn't get
-	  included in dists.
-
-2005-10-26 Paul Jakma <paul.jakma@sun.com>
-
-	* (general) static/extern functions and definitions.
-	* rip_interface.h: new file, export the public functions from
-	  rip_interface.c
-	* ripd.c: Update couple more functions to specify void
-	  explicitely.
-
-2005-10-17 Vincent Jardin <vincent.jardin@6wind.com>
-
-	* ripd.c: rip_create_socket() for each packet, it does not bind to the
-	  proper interfaces because we forget to use the from address when
-	  it is specified.
-
-2005-10-06 Alain Ritoux <alain.ritoux@6wind.com>
-
-	* rip_interface.c: Now the command "no ip rip split-horizon
-	  poisoned-reverse" just inhibates the poisoned-reverse effects
-	  but keep spli-horizon activ.
-
-2005-10-01 Andrew J. Schorr <ajschorr@alumni.princeton.edu>
-
-	* rip_zebra.c: (config_write_rip_redistribute): Remove local hard-coded
-	  table str[]. Replace str[] with calls to new library function
-	  zebra_route_string().
-	* ripd.c: Remove local hard-coded table route_info[].
-	  (show_ip_rip) Replace uses of str[] with calls to new library
-	  functions zebra_route_char and zebra_route_string.
-
-2005-09-29 Alain Ritoux <alain.ritoux@6wind.com>
-
-	* rip_snmp.c: rip2IfConfReceive() sends values in conformance
-	  with RFC. Also PeerDomain is now set to a STRING type.
-	* ripd.h: rip_redistribute_add() API includes metric and distance
-	  added field external_metric in routes.
-	* ripd.c: rip_redistribute_add() API i.e. stores metric and distance
-      Now allows a RIP-route to overcome a redistributed route coming
-	  from a protocol with worse (higher) administrative distance
-	  Metrics from redistribution are shown in show ip rip
-	* rip_zebra.c: adapt to the rip_redistribute_add() API, i.e.
-	  provide distance and metric
-	* rip_interface.c: adapt to the rip_redistribute_add() API
-	* rip_routemap.c: no RMAP_COMPILE_ERROR on (metric > 16) usage
-	  rather a CMD_WARNING, because set metric ius shared with other
-	  protocols using larger values (such as OSPF)
-	  The match metric action takes first external metric if present
-      (from redistribution) then RIP metric.
-
-2005-09-28 Alain Ritoux <alain.ritoux@6wind.com>
-
-	* ripd.c: use new md5 API
-
-2005-08-16 Paul Jakma <paul.jakma@sun.com>
-
-	* ripd.c: (general) Fix previous commit, broke multicast bind and
-	  hence setting of source port, which broke communication with
-	  non-borken ripd. Fix removes more stuff from rip_interface.c
-	  than it adds to ripd.c ;)
-	  (rip_create_socket) the to argument really is a from argument,
-	  rename it. Set the source port to RIP port unconditionally, it's
-	  required.
-	  (rip_send_packet) Set from address correctly for multicast.
-	  (rip_output_process) trivial: num can be BSS specified, rather
-	  than in body.
-	* rip_interface.c: (rip_interface_multicast_set) strip out
-	  redundant stuff related to bind, which rip_create_socket does.
-	  Just make it set the multicast socket option, as per the
-	  interface concerned, no more.
-
-2005-06-03 Paul Jakma <paul.jakma@sun.com>
-
-	* ripd.c: (rip_create_socket) move it up so rip_send_packet
-	  can use it too. Make it static. Remove the getservbyname stuff,
-	  as RFC2453 3.9.2 says non-RIP port messages should be discarded,
-	  quagga doesnt accept them, no need to lookup port.
-	  Take a 'to' argument, if socket should be bound to something else.
-	  setsockopt_so_recvbuf might need privs, move it to the raised
-	  privileges section.
-	  dont forget to close the socket if bind fails.
-	  (rip_send_packet) use strncpy, just in case (address is under
-	  our control anyway, but still).
-	  dont duplicate rip_create_socket - just use it.
-	  (rip_create) rip_create_socket takes an argument now, modify.
-	  
-2005-06-01 Paul Jakma <paul.jakma@sun.com>
-
-	* rip_interface.c: Fix authentication, no-auth impossible to specify
-	  (rip_interface_new) default to RIP_NO_AUTH
-	  (rip_interface_reset) ditto
-	  (rip_interface_config_write) write out config for simple
-	  
-2005-05-29 Paul Jakma <paul@dishone.st>
-
-	* ripd.c: (rip_output_process) fix error which crept in my
-	  previous rip auth untanglement commit - it had become impossible
-	  to not have authentication (even for v1).
-	
-2005-05-28 Hasso Tepper <hasso at quagga.net>
-
-	* rip_routemap.c: Fix set_metric_addsub_cmd help, it's not about BGP
-	  metric.
-
-2005-05-26 Hasso Tepper <hasso at quagga.net>
-
-	* rip_routemap.c: In case of '0.0.0.0' used as 'nexthop', use sender
-	  address as nexthop in routemap.
-
-2005-05-26 Hasso Tepper <hasso at quagga.net>
-
-	* rip_routemap.c: Make "match interface" routemap command match both -
-	  in and out interfaces.
-
-2005-05-11 Andrew J. Schorr <ajschorr@alumni.princeton.edu>
-
-	* rip_interface.c (rip_interface_add): Need to call
-	  rip_passive_interface_apply (was already calling it in
-	  rip_interface_up).
-
-2005-04-11 Andrew J. Schorr <ajschorr@alumni.princeton.edu>
-
-	* rip_zebra.c (rip_redistribute_set, rip_redistribute_unset,
-	  rip_redistribute_clean): Change 2nd arg to zebra_redistribute_send
-	  from zclient->sock to zclient.
-
-2005-04-02 Andrew J. Schorr <ajschorr@alumni.princeton.edu>
-
-	* rip_interface.c: (rip_interface_delete) After deleting, set
-	  ifp->ifindex to IFINDEX_INTERNAL.
-
-2005-02-04 Paul Jakma <paul@dishone.st>
-
-	* ripd.c: Untangle the construction of RIP auth data.
-	  (rip_auth_prepare_str_send) new helper function, prepare
-	  correct key string.
-	  (rip_auth_simple_write) new helper, write out the
-	  rip simple password auth psuedo-RTE.
-	  (rip_auth_md5_ah_write) new helper, write out the
-	  MD5 auth-header psuedo-RTE.
-	  (rip_auth_header_write) new helper, write out correct
-	  auth header data / psuedo-RTE.
-	  (rip_auth_md5_set) rip out the memmove and writing of the
-	  auth header psuedo-RTE. So that all that is left is to
-	  write the trailing auth digest, and update digest offset
-	  field in the original header.
-	  (rip_write_rte) rip out writing of RIP header, writing of
-	  simple auth data psuedo-RTE. Make it do what its name suggests,
-	  write out actual RTEs.
-	  (rip_output_process) remove the incorrect additional decrements 
-	  of rtemax. Prepare the auth_str, which simple or MD5 auth will
-	  need. Move write out of RIP header and auth data to inside the
-	  loop. Adjust paramaters as required.
-
-2005-01-30 Andrew J. Schorr <ajschorr@alumni.princeton.edu>
-
-	* ripd.c: (rip_create_socket) Replace perror with zlog_err.
-
-2005-01-30 Andrew J. Schorr <ajschorr@alumni.princeton.edu>
-
-	* ripd.c: (rip_create_socket) Save errno before calling
-	  ripd_privs.change.
-
-2005-01-04 Andrew J. Schorr <ajschorr@alumni.princeton.edu>
-
-	* ripd.c: (rip_recvmsg) Use ZCMSG_FIRSTHDR instead of CMSG_FIRSTHDR.
-
-2004-12-15 Andrew J. Schorr <ajschorr@alumni.princeton.edu>
-
-	* ripd.c: (rip_read) Improve 2 error messages to show the source of
-	  the packet when the lookup fails.
-
-2004-12-08 Andrew J. Schorr <ajschorr@alumni.princeton.edu>
-
-	* *.c: Change level of debug messages to LOG_DEBUG.
-
-2004-12-07 Andrew J. Schorr <ajschorr@alumni.princeton.edu>
-
-	* rip_main.c: (main) The 2nd argument to openzlog has been removed.
-
-2004-12-03 Andrew J. Schorr <ajschorr@alumni.princeton.edu>
-
-	* rip_main.c: (sigint) Use zlog_notice for termination message.
-	  (main) Add a startup announcement using zlog_notice.
-
-2004-11-25 Hasso Tepper <hasso at quagga.net>
-
-	* rip_main.c: Make group to run as configurable.
-
-2004-10-22 Paul Jakma <paul@dishone.st>
-
-	* ripd.c: Collapse redundant passing of various address structs,
-          struct interface and struct connected as arguments to functions
-          down to two key arguments, namely struct connected and, possibly,
-          address of source/destination. Testing for RIPv1 would be useful.
-          (rip_read) lookup struct connected for the received packet, pass
-          it on.
-        * rip_interface.c: With previous changes, we no longer have to tread
-          carefully with struct connected, as it will always be there and
-          valid.
-
-2004-10-19 Andrew J. Schorr <aschorr@telemetry-investments.com>
-
-	* ripd.c: (rip_update_interface) if connected->destination is NULL,
-	  get the broadcast address with ipv4_broadcast_addr()
-	* rip_interface.c: (rip_interface_multicast_set)
-	  connected->destination may be NULL. Improve message if
-	  setsockopt_multicast_ipv4 fails. Improve message if bind fails.
-	  (rip_request_interface_send) If connected->destination is NULL,
-	  get the broadcast address with ipv4_broadcast_addr().
-	  (if_valid_neighbor) Handle PtP subnet addressing properly.
-	  Speed up code by using prefix_match properly.
-
-2004-10-13 Hasso Tepper <hasso at quagga.net>
-
-	* ripd_snmp.c: Remove defaults used to initialize smux connection to
-	  snmpd. Connection is initialized only if smux peer is configured.
-
-2004-10-11 Hasso Tepper <hasso at quagga.net>
-
-	* *.c: Make more strings const.
-
-2004-10-08 Hasso Tepper <hasso at quagga.net>
-
-	* *.c: Fix compiler warnings: make strings const, signed -> unsigned
-	  etc.
-
-2004-09-26 Hasso Tepper <hasso at quagga.net>
-
-	* ripd.c: Fix compiler warning.
-
-2004-09-23 Hasso Tepper <hasso at quagga.net>
-
-	* *.[c|h]: list -> struct list *, listnode -> struct listnode *.
-
-2004-09-17 Paul Jakma <paul@dishone.st>
-
-	* ripd.c: set receive buffer to a decent size, some systems have low
-	  defaults. Problem noted and fix suggested by Stephan Schweizer
-	  in [zebra 20967].
-
-2004-08-19 Paul Jakma <paul@dishone.st>
-
-	* rip_interface.c: (rip_interface_multicast_set) get rid
-	  of extraneous if_pointopoint arg. ifp is accessible via connected.
-	  pass connected->ifp->ifindex to setsockopt_multicast_ipv4.
-	* ripd.c: (rip_send_packet) update call to
-	  rip_interface_multicast_set
-	* ripd.h: update rip_interface_multicast_set prototype
-	
-2004-06-11 Sowmini Varadhan <sowmini.varadhan@sun.com>
-
-	* ripd.c: (rip_distribute_update_all) distribute list hook
-	  function pointer prototype requires struct prefix_list * arg.
-	  (rip_distribute_update_all_wrapper) update to pass required arg,
-	  NULL.
-	 
-2004-06-06 Paul Jakma <paul.jakma@sun.com>
-
-	* ripd.h: Add define for the RIPv2 Authentication Data family
-	  Move the auth type defines up to where other defines live.
-	  Add RIP_AUTH_MD5_COMPAT_SIZE, for backwards compatible
-	  md5->auth_len size. Add md5_auth_len field to struct
-          rip_interface: (rip_interface_new) Init md5_auth_len to compatible 
-          size.
-          (ip_rip_authentication_mode_cmd) Extended to handle setting
-          md5 auth-length. Appropriate aliases added.
-          (no_ip_rip_authentication_mode_cmd) Reset md5_auth_len to
-          compatible size.
-          (rip_interface_config_write) Teach it about md5_auth_len.
-          _always_ write out the auth-length, so that everyone will get
-          the setting in their config file, and hence allow for a future
-          change of default for md5_auth_len to be less painful - every md5
-          user will have this setting in their config file.
-          ripd.c: (rip_packet_dump) Change nasty hard coded constants to 
-          symbolic defines. Change various tests of 'ntoh.(variable) ==
-          constant' to test 'variable == ntoh.(constant)'. Clean up
-          indentation on some long lines.
-          (rip_auth_simple_password) ditto.
-          (rip_auth_md5) ditto, also add length argument and sanity check 
-          md5 data offset field. Sanity check md5 auth length, accept RFC
-          or old-ripd/cisco lengths.
-          (rip_auth_md5_set) as per (rip_packet_dump), also write out
-          the configured md5 auth length for the interface (old-ripd or rfc)
-          (rip_read) as per (rip_packet_dump)
-          (rip_write_rte) ditto
-          (rip_response_process) ditto
-          (rip_write_rte) ditto
-          
-2004-06-04 JJ Ludman <jacques.ludman@sun.com>
-
-	* ripd.c: Interoperability fix. Correct value for MD5 auth length
-	  is 16. Accept packets with this set to >= 16, and set to 16
-          ourselves.
-
-2004-05-31 Sowmini Varadhan <sowmini.varadhan@sun.com>
-
-	* ripd.c: Fixup compile warnings
-	* rip_routemap.c: Ditto
-	
-2004-05-08 Paul Jakma <paul@dishone.st>
-
-	* rip_zebra.c: sync with zclient changes.
-	* rip_interface.c: ditto.
-
-2004-05-05 Anthony.Golia@morganstanley.com
-
-	* ripd.c: (rip_update_jitter) Bound jitter to a more sensible
-	  value, eg 1/4 of update time.
-	  
-2004-05-03 Paul Jakma <paul@dishone.st>
-
-	* ripd.c: (rip_rte_process) fix typo in merge of previous patch
-	  and run function through indent.
-	
-2004-03-19 Jean-Yves Simon <lethalwp@tiscali.be>
-
-	* ripd.c: (rip_rte_process) make ripd also check on 
-	  administrative distance of his own links to update routes.
-
-2004-03-18 sowmini.varadhan@sun.com
-
-	* ripd.c: rip_send_packet can get null connected address when
-	  called in response to a unicast rip-request. Handle correctly.
-
-2004-03-03 Krzysztof Oledzki <oleq@ans.pl>
-
-	* ripd.c: fix "show ip rip" and per interface rip version selection.
-
-2004-01-23 sowmini.varadhan@sun.com
-
-	* rip_interface.c: obsolete unbind code in
-  	rip_interface_multicast_set, and instead do the more portable
-  	(though slower) method of creating a socket for each outgoing packet
-  	and binding the source address on the new socket.
-        * rip_interface.c, ripd.c, ripd.h: Modify rip_request_send so that
-        source address is determined by the caller of rip_request_send for
-        ripv1 packets and non-multicast interfaces (rip_request_send loops
-        over all connected address in all other cases).
-        * rip_send_packet: don't send packets with source set to
-        ZEBRA_IFA_SECONDARY connected addresses; improved debug messages;
-
-2003-06-07 Andrew J. Schorr <aschorr@telemetry-investments.com>
-
-	* Allow ripd to receive RIPv1
-	* add default as valid param to passive-interface command
-
-2003-05-25 Vincent Jardin <vjardin@wanadoo.fr>
-
-	* 6Wind patch merge.
-
-2003-04-19 Hasso Tepper <hasso@estpak.ee>
-
-	* rip_routemap.c: sync daemon's route-map commands to have same
-	syntax
-
-2002-07-07  Kunihiro Ishiguro  <kunihiro@ipinfusion.com>
-
-	* zebra-0.93 released.
-
-2002-06-30  Kunihiro Ishiguro  <kunihiro@ipinfusion.com>
-
-	* ripd.c (rip_output_process): When outgoing interface is same as
-	next hop interface, announce RIPv2 next hop otherwise set next hop
-	to 0.  Revert previous change then take 6WIND way.
-
-2001-09-14  Akihiro Mizutani <mizutani@dml.com>
-
-	* ripd.c: RIP enabled interface's route is advertised by default.
-
-2001-08-28  NOGUCHI Kay <kay@v6.access.co.jp>
-
-	* rip_snmp.c (rip_ifaddr_delete): Add route_node_lookup() return
-	value check.
-
-	* rip_interface.c (rip_multicast_leave): Fix bug of multiple IP
-	address on one interface multicast join/leave bug.
-
-2001-08-26  NOGUCHI Kay <kay@v6.access.co.jp>
-
-	* rip_interface.c (no_rip_passive_interface): Add NO_STR.
-
-2001-08-19  Kunihiro Ishiguro  <kunihiro@ipinfusion.com>
-
-	* zebra-0.92a released.
-
-2001-08-15  Kunihiro Ishiguro  <kunihiro@ipinfusion.com>
-
-	* zebra-0.92 released.
-
-2001-06-17  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* rip_routemap.c (route_match_ip_address_prefix_list): Add match
-	ip next-hop prefix-list WORD.
-
-2001-02-18  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* rip_interface.c (rip_passive_interface_clean): Call
-	rip_passive_interface_apply_all.
-
-2001-02-12  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* ripd.c (rip_response_process): Multicast address nexthop check
-	is moved from rip_nexthop_check.
-
-2001-02-08  Matthew Grant <grantma@anathoth.gen.nz>
-
-	* rip_interface.c (ipv4_multicast_join): Use
-	setsockopt_multicast_ipv4.
-	(ipv4_multicast_leave): Likewise.
-	(rip_if_ipv4_address_check): Interface which has IPv4 address can
-	be enabled.
-
-2001-02-08  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* rip_interface.c (rip_interface_delete): To support pseudo
-	interface do not free interface structure.
-	* ripd.c (rip_output_process): If output interface is in simple
-	password authentication mode, we need space for authentication
-	data.
-
-2001-02-01  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* ripd.c (rip_nexthop_check): Fix multicast address nexthop check.
-
-	* zebra-0.91 is released.
-
-2001-01-27  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* ripd.c (show_ip_rip): Show metric infinity route's timeout.
-	(rip_rte_process): If current route is metric infinity, route is
-	replaced with received rte.
-	(rip_redistribute_delete): When redistribute route is deleted,
-	perform poisoned reverse.
-	(rip_redistribute_withdraw): Likewise.
-
-2001-01-25  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* ripd.c (rip_response_process): RIPv2 routing table entry with
-	non directly reachable nexthop was dropped.  The code is changed
-	to treat it as 0.0.0.0 nexthop.
-	(rip_destination_check): Check net 0 address destination.
-	(rip_nexthop_check): New function for checking nexthop address
-	validity.
-
-2001-01-15  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* ripd.c (rip_request_process): Triggered update only send changed
-	route.
-
-	* rip_interface.c: Delete RIP_API part until new implementation
-	comes out.
-
-	* rip_snmp.: Likewise.
-
-	* rip_zebra.c: Likewise.
-
-	* ripd.c: Likewise. 
-
-2001-01-11  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* rip_interface.c (rip_if_init): Remove HAVE_IF_PSEUDO part.
-
-2001-01-09  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* zebra-0.90 is released.
-
-2001-01-01  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* ripd.h (RIP_VTYSH_PATH): Change "/tmp/ripd" to "/tmp/.ripd".
-
-2000-12-25  David Lipovkov <davidl@nbase.co.il>
-
-	* ripd.c (rip_rte_process): When a route is in garbage collection
-	process (invalid with metric 16) and a router receives the same
-	route with valid metric then route was not installed into zebra
-	rib, but only into ripd rib. Moreover , it will never get into
-	zebra rib, because ripd wrongly assumes it's already there.
-	(rip_redistribute_add): When doing redistribute into rip other
-	route (e.g. connected) and the same route exists in ripd rib we
-	changed it in place - bug. Now we don't forget to remove old route
-	from zebra.
-	(rip_timeout): When removing routes from zebra I made sure that we
-	remove route with the metric we have in zebra and not the new
-	one. It doesn't make a difference now,but could be significant
-	when multipath support is done.
-
-2000-12-25  David Lipovkov <davidl@nbase.co.il>
-
-	* rip_zebra.c (rip_metric_unset): Fix bug of metric value unset.
-
-2000-11-25  Frank van Maarseveen <F.vanMaarseveen@inter.NL.net>
-
-	* ripd.c (rip_request_process): Check passive flag of the
-	interface.
-
-2000-11-23  Frank van Maarseveen <F.vanMaarseveen@inter.NL.net>
-
-	* rip_interface.c (rip_multicast_join): When IP_ADD_MEMBERSHIP
-	failed do not set runnning flag to the interface.
-
-2000-11-16  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* ripd.c (rip_output_process): Memory leak related classfull
-	network generation is fixed.
-
-2000-11-16  Frank van Maarseveen <F.vanMaarseveen@inter.NL.net>
-
-	* rip_interface.c (if_check_address): Obsolete pointopoint address
-	check is removed.
-
-2000-11-02  Frank van Maarseveen <F.vanMaarseveen@inter.NL.net>
-
-	* rip_interface.c (if_check_address): Add pointopoint address
-	check.
-	(rip_interface_up): Add check for passive interface when interface
-	goes up.
-
-2000-10-23  Jochen Friedrich <jochen@scram.de>
-
-	* rip_snmp.c: rip_oid and ripd_oid are used in smux_open after it
-	is registered.  So those variables must be static.
-
-2000-10-19  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* rip_interface.c: Change to "no ip rip (send|receive)" command
-	accept version number argument.
-
-2000-10-17  Akihiro Mizutani <mizutani@dml.com>
-
-	* rip_routemap.c (route_set_ip_nexthop_compile): Change "match ip
-	next-hop" from IP address to access-list name.
-
-2000-10-17  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* rip_peer.c: Change ot use linklist.c instaed of newlist.c.
-
-2000-10-16  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* rip_offset.c: Change to use linklist.c instead of newlist.c.
-
-2000-10-02  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* zebra-0.89 is released.
-
-2000-09-26  Akihiro Mizutani <mizutani@dml.com>
-
-	* rip_routemap.c (match_ip_nexthop): Add next-hop format check.
-
-2000-09-18  David Lipovkov <dlipovkov@OpticalAccess.com>
-
-	* rip_interface.c (ripd_api_get_if_rx_version): Corrects rip SNMP
-	and rip API functions dealing with rip version.
-
-	* rip_snmp.c (Status_Valid): SNMPv2-TC TEXTUAL-CONVENTION.
-
-2000-09-10  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* rip_snmp.c (rip2IfLookup): Use rip_ifaddr_lookup_next() instead
-	of rip_if_lookup_next().
-
-	* rip_interface.c (rip_enable_network_lookup): Interface enable
-	check by interface's address with /32 prefix.
-
-	* ripd.c (rip_read): When RIP is configured with authentication
-	and no authentication in incoming packet, drop the packet.
-
-	* rip_interface.c (rip_interface_reset): RIP_AUTH_SIMPLE_PASSWORD
-	is default mode of authentication.
-	(rip_interface_new): Likewise.
-	(no_ip_rip_authentication_mode): Likewise.
-
-	* ripd.c (rip_read): Likewise.
-
-2000-09-10  David Lipovkov <davidl@nbase.co.il>
-
-	* rip_snmp.c: Set ASN_INTEGER v->type where it is needed.
-
-2000-09-08  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* ripd.c (rip_auth_simple_password): Simple password
-	authentication using key-chain.
-	(rip_write_rte): Likewise.
-
-	* rip_interface.c (ip_rip_authentication_key_chain): Add check for
-	authentication string configuration.
-
-2000-09-08  Akihiro Mizutani <mizutani@dml.com>
-
-	* ripd.c (rip_write_rte): Add check for ri->auth_str.
-
-2000-09-07  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* ripd_api.h: New file is added.
-
-2000-08-22  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* ripd.c (rip_rte_process): rip_route_process() is renamed to
-	rip_rte_process() to clarify meanings of the function.
-	rip_route_process() is newly added to process RIP route selection.
-
-2000-08-18  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* ripd.c (rip_incoming_filter): Extract incoming filter code to
-	function from rip_route_process(). Add check for all interface
-	filter.
-	(rip_outgoing_filter): Extract incoming filter code to function
-	from rip_output_process().  Add check for all interface filter.
-
-	* rip_zebra.c (rip_redistribute_clean): Reset redistribute status
-	when "no router rip" is performed.
-
-	* rip_interface.c (rip_interface_clean): Reset interface's RIP
-	enable status.
-
-2000-08-17  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* ripd.c (rip_route_process): When metric infinity is received the
-	route is removed from service immediately.
-	(rip_timeout): Likewise.
-	(rip_garbage_collect): Do not delete route in garbage collection.
-	(rip_output_process): Check metric_out exceed metric infinity.
-
-	* zebra-0.88 is released.
-
-2000-08-15  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* ripd.c (rip_distance_apply): Unlock node when there is matched
-	node.
-
-2000-08-13  Akihiro Mizutani <mizutani@dml.com>
-
-	* rip_routemap.c (match_ip_nexthop): Add check for IP address
-	validness.
-	(no_set_metric): Add new ALIAS.
-
-2000-08-07  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* ripd.h (struct rip ): Add distance.
-
-2000-08-05  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* rip_zebra.c (rip_zebra_ipv4_add): Use new Zebra api to register
-	routes.  Pass RIP metric value to zebra.
-
-2000-08-02  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* rip_main.c (main): Make struct thread thread from global
-	variable to local variable in main.
-
-2000-08-06  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* ripd.c (rip_packet_dump): Add MD5 authentication dump function.
-	(rip_auth_md5): RIP MD5 authentication packet receive works.
-
-2000-08-02  David Lipovkov <davidl@nbase.co.il>
-
-	* rip_interface.c (rip_if_init): Install interface "pseudo"
-	commands.
-	(rip_interface_delete): Do not call if_delete() when interface is
-	pseudo interface.
-
-2000-07-31  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* rip_interface.c (ip_rip_authentication_mode): "ip rip
-	authentication mode (md5|text)" is added.
-	(ip_rip_authentication_key_chain): "ip rip authentication
-	key-chain KEY-CHAIN" is added.
-	(rip_interface_clean): Clean all interface configuration.
-	(rip_interface_reset): Reset all interface configuration.
-	(rip_clean_network): Clean rip_enable_network.
-
-	* ripd.h (struct rip_interface): Add key_chain member.
-
-	* ripd.c: Include md5-gnu.h.
-
-2000-07-30  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* ripd.h (RIP_NO_AUTH): Change RIP_NO_AUTH value from 1 to 0.
-
-	* ripd.c (rip_authentication): Use RIP_AUTH_SIMPLE_PASSWORD
-	instead of raw value 2.
-	(rip_write_rte): Likewise.
-	(rip_write_rte): Check ri->auth_type instead of ri->auth_str.
-
-2000-07-30  David Lipovkov <davidl@nbase.co.il>
-
-	* rip_interface.c (rip_if_down): Do not delete ZEBRA_ROUTE_KERNEL
-	route.
-
-2000-07-27  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* ripd.c (rip_update_process): Add "passive-interface" command.
-
-	* ripd.h (struct rip_interface): Add passive member to struct
-	rip_interface.
-
-2000-07-24  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* rip_interface.c (rip_if_init): Multiple RIP routes for one
-	prefix change.  The codes are enclosed by #ifdef NEW_RIP_TABLE.
-
-2000-07-24  Akihiro Mizutani <mizutani@dml.com>
-
-	* rip_interface.c (rip_if_init): Use install_default() for
-	INTERFACE_NODE.
-
-2000-07-24  Kunihiro Ishiguro <kunihiro@zebra.org>
-
-	* ripd.c: First update timer will be invoked in two seconds.
-
-2000-07-09  Jochen Friedrich <jochen@scram.de>
-
-	* rip_snmp.c: Local function definitions to static.  Add INTEGER
-	ASN_INTEGER and TIMETICKS ASN_TIMETICKS definition.
-	(rip2PeerLookup): Peer with domain lookup implemented.
-	(rip2PeerTable): Temporary disable RIP2PEERLASTUPDATE value
-	support due to unknown SNMP agent startup time.
-
-2000-07-05  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* ripd.h: Sweep obsolete definitions.
-
-	* rip_interface.c (rip_split_horizon): Add "ip split-horizon"
-	command.
-
-	* ripd.c (rip_output_process): Remove split_horizon argument.
-	(rip_update_process): Likewise.
-
-	* ripd.h (struct rip_interface): Add split_horizon flag to struct
-	rip_interface.
-
-2000-07-04  Akihiro Mizutani <mizutani@dml.com>
-
-	* ripd.c (rip_version): Change VERSION to <1-2>.
-	Add "no version" command.
-
-2000-07-03  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* rip_zebra.c (rip_redistribute_type_metric): "redistribute TYPE
-	metric <0-16>" command is added.
-
-	* rip_routemap.c (route_set_metric): Set metric_set when metric is
-	modified.
-
-	* ripd.h (struct rip_info): To check route-map set metric or not,
-	new member metric_set is added to struct rip_info.
-
-	* ripd.c (rip_route_process): Move metric handling code from
-	rip_response_process() to rip_route_process().
-	(rip_output_process): Set output offset-list metric.
-
-2000-07-02  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* rip_offset.c (rip_offset_list): New file for offset-list.
-
-2000-07-02  Akihiro Mizutani <mizutani@dml.com>
-
-	* ripd.h (struct rip ): Add default_metric.
-
-	* ripd.c (rip_default_metric): "default-metric <1-16>" command is
-	added.
-	(config_write_rip): Change configuration order.
-	
-	* rip_zebra.c: Fix help strings.
-
-2000-07-02  David Lipovkov <davidl@nbase.co.il>
-
-	* rip_interface.c (rip_if_init): Add IF_DELETE_HOOK.
-
-2000-07-01  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* ripd.c (rip_output_process): If specified route-map does not
-	exist, it treated as deny all.
-
-2000-06-30  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* rip_routemap.c (rip_route_map_init): Call rip_route_map_update
-	when route-map is deleted.
-
-2000-06-28  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* rip_routemap.c (set_metric): For consistency with bgpd's set
-	metric, value range is set to <0-4294967295>.
-	
-2000-06-28  David Lipovkov <davidl@nbase.co.il>
-
-	* rip_routemap.c (rip_route_map_update): Add check for rip is
-	enabled or not for avoid core dump.
-
-	* rip_debug.c (debug_rip_packet_direct): Fix bug of setting
-	rip_debug_packet flag.
-
-2000-06-13  David Lipovkov <davidl@nbase.co.il>
-
-	* rip_interface.c (rip_interface_delete): All work is done in
-	rip_if_down().
-
-2000-06-06  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* ripd.c (rip_redistribute_delete): Fix bug of missing
-	route_unlock_node() when redistribute route is not found.
-
-2000-06-05  Akihirof Mizutani <mizutani@dml.com>
-
-	* rip_debug.c (rip_debug_init): Disable show debugging in
-	VIEW_NODE like other protocol daemon.
-
-	* rip_routemap.c: Change command argument to more comprehensive.
-
-	METRIC       -> <0-16>
-	IFNAME       -> WORD
-	IP_ADDR      -> A.B.C.D
-	ACCSESS_LIST -> WORD
-
-2000-06-05  David Lipovkov <davidl@nbase.co.il>
-
-	* rip_interface.c (rip_interface_delete): Delete all routes
-	include static and kernel through the interface , because even if
-	the interface is added again there is no guarantee that it will
-	get the same ifindex as before.
-
-2000-05-31  Akihirof Mizutani <mizutani@dml.com>
-
-	* rip_debug.c: Fix rip debug help string.
-
-2000-04-27  Mirko Karanovic <mkaranov@torsel.alcatel.com>
-
-	* rip_interface.c (rip_interface_down): Remove interface from
-	multicast group when interface goes down.
-
-2000-04-03  David Lipovkov <davidl@nbase.co.il>
-
-	* rip_interface.c (rip_interface_down): Implemented rip functions
-	for interface up/down events: rip_interface_up() and
-	rip_interface_down()
-
-2000-03-16  David Lipovkov <davidl@nbase.co.il>
-
-	* rip_zebra.c (rip_zclient_init): Added rip functions for
-	interface up/down events.
-
-2000-02-15  Hidetoshi Shimokawa <simokawa@sat.t.u-tokyo.ac.jp>
-
-	* ripd.c (rip_write_rte): "set metic" in route-map has no effect
-	for RIPv1 in ripd.  It worked fine for RIPv2.
-
-2000-01-17  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* ripd.c (show_ip_protocols_rip): Fix bug of "show ip protocls"
-	mis-display RIP version.
-
-	* ripd.h (struct rip_peer): Add timeout thread to rip_peer
-	structure.
-
-2000-01-16  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* rip_peer.c: Add new file for supporting RIP peer.
-
-1999-12-26  David Lipovkov <davidl@nbase.co.il>
-
-	* ripd.c (rip_authentication): RIP authantication string is 16
-	bytes long.
-
-1999-12-10  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* ripd.c (rip_read): Add check for minimum packet length.
-	Authentication check is moved from rip_process_response() to
-	rip_read().  Patch from David Lipovkov <davidl@nbase.co.il> is
-	applied then add rte number check by Kunihiro Ishiguro
-	<kunihiro@zebra.org>.
-
-1999-12-07  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* ripd.c (rip_response_process): In case of packet is RIPv2 and
-	network is non zero and netmask is zero, apply netmask rule as
-	same as RIPv1.
-
-1999-11-06  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* ripd.c (rip_timers): Fix bug of timers basic argument format.
-
-1999-11-03  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* rip_snmp.c (rip2IfConfAddress): Forgot to include
-	RIP2IFCONFDOMAIN.
-
-1999-10-28  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* ripd.h (struct rip_peer): New structure added.
-
-1999-10-26  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* rip_zebra.c (rip_zebra_ipv4_add): Increment
-	rip_global_route_changes when route change occur.
-	(rip_zebra_ipv4_delete): Likewise.
-
-	* ripd.c (rip_request_process): Increment rip_global_queries when
-	reply to the query is sent.
-
-1999-10-25  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* rip_debug.c (rip_debug_reset): Reset function added.
-
-	* ripd.c (rip_update_process): Logging bug is fixed. 
-
-1999-10-10  Marc Boucher <marc@mbsi.ca>
-
-	* ripd.c (config_write_rip): Add config_write_distribute() call.
-
-1999-09-29  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* ripd.c (rip_distribute_update): Fix bug of access-list
-	prefix-list updates.
-
-1999-09-10  VOP <vop@unity.net>
-
-	* rip_zebra.c: Add redistribute route-map feature.
-
-1999-09-10  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* ripd.c (rip_response_process): Add check for given prefix is
-	given mask applied one.
-
-1999-09-03  VOP <vop@unity.net>
-
-	* rip_interface.c (rip_interface_multicast_set): Bug fix about
-	setting multicast interface.
-
-1999-09-02  VOP <vop@unity.net>
-
-	* rip_routemap.c: New file added.
-
-1999-09-02  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* ripd.c (show_ip_protocols_rip): Show next update time.
-	(show_ip_protocols_rip): Show redistribute information.
-
-1999-08-25  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* RIPv2-MIB.txt: New file added.
-
-	* rip_snmp.c: New file added.
-
-1999-08-24  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* rip_interface.c (ip_rip_authentication_string): RIPv2
-	authentication command is added.
-
-1999-08-23  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* rip_interface.c (rip_interface_multicast_set): Process of
-	setting IP_MULTICAST_IF on specific interface.
-
-	* ripd.c (rip_read): Add packet size check.
-
-1999-08-16  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* ripd.c (rip_request_process): Fill in RIP_METRIC_INFINITY with
-	network byte order using htonl ().
-	(rip_response_process): Pass host byte order address to IN_CLASSC
-	and IN_CLASSB macro.
-
-1999-08-08  davidm@nbase.co.il (David Mozes)
-
-	* rip_zebra.c (rip_zebra_read_ipv4): Fix split horizon problem.
-
-1999-07-03  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* ripd.c (rip_timer_set): Function added.
-
-1999-07-01  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* rip_debug.c: New file added.
-	rip_debug.h: New file added.
-
-1999-07-01  Rick Payne <rickp@rossfell.co.uk>
-
-	* rip_zebra.c (zebra_init): Install standard commands to
-	ZEBRA_NODE.
-
-1999-06-01  David Luyer <luyer@ucs.uwa.edu.au>
-
-	* ripd.c (rip_process_route): Add support for RIP version 1.
-
-1999-05-29  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* rip_zebra.c: Change to use lib/zclient.[ch].
-
-1999-05-20  Carlos Alberto Barcenilla <barce@frlp.utn.edu.ar>
-
-	* ripd.c (rip_add_route): Change the existance route's metric check
-          to the condition specified by RFC2453. 
-	
-1999-05-17  Carlos Alberto Barcenilla <barce@frlp.utn.edu.ar>
-
-	* ripd.c (rip_process_route): Add the if metric to the route metric.
-
-	* ripd.c (rip_add_route): Deleted add if metric to the route.
-
-1999-05-16  Carlos Alberto Barcenilla <barce@frlp.utn.edu.ar>
-
-	* rip_interface.c (if_valid_neighbor): New function.
-
-	* ripd.c (rip_process_route): Added check whether the datagram
-	is from a valid neighbor.
-	
-1999-05-15  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* ripd.c (rip_process_route): Set interface pointer to rinfo.
-
-1999-05-15  Carlos Alberto Barcenilla <barce@frlp.utn.edu.ar>
-
-	* ripd.c (rip_check_address): Unicast and not net 0 or 127 check
-	added.
-
-1999-05-14  Stephen R. van den Berg <srb@cuci.nl>
-
-	* rip_main.c (signal_init): SIGTERM call sigint.
-	(sigint): Loggging more better message.
-
-1999-05-10  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* ripd.c (rip_add_route): Fix previous route_unlock_node() chenge.
-
-	* rip_main.c (main): Change default zlog output to ZLOG_STDOUT for
-	debugging.
-
-1999-05-09  Patrick Koppen <koppen@rhrk.uni-kl.de>
-
-	* rip_interface.c (rip_request): Fix old semantics for fetching
-	connected address.
-
-	* ripd.c (rip_add_route): Update timer when the route is updated.
-
-1999-05-09  Carlos Alberto Barcenilla <barce@frlp.utn.edu.ar>
-
-	* rip_zebra.c (struct zebra): Add ridist_static, ridist_connect,
-	redist_rip, redist_ripng.  
-
-	* rip_zebra.c (zebra_create): Updated for current zebra method.
-
-	* ripd.c (rip_add_route): Add missing route_unlock_node().
-
-1999-05-03  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* ripd.c (rip_add_route): Add metric check.  Reported by Carlos
-	Alberto Barcenilla <barce@frlp.utn.edu.ar>.
-
-1999-02-18  Peter Galbavy  <Peter.Galbavy@knowledge.com>
-
-	* syslog support added
-
-1998-12-13  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* ripd.c (rip_announce_func): Apply new lib functions.
-
-1998-12-09  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* ripd.c (config_write_rip): Delete vector v argument.
-	* rip_zebra.c (config_write_zebra): Likewise.
-	* rip_interface.c (interface_config_write): Likewise.
-
-1998-09-07  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* rip_announce.c (rip_rib_close): When ripd terminates delete all
-	added route.
-
-1998-09-01  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* rip_interface.c: return read packet size.
-
-1998-05-18  Yamshita TAKAO  <jargon@lares.dti.ne.jp>
-
-	* ripd.h: Modify for compile on Solaris.
-
-1998-05-07  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* ripd.c: DEFUN function return CMD_SUCCESS.
-		  change xmalloc to XMALLOC macro.
-	
-1998-05-03  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* rip_main.c: change CONFDIR to SYSCONFDIR.
-
-1998-05-01  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* .cvsignore: added.
-
-1998-02-04  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* rip_interface.c (config_write_interface): correct ADVERTISE spell.
-
-	* rip_main.c (main): add usage() and make cleanup.
-
-1998-01-05  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* ripd.c (rip_version): add rip version command.
-
-1998-01-04  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* rip_interface.c (zebra_get_interface): added to get
-	interface's information.
-
-	* ChangeLog: create.
diff --git a/ripngd/ChangeLog b/ripngd/ChangeLog
deleted file mode 100644
index b8c24c6..0000000
--- a/ripngd/ChangeLog
+++ /dev/null
@@ -1,388 +0,0 @@
-2007-04-27 Andrew J. Schorr <ajschorr@alumni.princeton.edu>
-
-	* ripngd.c: (ripng_vty_out_uptime) Remove unused variable timer_now.
-
-2007-04-12 Emmanuel Vize <emmanuel.vize@6wind.com>
-
-        * ripngd.c: (ripng_vty_out_uptime and show_ipv6_ripng_status) 
-          Use new thread_timer_remain_second to display properly the timers 
-          (reported patch from Andrew J. Schorr in ripd.c)
-
-2006-05-11 Paul Jakma <paul.jakma@sun.com>
-
-	* ripng_interface.c: (ripng_interface_address_add) Remove
-	  unneeded NULL check, Coverity CID #72.
-
-2006-05-08 Paul Jakma <paul.jakma@sun.com>
-
-	* ripng_routemap.c: (route_set_ipv6_nexthop_local_compile) bug
-	  #242, s/in_addr/in6_addr to fix crash. 
-	  Thanks to jithinvachery+quagga@gmail.com.
-
-2006-01-19 Paul Jakma <paul.jakma@sun.com>
-
-        * (general) various miscellaneous compiler warning fixes.
-          Remove redundant break statements from switch clauses 
-          which return. 
-          return from main, not exit, cause it annoys SOS. 
-          Remove stray semi-colons which cause empty-statement 
-          warnings.
-
-2005-10-01 Andrew J. Schorr <ajschorr@alumni.princeton.edu>
-
-	* ripng_zebra.c: (ripng_redistribute_write) Remove local hard-coded
-	  table str[].  Replace str[i] with new library function
-	  zebra_route_string(i).
-	* ripngd.c: Remove local hard-coded table route_info[].
-	  (show_ipv6_ripng) Use new library function zebra_route_char() instead
-	  of table route_info[].
-
-2005-08-27 Hasso Tepper <hasso at quagga.net>
-
-	* ripng_zebra.c, ripngd.[ch]: Pass metric info to the zebra daemon.
-
-2005-04-11 Andrew J. Schorr <ajschorr@alumni.princeton.edu>
-
-	* ripng_zebra.c (ripng_redistribute_unset, ripng_redistribute_clean):
-	  Change 2nd arg to zebra_redistribute_send from zclient->sock
-	  to zclient.
-
-2005-04-08 Hasso Tepper <hasso at quagga.net>
-
-	* ripngd.[hc], ripng_interface.c, ripng_peer.c: inet6_ntoa() takes
-	  argument now by value.
-
-2005-04-05 Hasso Tepper <hasso at quagga.net>
-
-	* ripngd.[hc]: Remove inet6_ntop() and any usage of it. inet6_ntoa()
-	  from lib is used now.
-	* ripng_interface.c: inet6_ntop() -> inet6_ntoa().
-	* ripng_peer.c: inet6_ntop() -> inet6_ntoa().
-
-2005-04-02 Andrew J. Schorr <ajschorr@alumni.princeton.edu>
-
-	* ripng_interface.c: (ripng_interface_delete) After deleting, set
-	  ifp->ifindex to IFINDEX_INTERNAL.
-
-2005-01-30 Andrew J. Schorr <ajschorr@alumni.princeton.edu>
-
-	* ripng_interface.c: (ripng_multicast_join) Save errno before calling
-	  ripngd_privs.change.
-
-2005-01-04 Andrew J. Schorr <ajschorr@alumni.princeton.edu>
-
-	* ripngd.c: (ripng_recv_packet) Use ZCMSG_FIRSTHDR instead of
-	  CMSG_FIRSTHDR.
-
-2004-12-16 Andrew J. Schorr <ajschorr@alumni.princeton.edu>
-
-	* ripng_nexthop.c: Replace NEXTHOP_OUT macro with NEXTHOP_OUT_PTR,
-	  since it's not really OK to take the address of a ternary expression.
-	  (_ripng_rte_cmp,ripng_rte_send) Use new NEXTHOP_OUT_PTR macro
-	  instead of NEXTHOP_OUT.
-
-2004-12-08 Andrew J. Schorr <ajschorr@alumni.princeton.edu>
-
-	* *.c: Change level of debug messages to LOG_DEBUG.
-
-2004-12-07 Andrew J. Schorr <ajschorr@alumni.princeton.edu>
-
-	* ripng_main.c: (main) The 2nd argument to openzlog has been removed.
-
-2004-12-03 Andrew J. Schorr <ajschorr@alumni.princeton.edu>
-
-	* ripng_main.c: (sighup) Remove spurious terminating message.
-	  (sigint) Use zlog_notice for termination message.
-	  (main) Issue a startup announcement using zlog_notice.
-
-2004-11-25 Hasso Tepper <hasso at quagga.net>
-
-	* ripng_main.c: Make group to run as configurable.
-
-2004-10-26 Hasso Tepper <hasso at quagga.net>
-
-	* ripng_debug.c: Fix help of "show debugging ripng" command.
-
-2004-10-11 Hasso Tepper <hasso at quagga.net>
-
-	* *.c: Make more strings const.
-
-2004-10-08 Hasso Tepper <hasso at quagga.net>
-
-	* *.[c|h]: Fix compiler warnings: make strings const, signed ->
-	  unsigned etc.
-
-2004-09-26 Hasso Tepper <hasso at quagga.net>
-
-	* ripingd.c: Access list hook argument function must have struct
-	  access_list * argument. Solution taken from ripd.
-	* ripngd.c, ripnf_nexthop.c: Fix compiler warnings.
-
-2004-09-23 Hasso Tepper <hasso at quagga.net>
-
-	* *.[c|h]: list -> struct list *, listnode -> struct listnode *.
-
-2004-09-17 Paul Jakma <paul@dishone.st>
-
-	* ripngd.c: move setsockopt_so_recvbuf to lib.
-
-2004-07-23  Hasso Tepper  <hasso@estpak.ee>
-
-	* ripng_interface.c, ripng_nexthop.c: use ifp->mtu6 instead of
-	  ifp->mtu.
-
-2004-07-01  Greg Troxel  <gdt@fnord.ir.bbn.com>
-
-	* ripng_interface.c (ripng_multicast_join): Use privs to do join,
-	to work around bug on gif(4) on NetBSD 1.6.2.
-
-2004-05-11 Paul Jakma <paul@dishone.st>
-
-	* ripng_nexthop.h: SUNOS_5 does not define s6_addr32
-	  catch ifndef(s6_addr32) && defined(SUNOS_5) and define
-	  it ourselves based on the S10 _KERNEL guarded define.
-	  
-2004-05-08 Paul Jakma <paul@dishone.st>
-
-	* ripng_{interface,zebra}.c: sync with zclient changes
-
-2004-01-03  Greg Troxel  <gdt@ahi.ir.bbn.com>
-
-	* ripng_interface.c (ripng_multicast_join): If IPV6_JOIN_GROUP
-	returns EADDRINUSE, consider the join successful.  This happens
-	when an interface goes down and comes back because
-	ripng_multicast_leave does not invoke the LEAVE_GROUP operation if
-	the interface is down.  Solves problem of ripng stopping working
-	on an interface which goes down and then comes back up (on NetBSD).
-
-2003-05-25 Hasso Tepper <hasso@estpak.ee>
-  
-  * Revert ripng_ifrmap stuff because ripd uses it now as well.
-  * Merge ripngd part of 6Wind patch from Vincent Jardin 
-    <vjardin@wanadoo.fr>.
-
-2003-04-23 Hasso Tepper <hasso@estpak.ee>
-
-	* {ripng_ifrmap,ripngd}.c: fix "router xxx" node commands in vtysh
-
-2003-04-19 Hasso Tepper <hasso@estpak.ee>
-
-	* rip_routemap.c: sync daemon's route-map commands to have same
-	syntax
-
-2002-07-07  Kunihiro Ishiguro  <kunihiro@ipinfusion.com>
-
-	* zebra-0.93 released.
-
-2001-08-28  NOGUCHI Kay <kay@v6.access.co.jp>
-
-	* ripngd.c (no_ripng_route): route_unlock_node () is not needed.
-
-2001-08-26  NOGUCHI Kay <kay@v6.access.co.jp>
-
-	* ripngd.h (struct ripng_interface): Add passive interface option.
-
-2001-08-19  Kunihiro Ishiguro  <kunihiro@ipinfusion.com>
-
-	* zebra-0.92a released.
-
-2001-08-15  Kunihiro Ishiguro  <kunihiro@ipinfusion.com>
-
-	* zebra-0.92 released.
-
-2001-08-07  Akira Kato <kato@wide.ad.jp>
-
-	* ripngd.c (ripng_timers): "timers basic" argument is fixed.
-
-2001-02-01  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* zebra-0.91 is released.
-
-2001-01-09  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* zebra-0.90 is released.
-
-2001-01-01  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* ripngd.h (RIPNG_VTYSH_PATH): Change "/tmp/ripngd" to
-	"/tmp/.ripngd".
-
-2000-10-02  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* zebra-0.89 is released.
-
-2000-09-20  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* ripngd.c (ripng_send_packet): Use CMSG_SPACE instead of sizeof
-	hack.  Revert privious alignment patch.
-
-2000-09-20  URA Hiroshi <ura@hiru.aoba.yokohama.jp>
-
-	* ripngd.c (ripng_send_packet): Fix an alignment bug. Thus ripngd
-	can't send packets.
-
-2000-09-10  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* ripng_interface.c (ripng_interface_address_delete): Connected
-	address delete treatment added.
-
-2000-08-22  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* ripng_routemap.c (route_set_metric_compile): When checking '-'
-	character, argv[1] should be argv[0].  Reported by SHIRASAKI
-	Yasuhiro <yasuhiro@ocn.v6.ntt.net>.
-
-2000-08-17  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* zebra-0.88 is released.
-
-2000-06-06  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* ripngd.c (ripng_route_process): Clear prefix_ipv6 before using
-	it.
-	(ripng_redistribute_delete): Fix bug of missing
-	route_unlock_node() when redistribute route is not found.
-	(ripng_redistribute_delete): Make it sure that timers are off.
-	(ripng_redistribute_delete): Likewise.
-
-2000-01-19  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* ripngd.c (ripng_route_process): Fix bug of mis-checking of same
-	route.
-	(show_ipv6_ripng): Include ifindex to "show ipv6 ripng" output.
-
-1999-11-12  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* ripngd.c (ripng_output_process): Use MINMTU when mtu value is
-	not available.
-
-1999-11-05  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* ripngd.c (ripng_output_process): Calculate max RTE count from
-	interface MTU value.
-
-1999-09-29  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* ripngd.c (ripng_distribute_update): Fix bug of updating
-	access-list and prefix-list.
-
-1999-09-07  URA Hiroshi <ura@hiru.aoba.yokohama.jp>
-
-	* ripngd.c (ripng_recv_packet): Change CMSG_DATA cast from (u_char
-	*) to (int *).  (u_char *) does not work for NetBSD-currnet on
-	SparcStation 10.
-
-1999-08-15  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* ripngd.c (ripng_request_process): When request packet comes,
-	check RIPng process is enabled on the interface.
-	(ripng_redistribute_withdraw): Delete routes when `no
-	redistribute' is executed.
-
-1999-08-13  Yasuhiro Ohara  <yasu@sfc.wide.ad.jp>
-
-	* ripng_zebra.c (ripng_redistribute_ospf6_cmd): Add OSPF6
-	redistribute command.
-
-1999-07-21  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* ripngd.c (default_information_originate): Add
-	default-information command.
-
-1999-07-19  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* ripngd.c (ripng_route_process): rip_add_route() and
-	rip_delete_route() are deleted.  Both functions are integrated
-	into ripng_route_process().
-	(ripng_request_process): Proper reply for request message.
-
-	* ripng_routemap.c: New file added.
-
-1999-07-18  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* ripngd.c (ripng_nexthop_rte): RIPng next hop routine is
-	rewritten.
-	(show_ipv6_ripng): Change `show ip ripng' to `show ipv6 ripng'.
-	(ripng_response_process): RIPng incoming packet's hop count check
-	added.
-	(ripng_response_process): Add strict RTE checking.
-
-1999-07-03  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* ripngd.c (ripng_add_route): Fix metric compare bug.
-
-1999-06-25  itojun@iijlab.net
-
-	* ripngd.c (ripng_distribute_in): "distribute in" filter in ripngd
-	actually work.
-
-1999-05-25  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* ripngd.c (ripng_zebra): Send each ripng information by separate
-	zebra packet.
-
-1999-05-15  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* ripng_interface.c (if_add_multicast): Change log to zlog.
-
-1999-05-10  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* ripng_interface.c (ripng_zebra_get_interface): Add function.
-
-	* ripng_zebra.c (redistribute_ripng): Delete function because
-	redistirbute the routes to the zebra daemon is now default
-	behavior.
-
-1999-05-09  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* ripngd.conf.sample: Change network to route statement.
-
-1999-03-25  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* ripngd.c: Old non Advanced API version ripng_send_packet and
-	ripng_recv_packet is removed.
-	* ripng_radix.c: File removed.
-
-1998-12-15  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* Now I assume KAME support Advanced API and use sendmsg/recvmsg.
-
-1998-12-13  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* ripng_interface.c: Delete old ifa (interface address) related
-	functions.
-
-1998-12-10  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* ripng_debug.[ch]: New file.
-
-	* ripngd.c (ripng_supply): Do not send header only RIPng packet.
-	Change `network' statement to `route' statement.
-	(ripng_request_process): Reply to RIPng REQUEST packet.
-
-1998-12-09  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* ripngd.c (ripng_config_write): Delete vector v argument.
-	* ripng_zebra.c (zebra_config_write): Likewise.
-	* ripng_interface.c (interface_config_write): Likewise.
-
-1998-12-07  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* ripng_route.h: New file.
-
-	* ripng_interface.c:  Delete #include <linux/in6.h>.
-	ripng_main.c: likewise.
-	ripng_radix.c: likewise.
-	ripng_route.c: likewise.
-	ripng_zebra.c: likewise.
-	ripngd.c: likewise.
-
-1998-12-06  Yasuhiro Ohara <yasu@sfc.wide.ad.jp>
-
-	* ripngd.h (IPV6_ADD_MEMBERSHIP): If IPV6_ADD_MEMBERSHIP is not
-	defined. Define IPV6_ADD_MEMBERSHIP as IPV6_JOIN_GROUP.
-
-1998-09-15  HEO SeonMeyong  <seirios@matrix.iri.co.jp>
-
-	* all Hydrangea define is changed to KAME.
-
diff --git a/solaris/ChangeLog b/solaris/ChangeLog
deleted file mode 100644
index 65135d9..0000000
--- a/solaris/ChangeLog
+++ /dev/null
@@ -1,164 +0,0 @@
-2008-07-03 Paul Jakma <paul.jakma@sun.com>
-
-	* quagga.{xml,init}.in: Sync with OpenSolaris SFW. This changes the
-	  SMF schema used, from the SMF schema supplied initially with
-	  Quagga, to the version which was approved by the Sun PSARC for
-	  inclusion into Solaris. This change is incompatible. Settings,
-	  such as vty_port, etc. will not transfer over. The Sun schema is
-	  however supported by Sun, and supports running Quagga in a zone
-	  with IP instances, and configuration via the routeadm utility.
-
-2008-01-13 Paul Jakma <paul.jakma@sun.com>
-
-	* Makefile.am: pkg target should depend on the 'depend.%' files.
-	  Crops up now that solaris/ doesn't get descended into by
-	  general Quagga build.
-
-2007-02-22 Paul Jakma <paul.jakma@sun.com>
-
-	* quagga.{xml,init}.in: Add licence boilerplate to ensure
-	  licence terms are clear.
-
-2006-04-03 Paul Jakma <paul.jakma@sun.com>
-
-	* quagga.xml.in: oops, ipvX-routing services don't exist yet in
-	  any Solaris builds.
-
-2006-03-16 Paul Jakma <paul.jakma@sun.com>
-
-	* prototype.smf.in: Oops, continue to install manifest to
-	  var/svc/manifest/network for now.
-
-2006-03-13 Alan Maguire <alan.maguire@sun.com>
-
-	* quagga.xml.in: Change the naming of services and instances.
-	  network/routing/quagga:<daemon> may be neat and tidy, but
-	  it's at odds with SMF convention elsewhere that demands
-	  the service be named for what it does, and the instance name
-	  describe the implementation (e.g. network/smtp:sendmail).
-	  Remove call to method script for 'stop', SMF can do that
-	  itself.
-	  Enumerate the privileges required in the SMF manifest, with the
-	  method_credential element.
-	  Dont try provide seperate properties for each argument, it's
-	  just tedious, particularly when they can no longer be
-	  inherited from a common quagga service - use a single
-	  "daemon-args" property, defaulting to -P 0.
-	  Specify authorisation for the 'routeadm' utility and for
-	  RBAC.
-
-2006-03-13 Paul Jakma <paul.jakma@sun.com>
-
-	* quagga.init.in: Update to match SMF manifest changes.
-	  If run from an SMF environment, assume method is start.
-	  Offer a more tradition init script interface for pre-SMF.
-	  Enable zebra for the link-state daemons.
-	  Don't allow daemons to start in non-global zones, except
-	  for bgpd - it doesn't have to care about underlying
-	  networking much.
-	  Remove all the svcprop calls, SMF or the user will supply any
-	  arguments on the command-line.
-	* depend.smf.in: Add dependency on SUNWroute, which provides
-	  routeadm, which provides /var/svc/manifest/network/routing
-	* prototype.smf.in: Install manifest to 
-	  var/svc/manifest/network/routing.
-
-2006-02-19 Paul Jakma <paul.jakma@sun.com>
-
-	* depend.*: renamed to depend.*.in.
-	* depend.*.in: Add version dependency.
-	* Makefile.am: Generate depend.* from depend.*.in
-	  Distribute the depend.*.in files rather than the depend.*
-	  files.
-	* quagga.init.in: Enable zebra if one of the link-state
-	  daemons is started.
-	  Restart method is not required - SMF handles that.
-	* quagga.xml.in: Remove restart method details.
-
-2005-11-04 Paul Jakma <paul.jakma@sun.com>
-
-	* prototype.dev.in: lib/md5-gnu.h is now lib/md5.h
-
-2005-08-16 Paul Jakma <paul.jakma@sun.com>
-
-	* README.txt: point to the opensolaris.org sources for the SMF 
-	  manifest class scripts. Make step 3 slightly more explicit about
-	  what 'this directory' is.
-	  
-2005-06-15 Paul Jakma <paul.jakma@sun.com>
-
-	* quagga.xml.in: Pass the FMRI to the method, removing need for
-	  daemon_name property and deducing the FMRI.
-	  remove the empty config_file and pid_file definitions, they just
-	  make things difficult in the method script, cause it then has to
-	  deal with svcprop returning "" for defined empty properties.
-	  Remove daemon_name everywhere.
-	* quagga.init.in: Take the FMRI as an argument
-	  Remove deducing the FMRI from the defunct daemon_name property.
-	  Use svcprop -q to test for presence of a property first.
-	  Default vty_port to 0 and vty_addr to 127.1 if equivalent
-	  SMF properties are not set.
-	  Deduce the pid_file, we can infer it from @quagga_statedir@ I
-	  think, it's probably not useful to allow it to be configurable
-	  as a property anyway.
-	  /var/run/ is on tmpfs on Solaris, so we probably will need
-	  to create @quagga_statedir@ first run after boot.
-	  Use @sbindir@, not /usr/local/sbin.
-	* README.txt: updated to match changed SMF manifest and
-	  its changed service, instance and property group names.
-	  
-2005-06-02 Paul Jakma <paul.jakma@sun.com>
-
-	* quagga.xml.in: Fix mistake in bgpd definition. Change dependency
-	  on zebra to optional. Remove the duplicated stability statements.
-	* quagga.init.in: svcprop should check PACKAGE_TARNAME, not _NAME.
-	  no need to check for config file either, there's already a
-	  dependency in the manifest.
-
-2005-05-13 Paul Jakma <paul.jakma@sun.com>
-
-	* quagga.xml.in: Sigh, XML child elements are order-sensitive.
-	* prototype.doc.in: info/dir doesnt get created always.. comment
-	  out for now, likely needs to be done with an install method.
-	* prototype.daemons.in: Move the Solaris 10 SMF specific stuff to
-	  a seperate package.
-	* depend.smf: dependencies for smf package
-	* pkginfo.smf.tmpl.in: pkginfo for smf
-	* prototype.smf.in: prototype for smf
-	* Makefile.am: Add smf to pkg_names
-	  
-2005-04-26 Paul Jakma <paul.jakma@sun.com>
-
-	* quagga.xml.in: New, better, single integrated manifest for all
-	  the services, courtesy of alan.maguire@sun.com.
-	* {{ospf,ospf6,rip,ripng,bgp}d,zebra}.xml.in: removed due to
-	  previous
-	* quagga.init.in: Use the package tarname for properties, use
-	  the correct daemon name variable.
-	* Makefile.am: Updated to match single manifest
-	* prototype.daemons.in: ditto
-
-2005-04-21 Paul Jakma <paul.jakma@sun.com>
-
-	* Makefile.am: pkginfo.%.tmpl is a generated file, srcdir prefix
-	  is not appropriate.
-
-2005-04-13 Paul Jakma <paul.jakma@sun.com>
-
-	* Makefile.am: {i,r}.manifest are (or will be) system provided files
-	  and not in CVS, hence dont depend on them or distribute them.
-
-2005-04-11 Paul Jakma <paul.jakma@sun.com>
-
-	* (all) Initial check-in of files for building S10 packages
-	* protototype.*.in: package prototype files for SysV packages
-	* *.xml.in: SMF manifests for Quagga daemons
-	* pkginfo.*.tmpl.in: daemon specific pkginfo, refererenced
-	  by prototype files.
-	* pkginfo.tmpl.in: Quagga common pkginfo bits
-	* quagga.init.in: SMF method script
-	* Makefile.am: Automake file for building packages
-	* depend.*: Solaris 10 dependencies for packages, referenced by
-	  prototype files.
-	* .cvsignore: Add built files
-	* README.txt: new file, package creation, install, usage notes.
diff --git a/tests/ChangeLog b/tests/ChangeLog
deleted file mode 100644
index 1869651..0000000
--- a/tests/ChangeLog
+++ /dev/null
@@ -1,160 +0,0 @@
-2008-06-07 Paul Jakma <paul@jakma.org
-
-	* bgp_mp_attr_test.c: MP_(UN)REACH_NLRI unit tests
-
-2008-02-23 Paul Jakma <paul.jakma@sun.com>
-
-	* aspath_test.c: Test for 0-ASN sequences that still have data.
-
-2007-12-22 Paul Jakma <paul.jakma@sun.com>
-
-	* bgp_capability_test.c: Test for empty capabilities.
-
-2007-09-27 Paul Jakma <paul.jakma@sun.com>
-
-	* aspath_test.c: Test dupe-weeding from sets.
-	  Test that reconciliation merges AS_PATH and AS4_PATH where
-	  former is shorter than latter.
-
-2007-09-26 Paul Jakma <paul.jakma@sun.com>
-
-	* aspath_test.c: Test AS4_PATH reconcilation where length
-	  of AS_PATH and AS4_PATH is same.
-
-2007-09-25 Paul Jakma <paul.jakma@sun.com>
-
-	* bgp_capability_test.c: (general) Extend tests to validate
-	  peek_for_as4_capability.
-	  Add test of full OPEN Option block, with multiple capabilities,
-	  both as a series of Option, and a single option.
-	  Add some crap to beginning of stream, to prevent code depending
-	  on getp == 0.
-
-2007-09-18 Paul Jakma <paul.jakma@sun.com>
-
-	* bgp_capability_test.c: (parse_test) update for changes to
-	  peek_for_as4_capability
-
-2007-09-17 Paul Jakma <paul.jakma@sun.com>
-
-	* bgp_capability_test.c: Test that peer's adv_recv and adv_nego get
-	  set correctly for MP capability and given AFI/SAFI.
-	  Colour OK/failed result so it's easier to find them.
-
-2007-07-27 Paul Jakma <paul.jakma@sun.com>
-
-	* bgp_capability_test.c: new, capability parser unit tests.
-	* Makefile.am: add previous.
-
-2007-07-25 Paul Jakma <paul.jakma@sun.com>
-
-	* aspath_test.c: Exercise 32bit parsing. Test reconcile
-	  function.
-	* ecommunity_test.c: New, test AS4 ecommunity changes, positive
-	  test only at this time, error cases not tested yet.
-	
-2006-12-01 Juergen Kammer <j.kammer@eurodata.de>
-
-	* aspath_test.c: Support asn32 changes, call aspath_parse with 16 bit.
-
-2006-08-26 Paul Jakma <paul.jakma@sun.com>
-
-	* heavy-wq.c: (slow_func_del,slow_func) update to match workqueue
-	  changes
-
-2006-08-06 Paul Jakma <paul.jakma@sun.com>
-
-	* aspath_test.c: (validate) Fix the sense of the aspath_loop_check,
-	  which was the wrong way around and had actually been testing for
-	  aspath_loop_check to be buggy.
-
-2006-05-28 Paul Jakma <paul.jakma@sun.com>
-
-	* test-sig.c: (main) configure logging, there's no terminal
-	  to write to for one thing, but we do want stdout, and we
-	  don't want a test to spam syslog.
-
-2006-03-16 Paul Jakma <paul.jakma@sun.com>
-
-	* heavy-wq.c: (heavy_wq_init) delay is gone from workqueue
-	  spec.
-	* aspath_test.c: (test_segments) Add an AS_SET with redundant
-	  ASNs.
-	  ({empty_prepend,prepend,parse}_test) add static qualifiers
-
-2006-01-16 Paul Jakma <paul.jakma@sun.com>
-
-	* aspath_test.c: (validate) free the temporary aspaths.
-	  (empty_get_test) ditto.
-
-2006-01-10 Paul Jakma <paul.jakma@sun.com>
-
-	* test-stream.c: new file, small unit test for new
-	  resize and {put,get}-quad stream functions.
-	* Makefile.am: build teststream unit test.
-
-2005-11-23 Paul Jakma <paul.jakma@sun.com>
-
-	* aspath_test.c: Add an empty aspath to test segments, and to
-	  compare tests.
-	  Add a segment identical to seq1, but with one extra asn.
-	  Fix bogus free of stream in make_aspath for case where
-	  no stream was allocated (empty path data).
-
-2005-10-11 Paul Jakma <paul.jakma@sun.com>
-
-	* test-privs.c: Privileges unit test.
-	* Makefile.am: build testprivs
-	* aspath_test.c: fix a few sign warnings
-
-2005-09-06 Paul Jakma <paul@dishone.st>
-
-	* aspath_test.c: Test bgp_aspath functionality.
-	* Makefile.am: build aspathtest
-	* ChangeLog: Fix date of previous commit
-
-2005-09-06 Paul Jakma <paul@dishone.st>
-
-	* test-buffer.c: include memory.h
-          (main) call memory_init().
-	
-2004-09-05 Paul Jakma <paul@dishone.st>
-
-	* heavy-wq.c: (slow_func_del,slow_func_err) make them take
-	  void * argument to shut up silly gcc warning.
-	  
-2004-05-25 Paul Jakma <paul@dishone.st>
-
-	* main.c: new file, common 'main' portion which then calls
-	  test_init.
-	* heavy.c: remove common portions now in 'main.
-	* heavy-wq.c: ditto
-	* heavy-thread.c: ditto
-	* heavy*.c: Set the slow_function iteration number lower, to 300, it
-	  was several orders of magnitude too 'slow' to be useful. :)
-	* Makefile.am: main is a source of the tests. heavy should link
-	  to the math library.
-
-2004-05-22 Paul Jakma <paul@dishone.st>
-
-	* heavy-thread.c: Andrew Schorr's adaptation of heavy.c to use a
-	  background thread to avoid responsiveness problems.
-	* Makefile.am: Build heavythread
-
-2004-05-21 Paul Jakma <paul@dishone.st>
-
-	* heavy.c: Add a timer thread to demonstrate thread interactivity,
-	  Add a daemon_exit command to assist with debugging (eg for memory
-	  tracers, etc..)
-
-2004-05-19 Paul Jakma <paul@dishone.st>
-
-	* heavy.c: test programme to show how long-running functions
-	  kill responsiveness. Demonstrating the most niggly problem 
-	  left in bgpd.
-
-2004-05-13 Paul Jakma <paul@dishone.st>
-
-	* test-buffer.c: Andrew's buffer tester
-	* test-memory.c: basic memory tester
-	* Makefile.am: Add new tests
diff --git a/vtysh/ChangeLog b/vtysh/ChangeLog
deleted file mode 100644
index af55c6f..0000000
--- a/vtysh/ChangeLog
+++ /dev/null
@@ -1,500 +0,0 @@
-2008-07-03 MIYAJIMA Mitsuharu <miyajima.mitsuharu@anchor.jp>
-
-	* extract.pl.in: Fix as-range to match CPP output.
-	* vtysh.c: Add missing router_bgp_view_cmd alias.
-
-2008-07-02 MIYAJIMA Mitsuharu <miyajima.mitsuharu@anchor.jp>
-
-	* CMD_AS_RANGE was being used inside command strings, and thus
-	  not being expanded, fix by dequoting.
-
-2007-06-20 Nicolas Deffayet <nicolas@deffayet.com>
-
-	* vtysh.c: (vtysh_write_terminal) Write 'end' when done,
-	  to be consistent with telnet vty, and expected by tools
-	  like rancid.
-
-2007-05-01 David L Stevens <dlstevens@us.ibm.com>
-
-	* vtysh/extract.pl.in: added VTYSH_ZEBRA flag for route-map and
-	  plist
-	* vtysh/Makefile.am: added zebra_routemap.c
-	* vtysh/vtysh.h: added VTYSH_ZEBRA flag to VTYSH_RMAP
-
-2007-04-28 Andrew J. Schorr <ajschorr@alumni.princeton.edu>
-
-	* vtysh.c: (vtysh_log_timestamp_precision,
-	  no_vtysh_log_timestamp_precision) Implement new log timestamp
-	  precision commands: send to all daemons.
-	  (vtysh_init_vty) Install new log timestamp precision commands.
-
-2007-02-12 Juergen Kammer <j.kammer@eurodata.de>
-	* extract.pl: AS4 compatibility for router bgp ASNUMBER
-	* extract.pl.in: AS4 compatibility for router bgp ASNUMBER
-	* vtysh.c: AS4 compatibility for router bgp ASNUMBER
-
-2006-07-27 Andrew J. Schorr <ajschorr@alumni.princeton.edu>
-
-	* vtysh_main.c: (usage) Add new -d and -E options.  And note that
-	  -c can be used multiple times, possibly with embedded linefeeds.
-	  (longopts) Add new -d and -E options.
-	  (main) Add new -d and -E options, and create a linked list to
-	  support multiple -c options.  Do not call vtysh_connect_all until
-	  after vtysh_read_config(config_default) and vtysh_auth have
-	  succeeded.  This prevents the vtysh.conf file from configuring
-	  any daemons, and it ensures that authentication has been passed
-	  before we send any commands to any daemons.  Call vtysh_connect_all
-	  with any daemon name supplied with -d.  If it is unable to connect
-	  to any daemons, issue an error message and exit immediately.
-	  When used in -c mode, call vtysh_execute("enable") before
-	  executing the commands in order to match interactive behavior. 
-	  And detect embedded linefeed chars in -c commands and break them up
-	  appropriately.
-	* vtysh.h: (vtysh_connect_all) Fix proto to reflect new
-	  daemon_name argument, and that it now returns an integer -- the
-	  number of daemons to which we were able to connect.
-	* vtysh.c: (vtysh_connect_all) Add a new daemon_name argument.
-	  If supplied, connect only to that daemon.  And return
-	  the number of daemons to which we were able to connect.
-	  (vtysh_prompt): Performance enhancement -- make struct utsname
-	  static so we call uname to get the hostname only once.
-
-2006-05-24 Paul Jakma <paul.jakma@sun.com>
-
-	* vtysh.c: (general) Add 'show memory' command.
-
-2006-05-21 Paul Jakma <paul.jakma@sun.com>
-
-	* vtysh.c: (vtysh_show_logging_cmd) Suppress output for daemons
-	  which are not running (Andrew Schorr).
-
-2006-05-17 Paul Jakma <paul.jakma@sun.com>
-
-	* vtysh.c: (general) Add 'show logging' command.
-
-2006-01-11 Erik Smit <zoiah@zoiah.net>
-
-	* vtysh.c: (vtysh_config_from_file) fix regression from
-	  a previous cleanup, vtysh_client.flags and cmd->daemon are
-	  bitwise flags, bitwise & was meant to be used. Fixes breakage
-	  of integrated config file reading.
-
-2005-09-15 Hasso Tepper <hasso at quagga.net>
-
-	* vtysh.c: Fix warning by casting rl_bind_key 2. argument correctly.
-	* extract.pl.in: Fix warning - add isisd/topology to the includes.
-
-2005-08-22 Hugo Santos <hsantos@av.it.pt>
-
-	* vtysh.c: Add support for BGP_IPV6M_NODE
-	
-2005-07-12 Christian Hammers <ch@debian.org>
-
-	* vtysh_user.c: rename struct user to struct vtysh_user to avoid
-	  clashes with sys/user.h on Linux/ARM.
-
-2005-04-07 Hasso Tepper <hasso at quagga.net>
-
-	* Makefile.am: Remove rebuild4 target, it's not used any more by build
-	  procedure. Define vtysh_cmd_FILES. Use EXTRA_DIST.
-	* extract.pl.in: Ignore "router zebra".
-
-2005-03-28 Hasso Tepper <hasso at quagga.net>
-
-	* extract.pl.in: Use SNMP_INCLUDES to avoid warnings if compiling with
-	  snmp support.
-
-2005-03-09 Hasso Tepper <hasso at quagga.net>
-
-	* vtysh_config.c: Move password commands to the AAA_NODE. It
-	  quarantees that they will appear after SERVICE_NODE to make sure
-	  that encrypted passwords will work ("service password-encryption"
-	  command).
-
-2005-01-28 Andrew J. Schorr <ajschorr@alumni.princeton.edu>
-
-	* vtysh.h: Remove obsolete VTYSH_INDEX_* defines.  Fix many prototypes
-	  for functions with no arguments (must specify argument list as void).
-	* vtysh.c: Enhance vtysh_client array to include the daemon's name
-	  and bitmask and socket path (in addition to the fd).  This allows
-	  us to use loop constructs for various operations that need to be
-	  applied to all client daemons, and it facilitates better error
-	  messages.  Also fix some prototypes with void argument lists.
-	  (vclient_close) Issue a warning message indicating which daemon's
-	  socket is being closed.
-	  (vtysh_execute_func,vtysh_config_from_file) Use a for loop to
-	  call vtysh_client_execute.
-	  (vtysh_write_terminal,write_config_integrated) Use a for loop to
-	  call vtysh_client_config.
-	  (vtysh_write_memory) Use a for loop to call vtysh_client_execute.
-	  (vtysh_show_daemons) Use a for loop.
-	  (vtysh_connect) The struct vtysh_client is now statically initialized,
-	  so do not initialize it here.
-	  (vtysh_connect_all) Use a for loop to call vtysh_connect.  Set
-	  ripd_client pointer for use in vtysh_exit_ripd_only.
-
-2005-01-23 Hasso Tepper <hasso at quagga.net>
-
-	* vtysh.conf.sample: Fix typo "integrated-vtysh-conf" ->
-	  "integrated-vtysh-config".
-	* vtysh/vtysh.c: Implement walkup in node tree for vtysh as it
-	  already works in vty.
-
-2005-01-10 Hasso Tepper <hasso at quagga.net>
-
-	* vtysh.c: Reflect changes in lib. cmd_execute_command() should know
-	  now that it's called from vtysh and must not attempt to walk up in
-	  the node tree.
-
-2004-12-22 Hasso Tepper <hasso at quagga.net>
-
-	* vtysh_config.c: No delimiter between "ip forwarding" and "ipv6
-	  forwarding". Show common router-id before router nodes. Fix router
-	  bgp node parsing. Move debug commands into debug node and no
-	  delimiter between lines there.
-
-2004-12-09 Andrew J. Schorr <ajschorr@alumni.princeton.edu>
-
-	* vtysh.c: (vtysh_connect) No reason to call geteuid and getegid,
-	  the results were never used.
-
-2004-12-07 Andrew J. Schorr <ajschorr@alumni.princeton.edu>
-
-	* vtysh.c: Make several functions static instead of global.
-	  Added several commands to support destination-specific logging levels.
-	  (vtysh_completion) This function is unused, so comment it out.
-
-2004-11-11 Andrew J. Schorr <ajschorr@alumni.princeton.edu>
-
-	* vtysh.c: (vtysh_client_execute) Fix flaws in detecting trailing
-	  '\0' chars and command return code.
-
-2004-10-28 Hasso Tepper <hasso at quagga.net>
-
-	* vtysh.c: "show running-daemons" broke users habits who are using
-	  "sho run" to view running configuration. Changed it to "show
-	  daemons". 
-
-2004-10-20 Hasso Tepper <hasso at quagga.net>
-
-	* vtysh.c: Don't popen pager if command is "exit". Fixes "vtysh screws
-	  up my terminal if I exit" issue.
-
-2004-10-13 Hasso Tepper <hasso at quagga.net>
-
-	* extract.pl.in: All daemons can use both IPv6 and IPv4 access lists
-	  to limit access to vty.
-
-2004-10-11 Paul Jakma <paul@dishone.st>
-
-	* vtysh.c: (vtysh_client_execute) fix the sync fix. The 4th and
-	  final sync byte is not ASCII NULL, it's actually a status integer,
-	  and only ASCII NULL if CMD_SUCCESS is returned by daemon.
-	  Fix pointed out by Hasso.
- 
-2004-10-11 Hasso Tepper <hasso at quagga.net>
-
-	* vtysh.c, vtysh_user.c: Make more strings const.
-	
-2004-10-07 Hasso Tepper <hasso at quagga.net>
-
-	* vtysh.c, vtysh.h, vtysh_config.c, vtysh_main.c: Fix compiler
-	  warnings: make strings const, signed -> unsigned, remove unused
-	  variables.
-	* vtysh_config.c: Fix crash introduced with previous patch.
-
-2004-10-03 Hasso Tepper <hasso at quagga.net>
-
-	* vtsyh_main.c: Enter into enable node by default. Disable node doesn't
-	  make sense if we don't have any authentication for enable.
-	* vtysh.c: Implement "show running-daemons" command.
-	* vtysh.c: Use either integrated conf or daemon conf not both. Move
-	  configuration command into "service" level.
-	* vtysh.c: Remove "write ..." commands from other nodes than enable.
-	  We have "do ..." extension for that.
-	* vtysh_config.c, vtysh.c: Integrate vtysh configuration into
-	  integrated one.
-	* vtysh_config.c: Use FORWARD_NODE and SERVICE_NODE vty nodes.
-	* vtysh_config.c: Make "service" lines unique in integrated config.
-	* vtysh.c: Make "service password-encryption" command work in vtysh.
-	* vtysh_config.c, vtysh.c, Makefile.am, extract.pl.in: Introduce line
-	  vty commands in vtysh. Parse lib/vty.c for commands, but ignore
-	  commands that don't make sense in vtysh. Closes Bugzilla #104.
-	* vtysh.c: Make "[enable] password" commands work in vtysh. Behavior
-	  is similar to "log" commands - vtysh just passes commands to all
-	  daemons.
-	* vtysh_main.c, vtysh_config.c, vtysh.h: Remove any code dealing with
-	  configuration files specified from command line. We read/write files
-	  from/to system location only (ie. remove -f again).
-	* Makefile.am: Parse zebra/router-id.c.
-
-2004-09-26 Hasso Tepper <hasso at quagga.net>
-
-	* vtysh.c: Fix compiler warning.
-
-2004-09-17 Paul Jakma <paul@dishone.st>
-
-	* vtysh.c: (vtysh_client_execute) trailling NULLs can be arbitrarily
-          split across reads, dont get confused by this and block forever.
-
-2004-09-13 Paul Jakma <paul@dishone.st>
-
-	* Makefile.am: extract.pl isnt in srcdir, it's always in the builddir.
-	  remove zebra/irdp.c from list - dead.
-	* extract.pl.in: match on end of filenames, filename could contain
-          various preamble due to out of tree builds. Substitute in the
-	  autoconf srcdir/builddir paths for includes to cpp.
-
-2004-08-28 Hasso Tepper <hasso at quagga.net>
-
-	* vtysh_main.c: Rename signal handling functions not to conflict
-	  with functions from lib/sigevent.c.
-
-2004-08-27 Hasso Tepper <hasso at quagga.net>
-
-	* vtysh.c: Make "terminal length <0-512>" command work in vtysh.
-
-2004-08-27 Hasso Tepper <hasso at quagga.net>
-
-	* vtysh.c: Enable using ssh from ENABLE_NODE.
-	* vtysh_config.c: Make enable password uniq lines appear only once in
-	  configuration.
-	* vtysh_main.c, vtysh_config.c, vtysh.h: Remove useless code which
-	  searched configuration files from current directory. Add -f to
-	  specify conf from command line.
-
-2004-08-26 Hasso Tepper <hasso at quagga.net>
-
-	* *.c: Cosmetical changes - strip long lines, fix multiline comments
-	  style, indentation fixes, remove useless comments.
-	* vtysh.h: define VTYSH_INTERFACE.
-	* vtysh.c: Use VTYSH_INTERFACE where possible. Added some related TODO
-	  items.
-	* vtysh.c: Move things around a little to reduce spaghetti mess.
-	* Makefile.am: Parse only needed files from zebra daemon while
-	  building vtysh_cmd.c file to supress warnings.
-
-2004-06-30  Greg Troxel  <gdt@poblano.ir.bbn.com>
-
-	* extract.pl.in: Rename from extract.pl, with @PERL@.
-
-	* Makefile.am: Add vtysh_cmds.c to CLEANFILES.
-
-2004-06-20 Hasso Tepper <hasso@estpak.ee>
-
-	* extract.pl: Zebra daemon has access lists as well.
-
-2004-05-10 Hasso Tepper <hasso@estpak.ee>
-
-	* vtysh.c: Workaround for most hated vtysh bug - Bugzilla #58.
-
-2004-04-06 Hasso Tepper <hasso@estpak.ee>
-
-	* vtysh_main.c: Don't save command to history if last command already
-	  there is same.
-	* vtysh_main.c: Replace -e with -c.
-	* vtysh_main.c: Fix help.
-
-2004-03-04 Hasso Tepper <hasso@estpak.ee>
-
-	* vtysh.c: Remove using PAGER.
-
-2004-01-15 Paul Jakma <paul@dishone.st>
-
-	* vtysh_config.c: Fix up strlen to use correct string.
-	
-2003-12-23 Hasso Tepper <hasso@estpak.ee>
-  
-	* Makefile.am extract.pl vtysh.c vtysh.h vtysh_config.c:
-	  isisd integration to vtysh.
-
-2003-05-01 Sergiy Vyshnevetskiy <serg@vostok.net>
-
-	vtysh.c: Program shouldn't terminate on pager execution failure
-	vtysh_user.c: configure support for openpam (freebsd5.0)
-
-2003-04-19 Hasso Tepper <hasso@estpak.ee>
-
-	* extract.pl vtysh.c vtysh.h: sync daemon's route-map commands to
-	have same syntax
-
-2002-09-30 Paul Jakma <paulzebra@rs250.org>
-	
-	* vtysh.c: add 'write-config (integrated|daemon)' option
-	to specifiy whether write config commands should write
-	integrated Zebra.conf file and/or per daemon files.
-	Defaults to per daemon, unless this is turned off.
-
-2002-07-07  Kunihiro Ishiguro  <kunihiro@ipinfusion.com>
-
-	* zebra-0.93 released.
-
-2001-08-19  Kunihiro Ishiguro  <kunihiro@ipinfusion.com>
-
-	* zebra-0.92a released.
-
-2001-08-15  Kunihiro Ishiguro  <kunihiro@ipinfusion.com>
-
-	* zebra-0.92 released.
-
-2001-02-20  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* vtysh.c (vtysh_client_config): Do not set bufsz to 120.
-	Suggested by: Matthew Grant <grantma@anathoth.gen.nz>.
-
-2001-02-15  Hideto Yamakawa <yamakawa@dml.com>
-
-	* vtysh.c (vtysh_client_execute): Call fflush after fprintf.
-
-	* vtysh_config.c (vtysh_config_dump): Use VTYSH_PAGER if defined.
-
-2001-02-14  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* vtysh.c (vtysh_execute_func): Add fflush before pclose.
-
-2001-02-10  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* vtysh.c: VTY shell pager name.  When environment variable
-	VTYSH_PAGER is defined, use it as VTY shell pager.
-
-2001-02-09  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* vtysh.c (vtysh_execute_func): Add pager argument for test of
-	pager invocation.
-
-2001-02-08  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* extract.pl: Add -DHAVE_CONFIG_H option to cpp.
-
-2001-02-08  Matthew Grant <grantma@anathoth.gen.nz>
-
-	* vtysh.c (vtysh_client_config): Use sysconf to determine output
-	buffer size.
-	(vtysh_write_memory): Set umask 0077.
-	(vtysh_connect): Check permission to the socket.
-
-2001-02-01  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* zebra-0.91 is released.
-
-2001-01-31  Michael Rozhavsky <mrozhavsky@opticalaccess.com>
-
-	* vtysh.c (new_completion): Fix problem of appending space when
-	completion is executed.
-
-2001-01-23  Akihiro Mizutani <mizutani@dml.com>
-
-	* vtysh.c (vtysh_write_terminal): "write terminal" to all node.
-
-2001-01-15  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* vtysh.c (vtysh_execute): Fix unconditional lock by other VTY.
-	Suggested by Hideto Yamakawa <yamakawa@dml.com>.
-
-2001-01-09  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* zebra-0.90 is released.
-
-2001-01-07  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* vtysh.h (ZEBRA_PATH): Fix new vtysh path.  Reported by "Matt
-	Ranney" <mjr@ranney.com>
-
-2000-11-06  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* vtysh.c (DEFUNSH): Add "address-family vpnv4" DEFUNSH.
-
-2000-10-23  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* vtysh.c (execute_command): Add two arguemnt support for
-	executing child process.
-	(vtysh_telnet_port): New command "telnet WORD PORT" is added.
-
-2000-10-23  Akihiro Mizutani <mizutani@dml.com>
-
-	* vtysh.c (vtysh_write_memory): Display [OK] when configuration is
-	saved without problem.
-
-2000-10-20  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* vtysh.c (vtysh_config_from_file): "key chain" command with -b
-	flag problem is fixed.
-
-2000-10-17  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* vtysh_user.c: Change to use linklist.c.
-
-2000-10-02  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* Makefile.am (noinst_HEADERS): Add vtysh_user.h.
-
-	* zebra-0.89 is released.
-
-2000-09-22  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* vtysh_main.c: Declare thread master.
-
-2000-08-25  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* vtysh_main.c (main): Add missing --help procudure.  Reported by
-	Patrick Rother <krd@roka.net>.
-
-2000-08-22  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* vtysh.c (DEFUNSH): "interface IFNAME" works.
-
-2000-08-20  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* vtysh_user.c: Change name from vtysh_pam.c.
-
-	* vtysh.conf.sample: New file for vtysh configuration.
-
-2000-08-19  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* vtysh_pam.c (vtysh_pam): New file for PAM.
-
-2000-08-17  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* zebra-0.88 is released.
-
-2000-08-02  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* Makefile.am (vtysh_LDADD): Remove -lreadline and -lncurses.
-
-	* vtysh.c (vtysh_connect): Use AF_UNIX instead of AF_LOCAL for
-	backward compatibility.
-
-2000-07-09  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* extract.pl: Change regexp to match DEFUN and ALIAS at the same
-	time.
-
-2000-07-05  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* vtysh.c (signal_init): Ignore SIGPIPE signal.
-
-2000-07-04  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* extract.pl: ALIAS command can be extracted by extract.pl.
-
-2000-07-03  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* extract.pl: Fix scalar and array semantics.
-
-	* vtysh.c (vtysh_telnet): Add "telnet" client command.
-
-2000-07-02  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* vtysh.c (main): Add -e flag for passing command from arugment.
-	(vtysh_ping): Add "ping" command for test of command execution.
-	(init_node): Add "traceroute" command.
-	(vtysh_start_shell): Add "start-shell", "start-shell bash",
-	"start-shell zsh".
-	(sigint): Add check for execute_flag for avoid duplicate prompt.
-
-2000-06-28  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* vtysh.c: New file for vty shell.
-	* vtysh.h: Likewise.
-	* extract.pl: Likewise.
-	* vtysh_cmd.c: Generate by extract.pl.
diff --git a/watchquagga/ChangeLog b/watchquagga/ChangeLog
deleted file mode 100644
index 7baf4b7..0000000
--- a/watchquagga/ChangeLog
+++ /dev/null
@@ -1,59 +0,0 @@
-2005-02-17 Andrew J. Schorr <ajschorr@alumni.princeton.edu>
-
-	* watchquagga.c: (handle_read) Use new ERRNO_IO_RETRY macro.
-
-2005-02-16 Andrew J. Schorr <ajschorr@alumni.princeton.edu>
-
-	* watchquagga.c: (try_connect) Use new set_nonblocking function instead
-	  of calling fcntl directly.
-
-2005-01-12 Andrew J. Schorr <ajschorr@alumni.princeton.edu>
-
-	* watchquagga.c: (run_job) Fix bug: delay.tv_sec was being used
-	  without having been initialized when the "force" argument was true.
-	  (try_restart) When phased restart is stopping the routing daemons,
-	  it should tell run_job to update the restart interval.
-	  (phase_check) In final step of phased restart when the routing
-	  daemons are being started again, tell run_job not to update
-	  the restart interval (this is now done when the daemons are
-	  stopped).
-
-2004-12-29 Andrew J. Schorr <ajschorr@alumni.princeton.edu>
-
-	* watchquagga.c: In several places, cast pid_t to int for printf to
-	  avoid complaints on Solaris 8.
-
-2004-12-29 Andrew J. Schorr <ajschorr@alumni.princeton.edu>
-
-	* watchquagga.c: Fix headers: get most stuff from zebra.h.
-
-2004-12-23 Paul Jakma <paul@dishone.st>
-
-	* watchquagga.c: Add missing getopt.h include
-
-2004-12-22 Andrew J. Schorr <ajschorr@alumni.princeton.edu>
-
-	* watchquagga.c: Try for gcc 2.95 compatibility (avoid %z and a tricky
-	  initialization).
-
-2004-12-22 Andrew J. Schorr <ajschorr@alumni.princeton.edu>
-
-	* watchquagga.c: Add -b option to circumvent difficulties passing
-	  embedded spaces in command-line arguments.  This is an ugly hack,
-	  we should probably use a config file instead.
-
-2004-12-22 Andrew J. Schorr <ajschorr@alumni.princeton.edu>
-
-	* watchquagga.c: Use new config.h define for DAEMON_VTY_DIR.
-
-2004-12-22 Andrew J. Schorr <ajschorr@alumni.princeton.edu>
-
-	* watchquagga.c: Get PATH_WATCHQUAGGA_PID from config.h.
-
-2004-12-21 Andrew J. Schorr <ajschorr@alumni.princeton.edu>
-
-	* .cvsignore: Added.
-
-2004-12-21 Andrew J. Schorr <ajschorr@alumni.princeton.edu>
-
-	* {ChangeLog,watchquagga.c,Makefile.am}: Created.
diff --git a/zebra/ChangeLog b/zebra/ChangeLog
deleted file mode 100644
index 341c42a..0000000
--- a/zebra/ChangeLog
+++ /dev/null
@@ -1,2712 +0,0 @@
-2008-07-01 Paul Jakma <paul.jakma@sun.com>
-
-	* ioctl.c: (if_get_flags) Deal more gracefully with failure
-	  of the BSD link-state SIOCGIFMEDIA ioctl, as some interfaces
-	  apparently don't implement it (e.g. tun).
-	  Also, make BSD link-state checking be conditional on the 
-	  'link-detect' interface configuration flag, as it should be.
-	  Fixes bug #465.
-
-2008-06-02 Denis Ovsienko
-
-	* connected.c: (connected_up_ipv4, connected_down_ipv4,
-	  connected_up_ipv6, connected_down_ipv6): don't call
-	  work_queue_aim_head()
-	* rib.h: adjust RIB_ROUTE_QUEUED macro for meta_queue,
-	  declare meta_queue structure
-	* zebra_rib.c: (process_subq, meta_queue_process, rib_meta_queue_add,
-	  meta_queue_new) new functions; (rib_queue_add) don't try checking
-	  RIB_QUEUE_ADDED flag, rib_meta_queue_add() does it better, take care
-	  of the meta queue instead; (rib_queue_init) initialize the meta queue
-	  as well; (rib_lookup_and_pushup) don't call work_queue_aim_head();
-	  (rib_process) only do actual processing, don't do deallocation;
-	* zserv.h: include meta_queue field into zebra_t structure
-
-2008-05-29 Stephen Hemminger <stephen.hemminger@vyatta.com>
-
-	* rt_netlink.c: (netlink_install_filter) BPF filter to catch and
-	  drop responses to zebra's own route messages.
-	  (kernel_init) add BPF filter on the netlink socket.
-
-2008-02-26 Denis Ovsienko
-	* zebra_rib.[ch]: (rib_lookup_and_pushup) New function, which makes sure,
-	  that if_set_prefix() has nothing in its way of assigning an address.
-	* ioctl.c: (if_set_prefix) Use rib_lookup_and_pushup() to resolve
-	  bug #326.
-
-2008-01-11 Andrew J. Schorr <ajschorr@alumni.princeton.edu>
-
-	* ioctl.c: If HAVE_BSD_LINK_DETECT is defined, include <net/if_media.h>
-	  (if_get_flags) Remove debug messages about BSD link state.
-	* kernel_socket.c: (bsd_linkdetect_translate) If link state
-	  is unknown, we should set the IFF_RUNNING flag.
-
-2008-01-10 Ingo Flaschberger <if@xip.at>
-
-	* ioctl.c: (if_get_flags) If HAVE_BSD_LINK_DETECT, use the SIOCGIFMEDIA
-	  ioctl to ascertain link state.
-	* kernel_socket.c: (bsd_linkdetect_translate) New function to
-	  map the ifm_data.ifi_link_state value into the IFF_RUNNING flag.
-	  (ifm_read) Call bsd_linkdetect_translate to fix the IFF_RUNNING
-	  flag before calling if_flags_update.
-
-2008-01-08 Michael Larson <mike@vyatta.com>
-
-	* zebra_rib.c: (nexthop_active_check) Replace if_is_up with
-	  if_is_operative to solve problems with static interface
-	  routes not behaving properly with link-detect.
-
-2007-11-12 Denis Ovsienko
-
-	* connected.c: (connected_up_ipv4, connected_down_ipv4,
-	  connected_up_ipv6, connected_down_ipv6) Collect all changed
-	  connected routes closest possible to the RIB work queue, so
-	  that the rest can be revalidated correctly.
-
-2007-10-24 Denis Ovsienko
-
-	* kernel_socket.c: (rtm_read) we used to ignore own messages,
-	  but the RIB debug commit broke it for IPv6 case (reported
-	  by Milan Kocian). Fixed.
-
-2007-10-04 Denis Ovsienko
-
-	* zebra_rib.c: (rib_process) escape from the nexthop
-	  iteration cycle earliest possible to save CPU time.
-
-2007-10-03 Denis Ovsienko
-
-	* zebra_rib.c: (rib_process, rib_link, rib_addnode,
-	  rib_unlink, rib_delnode) log IPv6 prefixes same well
-	  as IPv4 ones are logged.
-
-2007-09-14 Denis Ovsienko
-
-	* rt_socket.c: (kernel_rtm_ipv4) Use lookup() instead of
-	  LOOKUP/mes_lookup() for rtm_type_str, as this is more
-	  appropriate for sparse code-spaces (#401).
-	* kernel_socket.c: (rtm_read, rtmsg_debug): Idem.
-	* kernel_socket.[ch]: We don't need rtm_type_str_max any more.
-	* main.c: (main) Don't call rib_sweep_route() before the
-	  pidfile is acquired, this fixes bug #402.
-	* zserv.h: Dropped old_pid, since it's useless now. This
-	  fixes bug #381.
-	* main.c: (main) Idem.
-	* test_main.c: (main) Idem.
-	* kernel_socket.c: (rtm_read) Idem.
-
-2007-09-12 Denis Ovsienko
-
-	* rt_socket.c: (kernel_rtm_ipv4) prefix_buf could be passed
-	  to zlog_err() uninitialized with debug disabled. Fixed.
-
-2007-09-06 Denis Ovsienko
-
-	* rtread_sysctl.c: (route_read) Set RTF_DONE on the routing
-	  messages when fetching initial kernel FIB, so rtm_read()
-	  doesn't skip them.
-
-2007-08-21 Denis Ovsienko
-
-	* ioctl_solaris.c: (if_get_mtu) Don't break things if either
-	  IPv6 was disabled at compile time or the current interface
-	  hasn't it enabled.
-	* kernel_socket.c: (ifm_read) Don't forget to call if_get_mtu()
-	  for updated interfaces.
-
-2007-08-17 Denis Ovsienko
-
-	* kernel_socket.c: (rtm_read) Ignore any routing socket messages
-	  without RTF_DONE flag set, as they are just noise for us.
-
-2007-08-14 Denis Ovsienko
-
-	* zebra_rib.c: (nexthop_active_update) Added a comment
-	  and rewrote nexthop iteration.
-
-2007-08-13 Denis Ovsienko
-
-	* kernel_socket.c: normalize rtm_type_str so it can be handled
-	  by LOOKUP macro
-	* kernel_socket.c: (rtm_read) don't ignore self-generated
-	  routing messages, so we can debug them; make use of
-	  ZEBRA_ERR_RTNOEXIST; output more details in debug log.
-	* kernel_socket.c: (rtmsg_debug) make use of LOOKUP macro
-	* kernel_socket.h: let the world know about rtm_type_str[_max]
-	* rib.h: 3 more debugging functions and 5 return codes
-	* rt_socket.c: (kernel_rtm_ipv4) dump IP prefix and masklen;
-	  complain about strange rtm_write() return values
-	* zebra_rib.c: (rib_lookup_ipv4_route, rib_dump,
-	  rib_lookup_and_dump) --- new functions; more comments;
-	  more debug logging
-
-2007-08-10  Emmanuel Vize <emmanuel.vize@6wind.com>
-
-	* rt_netlink.c: (netlink_interface_addr) Use the appropriate field length for the address
-          (acknowledge Andy's comment).
-
-2007-08-06  Denis Ovsienko
-
-	* zebra_rib.c: (general) Add extra debug logging for RIB and
-	  RIB queue.
-
-2007-08-02  Denis Ovsienko
-
-	* rt_socket.c (kernel_rtm_ipv4): Only call rtm_write when changes
-	are intended.  Don't set FIB flag on failed additions (such as
-	occur with multiple paths.
-
-2007-06-25 Denis Ovsienko
-
-	* zebra_rib.c: (rib_add_ipv4_multipath) Loop through RIB
-	  is using 'same' variable, but RIB_ENTRY_REMOVED check
-	  is testing the constant 'rib' variable, fix. Impact
-	  unknown at this point.
-
-2007-05-30 Andrew J. Schorr <ajschorr@alumni.princeton.edu>
-
-	* zebra_routemap.c: (route_set_src_compile) Use '#ifdef HAVE_IPV6'
-	  as needed.
-	* zebra_vty.c: (vty_show_ip_route_detail, vty_show_ip_route) Use
-	  '#ifdef HAVE_IPV6' as needed.
-	  (show_ip_protocol) Move function definition outside of
-	  '#ifdef HAVE_IPV6' section.
-
-2007-05-17 Andrew J. Schorr <ajschorr@alumni.princeton.edu>
-
-	* kernel_socket.c: (ifam_read_mesg) Grab RTA_DST and RTA_GATEWAY
-	  addresses from the message (if present, which seems unlikely on
-	  current BSD platforms), and show them in the debug messages.
-	  Also, add ifam_flags to the debug messages.
-	  (ifam_read) If the interface is point-to-point, then the RTA_BRD
-	  address should be treated as a peer address.
-
-2007-05-01 David L Stevens <dlstevens@us.ibm.com>
-
-	* (general) These changes collectively add route-map and
-	  prefix-list support to zebra and fix a bug in "show
-	  route-map" (with no argument).
-	* connected.c: (connected_up_ipv4) added src preference argument
-	  to rib_add_ipv4()
-	* kernel_socket.c: (rtm_read) ditto
-	* main.c: added prefix list initialization
-	* Makefile.am: added zebra_routemap.c source file
-	* rib.h: added generic address union "g_addr" and use in
-	  existing places that had an explicit union.
-	  Added "src" to struct nexthop.
-	  Added preferred src arg to nexthop_ipv4_add and rib_add_ipv4.
-	* rt_netlink.c: (netlink_routing_table) set preferred source on 
-	  netlink messages.
-	  (netlink_route_change) ditto
-	  (netlink_route_multipath) ditto.
-	* rtread_getmsg.c: (handle_route_entry) added (NULL) src to
-	  rib_add_ipv4() call.
-	* rtread_proc.c: (proc_route_read) ditto
-	* zebra_rib.c: (nexthop_ipv4_add) add src argument.
-	  (nexthop_ipv4_ifindex_add) ditto
-	  (rib_add_ipv4) ditto
-	  (nexthop_active_check) Add route-map processing.
-	* zebra_routemap.c: new file for zebra route-map commands.
-	* zebra_vty.c: (ip_protocol_cmd) Apply route-map to protocol
-	  (vty_show_ip_route_detail) added "src" printing
-	  (vty_show_ip_route) ditto
-	  (show_ip_protocol_cmd) new command, list routemaps.
-	  (config_write_protocol) write out routemap protocl config.
-	  (zebra_vty_init) Install the new routemap protocol commands.
-	* zserv.c: (zread_ipv4_add) added (NULL) src arg
-	  (zebra_init) init zebra route-maps.
-	* zserv.h: add zebra_route_map_init
-	
-2007-04-29 Paul Jakma <paul.jakma@sun.com>
-
-	* ioctl{_solaris,}.c: (if_get_mtu) Fix missing ; in last commit.
-	* if_ioctl_solaris.c: (if_get_index) Fix bogus argument passed
-	  to lifreq_set_name().
-
-2007-04-10 Paul Jakma <paul.jakma@sun.com>
-
-	* ioctl{_solaris,}.c: (if_get_mtu) Ping clients via
-          zebra_interface_up_update if MTU is changed.
-
-2007-04-08 Paul Jakma <paul.jakma@sun.com>
-
-	* {ioctl,kernel}_null.c: Install of IP address should
-	  reflect back to zebra via kernel_address_add..., makes
-	  testzebra more useful.
-	* interface.c: (if_delete_update) Address removal triggered
-	  by kernel shouldn't remove configured IPv4 address from connected
-	  list.
-
-2007-04-07 Paul Jakma <paul.jakma@sun.com>
-
-	* redistribute.c: (zebra_check_addr) Don't redistribute routes
-	  to IPv4 link-local prefixes, fixes bug #351.
-	* redistribute.h: Export zebra_check_addr.
-	* router-id.c: (router_id_bad_address) re-use zebra_check_addr
-	  rather than implementing similar logic.
-
-2007-03-06 Paul Jakma <paul.jakma@sun.com>
-
-	* kernel_socket.c: (ifam_read) Do not update interface metric on
-	  receipt of NEW/DEL ADDR messages, bogus as: a) some systems
-	  dont include iface metric for address events b) we didn't
-	  update clients either. Initial diagnosis by Eugene Grosbein.
-
-2007-02-26 Robert Olsson <Robert.Olsson@data.slu.se>
-
-	* irdp_main.c: (irdp_send_thread) Skip non-AF_INET addresses,
-	   i.e. do not try interpret IPv6 addresses as IPv4 addresses
-	   to broadcast in IRDP announcements..
-
-2006-12-13 Andrew J. Schorr <ajschorr@alumni.princeton.edu>
-
-	* if_ioctl_solaris.c: (if_get_addr) For IPv6, stop assuming
-	  that all IFF_POINTOPOINT have prefixlen of IPV6_MAX_BITLEN.
-	  Instead, always try the SIOCGLIFSUBNET ioctl; if that fails,
-	  then we fall back to IPV6_MAX_BITLEN for PtP interfaces.
-
-2006-12-12 Andrew J. Schorr <ajschorr@alumni.princeton.edu>
-
-	* connected.c: (connected_up_ipv4, connected_down_ipv4,
-	  connected_up_ipv6, connected_down_ipv6) Simplify logic using the
-	  new CONNECTED_PREFIX macro.
-	  (connected_add_ipv4) Set prefixlen in destination addresses (required
-	  by the CONNECTED_PREFIX macro).  Use CONNECTED_PEER macro instead
-	  of testing for IFF_POINTOPOINT.  Delete invalid warning message.
-	  Warn about cases where the ZEBRA_IFA_PEER is set but no
-	  destination address has been supplied (and turn off the flag).
-	  (connected_add_ipv6) Add new flags argument so callers may set
-	  the ZEBRA_IFA_PEER flag.  If peer/broadcast address satisfies
-	  IN6_IS_ADDR_UNSPECIFIED, then reject it with a warning.
-	  Set prefixlen in destination address so CONNECTED_PREFIX will work.
-	* connected.h: (connected_add_ipv6) Add new flags argument so
-	  callers may set the ZEBRA_IFA_PEER flag.
-	* interface.c: (connected_dump_vty) Use CONNECTED_PEER macro
-	  to decide whether the destination address is a peer or broadcast
-	  address (instead of checking IFF_BROADCAST and IFF_POINTOPOINT).
-	* if_ioctl.c: (if_getaddrs) Instead of setting a peer address
-	  only when the IFF_POINTOPOINT is set, we now accept a peer
-	  address whenever it is available and not the same as the local
-	  address.  Otherwise (no peer address assigned), we check
-	  for a broadcast address (regardless of the IFF_BROADCAST flag).
-	  And must now pass a flags value of ZEBRA_IFA_PEER to 
-	  connected_add_ipv4 when a peer address is assigned.
-	  The same new logic is used with the IPv6 code as well (and we
-	  pass the new flags argument to connected_add_ipv6).
-	  (if_get_addr) Do not bother to check IFF_POINTOPOINT: just
-	  issue the SIOCGIFDSTADDR ioctl and see if we get back
-	  a peer address not matching the local address (and set
-	  the ZEBRA_IFA_PEER in that case).  If there's no peer address,
-	  try to grab SIOCGIFBRDADDR regardless of whether IFF_BROADCAST is set.
-	* if_ioctl_solaris.c: (if_get_addr) Just try the SIOCGLIFDSTADDR ioctl
-	  without bothering to check the IFF_POINTOPOINT flag.  And if
-	  no peer address was found, just try the SIOCGLIFBRDADDR ioctl
-	  without checking the IFF_BROADCAST flag.  Call connected_add_ipv4
-	  and connected_add_ipv6 with appropriate flags.
-	* if_proc.c: (ifaddr_proc_ipv6) Must pass new flags argument to
-	  connected_add_ipv6.
-	* kernel_socket.c: (ifam_read) Must pass new flags argument to
-	  connected_add_ipv6.
-	* rt_netlink.c: (netlink_interface_addr) Copy logic from iproute2
-	  to determine local and possible peer address (so there's no longer
-	  a test for IFF_POINTOPOINT).  Set ZEBRA_IFA_PEER flag appropriately.
-	  Pass new flags argument to connected_add_ipv6.
-	  (netlink_address) Test !CONNECTED_PEER instead of if_is_broadcast
-	  to determine whether the connected destination address is a
-	  broadcast address.
-
-2006-12-08 Piotr Chytla <pch@packetconsulting.pl>
-
-	* zebra_rib.c: (static_install_ipv{4,6}) Case where existing
-	  RIB is updated must explicitely rib_addqueue the route_node,
-	  to ensure the update actually takes effect.
-
-2006-09-13 Tom Everett <tom@khubla.com>
-
-	* kernel_socket.c (rtm_type_str): ifdef RTM_OLD{ADD,DEL} to
-	compile on systems that no longer define them.
-
-2006-08-06 Paul Jakma <paul.jakma@sun.com>
-
-	* interface.h: (ifstat_update_proc) declaration should match
-	  ifstat_update_sysctl really, which is to not return status, as
-	  such status is not used anywhere.
-	* if_{proc,sysctl}.c: Make ifstat_update_* definitions and return values
-	  consistent with each other and their declarations, ie: 
-	  (void) (*) (void).
-	* rtadv.h: depends on interface.h, so should include it.
-
-2006-08-04 Paul Jakma <paul.jakma@sun.com>
-
-	* misc_null.c: Add ifstat_update_sysctl, add another required
-	  header.
-
-2006-08-02 Andrew J. Schorr <ajschorr@alumni.princeton.edu>
-
-	* misc_null.c: Must include header files to get older versions of gcc
-	  to process the #pragma statements properly.
-
-2006-08-01 Paul Jakma <paul.jakma@sun.com>
-
-	* irdp_main.c: (irdp_advertisement) free the stream here, when done,
-	  right under where it was allocated so it's blindingly obvious
-	  it's correct. This possibly fixes a very slow leak of streams in
-	  zebra.
-	* irdp_packet.c: (send_packet) don't free the stream here as
-	  it's hard to tell if right, plus an error case seemed to
-	  returning before free anyway.
-
-2006-07-27 Paul Jakma <paul.jakma@sun.com>
-
-	* {ioctl,kernel}_null.c: Dummy/Null kernel method implementations,
-	  useful for testing zebra code that calls such methods.
-	* {redistribute,misc}_null.c: Dummy/Null methods, as above. But
-	  for zclient, and for various misc functions.
-	* test_main.c: Test harness for zebra, currently just to test the
-	  RIB.
-	* Makefile.am: Build testzebra using above.
-	* debug.{c,h}: Add 'debug zebra rib' and 'debug zebra rib queue'.
-	* rib.h: (struct rib) Add a route_node rn_status flag field,
-	  this has to be copied every time head RIB of a route_node
-	  changes.
-	  Remove the rib lock field, not needed - see below. 
-	  Add a status field for RIB-private flags.
-	* zebra_rib.c: Add a global for the workqueue hold time, useful
-	  for testing.
-	  (general) Fix for bug #268. Problem originally detailed by
-	  Simon Bryden in [quagga-dev 4001].
-	  Essentially, add/delete of a RIB must happen /before/ the
-	  queue. Best-path selection (ie rib_process) and reaping of
-	  freed RIBs can then be done after queueing. Only the route_node
-	  is queued - no important RIB state (i.e. whether a RIB is to be
-	  deleted) is queued.
-	  (struct zebra_queue_node_t) Disappears, no longer need to
-	  track multiple things on the queue, only the route_node.
-	  (rib_{lock,unlock}) removed, RIBs no longer need to be
-	  refcounted, no longer queued.
-	  (rib_queue_qnode_del) Removed, deleted RIBs no longer deleted
-	  via the queue.
-	  (rib_queue_add_qnode) deleted
-	  (rib_queue_add) Only the route_node is queued for best-path
-	  selection, we can check whether it is already queued or
-	  not and avoid queueing same node twice - struct rib * argument
-	  is not needed.
-	  (rib_link/unlink) (un)link RIB from route_node.
-	  (rib_{add,del}node) Front-end to updates of a RIB.
-	  (rib_process) Reap any deleted RIBs via rib_unlink.
-	  Unset the route_node 'QUEUED' flag.
-	  (General) Remove calls to rib_queue_add where add/del node was
-	  called - not needed, update calls where not.
-	  Ignore RIB_ENTRY_REMOVEd ribs in loops through route_nodes
-
-2006-07-27 Rumen Svobodnikov <rumen@telecoms.bg>
-
-	* connected.c: (connected_up_ipv4) interface connected routes always
-	  go to table main (or otherwise they cannot be used by linux as
-          nexthops)
-	* zserv.c: (zread_ipv4_add) send route to the correct routing table
-	* zebra_rib.c (static_install_ipv4) set routing table
-
-2006-07-02 Paul Jakma <paul.jakma@sun.com>
-
-	* rt_netlink.c: (netlink_interface_addr) Fix CID #104, can not
-	  proceed if addr is NULL.
-	* zebra_rib.c: (static_add_ipv6) Fix CID #18, double check
-	  required arguments are supplied for the given nexthop type.
-	
-2006-06-15 Paul Jakma <paul.jakma@sun.com>
-
-	* interface.c: (if_flag_dump_vty) redundant code, remove.
-	  (if_dump_vty) use libzebra if_flag_dump.
-	  (ip_address_uninstall) Unset the configured flag.
-	* connected.c: (connected_same) new helper, check whether
-	  two connected are same.
-	  (connected_implicit_withdraw) new helper, consolidation of
-	  existing code in connected_add_ipv{4,6}.
-	  Try filter out unneeded Zserv address delete/adds when
-	  address is exact same.
-	  Where old address is implicitely removed, be sure to preserve
-	  the IFC_CONFIGURED flag if set, fixes bug where configured
-	  addresses were being lost on FreeBSD (Andrew Schorr).	  
-
-2006-05-21 Andrew J. Schorr <ajschorr@alumni.princeton.edu>
-
-	* connected.c: (connected_withdraw) Do not delete the connected
-	  address if the ZEBRA_IFC_CONFIGURED flag is set.
-	  (connected_add_ipv4,connected_add_ipv6) Before calling
-	  connected_withdraw, unset the ZEBRA_IFC_CONFIGURED flag
-	  on the superseded connected structure.
-
-2006-05-19 Andrew J. Schorr <ajschorr@alumni.princeton.edu>
-
-	* connected.c: (connected_add_ipv4,connected_add_ipv6) If the
-	  new struct connected matches an already existing one
-	  (that will consequently be removed by connected_withdraw),
-	  then be sure to preserve the ZEBRA_IFC_CONFIGURED flag.
-
-2006-05-17 Andrew J. Schorr <ajschorr@alumni.princeton.edu>
-
-	* kernel_socket.c: (ifam_read_mesg) Improve debug message
-	  to show the IP address.
-
-2006-05-15 Paul Jakma <paul.jakma@sun.com>
-
-	* zserv.c: (general) Remove the private zebra_command_str
-	  in favour of newly added libzebra zserv_command_string.
-
-2006-05-11 Paul Jakma <paul.jakma@sun.com>
-
-	* interface.c: (if_delete_update) route_node_lookup may return
-	  NULL, should fix Coverity CID #31.
-
-2006-02-09 Paul Jakma <paul.jakma@sun.com>
-
-	* rib.h: (struct {rib,nexthop}) Rearrange fields to avoid
-	  needless padding. 
-	  (struct rib) Remove the indirect pointer, not used anywhere!
-
-2006-02-02 Paul Jakma <paul.jakma@sun.com>
-
-	* interface.c: (if_dump_vty) move flags to their line, neater.
-
-2006-01-30 Paul Jakma <paul.jakma@sun.com>
-
-	* zebra_rib.c: (rib_process) Fourth time lucky on this jinxed
-	  commit, last commit had a hole that could allow connected
-	  route selection to escape beyond the connected route logic. 
-	  This time I cross-checked with Gunnar first. ;)
-
-2006-01-25 Gunnar Stigen <gunnar.stigen@axxessit.no>
-
-	* zebra_rib.c: (rib_process) Application of Gunnar's earlier
-	  metric selection RIB change included incorrect tidy-ups made
-	  by commiter. Fix. (NB: any errors here are again due to paul).
-
-2006-01-25 Paul Jakma <paul.jakma@sun.com>
-
-	* (general) More solaris PF_ROUTE hacks. The IFF_UP mangling
-	  for solaris was incomplete on the PF_ROUTE side. fix it.
-	  This changeset generally uglifies things. For some future
-	  work I'd like to see the state changes seperated out from
-	  the details of the code. Differences between systems might
-	  then be slightly easier to implement without convoluted
-	  hacks.
-	  Changes should be specific to Solaris mostly, however
-	  also tested on FreeBSD 6.
-	* if_ioctl_solaris.c: (interface_list_ioctl) ignore ~IFF_UP
-	  interfaces, we'll hear about them when/if interface goes up
-	  through NEWADDR.
-	  Update flags explicitely at end of it to kick mangling.
-	* ioctl_solaris.c: (if_mangle_up) removed to interface.c, in
-	  kind.
-	  (lifreq_set_name) more convenient to take the string, than
-	  the ifp.
-	  (if_get_flags_direct) new convenience function, returns
-	  the actual flags. Used during bootstrap in if_ioctl_solaris.c
-	  to peek at flags of logical interfaces to see whether or
-	  not to ignore them.
-	  (if_get_flags) ENXIO means it's gone, poke out IFF_UP and
-	  kick flags update.
-	  (if_{un,}set_flags) flags argument should be 64bit.
-	* ioctl.{c,h}: flags argument should be 64bit. 
-	* interface.h: Add a 'primary_state' flag to struct zebra_if on
-	  SUNOS_5.
-	  Export if_flags_update.
-	* interface.c: (if_flags_mangle) moved over in kind from
-	  ioctl_solaris.c. Nasty kludge to try get IFF_UP right, as
-	  much as is possible. Also keep track of the actual IFF_UP
-	  value for the primary interface, so we can know when the ifp
-	  must be deleted.
-	  (if_flags_update) Take a new interface flags value, apply it
-	  to the interface, and take whatever actions are required due
-	  to flag transitions.
-	  (if_refresh) flag state change logic is moved out to
-	  previous. Just call if_get_flags, which will end up using
-	  previous to effect the update of flags.
-	  (if_flag_dump_vty) IFF_IPV{4,6} aren't interesting, VIRTUAL
-	  and NOXMIT are though.
-	* kernel_socket.c: (ifm_read) Down->Down transitions shouldn't
-	  create ifp, for non-IFANNOUNCE systems.
-	  Use if_flags_update to update flags.
-	  flag transition logic is now handled automatically through
-	  if_flags_update.
-	  (ifam_read) Better to call if_refresh *after* adding
- 	  connected addresses, as connected count affects IFF_UP on
- 	  IFF_UP-mangled systems.
- 	  On Solaris, Up->Down due to DELADDR means we need to delete
-	  the ifp - the IFINFO might already have been and gone.
-	* rt.h: include other dependent headers.
-
-2006-01-19 Paul Jakma <paul.jakma@sun.com>
-
-        * (general) various miscellaneous compiler warning fixes.
-          Remove redundant break statements from switch clauses
-          which return.
-          Remove stray semi-colons which cause empty-statement
-          warnings.
-	* main.c: (sighup) remove private declaration of external
-          function.
-          (main) return from main, not exit, cause it annoys SOS.
-
-2006-01-18 Gunnar Stigen <gunnar.stigen@axxessit.no>
-
-	* zebra_rib.c: Take interface metric into account.
-
-2006-01-17 Paul Jakma <paul.jakma@sun.com>
-
-	* kernel_socket.c: (ifam_read) Read metric from RTM_NEWADDR.
-	  If interface is an alias, pass the alias as a label for
-	  connected_add_ipv{4,6}.
-	* rt_netlink.c: (netlink_interface_addr) print out
-	  IFA_CACHEINFO info, if present, when debugging kernel
-	  messages.
-
-2006-01-17 Gunnar Stigen <gunnar.stigen@axxessit.no>
-
-	* connected.c: (connected_up_ipv{4,6}) Include interface metric on
-	  connected routes.
-	* if_ioctl.c: (if_getaddrs) Be defensive about assuming
-	  that struct ifaddrs will have ifa_addr filled in.
-
-2006-01-16 Paul Jakma <paul.jakma@sun.com>
-
-	* zserv.c: Read/write updated Zserv header.
-
-2006-01-11 Paul Jakma <paul.jakma@sun.com>
-
-	* zserv.c: (zsend_interface_{add,delete,update}) if flags are
-	  8 bytes now, update to write out with stream_putq.
-
-2005-12-29  Greg Troxel  <gdt@fnord.ir.bbn.com>
-
-	* kernel_socket.c: remove dead code (from David Young).
-
-	* rt_socket.c (kernel_rtm_ipv4): Use AF_INET rather than AF_UNSPEC
-	for mask.  From David Young.
-
-2005-11-26 Paul Jakma <paul.jakma@sun.com>
-
-	* connected.{c,h}: (connected_add_ipv6) label should have
-	  const qualifier, fix declarations.
-
-2005-11-24 Paul Jakma <paul.jakma@sun.com>
-
-	* kernel_socket.h: New header for functions exported to sysctl
-	  methods.
-	* kernel_socket.c: include previous.
-	  Remove static qualifier from couple of functions which are
-	  used by sysctl methods.
-	  Add a workaround for a bogus gcc warning to the RTA_ macros.
-	* Makefile.am: Add kernel_socket.h to noinst_HEADERS
-	* if_sysctl.c: include rt.h and kernel_socket.h and remove
-	  redundant prototypes.
-	* rtread_sysctl.c: ditto.
-	  (route_read) fix mismatch of return values.
-	* {rt,zserv,rib}.h: Include lib headers depended on.
-
-2005-11-23 Paul Jakma <paul.jakma@sun.com>
-
-	* (general) fix some small compile errors, and mark several
-          functions as static.
-        * kernel_socket.c: (ifan_read) should be static.
-          fix missing brackets.
-          (ifm_read,ifam_read,rtm_read_mesg,kernel_read) Make static
-          (ifam_read_mesg) make static. fix incorrect variable name.
-          (rtm_read) make static. Fix call to rib_delete_ipv4 which
-          should be rib_delete_ipv6.
-          (routing_socket,kernel_init) should be static. Void argument
-          should be specified as such, not left incomplete.
-        * rt_netlink.c: rt.h should be included, contains prototypes of  
-          exported functions.
-          (kernel_delete_ipv6_old) fix sign of index argument.   
-        * rt_socket.c: Exact same as previous. Also, make various
-          functions static.
-        * rtread_getmsg.c: Include zserv.h, which prototypes
-          route_read. Make static.
-        * rtread_sysctl.c: zserv.h and rt.h should be included.
-          fix definition of route_read.
-   
-2005-11-14 Paul Jakma <paul.jakma@sun.com>
-
-	* zebra_rib.c: (rib_process) convert to new workqueue specs and
-	  shut up gcc, which complains about cast from void via
-	  function parameters, for some dumb reason. Do the cast
-	  inside the function instead.
-	  (rib_queue_qnode_del) ditto.
-	  (rib_queue_init) no need for the casts anymore.
-
-2005-11-12 Alexander Gall <gall@switch.ch>
-
-	* See [quagga-dev 1815]
-	* kernel_socket.c: (rtm_write) Use SAROUNDUP when HAVE_SIN_LEN
-	  is not available.
-	* rt_socket.c: (kernel_rtm_ipv6(_multipath)) set family to 
-	  AF_INET6 on ipv6 routes.
-
-2005-11-12 Paul Jakma <paul.jakma@sun.com> 
-
-	* kernel_socket.c: Add RTA_NAME_GET macro to extract name from
-	  sockaddr_dl. Add some more RTF_ flags.
-	* (ifan_read) Add some debug messages.
-	* (ifm_read) Add more debug messages. More robust cross-checks
-	  of index against name.
-	  Fall back to by-name lookup if the index lookup fails, future
-	  proofing more than anything else.
-	  (ifam_read_mesg) Read RTA_IFP. Add debug messages.
-	  (ifam_read) More debug. If there's an RTA_IFP and it isn't
-	  the name of the interface, save it as the label.
-	  (rtm_read_mesg) Read RTA_IFP.
-	  (rtm_read) allow name to be retrieved.
-	  (rtmsg_debug) expand on the debug message.
-
-2005-11-11 Paul Jakma <paul.jakma@sun.com>
-
-	* kernel_socket.c: (ifm_read) arithmetic on void pointer
-	  warning.
-	  (ifam_read) Fix error from connected-with-label merge,
-	  something crept in from the pending Solaris kernel_socket.c
-          patch which shouldn't have.
-
-2005-11-03 Paul Jakma <paul.jakma@sun.com>
-
-	* connected.{c,h}: Include memory.h
-	  (connected_add_ipv4) Use MTYPE for ifc label.
-	  (connected_add_ipv6) Also should accept label. Store it in ifp.
-	  (connected_del_ipv4) Taking label as argument is pointless.
-	* rt_netlink.c: (netlink_interface_addr) update label usage
-	  for connected_{add,delete} functions.
-	* if_ioctl.c: (if_getaddrs) NULL label for connected_add_ipv6.
-	* if_ioctl_solaris.c: (interface_list_ioctl) Pass LIFC_NOXMIT
-	  so we also find out about NOXMIT interfaces like VNI.
-	  Bit of hackery to turn interface names into the primary
-	  interface name, later with routing socket messages we only
-	  will about primary interfaces anyway, so we must normalise
-	  the name.
-	  (if_get_addr) take label as argument, so it can
-	  be passed to connected_add.
-	  If label is provided, then it is interface name to issue the
-	  ioctl for address information on, not the ifp name.
-	  (interface_list) List AF_UNSPEC too, just in case.
-	* if_proc.c: (ifaddr_proc_ipv6) label for connected_add_ipv6.
-	* interface.c: (if_addr_wakeup) Some very bogus code - sets
-	  IFF_RUNNING - add comment.
-	  (if_refresh)
-	  (ip_address_install) Use MTYPE for ifc label.
-	* ioctl_solaris.c: (if_mangle_up) New function. Hackery to make
-	  IFF_UP reflect whether any addresses are left on the
-	  interface, as we get signalled for IFF_UP flags change on the 
-	  primary interface only. Logical interfaces dont generate
-	  IFINFO, but we do get an RTM_DELADDR.
-	  (if_get_flags) Call if_mangle_up before return.
-	* kernel_socket.c: (ifam_read) Fixup calls to
-	  connected_{add,delete} to match above changes. Rename gate
-	  variable to brd, less confusing.
-	  Pass the interface name as a label, if it is not same name 
-	  as ifp->name.
-
-2005-10-11 Paul Jakma <paul.jakma@sun.com>
-
-	* connected.{c,h}: (connected_{add,delete}_ipv4) label should
-	  be const qualified.
-	
-2005-10-01 Andrew J. Schorr <ajschorr@alumni.princeton.edu>
-
-	* zebra_vty.c: (route_type_str) Remove obsolete function: use new
-	  library function zebra_route_string() instead.  Note that there
-	  are a few differences: for IPv6 routes, we now get "ripng" and
-	  "ospf6" instead of the old behavior ("rip" and "ospf").
-	  (route_type_char) Remove obsolete function: ues new library function
-	  zebra_route_char() instead.  Note that there is one difference:
-	  the old function returned 'S' for a ZEBRA_ROUTE_SYSTEM route,
-	  whereas the new one returns 'X'.
-	  (vty_show_ip_route_detail,vty_show_ipv6_route_detail) Replace
-	  route_type_str() with zebra_route_string().
-	  (vty_show_ip_route,vty_show_ipv6_route) Replace route_type_char()
-	  with zebra_route_char().
-
-2005-10-01 Andrew J. Schorr <ajschorr@alumni.princeton.edu>
-
-	* rt_netlink.c: (netlink_request) Use memset to clear structure
-	  before calling sendto (eliminates a valgrind error message about
-	  uninitialized data).
-
-2005-09-28 Alain Ritoux <alain.ritoux@6wind.com>
-
-	* zserv.c: Always provied distance for route add
-
-2005-09-28 Alain Ritoux <alain.ritoux@6wind.com>
-
-	* connected.c: flag connected_up_ipv6() and connected_down_ipv6()
-	  usage with HAVE_IPV6
-
-2005-09-24 Hasso Tepper <hasso at quagga.net>
-
-	* rib.h: Add note about behaviour of rib_add_ipv[46]* functions -
-	  add is treated as implicit withdraw.
-
-2005-09-21 David Young <dyoung@ojctech.com>
-
-	* zebra_rib.c: Reduce the height of some staircases. Fix
-	  rib_delete_ipv6() to match routes in the RIB by their gateway as
-	  well as by destination.
-
-2005-09-21 Paul Jakma <paul.jakma@sun.com>
-
-	* zebra_rib.c: (static_uninstall_ipv{4,6}) Fix regression wrt
-	  removal of static routes with multiple-hops introduced with
-	  the workqueue conversion. We should free the relevant
-	  nexthop and then get rib_process to run, otherwise we just
-	  get same static route back again (with no way to unconfigure
-          it, because its already deleted from configuration).
-          
-2005-09-12 Paul Jakma <paul.jakma@sun.com>
-
-	* (general) RTM_CHANGE and implicit withdraw on RTM_NEWADDR
-	  support.
-	* connected.c: (connected_withdraw) new function. withdraw a
-	  connected subnet address set from zebra, and pass information
-	  along to clients.
-	  (connected_announce) similar, but to announce a new connected
-	  subnet address set.
-	  (connected_check_ipv4) renamed to connected_check, as its
-	  AFI independent.
-	  (connected_add_ipv{4,6}) Remove the connected address announce
-	  stuff, use connected_announce instead.
-	  If connected_check indicates address is already present,
-	  treat it as an implicit withdraw of the existing address, ie
-	  remove the old address details and replace with the new
-	  details.
-	  (connected_delete_ipv{4,6}) Use connected_withdraw.
-	  (connected_check_ipv6) deleted in favour of connected_check.
-	* connected.h: Rename connected_check_ipv4 to connected_check.
-	  delete connected_check_ipv6.
-	* interface.c: Use connected_check rather than the AFI specific
-	  symbols.
-	* kernel_socket.c: (rtm_read) RTM_CHANGE support. Create a 
-	  rib delete event for the existing route, before adding route
-	  again.
-	  (kernel_read) we can handle RTM_CHANGE now.
-
-2005-08-27 Hasso Tepper <hasso at quagga.net>
-
-	* zebra_rib.c, rib.h: Add distance and metric arguments to the
-	  rib_add_ipv6() function so that IPv6 routes in RIB can have correct
-	  metric. No IPv6 routing daemon uses distance yet though.
-	* zserv.c, connected.c, kernel_socket.c, rt_netlink.c,
-	  rtread_proc.c,zserv.c: Pass metric and distance info to the
-	  rib_add_ipv6().
-
-2005-07-29 Paul Jakma <paul.jakma@sun.com>
-
-	* interface.c: (if_delete_update) should always be available, not
-	  just on RTM_IFANNOUNCE/NETLINK systems.
-	* kernel_socket.c: (ifan_read) only call if_delete_update when
-	  interface departs, dont if_delete, because we wish to retain
-	  interface configuration state even when interfaces are removed.
-	  (ifm_read) If we dont have RTM_IFANNOUNCE, then transitioning
-	  to down state is only chance we have to clean up interface in case
-	  it is deleted (eg Solaris down -> unplumb -> plumb up).
-	* redistribute.c: (zebra_interface_delete_update) should always be
-	  available, we /will/ call it now on all systems, via
-	  if_delete_update.
-	* zserv.c: (zsend_interface_delete) ditto
-	  (zsend_interface_address) Update the call-flow diagramme, to
-	  reflect that if_delete_update /is/ now called on all systems,
-	  potentially.
-	* zserv.h: (zsend_interface_delete) unconditionally exported, as
-	  above.
-	  
-2005-06-28 Paul Jakma <paul.jakma@sun.com>
-
-	* (global) Extern and static'ification, with related fixups
-	  of declarations, ensuring files include their own headers, etc.
-	* if_ioctl.c: (interface_info_ioctl) fix obvious arg mis-order in
-	  list loop
-	* kernel_socket.c: (RTA_{ADDR,ATTR}_GET) fix mistake, NULL check
-	  should be on DEST argument
-
-2005-06-14 Paul Jakma <paul.jakma@sun.com>
-
-	* kernel_socket.c: consolidate the IFAM{ADDR,MASK}GET and 
-	  RTM{ADDR,MASK}GET macros into generic rta_addrs macros,
-	  RTA_{ADDR,ATTR}_GET.
-	  (af_check) could use 'inline' attribute
-	  (ifam_read_mesg) remove IFAM{ADDR,MASK}GET macro, change to
-	  generic macro.
-	  (rtm_read_mesg) similar
-
-2005-06-12 Hasso Tepper <hasso at quagga.net>
-
-	* rt_netlink.c: Remove netlink-addr socket declaration, it's not used.
-	* rt_netlink.c (netlink_parse_info): Fix debug messages - nlmsg_pid is
-	  unsigned and one zlog call had swapped arguments.
-	* rt_netlink.c (netlink_route_multipath): Fix compile with disabled
-	  IPv6 support.
-
-2005-05-31 Paul Jakma <paul.jakma@sun.com>
-
-	* zserv.c: (zsend_route_multipath) Fix bug if route is sent
-	  with no NEXTHOP_FLAG_FIB nexthops. As ZAPI_MESSAGE_IFINDEX
-	  and ZAPI_MESSAGE_NEXTHOP are always set, clients would try
-	  read non-existent nexthop information and hit stream assert.
-	  Zserv is still broken for multi-nexthop messages, but it always was.
-
-2005-05-06 Paul Jakma <paul.jakma@sun.com>
-
-	* zserv.h: Remove ZEBRA_PORT definition, its in lib/zebra.h now
-
-2005-04-28 Paul Jakma <paul.jakma@sun.com>
-
-	* rib.h: (struct rib) Add lock field for refcounting.
-	* zserv.h: (struct zebra_t) Add a ribq workqueue to the zebra
-	  'master' struct.
-	* zserv.c: (zread_ipv4_add) XMALLOC then memset should be XCALLOC.
-	* zebra_rib.c: Clean up refcounting of route_node, make struct rib
-	  refcounted and convert rib_process to work-queue. In general,
-	  rib's should be rib_addnode'd and delnode'd to route_nodes, and 
-	  these symmetrical functions will manage the locking of referenced
-	  route_node and freeing of struct rib - rather than having users
-	  manage each seperately - with much scope for bugs..
-	  (newrib_free) removed and replaced with rib_lock
-	  (rib_lock) new function, check state of lock and increment.
-	  (rib_unlock) new function, check lock state and decrement. Free
-	  struct rib if refcount hits 0, freeing struct nexthop's, as 
-	  newrib_free did.
-	  (rib_addnode) Add RIB to route_node, locking both.
-	  (rib_delnode) Delete RIB from route_node, unlocking each.
-	  (rib_process) Converted to a work-queue work function.
-	  Functional changes are minimal, just arguments, comments and 
-	  whitespace.
-	  (rib_queue_add_qnode) Helper function to setup a ribq item.
-	  (rib_queue_add) Helper function, same arguments as old
-	  rib_process, to replace in callers of rib_process.
-	  (rib_queue_qnode_del) ribq deconstructor.
-	  (rib_queue_init) Create the ribq.
-	  (rib_init) call rib_queue_init.
-	  (remainder) Sanitise refcounting of route_node's. Convert to 
-	  rib_queue_add, rib_addnode and rib_delnode. Change XMALLOC/memset
-	  to XCALLOC. Remove calls to nexthop_delete and nexthop_free.
-	  
-2005-04-10 Paul Jakma <paul@dishone.st>
-
-	* if_ioctl_solaris.c: (if_lookup_linklocal) fix order of args
-	  in ALL_LIST_ELEMENTS_RO macro.
-
-2005-04-10 Andrew J. Schorr <ajschorr@alumni.princeton.edu>
-
-	* zserv.c (zebra_client_read): Fix bug: first read attempt should
-	  read ZEBRA_HEADER_SIZE minus the number of bytes already read.
-	  Improve efficiency by maintaining a calculation of the number
-	  of bytes read instead of calling stream_get_endp multiple times.
-	  If message length is too small, issue a warning message (not debug)
-	  before closing the connection.  And also check that message length
-	  is not too big.
-
-2005-04-09 Hasso Tepper <hasso at quagga.net>
-
-	* rt_netlink.c: One tiny missing comma caused pointless debug messages
-	  about IPv6 nexthops.
-
-2005-04-09 Hasso Tepper <hasso at quagga.net>
-
-	* rt_netlink.c (netlink_parse_info): Fix warning. It's safe to cast
-	  status to unsigned here, because we already checked that it isn't
-	  negative or 0.
-	* rt_netlink.c (netlink_interface_addr): Prefix length belongs to the
-	  address, not to the interface.
-	* rt_netlink.c (netlink_route_multipath): Fix debug. No useless info
-	  is printed out now and IPv6 info is handeled.
-
-2005-04-05 Paul Jakma <paul@dishone.st>
-
-	* zserv.c: print more helpful errors when we fail to successfully
-	  bind and listen on zserv socket. Closes bugzilla #163.
-
-2005-04-02 Andrew J. Schorr <ajschorr@alumni.princeton.edu>
-
-	* if_ioctl.c: (interface_list_ioctl) Use if_get_by_name_len.
-	* if_proc.c: (ifaddr_proc_ipv6) Increase size of ifname buffer to
-	  avoid overflow.
-	* kernel_socket.c: (ifan_read) Use if_get_by_name_len.
-
-2005-04-02 Andrew J. Schorr <ajschorr@alumni.princeton.edu>
-
-	* kernel_socket.c: (ifm_read) Use new if_lookup_by_name_len function
-	  to save a memcpy.
-	* if_ioctl_solaris.c: (interface_list_ioctl) Fix subtle bug with new
-	  if_get_by_name_len function.
-
-2005-04-02 Andrew J. Schorr <ajschorr@alumni.princeton.edu>
-
-	* interface.c: (if_new_intern_ifindex) Remove obsolete function.
-	  (if_delete_update) After distributing the interface deletion message,
-	  set ifp->ifindex to IFINDEX_INTERNAL.
-	  (if_dump_vty) Detect pseudo interface by checking if ifp->ifindex is
-	  IFINDEX_INTERNAL.
-	  (zebra_interface) Check return code from interface_cmd.func.
-	  Do not set internal ifindex values to if_new_intern_ifindex(),
-	  since we now use IFINDEX_INTERNAL for all pseudo interfaces.
-	* kernel_socket.c: (ifm_read) Fix code and comments to reflect that
-	  all internal interfaces now have ifp->ifindex set to IFINDEX_INTERNAL.
-        * rt_netlink.c: (set_ifindex) New function used to update ifp->ifindex.
-	  Detects interface rename events by checking if that ifindex is already
-	  being used.  If it is, delete the old interface before assigning
-	  the ifindex to the new interface.
-	  (netlink_interface, netlink_link_change) Call set_ifindex to update
-	  the ifindex.
-
-2005-03-31 Hasso Tepper <hasso at quagga.net>
-
-	* rt_netlink.c (netlink_talk_filter): Show always warning message,
-	  it's not for debug.
-	* rt_netlink.c (netlink_talk): Don't assume we use netlink_cmd
-	  although we do now actually.
-	* rt_netlink.c (netlink_route, netlink_route_multipath): Always use
-	  netlink_cmd to send messages to the kernel.
-
-2005-03-30 Andrew J. Schorr <ajschorr@alumni.princeton.edu>
-
-	* irdp.h: Add prototype for irdp_sock_init, and fix protos for
-	  other irdp_* functions.
-	* irdp_interface.c: (irdp_if_start) If irdp_sock is negative,
-	  call irdp_sock_init to create the IRDP socket.
-	  (irdp_if_init) Rename to irdp_init().
-	  (get_iflist_ifp) Remove function that is a duplicate of
-	  if_lookup_by_index.
-	  (*) Make many functions static.  And remove superfluous "\n" from
-	  several zlog messages.
-	* irdp_main.c: (irdp_init) Remove function that used to call
-	  irdp_if_init() and irdp_sock_init(), since we will now create
-	  the socket only upon first use.
-	  (irdp_sock_init) Do not update global irdp_sock variable, just
-	  return the fd and assume that the caller will do so.  If setsockopt
-	  calls fail, close the socket before returning -1.
-	  (*) Make many functions static.
-	* irdp_packet.c: Initialize irdp_sock to -1.
-	  (irdp_read_raw) Call standard library function if_lookup_by_index
-	  instead of get_iflist_ifp.
-	  (irdp_recvmsg) Should be static, not global.
-
-2005-03-29 Andrew J. Schorr <ajschorr@alumni.princeton.edu>
-
-	* rt_netlink.c: (netlink_link_change) If the status of an
-	  operative interface changes (e.g. MTU changes), the client
-	  daemons should be notified by calling zebra_interface_up_update.
-	  Previously, the information was being updated in zebra's
-	  interface structure, but the clients were not notified of
-	  changes to an operative interface.
-
-2005-03-25 Jean-Mickael Guerin <jean-mickael.guerin@6wind.com>
-	* interface.c, interface.h, rtadv.c, rtadv.h: modifications to 
-	  IPv6 Neighbor Discovery according to RFC3775, section 7:
-	  o 1-bit Home Agent flag management in Router Advertisement (7.1).
-	  o 1-bit Router Address flag management in Prefix Information 
-	    Option (7.2).
-	  o Advertisement Interval Option (7.3)
-	  o Home Agent Information Option (7.4)
-	  o Changes to Sending Router Advertisements more frequently (7.5)
-
-2005-03-13 Hasso Tepper <hasso at quagga.net>
-
-	* zebra/interaface.c: "show interface description" command
-	  implemented.
-
-2005-03-12 Paul Jakma <paul@dishone.st>
-
-	* rt_netlink.c: (netlink_route_multipath) dont set equalise flag.
-	  No stock Linux kernel has ever supported it, and even if it had
-	  it's not generally a good idea.
-
-2005-03-07 Michael Sandee <voidptr@voidptr.sboost.org>
-
-	* if_proc.c, ipforward_proc.c, rtread_proc.c: Fix fd leaks.
-
-2005-03-06 Hasso Tepper <hasso at quagga.net>
-
-	* interface.c: Fix CRC and frame errors statistics in Linux.
-
-2005-02-28 Andrew J. Schorr <ajschorr@alumni.princeton.edu>
-
-	* zserv.c: Must include network.h and buffer.h for non-blocking I/O.
-	  Remove global message_queue and t_write (need separate buffering for
-	  each client).
-	  (zebra_server_dequeue,zebra_server_enqueue) Remove functions
-	  related to old buggy buffering code.
-	  (zserv_delayed_close) New thread callback function to delete a client.
-	  (zserv_flush_data) New thread callback function to flush buffered
-	  data to client.
-	  (zebra_server_send_message) Rewritten to use buffer_write (so
-	  buffering of writes and non-blocking I/O work properly).
-	  (zsend_interface_add,zsend_interface_delete,zsend_interface_address,
-	  zsend_interface_update) Return 0 instead of -1 if !client->ifinfo
-	  (this is not really an error).  Return value from
-	  zebra_server_send_message.
-	  (zsend_route_multipath,zsend_ipv4_nexthop_lookup,
-	  zsend_ipv4_import_lookup) Return value from zebra_server_send_message.
-	  (zsend_ipv6_nexthop_lookup) Fix scope to static, and return value
-	  from zebra_server_send_message.
-	  (zsend_router_id_update) Must use zebra_server_send_message instead
-	  of deprecated writen function.  Return 0 instead of -1 if this client
-	  is not subscribed to router-id updates (since this is not really
-	  an error).
-	  (zread_interface_add) Change type to static int.  If
-	  zsend_interface_add fails or zsend_interface_address fails, return -1
-	  immediately (since the client has had an I/O error).
-	  (zread_interface_delete,zread_ipv4_add,zread_ipv4_delete,
-	  zread_ipv6_add,zread_ipv6_delete,zread_router_id_delete) Return 0
-	  to indicate success.
-	  (zread_ipv4_nexthop_lookup) Return value from
-	  zsend_ipv4_nexthop_lookup.
-	  (zread_ipv4_import_lookup) Return value from zsend_ipv4_import_lookup.
-	  (zebra_read_ipv6) Remove unused function.
-	  (zread_ipv6_nexthop_lookup) Return value from
-	  zsend_ipv6_nexthop_lookup.
-	  (zread_router_id_add) Return value from zsend_router_id_update.
-	  (zebra_client_close) Call buffer_free(client->wb) and
-	  thread_cancel(client->t_suicide).
-	  (zebra_client_create) Allocate client->wb using buffer_new.
-	  (zebra_client_read) Support non-blocking I/O by using stream_read_try.
-	  Use ZEBRA_HEADER_SIZE instead of 3.
-	  (zebra_accept) Fix bug: reset accept thread at top.  Make client
-	  socket non-blocking using the set_nonblocking function.
-	  (config_write_forwarding) Fix scope to static.
-	  (zebra_init) Remove initialization code for old buggy write buffering.
-	* zserv.h: Add 2 new fields to struct zserv: struct buffer *wb
-	  (to enable buffered writes with non-blocking I/), and 
-	  struct thread *t_suicide to support delayed close on I/O
-	  errors.
-	* router-id.h: Remove prototypes for zread_router_id_add and
-	  zread_router_id_delete (their scope should be static to zserv.c).
-
-2005-02-24 Andrew J. Schorr <ajschorr@alumni.princeton.edu>
-
-	* redistribute.c: (zebra_check_addr,is_default,
-	  zebra_redistribute_default,zebra_redistribute) Fix scope to be static.
-
-2005-02-20 Hasso Tepper <hasso at quagga.net>
-
-	* rt_netlink.c: Don't show messages "ignoring message type 0x001[89]"
-	  if we are not debugging.
-
-2005-02-19 Paul Jakma <paul@dishone.st>
-
-	* zserv.c: (zebra_read_ipv6) replace the char * arithmetic with
-	  STREAM_READABLE.
-
-2005-02-14 Paul Jakma <paul@dishone.st>
-
-	* Not all Linux netlink systems have IFLA_WIRELESS
-
-2005-01-30 Andrew J. Schorr <ajschorr@alumni.princeton.edu>
-
-	* ioctl.c: (if_ioctl,if_ioctl_ipv6,if_get_flags) Replace perror with
-	  zlog_err.
-	* ioctl_solaris.c: (if_ioctl,if_ioctl_ipv6) Replace perror with
-	  zlog_err.
-
-2005-01-29 Andrew J. Schorr <ajschorr@alumni.princeton.edu>
-
-	* if_ioctl_solaris.c: (interface_list_ioctl) Save errno before calling
-	  zserv_privs.change.
-	* ioctl{,_solaris}.c: (if_ioctl,if_ioctl_ipv6) Save errno before calling
-	  zserv_privs.change.
-	* ipforward_solaris.c: (solaris_nd) Save errno before calling
-	  zserv_privs.change.
-	* irdp_main.c: (irdp_sock_init) Save errno before calling
-	  zserv_privs.change.
-
-2005-01-29 Andrew J. Schorr <ajschorr@alumni.princeton.edu>
-
-	* rt_netlink.c: (netlink_socket,netlink_request,netlink_parse_info,
-	  netlink_talk) Save errno before calling zserv_privs.change.
-
-2005-01-24 Martin Pot <mpot at martybugs.net>
-
-	* zebra/rt_netlink.c: ignore wireless newlink netlink messages.
-
-2005-01-18 Hasso Tepper <hasso at quagga.net>
-
-	* interface.c: Better statistics output in "show interface" command in
-	  case of /proc being used.
-
-2005-01-17 Hasso Tepper <hasso at quagga.net>
-
-	* main.c: With --nl-bufsize argument is required.
-
-2005-01-05 Paul Jakma <paul@dishone.st>
-
-	* zserv.c: (zebra_accept) Comment out setting of socket to NONBLOCK
-          for now, as we dont actually deal with with resending.... See
-          bugzilla #122, fix from wawa@yandex-team.ru (Vladimir Ivanov).
-	* kernel_socket.c: (routing_socket) ditto.
-
-2005-01-04 Andrew J. Schorr <ajschorr@alumni.princeton.edu>
-
-	* rtadv.c: (rtadv_recv_packet,rtadv_send_packet) Use ZCMSG_FIRSTHDR
-	  instead of CMSG_FIRSTHDR.
-
-2004-12-22 Andrew J. Schorr <ajschorr@alumni.princeton.edu>
-
-	* connected.c: (connected_add_ipv4) Limit warning about /32 addresses
-	  with no peer specified to PtP interfaces only.
-
-2004-12-18 Hasso Tepper <hasso at quagga.net>
-
-	* zebra_vty.c: Fix "show ipv6 route <proto>" command help and make it
-	  work for isis routes.
-
-2004-12-09  Greg Troxel  <gdt@fnord.ir.bbn.com>
-
-	* kernel_socket.c (rtmsg_debug): char * => const char *
-
-2004-12-07 Andrew J. Schorr <ajschorr@alumni.princeton.edu>
-
-	* *.c: Change level of debug messages to LOG_DEBUG.
-
-2004-12-07 Andrew J. Schorr <ajschorr@alumni.princeton.edu>
-
-	* main.c: (main) The 2nd argument to openzlog has been removed.
-	  So stdout logging will no longer be enabled by default.
-	* irdp_main.c: (irdp_finish) Reduce severity of shutdown message
-	  from LOG_WARNING to LOG_INFO.
-
-2004-12-03 Andrew J. Schorr <ajschorr@alumni.princeton.edu>
-
-	* main.c: (sigint) Use zlog_notice for termination message.
-	  (main) Add a startup announcement using zlog_notice.
-
-2004-11-25 Hasso Tepper <hasso at quagga.net>
-
-	* irdp_interface.c: Remove comment from DEFUN, it breaks vtysh because
-	  it confuses extract.pl.
-	* main.c: Make group to run as configurable.
-
-2004-10-28 Hasso Tepper <hasso at quagga.net>
-
-	* interface.c: Remove dead "ip tunnel" command.
-
-2004-10-22 Paul Jakma <paul@dishone.st>
-
-	* irdp_main.c: change setsockopt_pktinfo to setsockopt_ifindex
-
-2004-10-19 Andrew J. Schorr <aschorr@telemetry-investments.com>
-
-	* rt_netlink.c: (netlink_interface_addr) For PtP interfaces, ignore
-	  tb[IFA_ADDRESS] if it's the same as tb[IFA_LOCAL].
-	* interface.c: (ip_address_install) Use new ipv4_broadcast_addr
-	  function.
-	* connected.c: (connected_up_ipv4) Use CONNECTED_POINTOPOINT_HOST
-	  macro.
-	  (connected_down_ipv4) ditto.
-	  (connected_add_ipv4) Validate destination address, print warnings
-	  if it does not make sense.
-
-2004-10-19 Hasso Tepper <hasso at quagga.net>
-
-	* zserv.c: Fix regression introduced with zserv cleanup.
-
-2004-10-13 Hasso Tepper <hasso at quagga.net>
-
-	* zebra_snmp.c: Remove defaults used to initialize smux connection to
-	  snmpd. Connection is initialized only if smux peer is configured.
-	* zserv.c: Remove useless warnings "forwarding is already on".
-
-2004-10-12 Hasso Tepper <hasso at quagga.net>
-
-	* zebra_vty.c: Unbreak "show ip route" command help and make it work
-	  for isis routes.
-	* interface.c(if_dump_vty): Show IPv6 addresses in "show interface"
-	  output. Fixes Bugzilla #119.
-	* *.c: Make some strings const and some (unsigned) casts to fix
-	  compiler warnings.
-
-2004-10-07 Hasso Tepper <hasso at quagga.net>
-
-	* connected.c, main.c, rt_netlink.c, rtadv.c, zebra_rib.c, zserv.c:
-	  Fix warnings: make strings const, signed -> unsigned.
-
-2004-10-05 Paul Jakma <paul@dishone.st>
-
-	* irdp_packet.c: (parse_irdp_packet) style issues.
-	  Use sockopt_iphdrincl_swab_systoh.
-          Try unbork the code. Checksum the ICMP data and actually 
-          compare it to received checksum. Check data length against
-          claimed length in header.
-	  Always use ntoh.. when accessing addresses, even when the
-          comparison happens to be endian-safe.
-	  (send_packet) minor style isues. Use
-          sockopt_iphdrincl_swab_htosys.
-	  (irdp_iph_hton/ntoh) IP header to/from network/host order.
-
-2004-10-03 Gilad Arnold <gilad.arnold at terayon.com>
-
-	* interface.c, interface.h: A new prefix tree of connected subnets is
-	  associated with each interface structure in zebra, in which each
-	  live (ie, non-synthetic) node holds a list of installed addresses
-	  that belong to that prefix. Remove secondary address logic from cli.
-	  See [quagga-dev 872] for detailed explanation.
-	* connected.c: Use if_subnet_add() and if_subnet_delete().
-
-2004-10-03 James R. Leu <jleu at mindspring.com>
-
-	* router-id.c, router-id.h: New files. Router id selection process. If
-	  there is non 127.x.x.x address in loopack interface, lowest of them
-	  is chosen. If there isn't, lowest from other interfaces addresses
-	  are chosen. "router-id x.x.x.x" vty command to manual override.
-	* Makefile.am: Compile new files.
-	* main.c: Initialize router id.
-	* redistribute.c: Add interface addresses into router id selection
-	  lists as they (dis)appear.
-	* zserv.c, zserv.h: Sending router id related messages to daemons.
-
-2004-09-26 Hasso Tepper <hasso at quagga.net>
-
-	* irdp_interface.c, irdp_main.c, irdp_packet.c, rt_netlink.c,
-	  rtadv.c, zebra_vty.c: Fix compiler warnings.
-
-2004-09-24 Paul Jakma <paul@dishone.st>
-
-	* irdp_interface.c: (no_ip_irdp_address_preference_cmd)
-          add missing listnode declaration.
-
-2004-09-24 Paul Jakma <paul@dishone.st>
-
-        * irdp_{interface,main}.c: lists typedef removal cleanup.        
-          update some list loops to LIST_LOOP. some miscellaneous style
-          and indent fixups.
-          (no_ip_irdp_address_preference_cmd) Fix delete of referenced node    
-          in loop.
-        * irdp_packet.c: (irdp_recvmsg) Fix buggy assignment of integer
-          to pointer.
-        * if_ioctl{,_solaris}.c: lists typedef removal cleanup. 
-          update some list loops to LIST_LOOP.
-
-2004-09-23 Hasso Tepper <hasso at quagga.net>
-
-	* *.[c|h]: list -> struct list *, listnode -> struct listnode *.
-
-2004-09-22 Paul Jakma <paul.jakma@sun.com>
-
-	* zserv.c: (zsend_route_multipath) fix nasty bad memset of struct
-	  in_addr to sizeof(struct in6_addr), causing odd and hard to debug
-          crash.
-
-2004-08-31 Hasso Tepper <hasso at quagga.net>
-
-	* main.c, rt_netlink.c: Added -s command line switch for tuning
-	  netlink receive buffer size in Linux to avoid buffer overruns.
-
-2004-08-26  Miles Nordin  <carton@Ivy.NET>
-
-	* ipforward_sysctl.c (mib_ipv6): Use size_t for len, per
-	  sysctl(3), rather than int.  (Needed on NetBSD/alpha to display
-	  forwarding status correctly.)
-
-2004-08-23 Paul Jakma <paul@dishone.st>
-
-	* zserv.c: (zebra_init) remove implicit ip forward enabling
-	
-2004-08-19 Paul Jakma <paul@dishone.st>
-
-        * irdp_main.c: update to match sockopt renames.
-        * irdp_packet.c: include sockopt.h and update to match sockopt
-	  renames.
-                
-2004-08-11  Greg Troxel  <gdt@fnord.ir.bbn.com>
-
-	* rtadv.c (rtadv_send_packet): Allocate space for control messages
-	more carefully; it was wrong on NetBSD/sparc where CMSG alignment
-	is to 8 bytes instead of 4, and overwriting the address.  Use the
-	provided macros for determining lengths.
-
-2004-07-23 Sowmini Varadhan <Sowmini.Varadhan@Sun.COM>
-
-        * if_ioctl_solaris.c: HAVE_IPV6 ifdef fixups
-        * zserv.c: ditto
-        * ioctl_solaris.c: ditto.
-        * interface.c: cast for LLADDR
-        * interface.h: Add guards, include redistribute.h and remove
-          extraneous definitions of zebra_interface_{up,down}_update
-        * ioctl.h: Add AF_IOCTL define for non SOLARIS_IPV6
-        * redistribute.h: include dependent header, zserv.h
-        * zserv.h: include dependent header, rib.h
-
-2004-07-23 Paul Jakma <paul@dishone.st>
-
-	* irdp_main.c: use setsockopt_pktinfo_ipv4
-	* irdp_packet.c: use SOPT_SIZE_CMSG_PKTINFO_IPV4 and 
-	  getsockopt_pktinfo_ifindex()
-
-2004-07-13  David Wiggins <dwiggins@bbn.com
-
-	* kernel_socket.c (rtm_flag_dump): terminate buffer with '\0', not '0'.
-
-2004-07-13 Hasso Tepper <hasso@estpak.ee>
-
-	* irdp_main.c: Add privilege change.
-
-2004-07-12  Hasso Tepper <hasso@estpak.ee>
-
-	* irdp_interface.c: follow common style while naming vty command
-	  functions. Avoids confusion in extract.pl.
-
-2004-06-30  Greg Troxel  <gdt@poblano.ir.bbn.com>
-
-	* main.c: define thread_master variable so that linking with
-	libzebra.so doesn't fail.  Arguably zclient.o should be in a
-	separate library, but this is far less disruptive.
-
-2004-06-12 Robert Olsson <Robert.Olsson at data.slu.se>
-
-        * Added IRDP support.
-
-2004-05-18 Hasso Tepper <hasso@estpak.ee>
-
-	* rtadv.c: Removed "[no] ipv6 nd send-ra" command. Replaced "ipv6 nd
-	  prefix-advertisement" with "ipv6 nd prefix". Rewrite syntax of
-	  "ipv6 nd prefix" command to allow various combinations of parameters
-	  and flags. No defaults in configuration. Replaced on-link and
-	  autoconfig with off-link and no-autoconfig flags in command syntax.
-	  Cosmetic fixes in all commands. Documentation to reflect all changes.
-
-2004-05-11 Paul Jakma <paul@dishone.st>
-
-	* Makefile.am: support for IOCTL_METHOD, as per Sowmini's patch.
-	* if_ioctl_solaris.c: Fixup some erroneous privilege changes and
-	  add privs.h header.
-	* ioctl_solaris.c: ditto
-	* ioctl.h: Add if_ioctl_ipv6 prototype and AF_IOCTL for SOLARIS_IPV6
-	* kernel_socket.c: Fix SAROUNDUP, compiler doesnt like do..while
-	  RHS in assignments :)
-	* redistribute.c: (zebra_interface_delete_update) only used
-	  if RTM_IFANNOUNCE and NETLINK is available.
-		 
-2004-05-09 Paul Jakma <paul@dishone.st>
-
-	* zserv.c: (zsend_route_multipath) Set the nexthop_num
-	  field correctly. Add NEXTHOP_TYPE_IPV6_IFNAME for v6.
-	  Conditionally set ZAPI_MESSAGE_METRIC flag - only for adds.
-	  (zsend_ipv4_add) cruft, deleted.
-	  (zsend_ipv4_delete) ditto.
-	  (zsend_ipv6_add) ditto.
-	  (zsend_ipv6_delete) ditto.
-	* ioctl.c: (if_get_mtu) set mtu6 to mtu
-	* mtu_kvm.c: (if_kvm_get_mtu) set mtu6 to mtu
-	* rt_netlink.c: (netlink_interface) set mtu6 to mtu
-	  (netlink_link_change) ditto 
-	* ipforward_solaris.c: fix typo of ND variable.
-	* if_ioctl_solaris.c: Add zprivs support.
-	* ioctl_solaris.c: ditto.
-		  
-2004-05-09 Sowmini Varadhan <sowmini.varadhan@sun.com>
-
-	* zserv.c: (zsend_ipv{4,6}_{add,delete}_multipath) collapsed
-	  into single zsend_route_multipath function.
-	  (zsend_interface_{up,down}) collapsed into zsend_interface_update.
-	  (zsend_interface_address_{add,delete}) collapsed into 
-	  zsend_interface_address.
-	  (zsend_interface_add) send mtu6.
-	  (zsend_interface_delete) ditto.
-	  (zebra_write) remove unused function.
-	  (various) Apply static qualifier. Add comments.
-	* zserv.h: Definitions changed as per above.
-	* redistribute.c: Changes as per zserv.c.
-	* interface.c: (if_delete_update) only used with HAVE_NETLINK
-	  and RTM_IFANNOUNCE.
-	  (if_flag_dump_vty) Solaris IFF_IPV4 and IFF_IPV6 if flags
-	  (if_dump_vty) print mtu6 if not same as mtu	  
-	* if_ioctl_solaris.c: New file, Solaris interface ioctl methods.
-	* ioctl_solaris.c: New file, Common solaris ioctl methods.
-	
-2004-04-06  Krzysztof Oledzki <oleq@ans.pl>
-
-	* rt_netlink.c: Do not ignore metric when reading kernel routing
-	  table on Linux with rt_netlink interface.
-
-2004-03-18  Hasso Tepper <hasso@estpak.ee>
-
-	* interface.c: Temporary fix for handling secondary addresses
-	  with label.
-
-2004-02-12  Hasso Tepper  <hasso@estpak.ee>
-
-	* zserv.c: Added "ipv6 forwarding" command.
-
-2004-01-08  Greg Troxel  <gdt@fnord.ir.bbn.com>
-
-	* kernel_socket.c (kernel_read): Use sockaddr_storage in buffer
-	for reading kernel messages to ensure enough space (necessary on
-	Solaris due to sockaddr_dl being large).  Thanks to Sowmini
-	Varadhan for help with this change.
-
-2004-01-06  Greg Troxel  <gdt@t1.ir.bbn.com>
-
-	* rtadv.c (rtadv_send_packet): Change perror to zlog_err.
-
-2004-01-05  Greg Troxel  <gdt@fnord.ir.bbn.com>
-	* kernel_socket.c (ifm_read): Major cleanup.  Use Sowmini's code
-	to find the sockaddr_dl in all cases, narrowing the Solaris ifdef
-	to just the accomodation of broken kernels.  Check sockaddr_dl
-	carefully up front, and later assume any non-NULL sdl pointer is
-	valid.  Clean up types and variable declarations, and rename
-	WRAPUP to SAROUNDUP to make the name fit the behavior.
-
-2004-01-05  Greg Troxel  <gdt@fnord.ir.bbn.com>
-
-	* kernel_socket.c (kernel_read): Add a sockaddr_dl to the ifmsg
-	structure, because on Solaris sockaddr_dl is far larger than the
-	base sockaddr structure.  (The code had previously been failing to
-	read all the data.)
-	
-2004-01-05  Greg Troxel  <gdt@ahi.ir.bbn.com>
-
-	* kernel_socket.c (kernel_read): Look up interfaces by index
-	first, so that state changes which do not include a sockaddr_dl
-	now work.  Add many sanity checks.  In
-	particular, do not assume that a sockaddr_dl follows a message
-	without checking the ifm_addrs flags, and do not trust the length
-	in a sockaddr_dl.  Add/clarify many comments.
-
-2003-12-03  Greg Troxel  <gdt@poblano.ir.bbn.com>
-
-	* rtadv.c: reorder includes to avoid compiler warning (define
-	structs before using them in prototypes)
-
-2003-05-25 Jim Crumpler <Jim.Crumpler@edion.com>
-
-  * zserv.c: Add "ip forwarding" command.
-
-2003-05-16 Gilad Arnold <gilad.arnold@terayon.com>
-
-	* zebra_rib.c: Fix memory leaks for ifname nexthops
-
-2003-04-19 Israel Keys <ikeys@agile.tv>
-
-	* rt_netlink.c: BLOCK on netlink while initialising
-
-2003-02-06  Francois Deppierraz <francois@ctrlaltdel.ch>
-
-	* rt_netlink.c (netlink_route_multipath): Set RTM_F_EQUALIZE when
-	it exists.
-
-2002-09-28  Akihiro Mizutani <mizutani@net-chef.net>
-
-	* zebra_rib.c (static_add_ipv4): Null0 static route is added.
-
-2002-09-10  Jochen Friedrich <chris+zebra@scram.de>
-
-	* rt_netlink.c: Add check for EAGAIN.
-	* kernel_socket.c: Likewise
-
-2002-06-12  Israel Keys <ikeys@oz.agile.tv>
-
-	* rt_netlink.c: Setting the NLM_F_ACK flag on the netlink command
-	  message so that we get an ACK for successful netlink commands.
-	  Change the netlink socket to BLOCKING while we wait for a
-	  response; be it an ACK or an NLMSG_ERROR.  Change
-	  netlink_parse_info to deal with ACK messages.
-
-2001-11-01  Jun-ichiro itojun Hagino <itojun@iijlab.net>
-
-	* rtadv.c (rtadv_make_socket): setsockopt(IPV6_CHECKSUM) does not
-	work for ICMPv6 socket.
-
-2001-10-24  Kunihiro Ishiguro  <kunihiro@ipinfusion.com>
-
-	* rib.c (rib_process): Select connected route any case.
-
-2001-10-23  Kunihiro Ishiguro  <kunihiro@ipinfusion.com>
-
-	* interface.c (no_ip_address_secondary): Add "no" to command.
-
-2001-10-18  NOGUCHI Kay  <kay@v6.access.co.jp>
-
-	* ioctl.c (if_prefix_add_ipv6): Set the prefered and valid lifetime
-	to infinity as the freebsd4.4 workaroud.
-
-2001-08-26  mihail.balikov@interbgc.com
-
-	* zebra_snmp.c: Fix snmpwalk problem such as IPv4 address
-	A.B.C.255.
-
-2001-08-22  NOGUCHI Kay <kay@v6.access.co.jp>
-
-	* rtadv.c: Do not send RA to loopback interface.
-
-2001-08-20  Kunihiro Ishiguro  <kunihiro@ipinfusion.com>
-
-	* ioctl.c (if_set_prefix): Remove Linux 2.0 specific connected
-	route treatment.
-
-2001-08-19  Kunihiro Ishiguro  <kunihiro@ipinfusion.com>
-
-	* zebra-0.92a released.
-
-2001-08-17  Kunihiro Ishiguro  <kunihiro@ipinfusion.com>
-
-	* rib.c: Kernel route is treated as EGP routes in nexthop active
-	check.
-
-2001-08-15  Kunihiro Ishiguro  <kunihiro@ipinfusion.com>
-
-	* zebra-0.92 released.
-
-2001-08-08  "Akihiro Mizutani" <mizutani@dml.com>
-
-	* rib.c (show_ip_route_prefix_longer): Add longer-prefix option to
-	show route commands.
-
-2001-07-29  Yon Uriarte <havanna_moon@gmx.net>
-
-	* zserv.c (zsend_ipv4_add_multipath): Add
-	NEXTHOP_TYPE_IPV4_IFINDEX check.
-
-2001-07-29  NOGUCHI Kay <kay@v6.access.co.jp>
-
-	* rtadv.c: Apply valid lifetime, preferred lifetime, onilnk flag,
-	autonomous address-configuration flag patch.
-	(no_ipv6_nd_suppress_ra): Change "ipv6 nd send-ra" to "no ipv6 nd
-	suppress-ra".
-
-2001-07-24  NOGUCHI Kay <kay@v6.access.co.jp>
-
-	* rtadv.c (ipv6_nd_ra_interval): Add "ipv6 nd ra-interval SECONDS"
-	command.
-
-2001-07-24  Jun-ichiro itojun Hagino <itojun@iijlab.net>
-
-	* rt_socket.c (kernel_rtm_ipv4): Add KAME/NetBSD151 equal cost
-	multicast FIB support both IPv4 and IPv6.
-
-2001-07-24  Hal Snyder <hal@vailsys.com>
-
-	* if_ioctl.c (interface_list_ioctl): Fix bug of failing to get the
-	full list of interfaces on some configurations of OpenBSD.
-
-2001-07-23  NOGUCHI Kay <kay@v6.access.co.jp>
-
-	* rtadv.c (ipv6_nd_send_ra): Apply [zebra 9320] to fix "ipv6 nd
-	send-ra" bug.
-	(ipv6_nd_ra_lifetime): "ipv6 nd ra-lifetime 0" for default router
-	availability.
-	(ipv6_nd_managed_config_flag): "ipv6 nd managed-config-flag" is
-	added.
-	(ipv6_nd_other_config_flag): "ipv6 nd other-config-flag" is added.
-	
-2001-07-23  Jun-ichiro itojun Hagino <itojun@iijlab.net>
-
-	* ioctl.c (if_ioctl): Change ioctl argument from int to u_long.
-
-	* rt_ioctl.c: Likewise.
-
-2001-07-23  Jun-ichiro itojun Hagino <itojun@iijlab.net>
-
-	* kernel_socket.c (rtm_write): Only set RTF_CLONING when the
-	interface is not p2p.
-
-2001-04-23  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* ioctl.c (if_prefix_add_ipv6): Fix argument type.
-
-2001-04-06  Toshiaki Takada  <takada@zebra.org>
-
-	* zserv.c (zsend_interface_delete): Use client->obuf instead of
-	allocating new stream.
-
-2001-03-10  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* rt_netlink.c: Revert RTPROT_BOOT change.
-
-2001-03-08  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* rt_netlink.c (netlink_route_change): Skip RTPROT_BOOT route.
-	(netlink_routing_table): Likewise.
-
-2001-03-07  "Akihiro Mizutani" <mizutani@dml.com>
-
-	* zserv.c (zsend_ipv4_add_multipath): Send metric value to
-	protocol daemons.
-
-2001-02-18  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* rt_netlink.c (netlink_routing_table): Do not return
-	tb[RTA_GATEWAY] is NULL.  Reported by: "Michael O'Keefe"
-	<mokeefe@qualcomm.com>.
-
-2001-02-08  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* if_ioctl.c (interface_list_ioctl): Call if_add_update().
-	Suggested by: Chris Dunlop <chris@onthe.net.au>.
-
-2001-02-01  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* rib.c (nexthop_active_ipv4): When nexthop type is
-	NEXTHOP_TYPE_IPV4_IFINDEX, propery set the ifindex to rifindex.
-
-	* zserv.c: Initialize rtm_table_default with 0.
-
-	* zebra-0.91 is released.
-
-2001-01-31  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* kernel_socket.c (rtm_read): Filter cloned route.  Suggested by:
-	Jun-ichiro itojun Hagino <itojun@iijlab.net>
-
-2001-01-30  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* connected.c (connected_up_ipv6): When point-to-point destination
-	address is ::, use local address for connected network.
-	(connected_down_ipv6): Likewise.
-
-2001-01-25  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* zserv.c (zebra_serv): Add missing close() call.  Reported by:
-	David Waitzman <djw@vineyard.net>.
-
-2001-01-24  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* rib.c (rib_lookup_ipv4): New function for checking exact match
-	IGP route.
-
-2001-01-23  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* rib.c (show_ipv6_route_protocol): Fix bug of "show ip route
-	route-type".
-
-2001-01-22  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* interface.c (zebra_interface): Do not call
-	zebra_interface_add_update for inactive interface.
-
-	* zserv.c (zsend_interface_address_add): Send interface address
-	flag.
-	(zsend_interface_address_delete): Likewise.
-
-2001-01-19  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* interface.c (if_addr_add):  Add flags.
-
-	* connected.c (ifa_add_ipv4): Add new function for interface
-	address handling.
-	(ifa_delete_ipv4): Likewise.
-
-2001-01-16  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* rib.c (rib_update): Update IPv6 RIB.
-
-	* kernel_socket.c (ifam_read): Call if_refresh() for update
-	interface flag status.  This is for implicit interface up on *BSD.
-
-	* interface.c (if_refresh): Add interface flag refresh function.
-
-	* kernel_socket.c (rtm_read): Fetch link-local address interface
-	index.
-	(ifan_read): We need to fetch interface information.  Suggested
-	by: Yasuhiro Ohara <yasu@sfc.wide.ad.jp>.
-
-	* rib.c (static_ipv6_nexthop_same): Add check for
-	NEXTHOP_TYPE_IPV6_IFNAME.
-
-2001-01-15  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* rib.h (NEW_RIB): Turn on NEW_RIB flag.  IPv6 new RIB code are
-	taken into place.
-
-2001-01-14  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* rib.c (static_ipv6_write): Display STATIC_IPV6_GATEWAY_IFNAME
-	configuration.
-	(rib_delete_ipv6): Handle same route conter for IPv6 connected
-	route.
-	(show_ipv6_route_protocol): New command.
-	(show_ipv6_route_addr): Likewise.
-	(show_ipv6_route_prefix): Likewise.
-	(rib_update): Sweep kernel route when it is cleaned up.
-
-	* rt_socket.c (kernel_add_ipv6): Add NEXTHOP_IPV6_IFNAME
-	treatmenet.
-
-	* rt_netlink.c (kernel_init): Likewise.
-
-	* rt_ioctl.c (kernel_ioctl_ipv6_multipath): Likewise.
-
-	* rib.c (rib_add_ipv4): Cope with same connected route on a
-	interface.  Suggested by: Matthew Grant <grantma@anathoth.gen.nz>.
-	(nexthop_ipv6_ifname_add): Add NEXTHOP_IPV6_IFNAME treatmenet.
-
-	* rib.h (struct new_rib): Add refcnt to keep track on the
-	reference of same connected route.
-
-	* ioctl.c (if_set_prefix): Add check for GNU_LINUX.
-
-2001-01-13  Yasuhiro Ohara <yasu@sfc.wide.ad.jp>
-
-	* kernel_socket.c (ifan_read, rtm_type_str): Add RTM_OIFINFO check.
-	(rtm_type_str): Add RTM_IFANNOUNCE check.
-	(ifan_read): New function.
-	(kernel_read): Add case for RTM_IFANNOUNCE.
-
-2001-01-13  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* rt_ioctl.c (kernel_ioctl_ipv6_multipath): New function.
-
-	* rt_netlink.c (netlink_route_multipath): IPv6 address ifindex
-	treatment.
-
-	* connected.c (connected_up_ipv6): Add dest value check.
-
-	* rib.c (nexthop_active_ipv6): Do not touch IPv6 nexthop's
-	ifindex.
-	(rib_add_ipv4): Import rib_add_ipv6() same route check code.
-	(nexthop_active_check): NEXTHOP_TYPE_IPV6_IFINDEX activity is only
-	checked by ifindex.
-
-	* rt_socket.c (kernel_rtm_ipv6_multipath): New function.
-
-	* redistribute.c (redistribute_add): Use
-	zsend_ipv6_add_multipath().
-	(redistribute_delete_multipath): Use
-	zsend_ipv6_delete_multipath().
-
-	* interface.c (ip_address): Check current IP address to avoid
-	duplicate.
-
-	* rib.c (rib_delete_ipv4): When deleted route is connected route,
-	check ifindex.
-	(rib_add_ipv4): When connected route is added do not perform
-	implicit withdraw.
-	(rib_delete_ipv4): Check ifindex for connected route.
-
-	* kernel_socket.c (rtm_read): When route has RTF_STATIC, set
-	ZEBRA_FLAG_STATIC for indicate as persistent route.
-	(ifam_read): Unset interface index from link-local address when
-	IPv6 stack is KAME.
-
-	* rib.c (rib_update): Do not delete persistent kernel route.
-
-	* rib.h (struct new_rib): Integrate RIB_FLAG_* to ZEBRA_FLAG_*.
-
-	* rt_socket.c (kernel_add_ipv6_multipath): Add placeholder.
-	(kernel_delete_ipv6_multipath): Likewise.
-
-	* rt_netlink.c (netlink_talk): Give struct nlsock to netlink_talk.
-
-2001-01-12  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* rib.c (rib_update): Revert Matthew Grant's patch
-	zebra_cvs_newribfix.patch.  Use struct rib->ifindex for kernel
-	interface index.  Introduce NEXTHOP_TYPE_IPV4_IFINDEX to support
-	that.  Add support for address deletion situation.
-
-2001-01-11  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* interface.c: Remove HAVE_IF_PSEUDO part.
-
-	* rib.h: Likewise.
-
-	* rt_netlink.c (netlink_link_change): Likewise.
-
-2001-01-10  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* zserv.c: Remove OLD_RIB codes.
-
-2001-01-09  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* zebra-0.90 is released.
-
-2001-01-09  Matthew Grant <grantma@anathoth.gen.nz>
-
-	* interface.c (if_new_intern_ifindex): Allocate a new internal
-	interface index.
-	(if_addr_refresh): Fix up ip addresses configured via zebra.
-	(if_add_update): Handle an interface addition.
-	(if_delete_update): Handle an interface delete event.
-
-	* rib.c (nexthop_ipv4_add): Add kernel route deletion process when
-	interface goes down.
-
-2001-01-08  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* interface.c (if_dump_vty): When HAVE_NET_RT_IFLIST is defined,
-	NetBSD also use this function.  Suggested by Jasper Wallace
-	<jasper@ivision.co.uk>.
-
-2001-01-07  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* rib.c (nexthop_active_ipv4): Move back to set methodo to old
-	one.
-
-2001-01-05  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* rib.c (rib_add_ipv4): EBGP multihop set ZEBRA_FLAG_INTERNAL
-	flag, so treat it.
-
-2001-01-04  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* rt_netlink.c (netlink_talk_ipv6): When IPv6 route message is
-	sent from netlink_cmd, the same message comes from netlink.  To
-	avoid confusion, temporary netlink_talk_ipv6 use netlink.sock
-	instead of netlink_cmd.sock.
-
-2001-01-01  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* zserv.h (ZEBRA_SERV_PATH): Change "/tmp/zebra" to "/tmp/.zebra".
-	Change "/tmp/zserv" to "/tmp/.zserv".
-	
-2000-12-29  Frank van Maarseveen <F.vanMaarseveen@inter.NL.net>
-
-	* rt_netlink.c (struct nlsock): Divide kernel message into listen
-	socket and command socket.
-	(netlink_talk): Remove socket listen code.  Use netlink_parse_info
-	for read kernel response.
-
-2000-12-29  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* rib.c (vty_show_ip_route): Show uptime of the RIP,OSPF,BGP
-	routes.
-
-2000-12-27  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* rt_netlink.c (netlink_route_multipath): Metric value is
-	reflected to kernel routing table.
-
-	* rt_ioctl.c (kernel_ioctl_ipv4_multipath): Likewise.
-
-	* kernel_socket.c (rtm_write): Likewise.
-
-	* rib.c (nexthop_active_ipv4): Only iBGP route perform recursive
-	nexthop lookup.
-
-	* rt_ioctl.c (kernel_ioctl_ipv4_multipath): Add ioctl version of
-	new RIB implementation.
-
-2000-12-26  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* rib.h: Remove MULTIPATH_NUM.  It is defined by configure script.
-
-2000-12-25  Michael Rozhavsky <mrozhavsky@opticalaccess.com>
-
-	* rib.c (rib_if_up): Call rib_fib_set instead of RIB_FIB_SET for
-	proper redistribution.
-
-2000-12-19  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* rib.c (nexthop_active_ipv4): Add self lookup nexthop check.
-	(show_ip_route_protocol): Support new RIB.
-
-	* rt_netlink.c (netlink_route_change): Do not return when gate is
-	NULL.
-
-2000-12-18  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* rib.c (rib_lookup_ipv4_nexthop): IBGP nexthop check function is
-	updated.
-	(rib_add_ipv4): Free implicit withdraw route's RIB.
-
-2000-12-15  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* rib.c (nexthop_active_ipv4): Check indirect nexthop.
-
-	* redistribute.c (redistribute_add_multipath): Redistribution
-	works with new rib code.
-
-2000-12-14  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* rt_netlink.c (netlink_route_multipath): Check useful nexthop
-	number.
-	(netlink_route_multipath): Clear rtnh_flags and rtnh_hops.
-
-	* rib.c (nexthop_active_update): Set flag for the rib's nexthop
-	activity is changed.
-	(nexthop_active_check): Before checking interface is up, make it
-	sure the interface exist.
-
-2000-11-20  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* rib.c (ip_route): New RIB prototype.
-
-2000-11-16  Yon Uriarte <ukl2@rz.uni-karlsruhe.de>
-
-	* zserv.c (zsend_interface_add): Send hardware address when
-	hw_addr_len is greater than 0.
-
-2000-11-07  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* connected.c (connected_up_ipv4): Fix ptop bug.  The destination
-	network should be installed into routing table.
-	(connected_down_ipv4): Likewise.
-	(connected_add_ipv4): Change to use connected_up_ipv4.
-	(connected_delete_ipv4): Likewise.
-
-2000-11-06  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* rt_netlink.c (netlink_interface_addr): Revert Harald Welte
-	<laforge@gnumonks.org>'s ptop patch then back to original code to
-	avoid duplicated connected route problem.  Suggested by Frank van
-	Maarseveen <F.vanMaarseveen@inter.NL.net>.
-
-	* kernel_socket.c (rtm_read): Make behavior consistent even #ifdef
-	DEBUG is defined.  Reported by Jun-ichiro itojun Hagino
-	<itojun@iijlab.net>.
-
-2000-10-23  Jochen Friedrich <jochen@scram.de>
-
-	* main.c (main): Call zebra_snmp_init() when it is enabled.
-
-2000-10-23  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* zserv.c (zebra_serv_un): UNIX domain socket server of zebra
-	protocol.
-
-2000-10-19  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* rib.c (rib_add_ipv4): Same check bug is fixed.
-
-2000-10-03  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* rib.c (rib_if_down): Remove kernel route when the interface goes
-	down.
-
-	* debug.c: New command "debug zebra kernel" is added.
-
-2000-10-02  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* zebra-0.89 is released.
-
-2000-09-24  Harald Welte <laforge@gnumonks.org>
-
-	* rt_netlink.c (netlink_interface_addr): Fix point-to-point address
-	treatment in netlink interface.
-
-2000-09-21  David Lipovkov <dlipovkov@OpticalAccess.com>
-
-	* rib.c (rib_if_down): Pull static route only.  Protocol daemon
-	must withdraw routes when interface goes down.
-	(rib_add_ipv4): Check nexthop when replace route.
-
-2000-09-21  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* if_ioctl.c (if_getaddrs): New function for looking up
-	interface's address by getifaddrs().
-
-2000-09-10  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* connected.c (connected_delete_ipv4): Add check for connected
-	address is found or not.
-	(connected_add_ipv6): Reflect IPv6 connected address change to
-	protocol daemons.
-	(connected_delete_ipv6): Likewise.
-
-2000-09-07  David Lipovkov <davidl@nbase.co.il>
-
-	* rib.c (rib_delete_ipv4): Reverted the change from pseudo
-	interface patch to original.  Because ospfd deletes routes using
-	zero ifindex.
-
-2000-08-17  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* zebra-0.88 is released.
-
-2000-08-15  "Akihiro Mizutani" <mizutani@dml.com>
-
-	* rib.c (show_ip_route_protocol): Help string correction.
-	(show_ip_route_prefix): Check prefix mask.
-	(show_ip_route_vty_detail): Display distance and metric.
-
-2000-08-14  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* zserv.c (zsend_interface_add): Change ifindex store size from
-	two octet to four.
-	(zsend_interface_delete): Likewise.
-	(zsend_interface_address_add): Likewise.
-	(zsend_interface_address_delete): Likewise.
-	(zsend_interface_up): Likewise.
-	(zsend_interface_down): Likewise.
-
-2000-08-13  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* rib.c (rib_add_ipv4): Do not install distance 255 route.
-
-2000-08-10  Toshiaki Takada  <takada@zebra.org>
-
-	* interface.c (bandwidth_if), (no_bandwidth_if):  Call
-	zebra_interface_up_update () instead of using if_up() and if_down().
-
-2000-08-07  "Akihiro Mizutani" <mizutani@dml.com>
-
-	* interface.c (bandwidth_if): Fix help string.
-
-2000-08-07  Matthew Grant <grantma@anathoth.gen.nz>
-
-	* interface.c (if_dump_vty): Display bandwidth value.
-	(bandwidth_if): New command "bandwidth <1-10000000>" is added.
-	When interface is up, force protocol daemons to recalculate routes
-	due to cost change.
-	(no_bandwidth_if): Likewise.
-	(if_config_write): Output bandwidth configuration.
-
-	* zserv.c (zsend_interface_add): Send bandwidth value.
-	(zsend_interface_up): Likewise.
-	(zsend_interface_down): Likewise.
-
-
-2000-08-07  Michael Rozhavsky <mike@nbase.co.il>
-
-	* rib.c (show_ip_route_protocol): "show ip route
-	(bgp|connected|kernel|ospf|rip|static)" is added.
-
-2000-08-07  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* rib.c (rib_lookup_ipv4_nexthop): Check parent node until IGP
-	nexthop is found.
-	(rib_add_ipv4_internal): Set fib ifindex to rib ifindex.
-
-2000-08-06  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* redistribute.c (redistribute_delete): Fix bug of default route
-	redistribute treatment.
-
-2000-08-05  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* rib.c (rib_init): Install ip_node in rib.c instead of zserv.c.
-	Change default distance value.
-
-                    Old         New
-	------------------------------------------
-	system      10           0
-	kernel      20           0
-	connected   30           0
-	static      40           1
-	rip         50         120
-	ripng       50         120
-	ospf        60         110
-	ospf6       49         110
-	bgp         70         200(iBGP)  20(eBGP)
-	------------------------------------------
-
-	* zserv.c (client_lookup): Function removed.
-	(zsend_interface_add): Use client's output buffer.  Check ifinfo
-	flag.
-	(zsend_interface_delete): Likewise.
-	Delete ipv4_static_radix and ipv6_static_radix.
-
-2000-08-02  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* zserv.h (struct zebra_client): When client request interface
-	information, ifinfo is set.
-
-	* rib.c: Temporary Revert changes for pseudo interface.
-
-	* rib.h: Likewise.
-
-	* zserv.c: Likewise.
-
-	* interface.c: Likewise.
-	
-2000-08-02  David Lipovkov <davidl@nbase.co.il>
-
-	* interface.c (zebra_if_init): Install interface "pseudo"
-	commands.
-
-	* rib.c (rib_create): ifname argument is added.
-	(rib_add_ipv4_pseudo): New function is added.
-	(rib_delete_ipv4_pseudo): Likewise.
-
-	* rib.h : Delete INTERFACE_UNKNOWN definition.  Add prototype for
-	pseudo interface functions.
-
-	* rt_netlink.c (netlink_link_change): Check for pseudo interface.
-
-	* zserv.c (ip_route): When destination is pseudo interface, call
-	rib_add_ipv4_pseudo().
-
-	* zserv.c (no_ip_route): Trim "unknown" argument.
-
-2000-07-26  kunitake@dti.ad.jp
-
-	* if_ioctl.c (if_get_hwaddr): Fix hardware address length from 8
-	to 6.
-
-	* rtadv.c (rtadv_send_packet): Fix shift bug for hardware address.
-
-2000-07-24  Akihiro Mizutani <mizutani@dml.com>
-
-	* interface.c: Use install_default() for common VTY commands.
-
-2000-07-23  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* if_ioctl.c (interface_list_ioctl): A interface list size is
-	calculated from ifreq->if_addr.sa_len.  This is for OpenBSD.
-
-	* ioctl.c (if_get_mtu): Remove codes for SIOCGIFDATA.
-
-2000-07-09  Chris Dunlop <chris@onthe.net.au>
-
-	* if_ioctl.c (if_get_index): Add check for HAVE_BROKEN_ALIASES.
-
-2000-07-04  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* zserv.c (zebra_client_read): Add ZEBRA_REDISTRIBUTE_{ADD,DELETE}
-	message handling.
-
-2000-07-02  David Lipovkov <davidl@nbase.co.il>
-
-	* zserv.c: "ip route A.B.C.D/M unknown" command is added.
-
-2000-06-28  Michael Rozhavsky <mike@nbase.co.il>
-
-	* rib.c: Remove old kernel route when new route comes in.
-
-2000-06-13  David Lipovkov <davidl@nbase.co.il>
-
-	* rib.c (rib_if_up): Add check for unknown interface.
-
-2000-06-13 Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* rib.h: Define INTERFACE_UNKNOWN.
-
-2000-06-08  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* Makefile.am (EXTRA_DIST): Move irdp.c until implementation is
-	finished.
-
-2000-06-05  David Lipovkov <davidl@nbase.co.il>
-
-	* interface.c (if_zebra_delete_hook): Call rib_if_delete().
-
-	* redistribute.c (zebra_interface_delete_update): New function.
-
-	* redistribute.h (zebra_interface_delete_update): New function
-	prototype.
-
-	* rib.c (rib_if_delete): New function.  Walk down all routes and
-	delete all on the interface.
-
-	* rib.h: New function prototype.
-
-	* rt_netlink.c (netlink_link_change): Call
-	zebra_interface_delete_update ().
-
-2000-05-10  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* if_ioctl.c (interface_info_ioctl): Check interface's flag before
-	checking interface's address.
-
-2000-04-26  Jochen Friedrich <jochen@nwe.de>
-
-	* GNOME-PRODUCT-ZEBRA-MIB: New file.
-
-	* GNOME-SMI: New file.
-
-2000-04-23  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* irdp.c: New file from 1997 development code.
-	* irdp.h: Likewise.
-
-2000-04-19  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* rtadv.c (rtadv_send_packet): Enclose router advertisement
-	logging with IS_ZEBRA_DEBUG_PACKET.
-
-2000-04-17  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* zserv.c (zebra_client_close): Remove client structure from
-	client_list when connection is terminated.
-
-2000-03-21  David Lipovkov <davidl@nbase.co.il>
-
-	* connected.c (connected_add_ipv4): Allows all necessary structure
-	updates for connected route, but doesn't insert it into rib if
-	it's interface is down.
-
-2000-01-21  Hideto Yamakawa <hideto.yamakawa@soliton.co.jp>
-
-	* rtread_getmsg.c: Set some definition for Solaris 2.5 and Solaris
-	2.5.1.
-
-2000-01-21  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* rib.c (no_ipv6_route_ifname): Fix buf of cheking return value
-	from str2prefix_ipv6().
-
-2000-01-14  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* rt_socket.c: Revert to use RTF_HOST for IPv4 with /32 route and
-	IPv6 with /128 routes.
-	(kernel_rtm_ipv4): In case of /32 route's gateway is interface. It
-	should have mask for cloning.
-
-1999-12-26  Jochen.Friedrich@genorz.de
-
-	* interface.c (if_dump_vty): Fix a bug of missing VTY_NEWLINE.
-
-1999-12-23  Alex Zinin <zinin@amt.ru>
-	* interface.*: dynamic int up/down support
-
-1999-12-09  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* ipforward_proc.c (dropline): Move dropline() from lib/dropline.c
-
-	* rtread_proc.c (proc_route_read): Don't use dropline().
-
-1999-12-08  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* kernel_socket.c (rtm_read): When message is RTM_GET, it has own
-	process's pid.
-
-1999-12-04  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* main.c (main): Change to default log output to ZLOG_STDOUT.
-
-	* zserv.c (zebra_serv): More detailed error print.
-
-1999-11-30  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* kernel_socket.c (rtm_read): Check old pid for static route
-	insertion check.
-
-1999-11-30  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* interface.c (if_dump_vty): BSDI/OS uses 64bit for interface
-	statistics counter.
-
-	* mtu_kvm.c: New file added.
-
-1999-11-27  Vladimir B. Grebenschikov <vova@express.ru>
-
-	* kernel_socket.c (rtm_write): Set RTF_CLONING flag for
-	route to the directly connected interface.
-
-1999-11-27  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* rt_socket.c: Delete USE_HOST_BIT definition.
-
-1999-11-21  Michael Handler <handler@sub-rosa.com>
-
-	* rtread_getmsg.c: Undef some definition to resolve conflict.
-
-1999-11-27  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* kernel_socket.c (rtm_write): Change to use pre stored struct_dl
-	value for gateway specification.
-
-1999-11-25  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* rt_socket.c (kernel_rtm_ipv4): Even mask is 32 under IPv4 or
-	128 under IPv6, don't use RTF_HOST.
-
-1999-11-21  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* Makefile.am (EXTRA_DIST): Add rtread_getmsg.c.
-
-1999-11-21  Michael Handler <handler@sub-rosa.com>
-
-	* rtread_getmsg.c: Added for Solaris 2.6 support.
-
-1999-11-18  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* rtread_sysctl.c (rtm_read_route): RTM_DELETE handling added.
-
-	* rt_socket.c (kernel_read): Better BSD routing socket support.
-
-1999-10-19  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* client_main.c: Disable making obsolete zebra test `client'
-	command.
-
-1999-10-18  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* zebra.c: Renamed to zserv.c.
-
-	* zebra.h: Global definitions are moved to lib/zebra.h.  Then
-	renamed to zserv.h.
-
-1999-10-15  Jordan Mendelson <jordy@wserv.com>
-
-	* if_ioctl.c: Add Linux 2.2.X's alias support and dynamic
-	interface.  Remove ugly MAX_INTERFACE handling codes.
-
-1999-09-17  Satosi KOBAYASI <kobayasi@north.ad.jp>
-
-	* Fix serious bug of IPv6 route deletion.
-
-1999-09-11  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* ioctl.c (if_set_prefix): Properly set broadcast address.
-
-1999-09-04  Yasuhiro Ohara  <yasu@sfc.wide.ad.jp>
-
-	* rib.c (rib_add_ipv6, rib_delete_ipv6): now protocol daemons
-	can install connected route to kernel via zebra
-
-1999-08-24  VOP <vop@unity.net>
-
-	* rib.c: Include "sockunion.h"
-
-1999-08-22  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* ipforward.h: New file.
-
-	* zebra.h: Obsolete message ZEBRA_GET_ALL_INTERFACE,
-	ZEBRA_GET_ONE_INTERFACE, ZEBRA_GET_HOSTINFO are deleted.
-
-1999-08-18  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* zebra.h (ZEBRA_INTERFACE_ADDRESS_ADD):
-	ZEBRA_INTERFACE_{ADD,DELETE} added.
-
-1999-08-15  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* rib.c: show ip route A.B.C.D works.
-
-	* zebra.c (zebra_read_ipv4): Add ifindex to zebra messages.
-
-1999-08-12  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* zebra.h: New Zebra message ZEBRA_INTERFACE_{ADD,DELETE} added.
-
-1999-08-09  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* interface.h: New file.
-	* Makefile.am: Add interface.h
-
-1999-08-04  Yasuhiro Ohara  <yasu@sfc.wide.ad.jp>
-
-	* redistribute.c (zebra_redistribute): give ifindex to client.
-
-1999-08-02  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* main.c (longopts): -k, --keep_kernel option added.
-
-1999-07-18  Yasuhiro Ohara  <yasu@sfc.wide.ad.jp>
-
-	* rt_socket.c (rtm_write): forgot closing socket bug fixed.
-
-1999-07-17  Yasuhiro Ohara  <yasu@sfc.wide.ad.jp>
-
-	* rib.c (show_ipv6_cmd): if rib is link show interface name.
-
-1999-07-17  Yasuhiro Ohara  <yasu@sfc.wide.ad.jp>
-
-	* rt_socket.c (rtm_write): use sockaddr_dl when null gateway.
-
-1999-07-16  Yasuhiro Ohara  <yasu@sfc.wide.ad.jp>
-
-	* rt_socket.c (rtm_write): ipv6 route table bug fixed.
-
-1999-07-15  Yasuhiro Ohara  <yasu@sfc.wide.ad.jp>
-
-	* zebra.c (zebra_read_ipv6): read link prefix from ospf6 support
-
-1999-07-15  Yasuhiro Ohara  <yasu@sfc.wide.ad.jp>
-
-	* rt_socket.c (kernel_rtm_ipv6): gate treatment bug fixed.
-
-1999-07-15  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* if_sysctl.c (ifm_read): Clear sockunion argument before fetching
-	data.  Suggested by "Chris P. Ross" <cross@eng.us.uu.net>
-
-1999-07-08  HEO SeonMeyong <seirios@Matrix.IRI.Co.Jp>
-
-	* interface.c (if_tun_add): Add KAME's gif tunnel setting codes.
-
-1999-06-26  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* zebra.c (zebra_serv): Only accept loopback address connection.
-
-1999-06-25  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* zebra.h (ZEBRA_ROUTE_EXTERNAL): Add zebra messages flags
-
-1999-06-17  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* ipforward_proc.c: ipforward_on () and ipforward_off () added.
-
-1999-06-14  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* ipforward_proc.c (ipforward_ipv6): Check for IPv6 forwarding
-	using /proc file system is added.
-
-1999-06-06  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* if_ioctl.c (if_get_index): Interface index set bug is fixed by
-	adding #else at the middle of function.  Suggested by David Luyer
-	<luyer@ucs.uwa.edu.au>.
-
-1999-05-29    <kunihiro@zebra.org>
-
-	* rt_ioctl.c: Comment out #include <linux/ipv6_route.h>.
-
-1999-05-26  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* zebra.h (ZEBRA_ROUTE_MAX): Add new define for the max value of
-	the sort of routes.
-
-1999-05-25  Patrick Koppen <koppen@rhrk.uni-kl.de>
-
-	* rt_netlink.c (netlink_socket): Make netlink socket non-blocking.
-	(netlink_parse_info): If errno is EWOULDBLOCK then continue to
-	parse the message.
-	(netlink_talk): Likewise
-	
-1999-05-17    <kunihiro@zebra.org>
-
-	* redistribute.c (zebra_check_addr): Added for loopback address
-	check.
-
-1999-05-15  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* rt_netlink.c (netlink_route_change): Tempolary bypass ipv6 route
-	change treatment.
-
-	* Makefile.am (noinst_HEADERS): redistribute.h added.
-
-	* redistribute.h: New file.
-
-1999-05-14  Stephen R. van den Berg <srb@cuci.nl>
-
-	* zebra.c (show_table): Show all table configuration DEFUN.
-	(config_table): Config table number DEFUN.
-
-	* rt_netlink.c: Add support for multiple routing table.
-
-	* rib.c (rib_weed_table): New function added for delete all
-	routes from specified routing table.
-
-	* main.c (signal_init): SIGTERM call sigint.
-	(sigint): Loggging more better message.
-
-1999-05-09  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* rt_netlink.c: Change log () to zlog ().
-
-1999-05-07    <kunihiro@zebra.org>
-
-	* zebra.h (ZEBRA_ROUTE_OSPF6): Added for ospf6d route.
-
-1999-04-20  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* interface.c: Add `no ip address' command.
-
-1999-04-10  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* rt_netlink.c (kernel_read): Function added for asynchronous
-	zebra between kernel communication.
-
-1999-03-25  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* rtread_sysctl.c (rtm_read): Fix address memcopy overrun bug.
-	Reported by Achim Patzner <ap@bnc.net>.
-
-1999-03-03  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* Makefile.am: Install configuration sample with 600 permission.
-
-1999-03-02  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* Makefile.am: Add -I.. to INCLUDES.
-
-1999-02-18  Peter Galbavy  <Peter.Galbavy@knowledge.com>
-
-	* syslog support added
-
-1999-02-17 Peter Galbavy <Peter.Galbavy@knowledge.com>
-
-	* if_sysctl.c (interface_list): allocated memory free when unknown
-	ifm_type is returned.
-
-	* ioctl.c (if_get_mtu): added SIOCGIFDATA treatment.
-	
-1998-12-15  Magnus Ahltorp <map@stacken.kth.se>
-
-	* interface.c: Header include added.
-
-1998-12-14  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* rt.h (kernel_delete_ipv6): change int index to unsigned int index.
-
-1998-12-13  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* if_ioctl.c (interface_list_ioctl): interface flag must be
-	checked before check addresses of the interface.
-
-1998-12-07  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* Makefile.am (INCLUDES): add @INCLUDES@ for Linux IPv6.
-
-1998-10-14  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* ioctl.c: Linux version before 2.1.0 need interface route setup.
-
-1998-09-15  HEO SeonMeyong  <seirios@matrix.iri.co.jp>
-
-	* change HYDRANGEA to KAME
-
-1998-09-01  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* if_ioctl.c (if_addr_ioctl): set address family for getting
-	interface's address.
-	(if_get_index): silently return when can't get interface's index.
-
-1998-08-17  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* main.c (main): batch mode option '-b' added.
-
-1998-08-16  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* ioctl.c (if_set_prefix): add `ip address IPV4ADDR' command.
-	* interface.c (shutdown_if): add interface shutdown and no
-	shutdown command.
-
-1998-08-12  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* rib.c (rib_add_ipv6): delete rib_add_in6.
-
-1998-07-27  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* main.c: retain flag is added.
-
-1998-07-08  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* rtable.[ch]: merged with rib.[ch]
-
-1998-07-07  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* connected.h: renamed from ifa.h.
-
-1998-06-09  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* rename if.c to interface.c
-	* rename ifa.c to connected.c
-
-	* Porting to Debian GNU/Linux 2.0 (hamm).
-
-1998-06-08  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* rt_netlink.c: renamed from krt_netlink.c
-	
-	* fib.c: deleted.
-	* rt_kvm.c: deleted.
-	* rtread_getmsg.c: deleted.
-
-1998-06-07  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* if.c (multicast): add multicast flag [un]set fucntion.
-
-1998-05-19  Yamshita TAKAO  <jargon@lares.dti.ne.jp>
-
-	* rt_socket.c: Modify for compile on Solaris, but dont't work it.
-	  rt_socket.c have some undefined function, so add directive "IMPLEMENT"
-
-1998-05-18  Yamshita TAKAO  <jargon@lares.dti.ne.jp>
-
-	* zebra.c: Modify for compile on Solaris.
-
-1998-05-03  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* main.c: change CONFDIR to SYSCONFDIR.
-
-1998-05-01  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* .cvsignore: added.
-
-1998-04-02  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* client.c: moves to ../lib.
-
-1998-03-30  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* if_ioctl.c (if_get_addr): Change address copy from memcopy() to
-	structure assignment.
-
-1998-03-30  URA Hiroshi <ura@yamato.ibm.co.jp>
-
-	* if_sysctl.c (ifm_interface_add): sdl->sdl_data copy bug fixed.
-
-1998-02-23  "Hannes R. Boehm" <hannes@boehm.org>
-
-	* if.c (if_init): add config_exit_cmd and config_help_cmd.
-
-1998-01-24  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* rt_ioctl.c (route_ioctl): EPERM treatment added.
-
-1998-01-05  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* rt_socket.c (kernel_read): communication port zebra between
-	kernel is now handled by kernel_read.
-
-1998-01-02  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* main.c (main): zebra [-P port] can specify vty port number.
-
-1997-12-25  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* zebra.c: change select will be block.
-
-1997-12-04  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* add static route treatment.
-
-1997-11-25  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* rt_netlink.c: add netlink support over GNU/Linux system.
-
-1997-11-23  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* all inet_addr is changed to inet_aton.
-
-	* zebra.c (ip_route): add ip route command for static routes.
-
-1997-11-20  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* if.c (if_flag_dump): Linux port of if_flag_dump and _vty.
-
-1997-11-19  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* if.c: add interface command.
-
-1997-11-18  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* ipforward_proc.c : Now works on Linux.
-
-1997-10-25  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* command.c : add completion feature.
-
-1997-10-18  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* vty.c (vty_command): add vty interface.
-
-1997-10-13  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* zebra.c: add verbose mode.
-
-1997-10-12 SonMyong Ho <s-ho@Matrix.IRI.Co.Jp>
-
-	* Hydrangea for FreeBSD supported
-	* in.h: add some prototype.
-
-1997-10-11  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* rt_socket.c and rtread.c completely rewritten.
-
-1997-10-05  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* rt_socket.c: rename kernel_sock to routing_socket
-
-1997-10-04  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* if.c (if_new): interface structure change from linklist to vector.
-
-1997-10-03  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* vector.c (vector_init): create vector related function
-
-1997-09-25  Kunihiro Ishiguro  <kunihiro@zebra.org>
-
-	* Makefile.in: add tags target
-
-	* start IPv6 support for INRIA FreeBSD.
-
