bird/nest
Maria Matejka 71b3456eed Better profylaction recursive route loops
In some specific configurations, it was possible to send BIRD into an
infinite loop of recursive next hop resolution. This was caused by route
priority inversion.

To prevent priority inversions affecting other next hops, we simply
refuse to resolve any next hop if the best route for the matching prefix
is recursive or any other route with the same preference is recursive.

Next hop resolution doesn't change route priority, therefore it is
perfectly OK to resolve BGP next hops e.g. by an OSPF route, yet if the
same (or covering) prefix is also announced by iBGP, by retraction of
the OSPF route we would get a possible priority inversion.
2022-09-06 15:15:03 +02:00
..
a-path.c Merge remote-tracking branch 'origin/master' into backport 2022-07-11 11:08:10 +02:00
a-path_test.c Merge remote-tracking branch 'origin/master' into backport 2022-07-11 11:08:10 +02:00
a-set.c Filter: Implement for loops 2022-06-27 21:13:32 +02:00
a-set_test.c Fixed resource initialization in unit tests 2022-03-09 10:30:42 +01:00
attrs.h Filter: Implement for loops 2022-06-27 21:13:32 +02:00
bfd.h BFD: Allow per-request session options 2020-11-08 15:33:22 +01:00
bird.h Initial commit on integrated BIRD 2015-11-05 12:48:52 +01:00
cli.c CLI: Fix continuation lines after final one 2019-11-26 16:43:09 +01:00
cli.h Show info from multiple protocols when protocol is not specified 2020-06-28 15:38:47 +02:00
cmds.c Single-threaded version of sark-branch memory page management 2022-03-09 09:10:44 +01:00
cmds.h Filter refactoring: dropped the recursion from the interpreter 2019-02-20 22:30:54 +01:00
config.Y Merge remote-tracking branch 'origin/master' into backport 2022-07-11 11:08:10 +02:00
Doc Doc: Rename code documentation files back to Doc 2018-12-14 02:03:42 +01:00
iface.c Nest: Do not ignore secondary flag changes in ifa updates 2021-12-18 01:09:52 +01:00
iface.h Nest: Fix neighbor handling for colliding ranges 2020-05-11 04:29:36 +02:00
locks.c Lib: Add and use ev_new_init() 2018-10-01 15:55:23 +02:00
locks.h Nest: VRF support for neighbor cache and olock code 2017-09-12 15:49:36 +02:00
Makefile Simplified the protocol hookup code in Makefiles 2022-08-18 22:07:30 +02:00
neighbor.c Slab allocator can free the blocks without knowing the parent structure 2022-04-06 18:14:08 +02:00
password.c Nest: Allow MAC algorithms to specify min/max key length 2021-06-06 16:28:18 +02:00
password.h Nest: Allow MAC algorithms to specify min/max key length 2021-06-06 16:28:18 +02:00
proto-hooks.c Dropping rte-local dumper entries 2021-10-13 19:09:05 +02:00
proto.c Protocols have their own explicit init routines 2022-04-06 18:14:08 +02:00
proto.sgml Channels - explicit links between protocols and tables 2016-02-01 10:28:50 +01:00
protocol.h Merge commit 'beb5f78a' into backport 2022-07-11 10:41:17 +02:00
route.h Revert "Export table: Delay freeing of old stored route." 2022-07-22 15:37:21 +02:00
rt-attr.c Unsetting route attributes without messing with type system 2022-04-06 18:14:08 +02:00
rt-dev.c Protocols have their own explicit init routines 2022-04-06 18:14:08 +02:00
rt-dev.h Nest: SADR support for Direct 2018-03-18 02:56:51 +01:00
rt-fib.c Slab allocator can free the blocks without knowing the parent structure 2022-04-06 18:14:08 +02:00
rt-show.c Merge commit 'beb5f78a' into backport 2022-07-11 10:41:17 +02:00
rt-table.c Better profylaction recursive route loops 2022-09-06 15:15:03 +02:00