mirror of
https://git.proxmox.com/git/mirror_frr
synced 2025-05-28 04:08:33 +00:00
![]() * lib/table.[ch] - Add a function (route_table_get_next()) to get the route_node in a tree that succeeds a given prefix in iteration order. This allows one to reliably walk nodes in a tree while allowing modifications, and is useful for achieving scale and performance. Other approaches are also possible -- the main plus point of this one is that it does not require any state about the walk to be maintained in the table data structures. - Add an iterator for walking the nodes in a tree. This introduces a new structure (route_table_iter_t) and the following main functions. route_table_iter_init() route_table_iter_pause() route_table_iter_next() route_table_iter_cleanup() The iterator normally uses node pointers and the existing route_next() function to walk nodes efficiently. When an iteration is 'paused' with route_table_iter_pause(), it stores the last prefix processed. The next call to route_table_iter_next() transparently invokes route_table_get_next() with the prefix to resume iteration. * bgpd/bgp_table.[ch] Add wrappers for the new table features described above. * tests/table_test.c Add tests for the new table code. Signed-off-by: David Lamparter <equinox@opensourcerouting.org> |
||
---|---|---|
.. | ||
.gitignore | ||
aspath_test.c | ||
bgp_capability_test.c | ||
bgp_mp_attr_test.c | ||
bgp_mpath_test.c | ||
ecommunity_test.c | ||
heavy-thread.c | ||
heavy-wq.c | ||
heavy.c | ||
main.c | ||
Makefile.am | ||
table_test.c | ||
test-buffer.c | ||
test-checksum.c | ||
test-memory.c | ||
test-privs.c | ||
test-sig.c | ||
test-stream.c |