Import Upstream version 1.2.2
[quagga-debian.git] / doc / kernel.texi
1 @node Kernel Interface
2 @chapter Kernel Interface
3
4 There are several different methods for reading kernel routing table
5 information, updating kernel routing tables, and for looking up
6 interfaces.
7
8 @table @samp
9
10 @item ioctl
11 The @samp{ioctl} method is a very traditional way for reading or writing
12 kernel information.  @samp{ioctl} can be used for looking up interfaces
13 and for modifying interface addresses, flags, mtu settings and other
14 types of information.  Also, @samp{ioctl} can insert and delete kernel
15 routing table entries.  It will soon be available on almost any platform
16 which zebra supports, but it is a little bit ugly thus far, so if a
17 better method is supported by the kernel, zebra will use that.
18
19 @item sysctl
20 @samp{sysctl} can lookup kernel information using MIB (Management
21 Information Base) syntax.  Normally, it only provides a way of getting
22 information from the kernel.  So one would usually want to change kernel
23 information using another method such as @samp{ioctl}.
24
25 @item proc filesystem
26 @samp{proc filesystem} provides an easy way of getting kernel
27 information.
28
29 @item routing socket
30
31 @item netlink
32 On recent Linux kernels (2.0.x and 2.2.x), there is a kernel/user
33 communication support called @code{netlink}.  It makes asynchronous
34 communication between kernel and Quagga possible, similar to a routing
35 socket on BSD systems.
36
37 Before you use this feature, be sure to select (in kernel configuration) 
38 the kernel/netlink support option 'Kernel/User network link driver' and 
39 'Routing messages'.
40
41 Today, the /dev/route special device file is obsolete.  Netlink
42 communication is done by reading/writing over netlink socket.
43
44 After the kernel configuration, please reconfigure and rebuild Quagga.
45 You can use netlink as a dynamic routing update channel between Quagga
46 and the kernel.
47 @end table