@c -*-texinfo-*-
@c This is part of the Quagga Manual.
@c @value{COPYRIGHT_STR}
@c See file quagga.texi for copying conditions.
@node RIPng
@chapter RIPng

@command{ripngd} supports the RIPng protocol as described in RFC2080.  It's an
IPv6 reincarnation of the RIP protocol.

@menu
* Invoking ripngd::             
* ripngd Configuration::        
* ripngd Terminal Mode Commands::  
* ripngd Filtering Commands::   
@end menu

@node Invoking ripngd
@section Invoking ripngd

There are no @code{ripngd} specific invocation options.  Common options
can be specified (@pxref{Common Invocation Options}).

@node ripngd Configuration
@section ripngd Configuration

Currently ripngd supports the following commands:

@deffn Command {router ripng} {}
Enable RIPng.
@end deffn

@deffn {RIPng Command} {flush_timer @var{time}} {}
Set flush timer.
@end deffn

@deffn {RIPng Command} {network @var{network}} {}
Set RIPng enabled interface by @var{network}
@end deffn

@deffn {RIPng Command} {network @var{ifname}} {}
Set RIPng enabled interface by @var{ifname}
@end deffn

@deffn {RIPng Command} {route @var{network}} {}
Set RIPng static routing announcement of @var{network}.
@end deffn

@deffn Command {router zebra} {}
This command is the default and does not appear in the configuration.
With this statement, RIPng routes go to the @command{zebra} daemon.
@end deffn

@node ripngd Terminal Mode Commands
@section ripngd Terminal Mode Commands

@deffn Command {show ip ripng} {}
@end deffn

@deffn Command {show debugging ripng} {}
@end deffn

@deffn Command {debug ripng events} {}
@end deffn

@deffn Command {debug ripng packet} {}
@end deffn

@deffn Command {debug ripng zebra} {}
@end deffn

@node ripngd Filtering Commands
@section ripngd Filtering Commands

@deffn Command {distribute-list @var{access_list} (in|out) @var{ifname}} {}
You can apply an access-list to the interface using the
@code{distribute-list} command.  @var{access_list} is an access-list
name.  @var{direct} is @samp{in} or @samp{out}.  If @var{direct} is
@samp{in}, the access-list is applied only to incoming packets.

@example
distribute-list local-only out sit1
@end example
@end deffn
