]>
Commit | Line | Data |
---|---|---|
0efdf0fe | 1 | .. _kernel-interface: |
8fa64b2a | 2 | |
42fc5d26 QY |
3 | **************** |
4 | Kernel Interface | |
5 | **************** | |
6 | ||
7 | There are several different methods for reading kernel routing table | |
50e75a2b | 8 | information, updating kernel routing tables, and for looking up interfaces. |
a927f5bc JAG |
9 | FRR relies heavily on the Netlink (``man 7 netlink``) interface to |
10 | communicate with the Kernel. However, other interfaces are still used | |
11 | in some parts of the code. | |
50e75a2b QY |
12 | |
13 | - ioctl | |
14 | This method is a very traditional way for reading or writing kernel | |
15 | information. `ioctl` can be used for looking up interfaces and for | |
16 | modifying interface addresses, flags, mtu settings and other types of | |
17 | information. Also, `ioctl` can insert and delete kernel routing table | |
18 | entries. It will soon be available on almost any platform which zebra | |
19 | supports, but it is a little bit ugly thus far, so if a better method is | |
20 | supported by the kernel, zebra will use that. | |
21 | ||
22 | - sysctl | |
23 | This is a program that can lookup kernel information using MIB (Management | |
24 | Information Base) syntax. Normally, it only provides a way of getting | |
25 | information from the kernel. So one would usually want to change kernel | |
26 | information using another method such as `ioctl`. | |
27 | ||
28 | - proc filesystem | |
29 | This is a special filesystem mount that provides an easy way of getting | |
30 | kernel information. | |
31 | ||
d1e7591e | 32 | - routing socket / Netlink |
a927f5bc JAG |
33 | Netlink first appeard in Linux kernel 2.0. It makes asynchronous |
34 | communication between the kernel and FRR possible, similar to a routing | |
35 | socket on BSD systems. Netlink communication is done by reading/writing | |
36 | over Netlink socket. |