Cleaned up handling of interface patterns:
o Parsing of interface patterns moved to generic code, introduced this_ipatt which works similarly to this_iface. o Interface patterns now support selection by both interface names and primary IP addresses....
Kill remaining master_table relics in KRT code.
Make all protocols pass routing table to rte_update and rte_discard.
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.
Added everything protocols need to know about multiple routing tables,i.e. struct proto now contains field 'table' pointing to routing tablethe protocol is attached to. Use this instead of &master_table.
Modified all protocols except the kernel syncer to use this field.
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...
Introduced protocol priority (all 'normal' protocols should use thedefault zero priority). No more "kernel syncer initialized beforedevice routes" problems.
Parameter order for the proto->if_notify hook was different in the includefile and different in reality. Decided to use the same order as we dofor proto->rt_notify (i.e., first new value and second the old one).
Implemented new configuration/reconfiguration interface and defined protocolstate machines. Full explanation will follow soon.
Added configuration of the device internal protocol. This is primarilyintended to serve as an example of interface pattern list use. As a sideeffect, you can disable generating of device routes by disablingthis protocol.
Added pointer to network to RTE. The complications with passing NET separatelyaren't worth 4 bytes per RTE.
rte_discard and rte_dump don't need net * as parameter.
Fixed generation of device routes for unnumbered point-to-point links.
Removed global pointer to proto_dev.
We have full interface routes now.
Skeleton of device route protocol. As it's tightly coupled with our kernel,it sits here instead of `proto/dev'.