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.
