@node OSPFv3
@chapter OSPFv3

@command{ospf6d} is a daemon support OSPF version 3 for IPv6 network.
OSPF for IPv6 is described in RFC2740.

@menu
* OSPF6 router::                
* OSPF6 area::                  
* OSPF6 interface::             
* Redistribute routes to OSPF6::  
* Showing OSPF6 information::   
* OSPF6 Configuration Examples::
@end menu

@node OSPF6 router
@section OSPF6 router

@deffn {Command} {router ospf6} {}
@end deffn

@deffn {OSPF6 Command} {router-id @var{a.b.c.d}} {}
Set router's Router-ID.
@end deffn

@deffn {OSPF6 Command} {interface @var{ifname} area @var{area}} {}
Bind interface to specified area, and start sending OSPF packets.  @var{area} can
be specified as 0.
@end deffn

@deffn {OSPF6 Command} {timers throttle spf @var{delay} @var{initial-holdtime} @var{max-holdtime}} {}
@deffnx {OSPF6 Command} {no timers throttle spf} {}
This command sets the initial @var{delay}, the @var{initial-holdtime}
and the @var{maximum-holdtime} between when SPF is calculated and the
event which triggered the calculation. The times are specified in
milliseconds and must be in the range of 0 to 600000 milliseconds.

The @var{delay} specifies the minimum amount of time to delay SPF
calculation (hence it affects how long SPF calculation is delayed after
an event which occurs outside of the holdtime of any previous SPF
calculation, and also serves as a minimum holdtime).

Consecutive SPF calculations will always be seperated by at least
'hold-time' milliseconds. The hold-time is adaptive and initially is
set to the @var{initial-holdtime} configured with the above command.
Events which occur within the holdtime of the previous SPF calculation
will cause the holdtime to be increased by @var{initial-holdtime}, bounded
by the @var{maximum-holdtime} configured with this command. If the adaptive
hold-time elapses without any SPF-triggering event occuring then
the current holdtime is reset to the @var{initial-holdtime}.

@example
@group
router ospf6
 timers throttle spf 200 400 10000
@end group
@end example

In this example, the @var{delay} is set to 200ms, the @var{initial
holdtime} is set to 400ms and the @var{maximum holdtime} to 10s. Hence
there will always be at least 200ms between an event which requires SPF
calculation and the actual SPF calculation. Further consecutive SPF
calculations will always be seperated by between 400ms to 10s, the
hold-time increasing by 400ms each time an SPF-triggering event occurs
within the hold-time of the previous SPF calculation.

@end deffn

@node OSPF6 area
@section OSPF6 area

Area support for OSPFv3 is not yet implemented.

@node OSPF6 interface
@section OSPF6 interface

@deffn {Interface Command} {ipv6 ospf6 cost COST} {}
Sets interface's output cost.  Default value is 1.
@end deffn

@deffn {Interface Command} {ipv6 ospf6 hello-interval HELLOINTERVAL} {}
Sets interface's Hello Interval.  Default 40
@end deffn

@deffn {Interface Command} {ipv6 ospf6 dead-interval DEADINTERVAL} {}
Sets interface's Router Dead Interval.  Default value is 40.
@end deffn

@deffn {Interface Command} {ipv6 ospf6 retransmit-interval RETRANSMITINTERVAL} {}
Sets interface's Rxmt Interval.  Default value is 5.
@end deffn

@deffn {Interface Command} {ipv6 ospf6 priority PRIORITY} {}
Sets interface's Router Priority.  Default value is 1.
@end deffn

@deffn {Interface Command} {ipv6 ospf6 transmit-delay TRANSMITDELAY} {}
Sets interface's Inf-Trans-Delay.  Default value is 1.
@end deffn

@deffn {Interface Command} {ipv6 ospf6 network (broadcast|point-to-point)} {}
Set explicitly network type for specifed interface.
@end deffn

@node Redistribute routes to OSPF6
@section Redistribute routes to OSPF6

@deffn {OSPF6 Command} {redistribute static} {}
@deffnx {OSPF6 Command} {redistribute connected} {}
@deffnx {OSPF6 Command} {redistribute ripng} {}
@end deffn

@node Showing OSPF6 information
@section Showing OSPF6 information

@deffn {Command} {show ipv6 ospf6 [INSTANCE_ID]} {}
INSTANCE_ID is an optional OSPF instance ID. To see router ID and OSPF
instance ID, simply type "show ipv6 ospf6 <cr>".
@end deffn

@deffn {Command} {show ipv6 ospf6 database} {}
This command shows LSA database summary.  You can specify the type of LSA.
@end deffn

@deffn {Command} {show ipv6 ospf6 interface} {}
To see OSPF interface configuration like costs.
@end deffn

@deffn {Command} {show ipv6 ospf6 neighbor} {}
Shows state and chosen (Backup) DR of neighbor.
@end deffn

@deffn {Command} {show ipv6 ospf6 request-list A.B.C.D} {}
Shows requestlist of neighbor.
@end deffn

@deffn {Command} {show ipv6 route ospf6} {}
This command shows internal routing table.
@end deffn

@node OSPF6 Configuration Examples
@section OSPF6 Configuration Examples

Example of ospf6d configured on one interface and area:

@example
interface eth0
 ipv6 ospf6 instance-id 0
!
router ospf6
 router-id 212.17.55.53
 area 0.0.0.0 range 2001:770:105:2::/64
 interface eth0 area 0.0.0.0
!
@end example
