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