summaryrefslogtreecommitdiff
path: root/nest/rt-fib.c
AgeCommit message (Collapse)Author
2022-04-06Slab allocator can free the blocks without knowing the parent structureMaria Matejka
2022-02-06Nest: Attach prefix trie to rtable for faster LPM and interval queriesOndrej Zajicek (work)
Attach a prefix trie to IP/VPN/ROA tables. Use it for net_route() and net_roa_check(). This leads to 3-5x speedups for IPv4 and 5-10x speedup for IPv6 of these calls. TODO: - Rebuild the trie during rt_prune_table() - Better way to avoid trie_add_prefix() in net_get() for existing tables - Make it configurable (?)
2020-02-21RIP: Demand circuit support (RFC 2091)Ondrej Zajicek (work)
2020-01-07KRT: Improve syncer code to avoid using temporary data in rtableOndrej Zajicek (work)
The old code stored route verdicts and temporary routes directly in rtable. The new code do not store received routes (it immediately compares them with exported routes and resolves conflicts) and uses internal bitmap to keep track of which routes were received and which needs to be reinstalled. By not putting 'invalid' temporary routes to rtable, we keep rtable in consistent state, therefore scan no longer needs to be atomic operation and could be splitted to multiple events.
2019-01-31Nest: FIB rehash values tweaked for better performanceMaria Matejka
2018-12-04Route table max hash size raised to 2^24.Jan Maria Matejka
This is still OK for everybody to fit into RAM and also probably enough to keep a little collision rate for full BGP table.
2018-02-13Add support for source-specific IPv6 routes to BIRD coreOndrej Zajicek (work)
This patch adds support for source-specific IPv6 routes to BIRD core. This is based on Dean Luga's original patch, with the review comments addressed. SADR support is added to network address parsing in confbase.Y and to the kernel protocol on Linux. Currently there is no way to mix source-specific and non-source-specific routes (i.e., SADR tables cannot be connected to non-SADR tables). Thanks to Toke Hoiland-Jorgensen for the original patch. Minor changes by Ondrej Santiago Zajicek.
2018-02-07Nest: Trivial whitespace cleanupOndrej Zajicek (work)
2018-01-24Nest: remove duplicate functionOndrej Zajicek (work)
2017-12-16Minor fixes for debug modeOndrej Zajicek (work)
2017-12-12Revive FIB and kernel MPLS codeOndrej Zajicek (work)
2017-12-07Merge commit '7b2c5f3d2826e3175bf31b1c36056c9efc587a2b' into int-newOndrej Zajicek (work)
2017-09-19Docs: FIB iteration macrosMichal 'vorner' Vaner
2016-12-07Basic flow specification support (RFC 5575)Ondrej Zajicek (work)
Add flow4/flow6 network and rt-table type and operations, config grammar and static protocol support. Squashed flowspec branch from Pavel Tvrdik.
2016-01-21BSD: Explicitly dropping routes with mismatched AF's.Jan Moskyto Matejka
2016-01-20Rewrite roa_check() for integrated BIRDPavel Tvrdík
Thanks to Ondrej Zajicek for his support with writing this code.
2016-01-07Add NET ROA4/6 structuresPavel Tvrdík
2015-12-29Move ID allocator to a separate file and use it also in OSPFOndrej Zajicek (work)
2015-12-24Follow-up work on integrationOndrej Zajicek (work)
2015-12-21Modify FIB_WALK() and FIB_ITERATE() to work with new FIB codeOndrej Zajicek (work)
Returned user data pointers have offset relative to fib_node.
2015-12-21Follow-up work on integrationOndrej Zajicek (work)
2015-12-20Nest: Reimplement fib_route() and add some constsOndrej Zajicek (work)
2015-11-05Initial commit on integrated BIRDOndrej Zajicek (work)
New data types net_addr and variants (in lib/net.h) describing network addresses (prefix/pxlen). Modifications of FIB structures to handle these data types and changing everything to use these data types instead of prefix/pxlen pairs where possible. The commit is WiP, some protocols are not yet updated (BGP, Kernel), and the code contains some temporary scaffolding. Comments are welcome.
2015-10-05Major RIP redesignOndrej Zajicek (work)
The new RIP implementation fixes plenty of old bugs and also adds support for many new features: ECMP support, link state support, BFD support, configurable split horizon and more. Most options are now per-interface.
2015-06-08unsigned [int] -> uintPavel Tvrdík
2015-02-21Minor fixesPavel Tvrdík
2009-10-07Implement proper LSA ID generation.Ondrej Zajicek
2004-06-05Marked unused parameters in core code as such.Martin Mares
2000-06-07Fixes to the progdoc.Martin Mares
2000-06-01FIB documentation.Martin Mares
I've changed the init callback type to a typedef to work around a bug in kernel-doc I'm too lazy to hunt now.
2000-05-13Added fib_route() which does (although very slow) lookup of longest-matchMartin Mares
routing in a FIB.
2000-05-08Several simplifications of the fib iterators.Martin Mares
2000-05-07Squashed one bug in fib_rehash(). No more routes disappearing as if structMartin Mares
by a lightning :)
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-12Great cleanup of debug messages. LOCAL_DEBUG turned off in most modules,Martin Mares
several debug() calls converted to DBG().
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-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-11-29Renamed `DEBUG' symbol to `DEBUGGING' to prevent collisions with tokenMartin Mares
names and include files.
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-05-26Debug messages.Martin Mares
1998-05-15Parts of routing table code. Data structure declarations should beMartin Mares
complete now.