Maria Matejka
8d5fcfc6e8
Lib: added a generic CBOR parser framework
2024-10-05 15:54:15 +02:00
Maria Matejka
850bbf02c1
Lib: added tmp_v?sprintf and tmp_strdup allocating from tmp_linpool
2024-10-05 15:54:15 +02:00
Maria Matejka
0eb1548cc4
Debug: Do not compile allocator debug journals in unless requested.
...
These journals can become very memory-heavy when it comes to
constrained environments where every 100k of RAM matters.
2024-10-05 15:54:15 +02:00
Maria Matejka
5400add300
Minimalist mainloop implementation
2024-10-05 15:54:15 +02:00
Maria Matejka
0fc0e4618f
Allocator parameters can be configured now.
2024-10-05 15:54:15 +02:00
Maria Matejka
d27c2b6ec5
Socket: pausing and restoring RX is a little bit more checked
2024-10-01 14:26:31 +02:00
Katerina Kubecova
9f27bfc6fc
Porting the CBOR encoder from the YANG branch
...
Minor cleanups by commiter.
(source commit 43ff10204b
but expected
to be rebased later, don't worry if you fail to find it)
2024-10-01 14:26:00 +02:00
Maria Matejka
253ce95bc9
Added mb_strdup() to complement other similar functions
2024-10-01 14:26:00 +02:00
Maria Matejka
65086fda3d
Moved sk_open_unix() to common lib
2024-10-01 14:26:00 +02:00
Maria Matejka
93cbc49289
lib/socket.h: added missing include
2024-10-01 14:26:00 +02:00
Maria Matejka
87a47559bb
lib/obstacle.h: added missing include
2024-10-01 14:26:00 +02:00
Maria Matejka
cda025a1fa
Splitting out BIRD static library for linking to other tools
2024-10-01 14:26:00 +02:00
Maria Matejka
971d651268
Thread config has an explicit structure
2024-10-01 14:26:00 +02:00
Maria Matejka
bd75a5253a
Displaced show threads command to its own file
2024-10-01 14:24:55 +02:00
Maria Matejka
8e7fef42bb
Disabling the old IO event logger as it doesn't run from worker loops anyway
2024-10-01 14:24:55 +02:00
Maria Matejka
03a87c4f7c
Shutdown marker displaced to runtime
2024-10-01 14:24:55 +02:00
Maria Matejka
d55a15a569
Global runtime splitout to BIRD specific and lib things
2024-10-01 14:24:55 +02:00
Maria Matejka
e70207b281
Displaced bird_name to log.c where it rightfully belongs
2024-10-01 14:24:51 +02:00
Maria Matejka
6485a74a5c
Moved flowspec configuration checks to the config file
...
Functions flow_check_cf_bmk_values, flow_check_cf_value_length,
flow4_validate_cf and flow6_validate_cf are now not built with lib but
with conf to enable for better semantic separation.
2024-08-27 15:06:54 +02: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
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
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