@node Kernel Interface, SNMP Support, IPv6 Support, Top
@comment  node-name,  next,  previous,  up
@chapter Kernel Interface

There are several different methods for reading kernel routing table
information, updating kernel routing tables, and for looking up
interfaces.

@table @samp

@item ioctl
The @samp{ioctl} method is a very traditional way for reading or writing
kernel information.  @samp{ioctl} can be used for looking up interfaces
and for modifying interface addresses, flags, mtu settings and other
types of information.  Also, @samp{ioctl} can insert and delete kernel
routing table entries.  It will soon be available on almost any platform
which zebra supports, but it is a little bit ugly thus far, so if a
better method is supported by the kernel, zebra will use that.

@item sysctl
@samp{sysctl} can lookup kernel information using MIB (Management
Information Base) syntax.  Normally, it only provides a way of getting
information from the kernel.  So one would usually want to change kernel
information using another method such as @samp{ioctl}.

@item proc filesystem
@samp{proc filesystem} provides an easy way of getting kernel
information.

@item routing socket

@item netlink
On recent Linux kernels (2.0.x and 2.2.x), there is a kernel/user
communication support called @code{netlink}.  It makes asynchronous
communication between kernel and Quagga possible, similar to a routing
socket on BSD systems.

Before you use this feature, be sure to select (in kernel configuration) 
the kernel/netlink support option 'Kernel/User network link driver' and 
'Routing messages'.

Today, the /dev/route special device file is obsolete.  Netlink
communication is done by reading/writing over netlink socket.

After the kernel configuration, please reconfigure and rebuild Quagga.
You can use netlink as a dynamic routing update channel between Quagga
and the kernel.
@end table
