\input texinfo @c -*- texinfo -*-
@c %**start of header
@setchapternewpage odd
@settitle @uref{http://www.quagga.net,,@value{PACKAGE_NAME}}
@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

@copying
@quotation
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 quotation
@end copying

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

@c @smallbook

@ifinfo
This file documents the Quagga Software Routing Suite 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/,,@value{PACKAGE_NAME}}
Version @value{VERSION}.

@value{COPYRIGHT_STR}

@insertcopying
@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,,@value{PACKAGE_NAME}} @value{VERSION}
@subtitle @value{UPDATED-MONTH}
@author @value{AUTHORS}

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

@insertcopying
@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 @value{PACKAGE_STRING}. @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::
* Configuring Quagga as a Route Server::
* 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 routeserver.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
