14 Kernel Interface
There are several different methods for reading kernel routing table
information, updating kernel routing tables, and for looking up
- The ioctl method is a very traditional way for reading or writing
kernel information. ioctl can be used for looking up interfaces
and for modifying interface addresses, flags, mtu settings and other
types of information. Also, 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.
- 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 ioctl.
- proc filesystem
- proc filesystem provides an easy way of getting kernel
- routing socket
- On recent Linux kernels (2.0.x and 2.2.x), there is a kernel/user
communication support called
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
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.