Maria Matejka
48d090aacc
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-17 23:21:38 +02:00
Maria Matejka
65be42269d
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-17 09:12:52 +02:00
Maria Matejka
d25ad38eaf
RCU Unwinder refactored from route table to a separate structure
2024-05-17 09:12:52 +02:00
Maria Matejka
915253be60
RIP partial reload never worked properly, running full reload always
2024-05-17 09:12:52 +02:00
Maria Matejka
9a520e364b
Dropping obsolete protocol Perf
...
We have now better methods how to measure overall performance
and this obsolete protocol has basically rotten away. If anybody
needs its features, feel free to revive it in future.
2024-05-17 09:12:52 +02:00
Maria Matejka
43d48ff9fe
OSPF partial reload never worked properly, running full reload always
2024-05-17 09:12:52 +02:00
Maria Matejka
cd9d799abd
Simplified temporary resources
...
Also TMP_SAVED now uses the CLEANUP hook to allow for breaks and returns
2024-05-17 09:12:52 +02:00
Maria Matejka
99afca53e3
SKIP_BACK_DECLARE: easier embedded-to-parent typecasting
2024-05-17 09:12:52 +02:00
Maria Matejka
de3bd705f8
Lockless feed of a single net
2024-05-17 09:12:52 +02:00
Maria Matejka
93c3923462
Using ea_lookup_tmp() for temporarily keeping attribute references
...
To avoid needs for keeping local temporary references for attributes,
now one can use ea_lookup_tmp() to ensure that the attributes are
valid and stored until the task ends. After that, the attributes are
automatically unref'd and also deallocated if needed.
2024-05-17 09:12:52 +02:00
Maria Matejka
4c43e97dd5
Refactored the deferring framework into a separate structure
2024-05-17 09:12:52 +02:00
Maria Matejka
09d99617d3
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-17 09:12:51 +02:00
Maria Matejka
40061ac3ac
Fixed flush condition when stale cycle valid/set indicators wrap around
2024-05-17 09:12:51 +02:00
Maria Matejka
3685b0f9b6
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-17 09:12:51 +02:00
Maria Matejka
c8342aecbf
Fixed in-table route refresh counter to not randomly add 256
2024-05-17 09:12:51 +02:00
Maria Matejka
a95773bc1b
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-17 09:12:51 +02:00
Maria Matejka
51e5b705e1
Fixed announcement inconsistency between feeds and regular exports
2024-05-13 08:52:49 +02:00
Maria Matejka
047f45e698
Kernel: replaced synchronous prune by a refeed
2024-05-13 08:52:48 +02:00
Maria Matejka
cf4c91a07e
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-13 08:52:48 +02:00
Maria Matejka
4fc6d75e88
Fixed reporting about exported routes
2024-05-13 08:52:48 +02:00
Maria Matejka
068b1520d4
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-13 08:52:48 +02:00
Maria Matejka
75f2369589
Fixed annoying undefined values with nexthops
2024-05-13 08:52:48 +02:00
Maria Matejka
3fa23c3b53
Cached route attributes now have explicitly marked layers
...
Also the rta_* functions renamed to ea_* functions
2024-05-13 08:52:48 +02:00
Maria Matejka
178ea41e84
IO Loop: provide information about current loop and task time limit
2024-05-13 08:52:48 +02:00
Maria Matejka
5ba5cdd9f9
Locking: forcefully unwinding locks to a previously stored state
2024-05-13 08:52:48 +02:00
Maria Matejka
d1652138ca
Netindex: Dropping tmp handle mechanism in favor of deferred lfuc_unlock
2024-05-13 08:52:48 +02:00
Maria Matejka
a0df74780a
Fixed all implicit seq_cst warnings caused by the previous commit
2024-05-13 08:52:48 +02:00
Maria Matejka
6a82c6b90c
Enabling warnings for implicit seq_cst in atomic access
2024-05-13 08:52:48 +02:00
Maria Matejka
23bad456cb
IO loop: fixed local hot page cache flushing condition
2024-05-13 08:52:48 +02:00
Maria Matejka
a3daf69cd1
lib/printf_test.c: test on strcmp fixed
...
we mistakenly required the return value to be only -1, 0 or 1
2024-05-13 08:52:48 +02:00
Maria Matejka
a0a592e673
Doc: short migration info for BIRD 2 -> 3
2024-04-06 18:28:43 +02:00
Maria Matejka
bb35c4f9dc
Route flag REF_OBSOLETE
...
Marking routes obsolete when being removed from table, just to be sure.
2024-04-06 18:28:43 +02:00
Maria Matejka
b6853989ac
Bitops: bitflip function
...
to flip order of bits in 32b numbers
2024-04-06 18:28:43 +02:00
Maria Matejka
27f2fd4aa9
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-04-06 18:28:43 +02:00
Maria Matejka
8527bb6bf3
Simplified table deletion (one less step)
2024-04-06 18:28:43 +02:00
Maria Matejka
cacf743dcb
Hostentry usecount converted to lfuc
2024-04-06 18:28:43 +02:00
Maria Matejka
622d406087
Lockfree usecount: deferring unlocks to the metaloop
...
This allows us for easy temporary locks without additional burden of explicit cleanup.
2024-04-06 18:28:43 +02:00
Maria Matejka
422ecddaae
Allowing to send events to the metaloop's priority list
2024-04-06 18:28:43 +02:00
Maria Matejka
b114aa0073
Static: Unlock IGP tables on cleanup to avoid problems with hostentry unlocking
2024-04-06 18:28:43 +02:00
Maria Matejka
233004988b
Net: explicit generic-to-specific typecast with checking
2024-04-06 18:28:43 +02:00
Maria Matejka
0dd6ec566d
Route table export journal converted to the generic structure
2024-04-06 18:28:43 +02:00
Maria Matejka
a5eb8e0f9f
Lock free journal refactored into a separate data structure
2024-04-06 18:28:43 +02:00
Maria Matejka
d020cc7e26
Event: fixed race condition between ev_send and ev_postpone
2024-04-06 18:28:43 +02:00
Maria Matejka
d1c337f235
Replacing the NHU table loop flag with a proper event
2024-04-06 18:28:43 +02:00
Maria Matejka
6bc1490f30
Undefined behavior fix
2024-04-03 13:58:41 +02:00
Maria Matejka
84c8f24241
CLang compilation fix
2024-04-03 13:58:41 +02:00
Maria Matejka
ec5d9d49ab
Flowspec links don't peruse the all-hooks list for lookup
2024-04-03 13:58:41 +02:00
Maria Matejka
76e43b405f
Typed list: macro for list length
2024-04-03 13:58:41 +02:00
Maria Matejka
59304b2f91
Typed lists: enabled defining the list structure independently on the node
2024-03-27 14:28:37 +01:00
Maria Matejka
d516cea44a
Refactoring: back-merged export data structures
...
Table-specific structures inheriting commons are too crazy.
2024-03-27 14:28:37 +01:00