\input texinfo @c -*- texinfo -*-
@c %**start of header
@setchapternewpage odd
@settitle @uref{http://www.quagga.net,,Quagga}
@setfilename quagga.info
@defcodeindex op
@synindex pg cp
@c %**end of header

@c Set variables - sourced from defines.texi
@include defines.texi

@c automake will automatically generate version.texi
@c and set EDITION, VERSION, UPDATED and UPDATED-MONTH
@include version.texi

@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 @uref{http://www.quagga.net/,,Quagga}
Version @value{VERSION}.

@value{COPYRIGHT_STR}

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 @uref{http://www.quagga.net,,Quagga}
@subtitle A routing software package for TCP/IP networks
@subtitle @uref{http://www.quagga.net,,Quagga} version @value{VERSION}
@subtitle @value{UPDATED-MONTH}
@author @value{AUTHORS}

@page
@vskip 0pt plus 1filll
@value{COPYRIGHT_STR}

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
@top Quagga
		     
@uref{http://www.quagga.net,,Quagga} is an advanced routing software package
that provides a suite of TCP/IP based routing protocols.  This is the Manual
for quagga-@value{VERSION}. @uref{http://www.quagga.net,,Quagga} is a fork of 
@uref{http://www.zebra.org,,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
@contents

@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
@unnumbered Command Index

@printindex fn

@node VTY Key Index
@unnumbered VTY Key Index

@printindex ky

@bye
