kernel.texi 1.8 KB

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