summaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
2023-05-03Allocation from linpools and slabs requires the appropriate lock to be takenMaria Matejka
2023-05-03Linpool flushes unused pages even on lp_restore()Maria Matejka
2023-05-03Fixed race condition in hostentry allocationMaria Matejka
2023-05-03Show threads: Fixed problems with CLI buffer reallocationMaria Matejka
... by allocating all the output locally and then sending it out at once.
2023-05-03Explicitly counting loops and threadsMaria Matejka
2023-05-03Loop spent time refactored to separate structures and functionsMaria Matejka
2023-04-26Loops track also locking timeMaria Matejka
2023-04-26IO loops now actually measuring their time (show threads all works)Maria Matejka
2023-04-25Refactoring of domains connected to poolsMaria Matejka
2023-04-24Fix of failing show threads commandMaria Matejka
2023-04-24Merge commit 'd61505b039bf0aa6697e28b2a4e07907c89ba1fb' into thread-nextMaria Matejka
2023-04-24Merge branch 'mq-resource-locking' into thread-nextMaria Matejka
2023-04-24Removed duplicate version 3.0-alpha0 newsMaria Matejka
2023-04-24Resource pools are now bound with domains.Maria Matejka
Memory allocation is a fragile part of BIRD and we need checking that everybody is using the resource pools in an appropriate way. To assure this, all the resource pools are associated with locking domains and every resource manipulation is thoroughly checked whether the appropriate locking domain is locked. With transitive resource manipulation like resource dumping or mass free operations, domains are locked and unlocked on the go, thus we require pool domains to have higher order than their parent to allow for this transitive operations. Adding pool locking revealed some cases of insecure memory manipulation and this commit fixes that as well.
2023-04-22Protocols and tables now use the birdloop pools as primaryMaria Matejka
2023-04-22Resource pool closing has its dedicated functionMaria Matejka
2023-04-22Socket closing has its dedicated functionMaria Matejka
2023-04-22Global protocol list is typed to avoid typecast confusionMaria Matejka
2023-04-22Typed lists: added add_after() and unit testsMaria Matejka
2023-04-21Alpha0 news addedv3.0-alpha1Ondrej Filip
2023-04-21BSD: IPv4 over IPv6 nexthop support on FreeBSDLuiz Amaral
The support for IPv4 routes with IPv6 nexthops was implemented in FreeBSD 13.1, this patch allows to import and export such routes from/to kernel. Minor change from committer.
2023-04-20Linpool: Fix lp_restore()Maria Matejka
When lp_save() is called on an empty linpool, then some allocation is done, then lp_restore() is called, the linpool is restored but the used chunks are inaccessible. Fix it.
2023-04-19Typed lists keep an explicit pointer to the list head.Maria Matejka
This change adds one pointer worth of memory to every list node. Keeping this information helps auditing the lists, checking that the node indeed is outside of list or inside the right one. The typed lists shouldn't be used anywhere with memory pressure anyway, thus the one added pointer isn't significant.
2023-04-18Updated the version number to not include dash (breaks RPM)Maria Matejka
2023-04-18NEWS and version updateMaria Matejka
2023-04-18Merge tag '3.0-alpha0' into HEADMaria Matejka
3.0-alpha0
2023-04-17IO: added a specific loop pickup group for BFD; to be done better in futureMaria Matejka
2023-04-14Merge commit '9e44ace3' into thread-next-ifaceMaria Matejka
2023-04-14Merge commit 'f881b98d' into thread-next-ifaceMaria Matejka
2023-04-14Merge commit '231c6385' into thread-next-ifaceMaria Matejka
2023-04-14Merge commit '2f080b54' into thread-next-ifaceMaria Matejka
2023-04-14Merge commit '6c058ae4' into thread-next-ifaceMaria Matejka
2023-04-14Merge commit '913ec57f' into thread-next-ifaceMaria Matejka
2023-04-14Merge commit 'ee919658' into thread-next-ifaceMaria Matejka
2023-04-14Merge commit '0851fcde' into thread-next-ifaceMaria Matejka
2023-04-14Merge commit 'dc4c5f51' into thread-next-ifaceMaria Matejka
2023-04-14BGP: Add 'allow bgp_med' option for EBGP sessionsTrisha Biswas
This option allows to treat bgp_med as regular transitive attribute on EBGP sessions (without hacks in filters). Minor changes from committer.
2023-04-13Increase tests timeoutJakub Ružička
Tests may take longer than 5 s to complete on slow/virtual machines.
2023-04-12Temporarily disable MRT as it still lacks proper locking; to be re-enabled ↵Maria Matejka
in 3.0-alpha2
2023-04-06Loop: keep running the same loop for some time if there is work to doMaria Matejka
2023-04-06BFD: fixed a request pickup race conditionMaria Matejka
When several BGPs requested a BFD session in short time, chances were that the second BGP would file a request while the pickup routine was still running and it would get enqueued into the waiting list instead of being picked up. Fixed this by enforcing pickup loop restart when new requests got added, and also by atomically moving the unpicked requests to a temporary list to announce admin down before actually being added into the wait list.
2023-04-04BGP: set free bind also for connect sockets if configuredMaria Matejka
2023-04-04BGP: sockets use sk_resume_rx and sk_pause_rxMaria Matejka
2023-04-04BGP now has its own loopMaria Matejka
2023-04-04Sockets: Unified API for main and other loopsMaria Matejka
Now sk_open() requires an explicit IO loop to open the socket in. Also specific functions for socket RX pause / resume are added to allow for BGP corking. And last but not least, socket reloop is now synchronous to resolve weird cases of the target loop stopping before actually picking up the relooped socket. Now the caller must ensure that both loops are locked while relooping, and this way all sockets always have their respective loop.
2023-04-04More efficient IO loop event execution to avoid long loopsMaria Matejka
If there are lots of loops in a single thread and only some of the loops are actually active, the other loops are now kept aside and not checked until they actually get some timers, events or active sockets. This should help with extreme loads like 100k tables and protocols. Also ping and loop pickup mechanism was allowing subtle race conditions. Now properly handling collisions between loop ping and pickup.
2023-04-04Resource dumps also write out block addressesMaria Matejka
2023-04-04Linpool: State restoration works in initial linpool stateMaria Matejka
2023-04-04Misc allocator fixesMaria Matejka
2023-04-04Allocator fix: thread local kept pages counter must be thread localMaria Matejka