Maria Matejka
e39a76d6f6
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-06-24 09:42:03 +02:00
Maria Matejka
2ca9e6fdeb
RCU Unwinder refactored from route table to a separate structure
2024-06-24 09:42:03 +02:00
Maria Matejka
c872b8f826
Cached route attributes now have explicitly marked layers
...
Also the rta_* functions renamed to ea_* functions
2024-06-24 09:42:03 +02:00
Maria Matejka
ba3b8607fb
Netindex: Dropping tmp handle mechanism in favor of deferred lfuc_unlock
2024-06-24 09:42:03 +02:00
Maria Matejka
a66be7641e
Fixed all implicit seq_cst warnings caused by the previous commit
2024-06-24 09:42:03 +02:00
Maria Matejka
35ff820a3b
Route flag REF_OBSOLETE
...
Marking routes obsolete when being removed from table, just to be sure.
2024-06-24 09:42:03 +02:00
Maria Matejka
929df85f1e
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-06-24 09:42:03 +02:00
Maria Matejka
a3b125e223
Lockfree usecount: deferring unlocks to the metaloop
...
This allows us for easy temporary locks without additional burden of explicit cleanup.
2024-06-24 09:42:03 +02:00
Maria Matejka
3787c0f7a5
Lock free journal refactored into a separate data structure
2024-06-24 09:42:03 +02:00
Maria Matejka
d1103b8e77
IO Loop: provide information about current loop and task time limit
2024-06-24 09:42:03 +02:00
Maria Matejka
3549a98578
Allowing to send events to the metaloop's priority list
2024-06-24 09:42:03 +02:00
Maria Matejka
f5a93eef7d
Net: explicit generic-to-specific typecast with checking
2024-06-24 09:42:03 +02:00
Maria Matejka
4874a30422
Bitops: bitflip function
...
to flip order of bits in 32b numbers
2024-06-24 09:42:03 +02:00
Maria Matejka
ff35d2b4f8
Locking: forcefully unwinding locks to a previously stored state
2024-06-24 09:42:03 +02:00
Maria Matejka
6af2a7e606
Typed list: macro for list length
2024-06-24 09:42:03 +02:00
Maria Matejka
24d2259dc8
Typed lists: enabled defining the list structure independently on the node
2024-06-24 09:42:03 +02:00
Maria Matejka
247d4b538d
Event: fixed race condition between ev_send and ev_postpone
2024-06-24 09:42:03 +02:00
Maria Matejka
3b50b11e9a
lib/printf_test.c: test on strcmp fixed
...
we mistakenly required the return value to be only -1, 0 or 1
2024-06-24 09:42:03 +02:00
Ondrej Zajicek
294b9763ce
Merge commit '114be2af28e5c124bd479a487f89244ba99c272d' into thread-next
2024-04-01 03:15:33 +02:00
Ondrej Zajicek
07757b8a0c
Filter: Initialize route attribute flags properly
...
Move 'flags' field back to ea_class, so filtering code can use it to
initialize route attribute flags when set by filters.
2024-04-01 02:53:25 +02:00
Ondrej Zajicek
1beafe3eea
Fix merge commit c195c7a0d5
2024-03-28 17:55:43 +01:00
Ondrej Zajicek
62c9f12dfc
Merge commit '574d7eb241a60622b0573ab1460cb23d968ba1cc' into thread-next
2024-03-28 15:00:40 +01:00
Ondrej Zajicek
114be2af28
Filter: Add route attribute gw_mpls_stack
...
Add route attribute gw_mpls_stack to make MPLS stack of route nexthop
accessible from filters. Its type is T_CLIST, which is really not correct
(as it is a list, while T_CLIST is a set). Therefore, we keep this
attribute *undocumented* and it will be *changed* without further notice.
Based on a patch from Trisha Biswas <tbiswas@fastly.com>, thanks!
2024-03-05 16:47:08 +01:00
Alexander Zubkov
574d7eb241
BGP: Allow multiple EBGP neighbors with the same peer.
...
We can distinguish BGP sessions if at least one side uses a different IP
address. Extend olock mechanism to handle local IP as a part of key, with
optional wildcard, so BGP sessions could local IP in the olock and not
block themselves.
2024-02-07 19:11:10 +01:00
Maria Matejka
058984bc86
BGP: fixed MPLS setting in nexthops
...
bug introduced somewhere during conversion of nexthops to eattrs
2024-01-29 22:12:38 +01:00
Maria Matejka
cd81b6d7cd
Merge commit '2c7555cf2ac8439713dd9148b348128c57222a38' into thread-next
...
The UDP logging had to be substantially rewritten due to a different
logging backend and reconfiguration mechanisms.
Conflicts:
doc/bird.sgml
sysdep/unix/config.Y
sysdep/unix/io.c
sysdep/unix/log.c
sysdep/unix/unix.h
2024-01-28 23:01:39 +01:00
Maria Matejka
86ba37d8f1
Logging: uses writev instead of in-buffer magic
2024-01-28 21:42:39 +01:00
Maria Matejka
8fe58b9f8d
Merge commit 'v2.13.1-192-gb8312130' into thread-next
2024-01-28 14:43:05 +01:00
Maria Matejka
b831213072
Merge commit 'v2.13.1-145-g605780f9' into mq-merge-step-2
2024-01-28 14:42:57 +01:00
Maria Matejka
a28264adc5
Merge commit 'v2.13.1-168-g5e9cf0ab' into thread-next
2024-01-28 13:40:23 +01:00
Maria Matejka
9624ebfd9a
Lock free usecount better debuggability
2024-01-10 09:19:27 +01:00
Maria Matejka
54d5e36ec0
Index of different net_addr values for hashing and bit-marking
...
For many reasons, it's handy to assign a contiguous range of integers to
known net_addr values. This is a data structure keeping this mapping.
2024-01-08 09:34:32 +01:00
Ondrej Zajicek
2c7555cf2a
Log: Add support for UDP logging
...
Add support for UDP logging, using RFC 3164 syslog protocol.
Based on the patch from Alexander Zubkov <green@qrator.net>, thanks!
2023-12-13 04:01:09 +01:00
Maria Matejka
8c19f8a209
Merge commit 'db1eb46664d4c76d56dc55a63ce7abe853fc6862' into HEAD
2023-12-08 11:33:43 +01:00
Maria Matejka
1df615991c
Generalized the rte_src lockfree usecount algorithm
2023-12-04 10:39:32 +01:00
Maria Matejka
194ed4e6e6
Macro SKIP_BACK now evaluates its argument only once.
2023-12-04 10:39:32 +01:00
Maria Matejka
48abd6a963
Events: create and enqueue in one macro
2023-12-04 10:39:32 +01:00
Maria Matejka
5a916ed53f
Locking: Dropping DEFINE_DOMAIN ugly macro
2023-12-04 10:39:32 +01:00
Maria Matejka
4d22f52f64
Locking data structures
...
If a data structure is associated with a lock, having a public
and a private part, there are now useful macros for these data
structures.
2023-11-20 12:09:31 +01:00
Maria Matejka
4c6fd84c8f
Merge commit '980ef11016546ecd409a7f83b33a2f8f758ec926' into thread-next
2023-11-10 23:47:10 +01:00
Maria Matejka
980ef11016
C Compiler Attribute Cleanup Test
...
There is a long-known CC attribute cleanup which allows to call a custom
cleanup function when an auto-storage variable ceases to exist. We're
gonna use it for end-of-loop and leave-locked-block macros.
This commit adds a static unit test for this compiler feature to be sure
that it really does what we want. We're looking forward to the next ISO
C norm where this may finally get a nice syntax and standardization.
2023-11-09 23:08:21 +01:00
Maria Matejka
d7f5248bcc
More descriptive bug message on deadlock prevention
2023-11-09 17:42:22 +01:00
Maria Matejka
5b9532ae1f
Merge branch 'mq-aggregator-for-v3' into thread-next
2023-11-09 15:34:59 +01:00
Maria Matejka
00e40a6b80
Merge branch 'mq-aggregator-for-v3' into thread-next
2023-11-09 15:20:13 +01:00
Maria Matejka
30712a2bdf
Merge branch 'mq-aggregator-for-v3' into thread-next
2023-11-08 21:51:46 +01:00
Maria Matejka
c6fba7d7e6
Merge branch 'thread-next' into HEAD
2023-11-02 14:43:15 +01:00
Katerina Kubecova
4e9725e825
FIB walk macros now allow continue from the loop
2023-11-02 14:37:27 +01:00
Maria Matejka
f730ecef4f
Dumping route sources along with protocols and routes
2023-11-01 18:25:40 +01:00
Maria Matejka
796f0af0cc
Fixes to root pool and meta loop to allow resource dumps
2023-11-01 18:23:43 +01:00
Maria Matejka
15d890e87b
Merge branch 'mq-aggregator-for-v3' into HEAD
2023-11-01 18:19:55 +01:00