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.
