Maria Matejka
29cd2c0170
Refactored the deferring framework into a separate structure
2024-05-22 11:34:34 +02:00
Maria Matejka
2b38a833cd
Avoiding RCU synchronization deadlock when locking in critical section
...
Explicitly marking domains eligible for RCU synchronization. It's then
forbidden to lock these domains in RCU critical section to avoid
possible deadlock.
2024-05-22 11:34:34 +02:00
Maria Matejka
6fb467a54c
RCU Unwinder refactored from route table to a separate structure
2024-05-22 11:34:34 +02:00
Maria Matejka
eaf187b57b
Table feeds are now lockless
...
This commit makes the route chains in the tables atomic. This allows not
only standard exports but also feeds and bulk exports to be processed
without ever locking the table.
Design note: the overall data structures are quite brittle. We're using
RCU read-locks to keep track about readers, and we're indicating ongoing
work on the data structures by prepending a REF_OBSOLETE sentinel node
to make every reader go waiting.
All the operations are intended to stay inside nest/rt-table.c and it
may be even best to further refactor the code to hide the routing table
internal structure inside there. Nobody shall definitely write any
routines manipulating live routes in tables from outside.
2024-05-22 11:34:34 +02:00
Maria Matejka
be902fc55c
Fixed flush condition when stale cycle valid/set indicators wrap around
2024-05-22 11:34:34 +02:00
Maria Matejka
a716e7ea79
Kernel: replaced synchronous prune by a refeed
2024-05-22 11:34:34 +02:00
Maria Matejka
182a97f5e6
Lockless hostentry resolution
...
Now the hostentry doesn't need to lock table, instead it tracks the
hostentry version and retries if the hostentry changed while updating.
2024-05-22 11:34:34 +02:00
Maria Matejka
83a409abd2
Cached route attributes now have explicitly marked layers
...
Also the rta_* functions renamed to ea_* functions
2024-05-22 11:34:34 +02:00
Maria Matejka
77659b1994
Netindex: Dropping tmp handle mechanism in favor of deferred lfuc_unlock
2024-05-22 11:34:34 +02:00
Maria Matejka
46164395b2
Fixed all implicit seq_cst warnings caused by the previous commit
2024-05-22 11:34:34 +02:00
Maria Matejka
9c564eff27
Enabling warnings for implicit seq_cst in atomic access
2024-05-22 11:34:34 +02:00
Maria Matejka
2aee389ef5
Doc: short migration info for BIRD 2 -> 3
2024-05-22 11:34:34 +02:00
Maria Matejka
670c46725b
Fixed announcement inconsistency between feeds and regular exports
2024-05-22 11:34:34 +02:00
Maria Matejka
2eebb680c2
Fixed best route announcements after NHU
...
When more routes in one net changed at once, the best route
announcements were inconsistent which confused exporters.
2024-05-22 11:34:34 +02:00
Maria Matejka
67aafd99d3
Route flag REF_OBSOLETE
...
Marking routes obsolete when being removed from table, just to be sure.
2024-05-22 11:34:34 +02:00
Maria Matejka
6a13c02d3b
Removed the obsolete birdloop flagger
...
This was useful when events were locking. As now sending events is lockless,
we can drop this obsolete routine for good.
2024-05-22 11:34:34 +02:00
Maria Matejka
59dc95aa25
Simplified table deletion (one less step)
2024-05-22 11:34:34 +02:00
Maria Matejka
728d19703d
Hostentry usecount converted to lfuc
2024-05-22 11:34:34 +02:00
Maria Matejka
e0a1bbdf65
Lockfree usecount: deferring unlocks to the metaloop
...
This allows us for easy temporary locks without additional burden of explicit cleanup.
2024-05-22 11:34:34 +02:00
Maria Matejka
a6ef8cd492
Route table export journal converted to the generic structure
2024-05-22 11:34:34 +02:00
Maria Matejka
23f7208a82
Lock free journal refactored into a separate data structure
2024-05-22 11:34:34 +02:00
Maria Matejka
684332b7d2
Replacing the NHU table loop flag with a proper event
2024-05-22 11:34:34 +02:00
Maria Matejka
6bbe9dea3a
Flowspec links don't peruse the all-hooks list for lookup
2024-05-22 11:34:34 +02:00
Maria Matejka
77a0310f87
Refactoring: back-merged export data structures
...
Table-specific structures inheriting commons are too crazy.
2024-05-22 11:34:33 +02:00
Maria Matejka
261a953d7e
Export table dump temporarily switched off
2024-05-22 11:34:33 +02:00
Maria Matejka
cb2c9c8cc0
Added and explicit target table to the ROA subscription object
2024-05-22 11:34:33 +02:00
Maria Matejka
10f41cda87
Refactoring of struct rt_pending_export
...
Now it stores const rte * instead of struct rte_storage * to allow for
different storage backends.
2024-05-22 11:34:33 +02:00
Maria Matejka
0046594237
Missing definition of RTAX_FASTOPEN_NO_COOKIE shouldn't kill the whole build
2024-05-19 12:47:38 +02:00
Maria Matejka
fe3d7c1a17
Merge a branch of fixes and updates needed for stabilization of v3.
...
Merge commit 'c06ce709' into HEAD
2024-05-19 11:28:03 +02:00
Maria Matejka
2900a608f0
L3VPN: Setting the bgp_ext_community flags properly
2024-05-19 11:27:18 +02:00
Maria Matejka
c06ce7090f
Static: Unlock IGP tables on cleanup to avoid problems with hostentry unlocking
2024-05-18 15:50:03 +02:00
Maria Matejka
4b9d12708e
Loop run waits until pingers finish
...
This ensures that if somebody passes an event to a loop which
has just started executing, then the event gets picked up. Otherwise
there is a race condition causing stray events pending in queue
but without the ping (because the run actually finishes too fast
to pickup the later events).
2024-05-18 15:50:03 +02:00
Maria Matejka
67f6ac1628
IO Loop: provide information about current loop and task time limit
2024-05-18 15:48:03 +02:00
Maria Matejka
b1b3c7aac2
Allowing to send events to the metaloop's priority list
2024-05-18 15:48:03 +02:00
Maria Matejka
1b9152d041
Net: explicit generic-to-specific typecast with checking
2024-05-18 15:48:03 +02:00
Maria Matejka
967c97bb59
Bitops: bitflip function
...
to flip order of bits in 32b numbers
2024-05-18 15:48:03 +02:00
Maria Matejka
d6ec3eaee4
Locking: forcefully unwinding locks to a previously stored state
2024-05-18 15:48:03 +02:00
Maria Matejka
6806aacf74
Typed list: macro for list length
2024-05-18 15:48:03 +02:00
Maria Matejka
a6f65d99b4
Typed lists: enabled defining the list structure independently on the node
2024-05-18 15:48:03 +02:00
Maria Matejka
85c144f8ac
Event: fixed race condition between ev_send and ev_postpone
2024-05-18 15:48:03 +02:00
Maria Matejka
418578bc6b
IO loop: fixed local hot page cache flushing condition
2024-05-18 15:48:03 +02:00
Maria Matejka
24a6336acf
lib/printf_test.c: test on strcmp fixed
...
we mistakenly required the return value to be only -1, 0 or 1
2024-05-18 15:48:03 +02:00
Maria Matejka
c3698535e3
BGP: Fixed corking of RX
...
If cork occurred after some incoming data had been already processed,
BGP incorrectly processed them again after uncorking because it forgot
to store the actual socket state.
Now storing the socket state (done at the end of bgp_rx()) and
therefore the bug is fixed.
2024-05-18 15:48:03 +02:00
Maria Matejka
1e55a8168a
Fixed in-table route refresh counter to not randomly add 256
2024-05-18 15:47:45 +02:00
Maria Matejka
a9124be384
Fixed hostcache notifier pool
...
This pool has to be the service pool to allow the seq bitmaps to grow
from the exporter and feeder routines
2024-05-18 15:47:45 +02:00
Maria Matejka
e38cd2b215
Fixed reporting about exported routes
2024-05-18 15:47:12 +02:00
Maria Matejka
ef16f07633
Fixed annoying undefined values with nexthops
2024-05-18 15:46:53 +02:00
Maria Matejka
3a2e423d3e
Undefined behavior fix
2024-05-18 15:41:33 +02:00
Maria Matejka
3371ea0843
CLang compilation fix
2024-05-18 15:41:10 +02:00
Ondrej Zajicek
5d5c431a3c
Merge commit '0b684a43bd7ce4a32c9cd7754b88286bcd1815bb' into thread-next
2024-04-01 18:24:10 +02:00