summaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
2022-09-26Higher export settle times when route refresh is running.Maria Matejka
This helps the route refresh procedures to finish or at least do more work before the exporters jump in and steal all the CPU time for themselves.
2022-09-23More verbose logging of table auxiliary export statesMaria Matejka
2022-09-23Fixed possible race condition in hostcache trie matching code not triggering HCUMaria Matejka
2022-09-21Fixed the export settle timer to be actually a settle timerMaria Matejka
2022-09-21Caching eattrs in filters is not needed anymore.Maria Matejka
After flattening the route attribute structure, the ea_list ** is derivable from rte * by arithmetics. Caching the derived value doesn't help performance and therefore is removed as unnecessary.
2022-09-21Flushing tmp_linpool in tree test and in static protocolMaria Matejka
2022-09-21Trie test uses direct tmp_allocz() instead of lp_allocz(tmp_linpool)Maria Matejka
2022-09-21Local page allocationMaria Matejka
2022-09-20Pipe kick-and-drain packed into a neat structure and functions.Maria Matejka
2022-09-20BFD: The old pipe notification mechanism replaced by eventsMaria Matejka
2022-09-20Fixed display of standby memoryMaria Matejka
2022-09-20Merge commit 'df476c2e' into thread-nextMaria Matejka
Implemented the corking by our own commit, merging with "ours" strategy.
2022-09-20Route export may get corked on refeed startupMaria Matejka
2022-09-20Merge commit '0fd1c1d0' into thread-nextMaria Matejka
Using the "ours" strategy as the changes introduced in merged commits are already implemented in thread-next in a different way.
2022-09-20Merge commit 'adf37d8e' into thread-nextMaria Matejka
2022-09-20Merge commit 'dc160e11' into thread-nextMaria Matejka
2022-09-19Merge remote-tracking branch 'origin/master' into thread-nextMaria Matejka
Ignoring that revert as the thread stack needs a completely different allocation strategy. Not the current one either, yet it has to be done yet.
2022-09-19Switched off forking for filter test.Maria Matejka
You don't want to fork with threads running.
2022-09-18Merge commit '4f3fa162' into HEADMaria Matejka
2022-09-18Fix for table hostcache corking and shutdown race conditionsMaria Matejka
2022-09-18Merge commit '1518970c' into HEADMaria Matejka
2022-09-18Fixing several race-conditions in event code.Maria Matejka
After a suggestion by Santiago, I added the direct list pointer into events and the events are now using this value to check whether the route is active or not. Also the whole trick with sentinel node unioned with event list is now gone. For debugging, there is also an internal circular buffer to store what has been recently happening in event code before e.g. a crash happened. By default, this debug is off and must be manually enabled in lib/event.c as it eats quite some time and space.
2022-09-18Longer unit test default timeout to prevent spurious build failures on slow ↵Maria Matejka
virtuals
2022-09-18Table: Re-scheduling prune event when another prune loop is pendingMaria Matejka
2022-09-18Export event doesn't have to be postponed before requeuing as an export-stop ↵Maria Matejka
event
2022-09-18Converted simple table events to loop flagsMaria Matejka
2022-09-18Loop flags: a simple idempotent event announcement mechanismMaria Matejka
2022-09-18Cancelling all timers when loop stopsMaria Matejka
2022-09-18Routing tables have their own service loops.Maria Matejka
2022-09-18Memory pages allocator is now a global simple lockless structureMaria Matejka
2022-09-16Revert "Reducing filter stack size to allow for lesser thread stack size"Maria Matejka
This reverts commit 2c13759136951ef0e70a3e3c2b2d3c9a387f7ed9.
2022-09-14Revert "Routing tables now have their own loops."Maria Matejka
This reverts commit 878eeec12bf020c9e7460040d225a929bbbd2bd2. These changes have been done in a different way in the other branch of the future merge.
2022-09-09Table export announcer needs both an event and a timer to do export bundling ↵Maria Matejka
the right way
2022-09-09Created a dedicated settle timer structureMaria Matejka
2022-09-09Merge remote-tracking branch 'origin/master' into thread-nextMaria Matejka
2022-09-09Merge commit 'd2c1036a42881d413ec97203ede92a69f8cd218f' into thread-nextMaria Matejka
2022-09-09Merge branch 'mq-fix-eattr-setting' into thread-nextMaria Matejka
2022-09-08Table access is now locked.Maria Matejka
2022-09-08Table feed refactoring to allow for locking and unlockingMaria Matejka
2022-09-08Table long-locking debug codeMaria Matejka
2022-09-08Next hop updater has its own eventMaria Matejka
2022-09-07Next hop refactoring to allow for table lockingMaria Matejka
2022-09-06Better profylaction recursive route loopsMaria Matejka
In some specific configurations, it was possible to send BIRD into an infinite loop of recursive next hop resolution. This was caused by route priority inversion. To prevent priority inversions affecting other next hops, we simply refuse to resolve any next hop if the best route for the matching prefix is recursive or any other route with the same preference is recursive. Next hop resolution doesn't change route priority, therefore it is perfectly OK to resolve BGP next hops e.g. by an OSPF route, yet if the same (or covering) prefix is also announced by iBGP, by retraction of the OSPF route we would get a possible priority inversion.
2022-09-05Next hop update triggered at the very end of hostcache updateMaria Matejka
2022-09-05Exporter routine refactoring to allow for nicer table lockingMaria Matejka
2022-09-01Added an indirection to the export announcement routineMaria Matejka
There are performance reasons for this, mostly that we don't want to ping the table service routine with every import.
2022-09-01ROA subscriptions are also converted to export requests.Maria Matejka
By this, the requesting channels do the timers in their own loops, avoiding unnecessary synchronization when the central timer went off. This is of course less effective for now, yet it allows to easily implement selective reloads in future.
2022-09-01Flowspec revalidate notification converted to an export hookMaria Matejka
Instead of synchronous notifications, we use the asynchronous export framework to notify flowspec src route updates. This allows us to invoke flowspec revalidation without locking collisions.
2022-09-01Hostcache update notification converted to an export hookMaria Matejka
Instead of synchronous notifications, we use the asynchronous export framework to notify also hostcache updates. This allows us to do the hostcache update and the subsequent next hop update notification without locking collisions.
2022-09-01Miscellaneous refactoringMaria Matejka