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