summaryrefslogtreecommitdiffstats
path: root/nest/route.h
AgeCommit message (Collapse)Author
2000-05-19Asynchronous feeding of protocols.Martin Mares
2000-05-13Added fib_route() which does (although very slow) lookup of longest-matchMartin Mares
routing in a FIB.
2000-05-11Fixed nasty segfault in rip.Pavel Machek
2000-05-10Added more convient interface for ea_find.Pavel Machek
What is special about int default;? Compiler chokes on that!
2000-05-08Several simplifications of the fib iterators.Martin Mares
2000-05-08Use preferences properly.Martin Mares
2000-05-07Implemented `show route <...> stats'.Martin Mares
2000-05-07Added 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-04Removed RTS_RIP_EXT.Martin Mares
2000-04-17Define EAF_ORIGINATED and propagate it properly when merging attribute lists.Martin Mares
2000-04-17Printing of AS paths and community sets.Martin Mares
2000-04-11Fix comments.Martin Mares
2000-04-10As usuall, most important info was missing.Pavel Machek
2000-04-10Export ea_same() and ea_hash().Martin Mares
2000-04-10BGP doesn't need any inline attributes.Martin Mares
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-03-20Define new data types for BGP.Martin Mares
2000-03-04Renamed EAF_INLINE to EAF_TEMP to make the name reflect the real meaning.Martin Mares
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-04Implemented real attribute cache.Martin Mares
2000-03-01Removed RTF_EXTERIOR and RTF_TAGGED (unused).Martin Mares
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-16Minor cleanups.Martin Mares
1999-12-01Added dumping of routing tables (`show route'). This includes filtering.Martin Mares
1999-11-25Fix timeouts. Triggered updates are not done, yet.Pavel Machek
1999-11-18Allow EA type to be set to 'undefined' which overrides all further definitonsMartin Mares
of that EA in the same list and causes ea_find() to fail unless you add EA_ALLOW_UNDEF to the second argument. ea_sort (resp. ea_do_prune()) removes all undef'd attributes from the list. I hope this works :)
1999-11-18DEF_PREF_UKR and DEF_PREF_SINK removed.Martin Mares
1999-11-04Renamed attr->attrs to attr->eattrs.Martin Mares
1999-08-03Implemented a Table-to-Table protocol a.k.a The Pipe.Martin Mares
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 extended attributes for rip.Pavel Machek
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-17Implemented extended route attributes and all related functions.Martin Mares
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-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-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.
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-07Removed protocol-specific data in rte for protocol static since noMartin Mares
such data ever existed.
1998-10-20RIP now actually talks to itself.Pavel Machek
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-19o 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-18Split protocol init to building of protocol list and real protocol init.Martin Mares
Added kernel route table syncer skeleton.
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.
1998-10-17Solve chicken-and-egg problems with protocol startup. We now queue all inactiveMartin Mares
protocols and don't send route/interface updates to them and when they come up, we resend the whole route/interface tables privately. Removed the "scan interface list after protocol start" work-around.