Spelling fixes to progdoc.
Include "lib/string.h" instead of <string.h>. It should give us bzero()and other non-portable functions on all systems.
Great cleanup of debug messages. LOCAL_DEBUG turned off in most modules,several debug() calls converted to DBG.
Rewrote interface type detection logic. The `unnumbered' flag is now peraddress, not per interface (hence it's ifa->flags & IA_UNNUMBERED) andshould be set reliably. IF_MULTIACCESS should be fixed now, but it isn'twise to rely on it on interfaces configured with /30 prefix.
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).
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...
Device protocol supports reconfiguration.
Don't forget to set proto->min_scope = SCOPE_HOST.
Renamed attr->attrs to attr->eattrs.
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'.