@node Kernel Interface
@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
