Maria Matejka
31d5ffa4a9
If debugging, store a malloc circular log for easier debugging
2024-06-04 10:11:36 +02:00
Maria Matejka
a2ddd3d443
Slab: can be deleted as a single object
2024-06-04 10:11:36 +02:00
Maria Matejka
10bb1c1e9d
Real almost-lockless feeds and more pull-like exports
...
Introducing a new omnipotent internal API to just pass route updates
from whatever point wherever we want.
From now on, all the exports should be processed by RT_WALK_EXPORTS
macro, and you can also issue a separate feed-only request to just get a
feed and finish.
The exporters can now also stop and the readers must expect that to
happen and recover. Main tables don't stop, though.
2024-06-04 10:11:36 +02:00
Maria Matejka
03731bf356
Netindex: fixed resolving net by index
2024-05-25 19:37:16 +02:00
Maria Matejka
b5f803ce4a
Simplified temporary resources
...
Also TMP_SAVED now uses the CLEANUP hook to allow for breaks and returns
2024-05-25 19:37:16 +02:00
Maria Matejka
76ca53e4f8
SKIP_BACK_DECLARE: easier embedded-to-parent typecasting
2024-05-25 19:37:16 +02:00
Maria Matejka
f6ad42777d
Lockless feed of a single net
2024-05-25 19:37:16 +02:00
Maria Matejka
091130e84b
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-25 19:37:16 +02:00
Maria Matejka
29cd2c0170
Refactored the deferring framework into a separate structure
2024-05-22 11:34:34 +02:00
Maria Matejka
2b38a833cd
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-22 11:34:34 +02:00
Maria Matejka
6fb467a54c
RCU Unwinder refactored from route table to a separate structure
2024-05-22 11:34:34 +02:00
Maria Matejka
83a409abd2
Cached route attributes now have explicitly marked layers
...
Also the rta_* functions renamed to ea_* functions
2024-05-22 11:34:34 +02:00
Maria Matejka
77659b1994
Netindex: Dropping tmp handle mechanism in favor of deferred lfuc_unlock
2024-05-22 11:34:34 +02:00
Maria Matejka
46164395b2
Fixed all implicit seq_cst warnings caused by the previous commit
2024-05-22 11:34:34 +02:00
Maria Matejka
67aafd99d3
Route flag REF_OBSOLETE
...
Marking routes obsolete when being removed from table, just to be sure.
2024-05-22 11:34:34 +02:00
Maria Matejka
6a13c02d3b
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-05-22 11:34:34 +02:00
Maria Matejka
e0a1bbdf65
Lockfree usecount: deferring unlocks to the metaloop
...
This allows us for easy temporary locks without additional burden of explicit cleanup.
2024-05-22 11:34:34 +02:00
Maria Matejka
23f7208a82
Lock free journal refactored into a separate data structure
2024-05-22 11:34:34 +02:00
Maria Matejka
fe3d7c1a17
Merge a branch of fixes and updates needed for stabilization of v3.
...
Merge commit 'c06ce709' into HEAD
2024-05-19 11:28:03 +02:00
Maria Matejka
67f6ac1628
IO Loop: provide information about current loop and task time limit
2024-05-18 15:48:03 +02:00
Maria Matejka
b1b3c7aac2
Allowing to send events to the metaloop's priority list
2024-05-18 15:48:03 +02:00
Maria Matejka
1b9152d041
Net: explicit generic-to-specific typecast with checking
2024-05-18 15:48:03 +02:00
Maria Matejka
967c97bb59
Bitops: bitflip function
...
to flip order of bits in 32b numbers
2024-05-18 15:48:03 +02:00
Maria Matejka
d6ec3eaee4
Locking: forcefully unwinding locks to a previously stored state
2024-05-18 15:48:03 +02:00
Maria Matejka
6806aacf74
Typed list: macro for list length
2024-05-18 15:48:03 +02:00
Maria Matejka
a6f65d99b4
Typed lists: enabled defining the list structure independently on the node
2024-05-18 15:48:03 +02:00
Maria Matejka
85c144f8ac
Event: fixed race condition between ev_send and ev_postpone
2024-05-18 15:48:03 +02:00
Maria Matejka
24a6336acf
lib/printf_test.c: test on strcmp fixed
...
we mistakenly required the return value to be only -1, 0 or 1
2024-05-18 15:48: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