Fixes for the programmer's manual.
Fixes to the progdoc.
Spelling fixes to progdoc.
Documented all the sysdeps (only briefly, I admit).
Except for Filters, RIP and OSPF, the progdocs are complete.
When in persist mode, don't delete routes from kernel tables even ifthey cease to exist in our routing tables due to protocols having shut down.
Adapted to new rt_notify semantics.
Don't crash when reporting deleted routes.
Set preferences correctly.
Removed a lot of unused variables.
Please try compiling your code with --enable-warnings to see them. (Theunused parameter warnings are usually bogus, the unused variable onesare very useful, but gcc is unable to control them separately.)
Cleaned up debugging in kernel syncer. Netlink has still LOCAL_DEBUGturned on, but after some testing I'll gag it.
Garbage collector events and counters are now per table and one daythey can be made configurable if it turns out to be useful.
Killed protocol->priority. Protocol startup should be clean and hack-free now.It seems everything still works (except for disable/enable/restart which hangssometimes, but it's another story).
Kernel route syncer now supports dynamic reconfiguration. Also it doesn'tdepend on the startup counter hack now and uses a zero-time timer insteadto make itself scheduled after normal protocol startup.
Separated `official protocol names' used in status dumps from name templatesused for automatic generation of instance names.
protocol->name is the official name protocol->template is the name template (usually "name%d"), should be all lowercase.
Updated all protocols to define the templates, checked that their configuration...
Reconfiguration for device protocol.
First attempt on dynamic reconfiguration. There are still lots of bugsand problems to solve, but the hardest part works.
Except for special protocols (nowadays only the kernel syncer), don'texport host and link scope routes.
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. :)
Added extra argument to rt_update hook which contains a pointer to thetemporary attribute list.
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...
Don't try to delete interface routes on CONFIG_AUTO_ROUTES systems.
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...
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.
Fix several things I broke today.
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)...