0
0
mirror of https://gitlab.nic.cz/labs/bird.git synced 2024-12-22 17:51:53 +00:00
Commit Graph

700 Commits

Author SHA1 Message Date
Maria Matejka
ac0cdf3ad4 Merge commit '09f50f37' into thread-merge-2.16 2024-11-28 10:02:07 +01:00
Maria Matejka
e6242ef948 Merge commit '8a40bccf' into thread-merge-2.16 2024-11-28 09:36:33 +01:00
Maria Matejka
029e6c7e1e Merge commit 'a5b4c21d' into thread-merge-2.16 2024-11-28 09:08:32 +01:00
Maria Matejka
2af438a9bf Merge commit '2d6fb31c' into thread-merge-2.16 2024-11-28 09:07:23 +01:00
Maria Matejka
b8f7200ee9 Merge commit 'bc10975a' into thread-merge-2.16 2024-11-28 08:56:27 +01:00
Maria Matejka
d73d861f0c Merge commit '08571b20' into thread-merge-2.16 2024-11-28 08:22:06 +01:00
Maria Matejka
1dd21f6024 Netlink: Fixed handling of undefined bitfields in filters
The default value is obviously false everywhere so we just return zero
if nothing is found, instead of undef.
2024-11-25 17:14:32 +01:00
Maria Matejka
53431ff679 Hash test spurious fail fixed
There was a race condition in the test itself,
causing the test reader access data after free.
2024-11-25 09:44:00 +01:00
Maria Matejka
2956faf5a6 Protocol and BGP state information cleanup and fixes
There were some nasty problems with deferred protocol state updates and
race conditions on BGP startup, shutdown, and also with referencing the
cached states.

Now it looks fixed.
2024-11-24 22:51:08 +01:00
Maria Matejka
e654efd354 Debug option for ea_free 2024-11-24 22:49:39 +01:00
Maria Matejka
6ba06dc4df Deferred call may need to be returned for future cleanups 2024-11-24 22:49:35 +01:00
Maria Matejka
03f51079c1 Defer: fixup missing include guards 2024-11-14 11:41:37 +01:00
Katerina Kubecova
330c71bd0a More attribute types: pointers, strings, btime
For the upcoming rework of protocol state information propagation,
we need some more eattr types to be defined.

These types are probably not defined completely and before using
them for route attributes, you should check that they don't lack
some crucial methods.
2024-11-09 09:55:40 +01:00
Maria Matejka
6eea722d3f Forbid locking altogether when RCU reader is active 2024-06-28 22:03:45 +02:00
Maria Matejka
1e77e6e1b2 Flush deferred calls directly after the loop finished its one run 2024-06-28 22:03:45 +02:00
Maria Matejka
09f50f3766 Typed lists: added forgotten #undef 2024-06-27 04:14:38 +02:00
Maria Matejka
f27004fb4d Backported typed list updates from v3
Source: dda37842dc
2024-06-27 04:14:38 +02:00
Maria Matejka
af73cc4215 Allocator now reports cold pages 2024-06-26 20:45:54 +02:00
Maria Matejka
be2ba84e50 Tame improper xmalloc warning 2024-06-26 17:21:26 +02:00
Maria Matejka
b797444e94 Merge commit 'b95dc8f29f18eb177f91fdc4bf0716fac9b15366' into mq-config-ref
Also converted all _Bool's to bool.
2024-06-26 17:19:24 +02:00
Alexander Zubkov
8a40bccffe BFD: Add option to accept zero checksum for IPv6 UDP packets
Some vendors do not fill the checksum for IPv6 UDP packets.
For interoperability with such implementations one can set
UDP_NO_CHECK6_RX socket option on Linux.

Thanks to Ville O for the suggestion.

Minor changes by committer.
2024-06-26 16:29:57 +02:00
Maria Matejka
7d455d64ca Remove spinlock debug structures in production build 2024-06-26 11:30:41 +02:00
Maria Matejka
8e67cba528 Linpool: allocation split to fast and slow 2024-06-26 11:30:41 +02:00
Maria Matejka
6f981969bb RCU read lock optimization 2024-06-26 11:29:43 +02:00
Maria Matejka
0b6e752bd9 Conflating multiple partial ROA reload requests together 2024-06-26 11:29:43 +02:00
Maria Matejka
bd44a13ce5 Spinhash main lock removed
Spinhash now uses RCU instead to guard cur-new exchanges to avoid
excessive synchronization and cache misses on the main spinlock.
2024-06-26 11:29:12 +02:00
Maria Matejka
83045e9a1f Configuration obstacles made a separate, explicit structure
With this, one can walk the obstacle list in a debugger and
easier see which specific object is holding the reference.
2024-06-14 23:16:07 +02:00
Maria Matejka
61dcbb1d83 Global runtime values separated from config 2024-06-14 23:16:07 +02:00
Maria Matejka
f5fd70c54a Callback: bundling event with its target 2024-06-14 23:16:07 +02:00
Maria Matejka
3ed192edc3 Table: RCU synchronization moved to lfjour
the sync is actually needed when the pages get freed, not precisely
after every item cleanup, as the data technically stays intact until the
deferred free's are called.
2024-06-12 18:07:40 +02:00
Maria Matejka
bd05dd7304 Netindex cleanup calls synchronize_rcu() by batches 2024-06-12 14:48:33 +02:00
Maria Matejka
76a1998ff5 Netindex rehash debug 2024-06-12 14:48:33 +02:00
Maria Matejka
951d0422fa Attributes: fix collision on free-lookup
Freeing the eattrs is tricky as somebody else may find them
via RTA-unlocked lookup inbetween.
2024-06-12 14:48:33 +02:00
Maria Matejka
d8c0faaec9 Netindex cleanup now doesn't need to unlock to synchronize RCU 2024-06-12 14:48:33 +02:00
Maria Matejka
a146abc8fd Revert (partial) "Route attributes now use the common lockfree usecount"
This partially reverts commit d617801c31.

The common lockfree doesn't work well for high-volume structures like
eattr cache because it expects the structure to be cleaned up by a
sweeper routine ... which is very ineffective for >1M records.

OTOH, we need the deferred ea_free in all cases ... so keeping that.
2024-06-12 14:48:33 +02:00
Maria Matejka
47e493f228 Dropped net_resolve_index from feeder fast path 2024-06-12 14:48:33 +02:00
Maria Matejka
661193cf98 Thread IO: a little bit faster RX repeat 2024-06-12 14:48:33 +02:00
Maria Matejka
f516d7cfe9 Netindex: fix absurd hash parameters 2024-06-12 14:48:33 +02:00
Maria Matejka
fece55b810 Netindex: converted to spinlocked hash 2024-06-12 14:48:33 +02:00
Maria Matejka
1032bf2543 Hash: Added a spinlocked variant
The spinlocked hash has a main rw spinlock for the data blocks
and then a rw spinlock for each hash chain. Rehashing is asynchronous,
running from an event, and it happens chain-wise, never blocking more
than one chain at a time.
2024-06-12 14:48:33 +02:00
Maria Matejka
d4733b28d9 Dropping netindex fragile manipulation
Now the netindex doesn't expose its internals and can be converted
to the spinlocked implementation much easier.
2024-06-12 09:23:50 +02:00
Maria Matejka
499d5e6fb3 ROA tables have now an auxiliary table
There is an IP table for every ROA table, holding special records
combining all known ROAs for every top-prefix.

The ROA digestor is now an IP digestor, running over the auxiliary
table.
2024-06-12 09:23:50 +02:00
Maria Matejka
602595fe10 Attributes: cleanup
Dropping EAF_TYPE__MAX and adding a check for forgotten
ea class registration
2024-06-12 09:23:50 +02:00
Maria Matejka
0fb9177374 Loop scheduler tracing options configurable 2024-06-12 09:23:50 +02:00
Maria Matejka
9e88fc5b6b Netindex: allow u32 -> netindex without locking 2024-06-12 09:23:50 +02:00
Maria Matejka
7c59ef3faa RCU Unwinder can now retry without yielding 2024-06-12 09:23:50 +02:00
Maria Matejka
4104d668d9 Read-write spinlocks 2024-06-12 09:23:50 +02:00
Maria Matejka
8f4a784e14 Netindex is now net-type specific
Combining all network types in one netindex was just a waste of memory
and too much complexity for no reason.
2024-06-05 17:47:32 +02:00
Maria Matejka
d617801c31 Route attributes now use the common lockfree usecount
Also route attributes are not freed immediately anymore.
2024-06-04 22:20:18 +02:00
Maria Matejka
98fee17456 Hash: dropped relics of hash iterators 2024-06-04 22:20:18 +02:00