Adds support for several Linux kernel route attributes.
Fixes missing check in reconfiguration.
Restrict export of device routes to the kernel protocol.
In usual configuration, such export is already restrictedwith the aid of the direct protocol but there are someraces that can circumvent it. This makes it harder tobreak kernel device routes. Also adds an option to...
Better flushing of interfaces.
When device protocol goes down, interfaces should be flushedasynchronously (in the same way like routes from protocols are flushed),when protocol goes to DOWN/HUNGRY.
This fixes the problem with static routes staying in kernel routing...
Many changes in (mainly) kernel syncers.
- BSD kernel syncer is now self-conscious and can learn alien routes- important bugfix in BSD kernel syncer (crash after protocol restart)- many minor changes and bugfixes in kernel syncers and neighbor cache- direct protocol does not generate host and link local routes...
Removes phantom protocol from the pipe design.
It seems that by adding one pipe-specific exception to routeannouncement code and by adding one argument to rt_notify() callback icould completely eliminate the need for the phantom protocol instanceand therefore make the code more straightforward. It will also fix some...
The pipe cleanup.
Changes pipes to transfer all routes between routing table, not just optimal routes.
Implements primary address selection base on 'primary' option.
Syntax error fix for systems without CONFIG_SELF_CONSCIOUS (KRT_ALLOW_LEARN)
Fix bugs related to kernel table synchronization.
KRF_INSTALLED flag was not cleared during reconfigurationthat lead to not removing routes during reconfigure whenexport rules changed.
We also should not try to remove routes we didi not installed,on Linux this leads to warnings (as kernel checks route source...
Rate limit for most abundant log messages
Fixes segfault with multiple routing tables.
Bugfix for routing table breaking bug.
Here is a patch fixing a bug that causes breakage of a local routingtable during shutdown of Bird. The problem was caused by shutdownof 'device' protocol before shutdown of 'kernel' protocol. When'device' protocol went down, the route (with local network prefix)...
Used parameter can be marked as unused. :-) Thanx MJ.
Marked unused parameters as unused.
Marked unused parameters in sysdep code as such.
This probably IS the memory leak we're looking for. Alien routes weren'tcorrectly disposed of.
Added missing includes.
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)...