Cleanup in sysdep KRT code, part 2.
Remove support for historic Linux kernels,merge krt-iface, krt-set and krt-scan stub headers.
Split random number functions off io.c, so that they can be documentedseparately.
Put client on a stony ground. The whole client is going to be system-specific(the current version UNIX-specific) anyway, so it's useless to try splitting itto sysdep and generic part. Instead of this, configure script decides (based onsystem type and user's wish) what (if any) client should be built and what...
Logging is now configurable. You can define multiple log outputs (to bothfiles and syslog) and assign lists of message categories to each of them.
Added skeleton of the client. Does nothing, but at least compiles.
Moved all system-dependent #include's containing endianity conversionfunctions to sysdep header endian.h.
Rewrote the kernel syncer. The old layering was horrible.
The new kernel syncer is cleanly split between generic UNIX moduleand OS dependent submodules:
- krt.c (the generic part) - krt-iface (low-level functions for interface handling) - krt-scan (low-level functions for routing table scanning)...
Use traditional Unix route/iface interface only when CONFIG_NETLINKis not defined. Also moved declarations of Unix iface logic to krt.h.
When shutting down, remove all routes (except for RTS_INHERIT and RTS_DEVICEroutes) from kernel routing tables unless the "persist" switch is set.
Hopefully finished kernel syncer (krt) rewrite:
o Interface syncing is now a part of krt and it can have configurable parameters. Actually, the only one is scan rate now :) o Kernel routing table syncing is now synchronized with interface syncing (we need the most recent version of the interface list...
Kernel syncer is now configurable. It will probably need some moreoptions, but at least basic tuning is possible now.
Since almost every UNIX system requires different techniques for readingthe kernel routing table as opposed to modifying it which is approximatelythe same on non-netlink systems, I've split the kernel routing tableroutines to read and write parts. To be implemented later ;-)
Split protocol init to building of protocol list and real protocol init.Added kernel route table syncer skeleton.
Implemented scanning of network interfaces. Mostly very ugly code due toterrible kernel interface (SIOGIFCONF and friends).
Implemented timers. Using bird_clock_t for absolute time from now...
The library is now glued together from generic and OS-dependent partsby the `mergedirs' script. Few more IP address manipulation functionsand some fixes.