summaryrefslogtreecommitdiff
path: root/doc/kernel.texi
blob: 67fbb5e360006d19b9dc46e1fffb670e3200ef1e (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
@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