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
Maria Matejka
a32cee7813
Merge commit '534d0a4b' into thread-next
2022-08-05 10:37:53 +02:00
Maria Matejka
3ed6d0be93
Merge commit '2e484f8d' into thread-next
2022-08-05 10:31:40 +02:00
Maria Matejka
12ae5d1b6b
Merge commit '971721c9' into thread-next
2022-08-05 10:26:13 +02:00
Maria Matejka
80f3603d69
Merge commit '4d48ede5' into thread-next
2022-08-05 09:26:23 +02:00
Maria Matejka
74eb4bad5f
Merge commit 'c7d0c5b2' into thread-next
2022-08-03 20:01:42 +02:00
Maria Matejka
e60b83d8ac
Merge commit '18f66055' into thread-next
2022-08-03 18:00:17 +02:00
Maria Matejka
70e01358a0
Merge commit '038fcf1c' into thread-next
...
It was necessary to update the code to match removal of rta, as well as
existence of cached nested attribute lists.
2022-08-03 17:37:16 +02:00
Maria Matejka
bc4ad83dac
Merge commit '082905a8' into HEAD
2022-08-03 15:04:42 +02:00
Maria Matejka
73abd91ac6
rip_rte_better() uses the IGP_METRIC_UNKNOWN instead of protocol-specific infinity
2022-08-03 15:04:28 +02:00
Maria Matejka
5a96b9b124
Merge commit '97476e00' into thread-next
...
Had to fix route source locking inside BGP export table as we need to
keep the route sources properly allocated until even last BGP pending
update is sent out, therefore the export table printout is accurate.
2022-08-03 14:07:53 +02:00
Maria Matejka
97476e002d
BGP: The bucket/prefix hashes are now a resource to allow for proper cleanup
2022-08-03 11:57:29 +02:00
Maria Matejka
71b434a987
Merge commit 'f0507f05ce57398e135651896dace4cb68eeed54' into thread-next
2022-08-02 22:08:59 +02:00
Maria Matejka
0072d11f34
Merge branch 'ballygarvan' into HEAD
...
Replacing the old 3.0-alpha0 cork mechanism with another one inside the
routing table. This version should be simpler and also quite clear what
it does, why and when.
2022-08-02 17:58:14 +02:00
Maria Matejka
2e95d269d6
Revert "Split route table event into separate events"
...
This reverts commit 445eeaf3df
.
2022-08-02 17:55:50 +02:00
Maria Matejka
de5b884280
Revert "Table cork: Stop creating updates when there are too many pending."
...
This reverts commit 3b20722a1f
.
2022-08-02 17:55:47 +02:00
Maria Matejka
db9153e216
Also next hop update routines are corking themselves when congestion is detected
2022-08-02 17:51:58 +02:00