Age | Commit message (Collapse) | Author | |
---|---|---|---|
2021-11-22 | Unified time for whole BIRD | Maria Matejka | |
In previous versions, every thread used its own time structures, effectively leading to different time in every thread and strange logging messages. The time processing code now uses global atomic variables to keep current time available for fast concurrent reading and safe updates. | |||
2021-11-22 | Multithreaded BIRD needs reasonably new software to compile | Maria Matejka | |
2021-11-22 | Route export is now asynchronous. | Maria Matejka | |
To allow for multithreaded execution, we need to break the import-export chain and buffer the exports before actually processing them. | |||
2021-11-22 | Better profylaction recursive route loops | Maria 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. | |||
2021-11-22 | Special table hooks rectified. | Maria Matejka | |
* internal tables are now more standalone, having their own import and export hooks * route refresh/reload uses stale counter instead of stale flag, allowing to drop walking the table at the beginning * route modify (by BGP LLGR) is now done by a special refeed hook, reimporting the modified routes directly without filters | |||
2021-11-22 | Split route table event into separate events | Maria Matejka | |
The former rt_event is dropped in favour of separate table events. This allows for selective corking of NHU and prune. | |||
2021-11-22 | Moved BFD IO loop out of BFD as we want to use it as socket-io coroutine | Maria Matejka | |
2021-11-22 | Debug messages with timestamps. | Maria Matejka | |
On most of current hardware, getting monotonic clock is fast enough to get it and write for each debug message. | |||
2021-11-22 | Fixing expensive list checks. Debug only commit. | Maria Matejka | |
2021-11-22 | Lock position checking allows for safe lock unions | Maria Matejka | |
2021-11-22 | GDB: SKIP_BACK and linked list tools | Maria Matejka | |
2021-11-22 | Coroutines: A simple and lightweight parallel execution framework. | Maria Matejka | |
2021-11-22 | Type checking in SKIP_BACK macro | Maria Matejka | |
2021-11-22 | Locking subsystem: Just a global BIRD lock to begin with. | Maria Matejka | |
2021-11-22 | Dropping the POSIX thread-local variables in favor of much easier-to-use C11 ↵ | Maria Matejka | |
thread-local variables | |||
2021-11-22 | POSIX threads and thread-local storage is needed for concurrent execution | Maria Matejka | |
2021-11-22 | Table import and export are now explicit hooks. | Maria Matejka | |
Channels have now included rt_import_req and rt_export_req to hook into the table instead of just one list node. This will (in future) allow for: * channel import and export bound to different tables * more efficient pipe code (dropping most of the channel code) * conversion of 'show route' to a special kind of export * temporary static routes from CLI The import / export states are also updated to the new algorithms. | |||
2021-11-19 | Trie: Implement trie walking code | Ondrej Zajicek (work) | |
Trie walking allows enumeration of prefixes in a trie in the usual lexicographic order. Optionally, trie enumeration can be restricted to a chosen subnet (and its descendants). | |||
2021-11-13 | Trie: Simplify network matching code | Ondrej Zajicek (work) | |
Introduce ipX_prefix_equal() and use it to simplify network matching code. | |||
2021-11-09 | Secondary and merged exports get a whole feed instead of traversing the ↵ | Maria Matejka | |
table structures directly | |||
2021-11-09 | Route export: rejected by filter bitmap | Maria Matejka | |
If a route has been rejected by filter, store that information to avoid repeated export filter runs on rejected routes. | |||
2021-11-09 | Nest: Route generations and explicit tracking route propagion through pipes | Maria Matejka | |
2021-11-09 | Recursive route nexthop updates now announced with valid new_best/old_best ↵ | Maria Matejka | |
information | |||
2021-11-09 | Split route data structure to storage (ro) / manipulation (rw) structures. | Maria Matejka | |
Routes are now allocated only when they are just to be inserted to the table. Updating a route needs a locally allocated route structure. Ownership of the attributes is also now not transfered from protocols to tables and vice versa but just borrowed which should be easier to handle in a multithreaded environment. | |||
2021-11-09 | Limit containment | Maria Matejka | |
2021-11-09 | Protocol stats split to import and export | Maria Matejka | |
2021-11-09 | Refeed is done from export table when appropriate | Maria Matejka | |
2021-11-09 | Suppressed MRT unused static function warning | Maria Matejka | |
2021-11-09 | RPKI: Do nothing when protocol is stopping | Maria Matejka | |
2021-11-09 | RPKI shouldn't process more packets when being stopped | Maria Matejka | |
2021-11-09 | Kernel routes are flushed on shutdown by kernel scan, not by table scan | Maria Matejka | |
2021-11-09 | Extended route trace: logging Path Identifiers | Maria Matejka | |
2021-10-20 | Conf: Fix crash during shutdown | Ondrej Zajicek (work) | |
BIRD implements shutdown by reconfiguring to fake empty configuration. Such fake config structure is created from the last running config and shares some data, including symbol table. This allows access to (removed) routing tables and causes crash when 'show route' command is used during shutdown. Clean up symbol table, table list and links to default tables, so removed routing tables cannot be accessed during shutdown. | |||
2021-10-13 | Dropping the unused rte_same hook | Maria Matejka | |
2021-10-13 | Dropping rte-local dumper entries | Maria Matejka | |
2021-10-13 | Kernel: Convert the rte-local attributes to extended attributes and flags to ↵ | Maria Matejka | |
pflags | |||
2021-10-13 | Route: moved rte_src pointer from rta to rte | Maria Matejka | |
It is an auxiliary key in the routing table, not a route attribute. | |||
2021-10-13 | Preexport: No route modification, no linpool needed | Maria Matejka | |
2021-10-13 | RIP fixup + dropping the tmp_attrs mechanism as obsolete | Maria Matejka | |
2021-10-13 | Dropping the RTS_DUMMY temporary route storage. | Maria Matejka | |
Kernel route sync is done by other ways now and this code is not used currently. | |||
2021-10-13 | Preference moved to RTA and set explicitly in protocols | Maria Matejka | |
2021-10-13 | Export table: Delay freeing of old stored route. | Maria Matejka | |
This is needed to provide the protocols the full old route after filters when export table is enabled. | |||
2021-10-13 | BGP: Moved the suppressed and stale flags to pflags | Maria Matejka | |
2021-10-13 | Babel: Convert the rte-local attributes to extended attributes | Maria Matejka | |
2021-10-13 | There may be a symbol with NULL protocol when reconfiguring | Maria Matejka | |
2021-10-13 | OSPF: Convert the rte-local attributes to extended attributes | Maria Matejka | |
2021-10-13 | Show route may be accidentally called on shutdown also when not all default ↵ | Maria Matejka | |
tables are present | |||
2021-10-13 | RIP: convert the rte-local attributes to extended attributes | Maria Matejka | |
2021-10-13 | Extended route attributes may include also pointers | Maria Matejka | |
2021-10-13 | IGP metric getter refactoring to protocol callback | Maria Matejka | |
Direct protocol hooks for IGP metric inside nest/rt-table.c make the protocol API unnecessarily complex. Instead, we use a proper callback. |