summaryrefslogtreecommitdiff
path: root/nest/rt-table.c
AgeCommit message (Collapse)Author
2000-05-06Added commands `show route protocol <p>' and `show route import <p>' whichMartin Mares
show the routing table as exported to the protocol given resp. as returned from its import control hook. To get handling of filtered extended attributes right (even in the old `show route where <filter>' command), the get_route_info hook gets an attribute list and all protocol specific rte attributes are contained there as temporary ones. Updated RIP to do that. Added ea_append() which joins two ea_list's.
2000-05-06Fixed silly bug in previous commit.Martin Mares
2000-05-06When rte_update is called for an identical route, don't announce anything.Martin Mares
Please implement the rte_same hook in your protocols. It should just compare your metrics stored directly in rte, the rest is done by the core.
2000-05-04Removed a lot of unused variables.Martin Mares
Please try compiling your code with --enable-warnings to see them. (The unused parameter warnings are usually bogus, the unused variable ones are very useful, but gcc is unable to control them separately.)
2000-05-02IPv6 address classification fixes.Martin Mares
2000-04-27Event handlers no longer return re-queue flag. Instead of using it, justMartin Mares
call ev_schedule() on the same handler which should work perfectly now.
2000-04-01Changed initialization of protocol list -- now we call proto_build() insteadMartin Mares
of calling the protocols manually. Implemented printing of dynamic attributes in `show route all'. Each protocol can now register its own attribute class (protocol->attr_class, set to EAP_xxx) and also a callback for naming and formatting of attributes. The callback can return one of the following results: GA_UNKNOWN Attribute not recognized. GA_NAME Attribute name recognized and put to the buffer, generic code should format the value. GA_FULL Both attribute name and value put to the buffer. Please update protocols generating dynamic attributes to provide the attr_class and formatting hook.
2000-04-01When tracing, always print incoming part of the trace before the outgoing one.Martin Mares
Avoid buffer overflows in `show routes' command.
2000-03-31Include "lib/string.h" instead of <string.h>. It should give us bzero()Martin Mares
and other non-portable functions on all systems.
2000-03-30Use FF_FORCE_TMPATTR where appropriate.Martin Mares
2000-03-29f_run gets one more parameter to distinguish between in and out modes.Pavel Machek
2000-03-19Protocol tracing: Don't dump core on filtered out routes.Martin Mares
2000-03-12Fixed a bunch of FIXME's by removing them :)Martin Mares
2000-03-12Great cleanup of debug messages. LOCAL_DEBUG turned off in most modules,Martin Mares
several debug() calls converted to DBG().
2000-03-12Oops, got `<' and `>' markers in trace output reversed.Martin Mares
2000-03-12Added debugging of communication between protocols and routing tables.Martin Mares
Just ask for "debug routes" if you want to see the routes and "debug filters" if you want even the rejected ones.
2000-03-04Garbage collector events and counters are now per table and one dayMartin Mares
they can be made configurable if it turns out to be useful.
2000-03-01If the user has specified identical preferences for instances of differentMartin Mares
protocols, break the tie by comparing addresses, so we keep the ordering unambiguous.
2000-01-16Converted shutdown to a kind of reconfiguration, it's no more handledMartin Mares
as a exception in protocol state machines. Introduced a `shutdown' CLI command. Killed few reconfiguration bugs.
2000-01-16First attempt on dynamic reconfiguration. There are still lots of bugsMartin Mares
and problems to solve, but the hardest part works.
1999-12-16Avoid touching F_MODIFY, it no longer exists.Martin Mares
1999-12-08Except for special protocols (nowadays only the kernel syncer), don'tMartin Mares
export host and link scope routes.
1999-12-01Added dumping of routing tables (`show route'). This includes filtering.Martin Mares
1999-10-29Events now return a value. If it's non-zero, the event is re-queuedMartin Mares
for processing in next event cycle. This can be used to prevent background actions (hint: user commands) from hogging the CPU for too long time.
1999-08-03Ouch, how could I write this?Martin Mares
1999-08-03Allow announces of rte's to protocols in FS_FEEDING state.Martin Mares
Else, we would get chicken-egg problems in the table-to-table protocol.
1999-08-03Kernel route syncer supports multiple tables.Martin Mares
The changes are just too extensive for lazy me to list them there, 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. :)
1999-05-31Added extra argument to rt_update hook which contains a pointer to theMartin Mares
temporary attribute list.
1999-05-17From now we support multiple tables. The master_table variable isMartin Mares
definitely gone. Both rte_update() and rte_discard() have an additional argument telling which table should they modify. Also, rte_update() no longer walks the whole protocol list -- each table has a list of all protocols connected to this table and having the rt_notify hook set. Each protocol can also freely decide (by calling proto_add_announce_hook) to connect to any other table, but it will be probably used only by the table-to-table protocol. The default debugging dumps now include all routing tables and also all their connections.
1999-04-12Removed TOS support. This simplifies many things a lot.Martin Mares
1999-04-05Routing table core changes to support full route filtering:Martin Mares
o Introduced rte_cow() which should be used for copying on write the rte's in filters. Each rte now carries a flag saying whether it's a real route (possessing table linkage and other insignia) or a local copy. This function can be expected to be fast since its fast-path is inlined. o Introduced rte_update_pool which is a linear memory pool used for all temporary data during rte_update. You should not reference it directly -- instead use a pool pointer passed to all related functions. o Split rte_update to three functions: rte_update The front end: handles all checking, inbound filtering and calls rte_recalculate() for the final version of the route. rte_recalculate Update the table according to already filtered route. rte_announce Announce routing table changes to all protocols, passing them through export filters and so on. The interface has _not_ changed -- still call rte_update() and it will do the rest for you automagically. o Use new filtering semantics to be explained in a separate mail.
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-03-26Allow different instances of the same protocol with identical preferences.Martin Mares
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-03EFence helped to find using of already free rte's in rt_prune().Martin Mares
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-13Moved sanity check of protocol state during annoucements to rte_announce.Martin Mares
1999-02-13Implemented real cleanup and pruning of routing table on protocol shutdown.Martin Mares
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.
1998-12-20die() -> bug() where appropriate.Martin Mares
1998-12-20When printing a routing table, fib_check() it.Martin Mares
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-10-26Previous fix was wrong.Martin Mares
1998-10-26rte_update: Doesn't loop forever when multiple routes point to the sameMartin Mares
destination.
1998-10-20Beware the NULL route, my son... The bugs that bite, the BIRDs that crash :-)Martin Mares
1998-10-20Added pointer to network to RTE. The complications with passing NET separatelyMartin Mares
aren't worth 4 bytes per RTE. rte_discard and rte_dump don't need net * as parameter.
1998-10-18o FIB flags now available for FIB users.Martin Mares
o struct network: FIB flags used for kernel syncing. o struct network: `next' field deleted (historical relic).
1998-10-18After contemplating about RIP route timeouts for a long time, I've implementedMartin Mares
protocol callbacks for route insertion and deletion from the central table. RIP should maintain its own per-protocol queue of existing routes, scan it periodically and call rte_discard() for routes that have timed out.