Maria Matejka
6768e0cf9e
Pipe kick-and-drain packed into a neat structure and functions.
2022-09-20 17:17:50 +02:00
Maria Matejka
4b4fe1bd65
BFD: The old pipe notification mechanism replaced by events
2022-09-20 17:14:31 +02:00
Maria Matejka
28d4ac6c97
Fixed display of standby memory
2022-09-20 14:57:43 +02:00
Maria Matejka
a00e0b5930
Merge commit 'df476c2e' into thread-next
...
Implemented the corking by our own commit, merging with "ours" strategy.
2022-09-20 13:10:29 +02:00
Maria Matejka
4ba52a2687
Route export may get corked on refeed startup
2022-09-20 12:40:23 +02:00
Maria Matejka
5d7b2676a1
Merge commit '0fd1c1d0' into thread-next
...
Using the "ours" strategy as the changes introduced in merged commits
are already implemented in thread-next in a different way.
2022-09-20 09:52:03 +02:00
Maria Matejka
28427a68c3
Merge commit 'adf37d8e' into thread-next
2022-09-20 09:14:39 +02:00
Maria Matejka
29712c691d
Merge commit 'dc160e11' into thread-next
2022-09-20 09:13:36 +02:00
Maria Matejka
a4a9e9cf19
Merge remote-tracking branch 'origin/master' into thread-next
...
Ignoring that revert as the thread stack needs a completely different
allocation strategy. Not the current one either, yet it has to be done
yet.
2022-09-19 12:58:26 +02:00
Maria Matejka
c179d4d644
Switched off forking for filter test.
...
You don't want to fork with threads running.
2022-09-19 12:58:19 +02:00
Maria Matejka
f33793acf7
Merge commit '4f3fa162' into HEAD
2022-09-18 16:36:07 +02:00
Maria Matejka
cf38092b2d
Fix for table hostcache corking and shutdown race conditions
2022-09-18 16:35:49 +02:00
Maria Matejka
12fd6c989a
Merge commit '1518970c' into HEAD
2022-09-18 16:35:40 +02:00
Maria Matejka
0861d3a8a3
Fixing several race-conditions in event code.
...
After a suggestion by Santiago, I added the direct list pointer into
events and the events are now using this value to check whether the
route is active or not. Also the whole trick with sentinel node unioned
with event list is now gone.
For debugging, there is also an internal circular buffer to store what
has been recently happening in event code before e.g. a crash happened.
By default, this debug is off and must be manually enabled in
lib/event.c as it eats quite some time and space.
2022-09-18 16:33:51 +02:00
Maria Matejka
e3e15f36fa
Longer unit test default timeout to prevent spurious build failures on slow virtuals
2022-09-18 16:33:51 +02:00
Maria Matejka
c9d18e5ec5
Table: Re-scheduling prune event when another prune loop is pending
2022-09-18 16:33:51 +02:00
Maria Matejka
ff86f23dc7
Export event doesn't have to be postponed before requeuing as an export-stop event
2022-09-18 16:33:51 +02:00
Maria Matejka
769224d79c
Converted simple table events to loop flags
2022-09-18 16:33:51 +02:00
Maria Matejka
eac6345759
Loop flags: a simple idempotent event announcement mechanism
2022-09-18 16:33:51 +02:00
Maria Matejka
66f27005ec
Cancelling all timers when loop stops
2022-09-18 16:33:51 +02:00
Maria Matejka
c49ee6e1a6
Routing tables have their own service loops.
2022-09-18 16:33:51 +02:00
Maria Matejka
b80823fe82
Memory pages allocator is now a global simple lockless structure
2022-09-18 16:33:51 +02:00
Maria Matejka
c73343de67
Revert "Reducing filter stack size to allow for lesser thread stack size"
...
This reverts commit 2c13759136
.
2022-09-16 10:11:51 +02:00
Maria Matejka
1518970c12
Revert "Routing tables now have their own loops."
...
This reverts commit 878eeec12b
.
These changes have been done in a different way in the other branch of
the future merge.
2022-09-14 09:59:45 +02:00
Maria Matejka
3d627d09d4
Table export announcer needs both an event and a timer to do export bundling the right way
2022-09-09 19:09:31 +02:00
Maria Matejka
974f16b1f7
Created a dedicated settle timer structure
2022-09-09 18:53:15 +02:00
Maria Matejka
31e881bcbd
Merge remote-tracking branch 'origin/master' into thread-next
2022-09-09 13:17:24 +02:00
Maria Matejka
26bfd4cc03
Merge commit 'd2c1036a42881d413ec97203ede92a69f8cd218f' into thread-next
2022-09-09 13:15:50 +02:00
Maria Matejka
3ace3a4281
Merge branch 'mq-fix-eattr-setting' into thread-next
2022-09-09 13:10:18 +02:00
Maria Matejka
fb7fb67445
Table access is now locked.
2022-09-08 15:24:02 +02:00
Maria Matejka
a42877b9bf
Table feed refactoring to allow for locking and unlocking
2022-09-08 15:13:38 +02:00
Maria Matejka
5103de4e8e
Table long-locking debug code
2022-09-08 15:13:37 +02:00
Maria Matejka
e2c6120636
Next hop updater has its own event
2022-09-08 15:13:37 +02:00
Maria Matejka
a61a04b5c8
Next hop refactoring to allow for table locking
2022-09-07 13:54:55 +02:00
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
Maria Matejka
28accd4f05
Next hop update triggered at the very end of hostcache update
2022-09-05 12:55:36 +02:00
Maria Matejka
636bc44e61
Exporter routine refactoring to allow for nicer table locking
2022-09-05 12:19:38 +02:00
Maria Matejka
66ccdc2a0c
Added an indirection to the export announcement routine
...
There are performance reasons for this, mostly that we don't want to
ping the table service routine with every import.
2022-09-01 22:22:31 +02:00
Maria Matejka
dd786e338c
ROA subscriptions are also converted to export requests.
...
By this, the requesting channels do the timers in their own loops,
avoiding unnecessary synchronization when the central timer went off.
This is of course less effective for now, yet it allows to easily
implement selective reloads in future.
2022-09-01 18:46:40 +02:00
Maria Matejka
cd628d124d
Flowspec revalidate notification converted to an export hook
...
Instead of synchronous notifications, we use the asynchronous export
framework to notify flowspec src route updates. This allows us to
invoke flowspec revalidation without locking collisions.
2022-09-01 18:46:40 +02:00
Maria Matejka
ecdb1ec6ea
Hostcache update notification converted to an export hook
...
Instead of synchronous notifications, we use the asynchronous export
framework to notify also hostcache updates. This allows us to do the
hostcache update and the subsequent next hop update notification without
locking collisions.
2022-09-01 18:46:40 +02:00
Maria Matejka
7450eea071
Miscellaneous refactoring
2022-09-01 18:46:40 +02:00
Maria Matejka
83ceb91b50
Table debug is now a per-table setting and has categories.
2022-09-01 18:46:40 +02:00
Maria Matejka
397fec4741
Default tables are not created unless actually used.
...
This allows for setting default table values at the beginning of config
file before "master4" and "master6" tables are initialized.
2022-09-01 17:44:46 +02:00
Maria Matejka
34912b029b
Tables: Requesting prune only after export cleanup
...
We can't free the network structures before the export has been cleaned
up, therefore it makes more sense to request prune only after export
cleanup. This change also reduces prune calls on table shutdown.
2022-08-30 18:05:06 +02:00
Maria Matejka
d2c1036a42
Merge branch 'mq-fix-eattr-setting' into backport
2022-08-18 22:07:50 +02:00
Maria Matejka
dc28c6ed1c
Simplified the protocol hookup code in Makefiles
2022-08-18 22:07:30 +02:00
Maria Matejka
16ac6c3c74
Fixed initialization of Linux kernel route attributes
2022-08-18 17:44:00 +02:00
Maria Matejka
95d970d7a0
Merge branch 'backport' into thread-next
2022-08-05 11:14:33 +02:00
Maria Matejka
e9e6baae37
Merge commit '082905a8' into thread-next
2022-08-05 11:09:44 +02:00