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

@c Set variables
@set EDITION 0.1
@set VERSION 0.93b
@set UPDATED 12 September 2002
@set UPDATED-MONTH September 2002

@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
* Zebra: (zebra).		The @sc{gnu} Zebra routing software
@end direntry

@c @smallbook

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

This is Edition @value{EDITION}, last updated @value{UPDATED} of
@cite{The GNU Zebra Manual}, for Zebra 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 GNU Zebra
@subtitle A routing software package for TCP/IP networks
@subtitle Zebra version @value{VERSION}
@subtitle @value{UPDATED-MONTH}
@author Kunihiro Ishiguro

@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 Zebra
		     
Zebra is a advanced routing software package that provides TCP/IP
based routing protocols.  This is the Zebra Manual for
zebra-@value{VERSION}.
@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
