Include "lib/string.h" instead of <string.h>. It should give us bzero()and other non-portable functions on all systems.
Cleaned up debugging in kernel syncer. Netlink has still LOCAL_DEBUGturned on, but after some testing I'll gag it.
Renamed attr->attrs to attr->eattrs.
Kernel route syncer supports multiple tables.
The changes are just too extensive for lazy me to list themthere, but see the comment at the top of sysdep/unix/krt.c.The code got a bit more ifdeffy than I'd like, though.
Also fixed a bunch of FIXME's and added a couple of others. :)
Kill remaining master_table relics in KRT code.
Make all protocols pass routing table to rte_update and rte_discard.
Removed TOS support. This simplifies many things a lot.
More changes to the kernel syncer.
o Now compatible with filtering.o Learning of kernel routes supported only on CONFIG_SELF_CONSCIOUS systems (on the others it's impossible to get it semantically correct).o Learning now stores all of its routes in a separate fib and selects...
KRT: Implemented asynchronous route / interface state notifications(via Netlink). Tweaked kernel synchronization rules a bit. Discoveredlocking bug in kernel Netlink :-)
Future plans: Hunt all the bugs and solve all the FIXME's.
Converted some mb_alloc/bzero pairs to mb_allocz.
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)...
Squashed one bug in timing of route scans.
Synced Linux sysdeps to new interface.
die() -> bug() where appropriate.
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...
Rewritten kernel syncer. Now uses the rta trickery I've introduced yesterdayand does things "the right way". Few things are still missing (deviceroutes etc.), I'll add them later in the evening.
Comparison of kernel reject routes fixed.
Kernel syncer is now configurable. It will probably need some moreoptions, but at least basic tuning is possible now.
Learn static device routes from the kernel (temporary until we can makesuch things configurable).
Basic kernel routing table syncing implemented. Learning of routes installedby other programs or the kernel itself is not supported yet, but it's notneeded for development of other protocols.
We parse /proc/net/route and flag RT entries according to it. More to cometoday in the morning...
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 ;-)