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 Paul Jakma <paul.jakma@sun.com>

	* snmptrap.texi: Contributed documentation, contributors name
	  is lost (please get in touch). Configuring SNMP for logging
	  traps.
	* 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.
