- Jan 23, 2023
-
-
Maria Matejka authored
-
Maria Matejka authored
-
Maria Matejka authored
-
Maria Matejka authored
-
Maria Matejka authored
-
Maria Matejka authored
-
- Jan 22, 2023
-
-
Maria Matejka authored
-
- Jan 21, 2023
-
-
Maria Matejka authored
-
Maria Matejka authored
-
Maria Matejka authored
-
Maria Matejka authored
-
Maria Matejka authored
-
Maria Matejka authored
-
Maria Matejka authored
-
Maria Matejka authored
-
- Jan 20, 2023
-
-
Maria Matejka authored
-
- Jan 19, 2023
-
-
Maria Matejka authored
-
Maria Matejka authored
On large configurations, too many threads would spawn with one thread per loop. Therefore, threads may now run multiple loops at once. The thread count is configurable and may be changed during run. All threads are spawned on startup. This change helps with memory bloating. BIRD filters need large temporary memory blocks to store their stack and also memory management keeps its hot page storage per-thread. Known bugs: * Thread autobalancing is not yet implemented. * Low latency loops are executed together with standard loops.
-
Maria Matejka authored
If no channel is flushing, table prune doesn't walk over routes in nets and also doesn't walk over importing channel lists. This helps to alleviate the memory caching burdens a lot.
-
Maria Matejka authored
Some CLI actions, notably "show route", are run by queuing an event somewhere else. If the user closes the socket, in case such an action is being executed, the CLI must free the socket immediately from the error hook but the pool must remain until the asynchronous event finishes and cleans everything up.
-
Maria Matejka authored
-
- Jan 13, 2023
-
-
Ondřej Zajíček authored
Add support for kernel route metric/priority, exported as krt_metric attribute, like in Linux. This should also fix issues with overwriting or removing system routes.
-
- Jan 12, 2023
-
-
Log message before aborting due to watchdog timeout. We have to use async-safe write to debug log, as it is done in signal handler. Minor changes from committer.
-
- Jan 07, 2023
-
-
Ondřej Zajíček authored
Most branching instructions (FI_CONDITION, FI_AND, FI_OR) linearize its branches in a recursive way, while FI_SWITCH branches are linearized from parser even before the switch instruction is allocated. Change linearization of FI_SWITCH branches to make it similar to other branching instructions. This also fixes an issue with constant switch evaluation, where linearized branch is mistaken for non-linearized during switch construction. Thanks to Jiten Kumar Pathy for the bugreport.
-
- Jan 03, 2023
-
-
Ondřej Zajíček authored
Some of these new BGP role keywords use generic names that collides with user-defined symbols. Allow them to be redefined. Also remove duplicit keyword definition for 'prefer'.
-
Ondřej Zajíček authored
-
Ondřej Zajíček authored
During backporting attribute changes from 3.0-branch, some internal attributes (RIP iface and Babel seqno) leaked to 'show route all' output. Allow protocols to hide specific attributes with GA_HIDDEN value. Thanks to Nigel Kukard for the bugreport.
-
- Jan 02, 2023
-
-
Ondřej Zajíček authored
In some cases 16-way tries are too memory-heavy, while 4-way are almost as efficient as the original 2-way ones.
-
- Jan 01, 2023
-
-
Ondřej Zajíček authored
There were some confusion about validity and usage of pflags, which caused incorrect usage after some flags from (now removed) protocol- specific area were moved to pflags. We state that pflags: - Are secondary data used by protocol-specific hooks - Can be changed on an existing route (in contrast to copy-on-write for primary data) - Are irrelevant for propagation (not propagated when changed) - Are specific to a routing table (not propagated by pipe) The patch did these fixes: - Do not compare pflags in rte_same(), as they may keep cached values like BGP_REF_STALE, causing spurious propagation. - Initialize pflags to zero in rte_get_temp(), avoid initialization in protocol code, fixing at least two forgotten initializations (krt and one case in babel). - Improve documentation about pflags
-
- Dec 24, 2022
-
-
The seqno request retransmission handling was tracking the destination that a forwarded request was being sent to and always retransmitting to that same destination. This is unnecessary because we only need to retransmit requests we originate ourselves, not those we forward on behalf of others; in fact retransmitting on behalf of others can lead to exponential multiplication of requests, which would be bad. So rework the seqno request tracking so that instead of storing the destination of a request, we just track whether it was a request that we forwarded on behalf of another node, or if it was a request we originated ourselves. Forwarded requests are not retransmitted, they are only used for duplicate suppression, and for triggering an update when satisfied. If we end up originating a request that we previously forwarded, we "upgrade" the old request and restart the retransmit counter. One complication with this is that requests sent in response to unfeasible updates (section 3.8.2.2 of the RFC) have to be sent as unicast to a particular peer. However, we don't really need to retransmit those as there's no starvation when sending such a request; so we just change such requests to be one-off unicast requests that are not subject to retransmission or duplicate suppression. This is the same behaviour as babeld has for such requests. Minor changes from committer.
-
- Dec 18, 2022
-
-
Ondřej Zajíček authored
-
- Dec 16, 2022
-
-
Minor changes from committer.
-
Minor changes from committer.
-
Ondřej Zajíček authored
Use symlinks to linux/netlink* to avoid limitations of our buildsystem.
-
- Dec 11, 2022
-
-
Ondřej Zajíček authored
FreeBSD 13.0 added some safechecks for syscalls, rejecting sockaddrs that are too small, later versions loosen up the check.
- Dec 10, 2022
-
-
Ondřej Zajíček authored
Thanks Johannes Moos for the suggestion.
-
Ondřej Zajíček authored
When there is a continuos stream of CLI commands, cli_get_command() always returns 1 (there is a new command). Anyway, the socket receive buffer was reset only when there was no command at all, leading to a strange behavior: after a while, the CLI receive buffer came to its end, then read() was called with zero size buffer, it returned 0 which was interpreted as EOF. The patch fixes that by resetting the buffer position after each command and moving remaining data at the beginning of buffer. Thanks to Maria Matejka for examining the bug and for the original bugfix.
-
Ondřej Zajíček authored
-
- Dec 09, 2022
-
-
Ondřej Zajíček authored
The import table does not work reliably together with re-evaluation of routes due to recursive next hops or flowspec validation. We will at least document that here, as import tables are completely redesigned and this issue is fixed in BIRD 3.x branch.
-