\input texinfo @c -*- texinfo -*-
@c %**start of header
@setchapternewpage odd
@settitle Quagga
@setfilename quagga.info
@defcodeindex op
@synindex pg cp
@c %**end of header

@c Set variables
@set EDITION 0.1
@set VERSION 0.96
@set UPDATED 12 August 2003
@set UPDATED-MONTH August 2003

@c These may vary with installation environment.
@set INSTALL_PREFIX_ETC /usr/local/etc
@set INSTALL_PREFIX_SBIN /usr/local/sbin

@c Info entry
@dircategory Routing Software:
@direntry
* Quagga: (quagga).		The Quagga routing software
@end direntry

@c @smallbook

@ifinfo
This file documents the @sc{gnu} Quagga software which manages common
TCP/IP routing protocols.

This is Edition @value{EDITION}, last updated @value{UPDATED} of
@cite{The Quagga Manual}, for Quagga Version @value{VERSION}.

Copyright (C) 1999, 2000, 2001, 2002 Kunihiro Ishiguro

Permission is granted to make and distribute verbatim copies of this
manual provided the copyright notice and this permission notice are
preserved on all copies.

@ignore
Permission is granted to process this file through TeX and print the
results, provided the printed document carries a copyright permission
notice identical to this one except for the removal of this paragraph
(this paragraph not being relevant to the printed manual).

@end ignore
Permission is granted to copy and distribute modified versions of this
manual under the conditions for verbatim copying, provided that the
entire resulting derived work is distributed under the terms of a
permission notice identical to this one.

Permission is granted to copy and distribute translations of this manual
into another language, under the above conditions for modified versions,
except that this permission notice may be stated in a translation
approved by Kunihiro Ishiguro.
@end ifinfo

@titlepage
@title Quagga
@subtitle A routing software package for TCP/IP networks
@subtitle Quagga version @value{VERSION}
@subtitle @value{UPDATED-MONTH}
@author Kunihiro Ishiguro, et al

@page
@vskip 0pt plus 1filll
Copyright @copyright{} 1999, 2000, 2001, 2002 Kunihiro Ishiguro

Permission is granted to make and distribute verbatim copies of
this manual provided the copyright notice and this permission notice
are preserved on all copies.

Permission is granted to copy and distribute modified versions of this
manual under the conditions for verbatim copying, provided that the entire
resulting derived work is distributed under the terms of a permission
notice identical to this one.

Permission is granted to copy and distribute translations of this manual
into another language, under the above conditions for modified versions,
except that this permission notice may be stated in a translation approved
by Kunihiro Ishiguro.
@end titlepage
@page

@ifnottex
@node Top, Overview, (dir), (dir)
@comment  node-name,  next,  previous,  up
@top Quagga
		     
Quagga is a advanced routing software package that provides TCP/IP
based routing protocols.  This is the Quagga Manual for
quagga-@value{VERSION}. Quagga is a fork of GNU Zebra.
@end ifnottex

@menu
* Overview::                    
* Installation::                
* Basic commands::              
* Zebra::                       
* RIP::                         
* RIPng::                       
* OSPFv2::                      
* OSPFv3::                      
* BGP::                         
* VTY shell::                       
* Filtering::                   
* Route Map::                   
* IPv6 Support::                
* Kernel Interface::            
* SNMP Support::                
* Zebra Protocol::              
* Packet Binary Dump Format::   
* Command Index::               
* VTY Key Index::               
@end menu

@include overview.texi
@include install.texi
@include basic.texi
@include main.texi
@include ripd.texi
@include ripngd.texi
@include ospfd.texi
@include ospf6d.texi
@include bgpd.texi
@include vtysh.texi
@include filter.texi
@include routemap.texi
@include ipv6.texi
@include kernel.texi
@include snmp.texi
@include protocol.texi
@include appendix.texi

@node Command Index, VTY Key Index, Top, Top
@comment  node-name,  next,  previous,  up
@unnumbered Command Index

@printindex fn

@node VTY Key Index,  , Command Index, Top
@comment  node-name,  next,  previous,  up
@unnumbered VTY Key Index

@printindex ky

@summarycontents
@contents
@bye
