summaryrefslogtreecommitdiff
path: root/nest
AgeCommit message (Collapse)Author
1999-04-03More changes to the kernel syncer.Martin Mares
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 the ones the kernel really uses for forwarding packets. o Better treatment of CONFIG_AUTO_ROUTES ports. o Lots of internal changes.
1999-04-03Added new protocol hook for dumping of protocol-dependent routeMartin Mares
attributes. Please implement in all protocols.
1999-03-29Clarify resource dumps and include them in the main debugging dump.Martin Mares
1999-03-29After today's lengthy discussions about filter syntax, let's clean upMartin Mares
whitespace/semicolon rules for whole config file: o All non-zero amounts of whitespace are equivalent to single space (aka `all the whitespace has been born equal' ;-)). o Comments count as whitespace. o Whitespace has no syntactic signifance (it can only separate lexical elements). o Consequence: line ends are no longer treated as `;'s. o Every declaration must be terminated by an explicit `;' unless or by a group enclosed in `{' and `}'.
1999-03-26Added everything protocols need to know about multiple routing tables,Martin Mares
i.e. struct proto now contains field 'table' pointing to routing table the protocol is attached to. Use this instead of &master_table. Modified all protocols except the kernel syncer to use this field.
1999-03-26Moved to a much more systematic way of configuring kernel protocols.Martin Mares
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 interface syncer (protocol "Device"), device routes are generated by protocol "Direct" (now can exist in multiple instances, so that it will be possible to feed different device routes to different routing tables once multiple tables get supported). See doc/bird.conf.example for a living example of these shiny features.
1999-03-26Allow different instances of the same protocol with identical preferences.Martin Mares
1999-03-26Slightly better generator of default protocol instance names.Martin Mares
1999-03-26Don't try to manipulate neighbor lists for copied interface structures.Martin Mares
This avoids few nasty references to free memory.
1999-03-17rte_update: Check sanity of incoming entries. Throw out (and log) all routesMartin Mares
to bogus prefixes and non-local routes to host scope addresses.
1999-03-17Allow input and output filters (only accept/reject style as we didn't defineMartin Mares
modifying filters yet) to be attached to protocol instances.
1999-03-17Removed the `rta_same' hook since it's no longer needed (all protocolsMartin Mares
needing some local information should use extended attrs and cached rta's).
1999-03-17Implemented extended route attributes and all related functions.Martin Mares
1999-03-09Yes, joining the crew. Sorry for being late. Added dummy functions for OSPF.Ondrej Filip
1999-03-04KRT: Implemented asynchronous route / interface state notificationsMartin Mares
(via Netlink). Tweaked kernel synchronization rules a bit. Discovered locking bug in kernel Netlink :-) Future plans: Hunt all the bugs and solve all the FIXME's.
1999-03-04Initialize allocated struct proto :-)Martin Mares
1999-03-03EFence helped to find using of already free rte's in rt_prune().Martin Mares
1999-03-03Fix several things I broke today.Martin Mares
1999-03-03Added a hack forcing protocols with priority>0 to be started upMartin Mares
immediately. Grrr, need to find a real solution some day.
1999-03-03Introduced protocol priority (all 'normal' protocols should use theMartin Mares
default zero priority). No more "kernel syncer initialized before device routes" problems.
1999-03-02o The if_change_too_big_p change was too high-spirited. Fixed.Martin Mares
o Introduced if_find_by_index() o Recognizing two types of interface updates: full update (starting with if_start_update(), ending with if_end_update(), guaranteed to see all existing interfaces) and a partial update (only if_update(), usually due to asynchronous interface notifications).
1999-03-02Interface logic changes:Martin Mares
o Introduced IF_LINK_UP flag corresponding to real link state. o Allowed addressless interfaces. o IF_UP is now automatically calculated and set iff the interface is administratively up, has link up and has an IP address assigned. It may be IF_IGNORED, though (as in case of the loopback). o Any changes which include up/down transition are considered small enough to not provoke artificial upping and downing of the interface. o When an interface disappears (i.e., it wasn't seen in the last scan), we announce this change only once. o IF_LOOPBACK implies IF_IGNORE.
1999-03-01Renamed struct rtattr to struct rta to make things more consistent andMartin Mares
avoid namespace clashes with <linux/rtnetlink.h>. Other files should not be affected since they use 'rta' directly.
1999-02-13Parameter order for the proto->if_notify hook was different in the includeMartin Mares
file and different in reality. Decided to use the same order as we do for proto->rt_notify (i.e., first new value and second the old one).
1999-02-13Implemented garbage collection of routing tables to delete orphaned networkMartin Mares
nodes having no routes attached. Such cleanup must be done from event handler since most functions manipulating the routing tables expect network entries won't disappear from under their hands and it's also probably faster when done asynchronously.
1999-02-13Don't send any neighbor notifications to protocols being flushed.Martin Mares
1999-02-13When protocols go down, prune the neighbor list.Martin Mares
1999-02-13Moved sanity check of protocol state during annoucements to rte_announce.Martin Mares
1999-02-13Perform gracious shutdown upon receipt of SIGTERM. Finally we canMartin Mares
test the whole protocol shutdown code... :)
1999-02-13Implemented real cleanup and pruning of routing table on protocol shutdown.Martin Mares
1999-02-13Fixed bug in FIB_ITERATE_END: it assumed the control variable is namedMartin Mares
"z". I've added an argument specifying name of the variable. Renamed "again" label in FIB_ITERATE_* to "fis_again" to avoid name clashes.
1999-02-13config->router_id works again.Martin Mares
1999-02-11Real implementation of protocol state machines. Delayed startup/shutdownMartin Mares
should work now. Initial feeding of protocols by interfaces/routes is done from the event queue to prevent unwanted recursion.
1999-02-11struct proto again contains instance name (a copy of proto->cf->name).Martin Mares
1999-02-05Implemented new configuration/reconfiguration interface and defined protocolMartin Mares
state machines. Full explanation will follow soon.
1999-01-12Keep protocol data out of iface_patt.Pavel Machek
1999-01-10Initialize only protocols which are compiled in :)Martin Mares
1999-01-10New makefiles. Includes support for out-of-source-tree builds.Martin Mares
1998-12-22Oops, previous modification for passing NULL to fib_init() did notPavel Machek
compile :-(.
1998-12-22Allow NULL to init_fib().Pavel Machek
1998-12-20die() -> bug() where appropriate.Martin Mares
1998-12-20When printing a routing table, fib_check() it.Martin Mares
1998-12-20Rewrote fib functions to make them insert/delete/asynchronous-walk safe.Martin Mares
This is implemented in a way similar to lib/slists.h, but it took some more effort to make rehashing not disturb the readers. We do it by just taking _highest_ k bits of ipa_hash as our hash value and sorting each box by whole ipa_hash(). Consult FIB_ITERATE_* macros in nest/route.h. Implemented fib_check() debugging function and also rewrote the rehashing algorithm to use better thresholds and not to waste time by rehashing forth and back.
1998-12-08Added source RTS_DUMMY for temporary routes. They should never appearMartin Mares
in the main table.
1998-12-07Minor rte/rta interface changes:Martin Mares
o rte can now contain a pointer to both cached and uncached rta. Protocols which don't need their own attribute caching can now just fill-in a rta, link it to rte without any calls to attribute cache and call rte_update() which will replace rte->attrs by a cached copy. o In order to support this, one of previously pad bytes in struct rta now holds new attribute flags (RTAF_CACHED). If you call rte_update() with uncached rta, you _must_ clear these flags. In other cases rta_lookup() sets it appropriately. o Added rte_free() which is useful when you construct a rte and then the circumstances change and you decide not to use it for an update. (Needed for temporary rte's in kernel syncer...)
1998-12-07KRF_* flags moved to krt.h as they are internal to kernel syncer,Martin Mares
fib->pad0,pad1 renamed to x0,x1 and in case of struct net x0 is reserved for kernel syncing as well.
1998-12-06Removed protocol-specific data in rte for protocol static since noMartin Mares
such data ever existed.
1998-12-06Aesthetic fix for neighbor cache debug dump.Martin Mares
1998-12-06Added skeleton of static route protocol.Martin Mares
1998-12-06Name cleanups as suggested by Pavel:Martin Mares
- cfg_strcpy() -> cfg_strdup() - mempool -> linpool, mp_* -> lp_* [to avoid confusion with memblock, mb_*] Anyway, it might be better to stop ranting about names and do some *real* work.