Reconfiguration for device protocol.
Temporary work-arounds for multicast problems. Needs further investigation.
Renamed attr->attrs to attr->eattrs.
Taught Netlink how to behave in IPv6 world.
Basic support for IPv6. The system-dependent part doesn't work yet,but the core routines are there and seem to be working.
o lib/ipv6.[ch] written o Lexical analyser recognizes IPv6 addresses and when in IPv6 mode, treats pure IPv4 addresses as router IDs....
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.
Netlink support for secondary interface addresses.
I rewrote the interface handling code, so that it supports multipleaddresses per interface (needed for example for IPv6 support).
o struct iface now contains a list of all interface addresses (represented by struct ifa), iface->addr points to the primary address (if any)....
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...
Remember that we can run device syncer without kernel syncerand vice versa now.
Cleaned up system configuration files -- removed few obsolete parameters,documented the remaining ones (sysdep/cf/README).
o linux-20: Old Linux interface via /proc/net/route (selected by default on pre-2.1 kernels). o linux-21: Old Linux interface, but device routes handled by the...
Moved to a much more systematic way of configuring kernel protocols.
o Nothing is configured automatically. You need to specify the kernel syncer in config file in order to get it started. o Syncing has been split to route syncer (protocol "Kernel") and...
Removed our declaration of RTPROT_BIRD since Alexey has assignedus a real protocol number in 2.2.4 kernel.
Fixed processing of !krt_capable() routes. Converted device route decisionsto the krt_capable mechanism as well.
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.
Although there are still heaps of FIXME's, Netlink works.
To build BIRD with Netlink support, just configure it with
After it will be tested well enough, I'll probably make it a defaultfor 2.2 kernels (and rename it to linux-22 :)).
Converted some mb_alloc/bzero pairs to mb_allocz.
Netlink scans routes...
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)...
Netlink module supports interface scan on startup. Working on more.
Implemented netlink protocol parsing functions. More to come tomorrow.
Added skeletal version of Linux netlink interface. It doesn't work yet,but the framework is there and I'll try finish it soon.