]>
git.ipfire.org Git - thirdparty/bird.git/log
Igor Putovny [Fri, 28 Feb 2025 12:38:59 +0000 (13:38 +0100)]
Bugfix
When removing prefix from the trie, we need to find the closest IN_FIB
ancestor of the updated node. However, since the updated node may still
have IN_FIB status, we need to check that the target node and updated node
are not the same.
This bug manifested itself in a following way. After running aggregator with
configuation A and reconfiguring it to configuration B, routes from A, which
should have been removed, were still present in the routing table. This was
caused by old prefixes not being removed from the trie.
Because of the missing condition that the updated node and its ancestor are not
the same, trie recalculation was called on prefix nodes which were, in most
cases, leaves. Therefore, trie was not updated at all. All prefixes were still
present in the trie, and thus in the routing table as well.
Igor Putovny [Thu, 27 Feb 2025 16:29:18 +0000 (17:29 +0100)]
Bugfix
Node can have selected bucket when entering third pass
Igor Putovny [Thu, 27 Feb 2025 16:26:55 +0000 (17:26 +0100)]
Bugfix
Node can have selected bucket in the second pass
Igor Putovny [Thu, 27 Feb 2025 16:22:09 +0000 (17:22 +0100)]
Bugfix
Do not delete selected bucket during deaggregation, it will be needed
in the third pass for route withdrawal
Igor Putovny [Thu, 27 Feb 2025 16:13:47 +0000 (17:13 +0100)]
Bugfix
IN_FIB node can be a filler if it was previously original and was removed
from the trie
Igor Putovny [Thu, 27 Feb 2025 16:03:14 +0000 (17:03 +0100)]
Bugfix
When removing prefix from the trie, prefix node can still be IN_FIB and
it will be a filler because it is no longer original.
Igor Putovny [Thu, 27 Feb 2025 15:43:43 +0000 (16:43 +0100)]
Bugfix
Fix aggregator_trie_remove_prefix()
Never change FIB status except in the third pass. FIB status is decided only
by the algorithm and no one else. Never withdraw route except in the third pass.
Again, route exports and withdrawals are solely the algorithm's responsibility.
Keep selected bucket because it will be needed for route withdrawal in the
third pass.
Igor Putovny [Thu, 27 Feb 2025 15:24:02 +0000 (16:24 +0100)]
Check consistency of the whole trie after every recalculation
Igor Putovny [Tue, 25 Feb 2025 16:56:36 +0000 (17:56 +0100)]
Rename
Igor Putovny [Mon, 24 Feb 2025 16:18:28 +0000 (17:18 +0100)]
Bugfix
Assign px_origin of target node in the third pass
Igor Putovny [Mon, 24 Feb 2025 16:03:57 +0000 (17:03 +0100)]
Check trie consistency after every aggregation run
Igor Putovny [Mon, 24 Feb 2025 15:56:53 +0000 (16:56 +0100)]
Add more comments
Igor Putovny [Mon, 24 Feb 2025 13:43:54 +0000 (14:43 +0100)]
Fix comments
Igor Putovny [Mon, 24 Feb 2025 13:18:48 +0000 (14:18 +0100)]
Bugfix
Do not add potential bucket during deaggregation, this is done in the second
pass now that the first pass is omitted.
Change node status to FILLER if it's not ORIGINAL during deaggregation.
Igor Putovny [Mon, 24 Feb 2025 11:50:21 +0000 (12:50 +0100)]
Fix
Igor Putovny [Mon, 24 Feb 2025 11:38:08 +0000 (12:38 +0100)]
Fix comments
Igor Putovny [Mon, 24 Feb 2025 11:31:56 +0000 (12:31 +0100)]
Add prefix to function names, rename
Igor Putovny [Fri, 21 Feb 2025 16:09:42 +0000 (17:09 +0100)]
Split aggregator.c into two files
aggregator.c now contains main protocol functionality, evaluation of route
attributes and operations with buckets
trie.c now contains prefix aggregation and functions that operate on the trie
Igor Putovny [Fri, 21 Feb 2025 12:17:02 +0000 (13:17 +0100)]
Rename
Igor Putovny [Fri, 21 Feb 2025 12:04:03 +0000 (13:04 +0100)]
Switch order of expressions in condition testing
Igor Putovny [Fri, 21 Feb 2025 11:51:14 +0000 (12:51 +0100)]
Replace assert with ASSERT_DIE
Igor Putovny [Fri, 21 Feb 2025 11:39:53 +0000 (12:39 +0100)]
Merge branch 'ip-aggregator-new' of https://gitlab.nic.cz/labs/bird into ip-aggregator-new
Igor Putovny [Fri, 21 Feb 2025 11:00:14 +0000 (12:00 +0100)]
Aggregator: Support prefix aggregation
(ready for code review)
Igor Putovny [Fri, 21 Feb 2025 10:59:38 +0000 (11:59 +0100)]
IP: Getting and setting bits from ip_addr
Igor Putovny [Fri, 21 Feb 2025 10:58:53 +0000 (11:58 +0100)]
Satanize the build to find sus behavior
Igor Putovny [Fri, 21 Feb 2025 10:39:53 +0000 (11:39 +0100)]
Autoconf: Merge check and add compiler option to one macro
Igor Putovny [Fri, 21 Feb 2025 10:09:27 +0000 (11:09 +0100)]
Bugfix
Igor Putovny [Thu, 20 Feb 2025 16:35:32 +0000 (17:35 +0100)]
Rework documentation, add comments
Igor Putovny [Thu, 20 Feb 2025 16:30:43 +0000 (17:30 +0100)]
Remove first pass, second pass now fills its function
Igor Putovny [Thu, 20 Feb 2025 16:18:16 +0000 (17:18 +0100)]
Rename
Igor Putovny [Thu, 20 Feb 2025 16:16:17 +0000 (17:16 +0100)]
Add another implementation of node_add_potential_bucket()
Igor Putovny [Thu, 20 Feb 2025 16:06:29 +0000 (17:06 +0100)]
Fix formatting
Igor Putovny [Thu, 20 Feb 2025 13:31:32 +0000 (14:31 +0100)]
memset removed nodes, add const and inline
Igor Putovny [Wed, 19 Feb 2025 15:57:29 +0000 (16:57 +0100)]
Set ancestor without another if
Igor Putovny [Wed, 19 Feb 2025 15:24:52 +0000 (16:24 +0100)]
Replace superfluous else-if with else
Igor Putovny [Wed, 19 Feb 2025 13:12:38 +0000 (14:12 +0100)]
Remove logs
Igor Putovny [Wed, 19 Feb 2025 12:52:43 +0000 (13:52 +0100)]
Rename
Igor Putovny [Wed, 19 Feb 2025 11:38:10 +0000 (12:38 +0100)]
Add comments
Igor Putovny [Tue, 18 Feb 2025 16:22:12 +0000 (17:22 +0100)]
Fix printing prefixes
Igor Putovny [Tue, 18 Feb 2025 16:20:53 +0000 (17:20 +0100)]
Cleanup
Igor Putovny [Tue, 18 Feb 2025 16:11:59 +0000 (17:11 +0100)]
Remove unnecessary else branches
Igor Putovny [Tue, 18 Feb 2025 15:49:01 +0000 (16:49 +0100)]
Add parentheses to ternary operator expressions
Improve bug messages
Igor Putovny [Tue, 18 Feb 2025 15:41:12 +0000 (16:41 +0100)]
Refactor deaggregate()
Igor Putovny [Tue, 18 Feb 2025 15:29:57 +0000 (16:29 +0100)]
Add const
Igor Putovny [Tue, 18 Feb 2025 15:28:19 +0000 (16:28 +0100)]
Rename aggregator_process_withdraw()
Igor Putovny [Tue, 18 Feb 2025 15:27:11 +0000 (16:27 +0100)]
Rename choose_lowest_id_bucket()
Igor Putovny [Tue, 18 Feb 2025 15:19:11 +0000 (16:19 +0100)]
Rename node_insert_potential_bucket()
Igor Putovny [Tue, 18 Feb 2025 15:14:08 +0000 (16:14 +0100)]
Fix typo
Igor Putovny [Tue, 18 Feb 2025 14:22:47 +0000 (15:22 +0100)]
Refactor
Igor Putovny [Fri, 14 Feb 2025 16:51:33 +0000 (17:51 +0100)]
Small changes
Igor Putovny [Fri, 14 Feb 2025 16:44:07 +0000 (17:44 +0100)]
Cleanup
Igor Putovny [Fri, 14 Feb 2025 16:12:25 +0000 (17:12 +0100)]
Rename
Igor Putovny [Fri, 14 Feb 2025 16:07:36 +0000 (17:07 +0100)]
Add assertions
Igor Putovny [Thu, 13 Feb 2025 17:28:12 +0000 (18:28 +0100)]
Cleanup
Igor Putovny [Thu, 13 Feb 2025 17:06:06 +0000 (18:06 +0100)]
Rename
Igor Putovny [Thu, 13 Feb 2025 17:02:51 +0000 (18:02 +0100)]
trie_insert_prefix() now takes pointer to aggregator_proto
Igor Putovny [Thu, 13 Feb 2025 16:53:50 +0000 (17:53 +0100)]
Rename
Igor Putovny [Thu, 13 Feb 2025 16:46:57 +0000 (17:46 +0100)]
Use builtin popcount
Igor Putovny [Thu, 13 Feb 2025 16:30:10 +0000 (17:30 +0100)]
Relocate code
Igor Putovny [Thu, 13 Feb 2025 15:29:24 +0000 (16:29 +0100)]
Fix errors
Igor Putovny [Thu, 13 Feb 2025 15:10:13 +0000 (16:10 +0100)]
Rewrite print_prefixes() using ip_addr instead of net_addr
Igor Putovny [Wed, 12 Feb 2025 18:43:08 +0000 (19:43 +0100)]
Rewrite dump_trie() using ip_addr instead of net_addr
Igor Putovny [Wed, 12 Feb 2025 18:18:35 +0000 (19:18 +0100)]
Rewrite construct_trie() using ip_addr instead of net_addr
Igor Putovny [Wed, 12 Feb 2025 18:16:10 +0000 (19:16 +0100)]
Rewrite trie_process() using ip_addr instead of net_addr
Igor Putovny [Wed, 12 Feb 2025 18:06:57 +0000 (19:06 +0100)]
Rewrite third_pass() using ip_addr instead of net_addr
Igor Putovny [Wed, 12 Feb 2025 17:38:33 +0000 (18:38 +0100)]
Rewrite find_subtree_prefix() using ip_addr instead of net_addr
Igor Putovny [Wed, 12 Feb 2025 17:22:58 +0000 (18:22 +0100)]
Rewrite trie_remove_prefix() using ip_addr instead of net_addr
Igor Putovny [Wed, 12 Feb 2025 17:08:15 +0000 (18:08 +0100)]
Rewrite prepare_rte_withdrawal() using ip_addr instead of net_addr
Igor Putovny [Wed, 12 Feb 2025 16:24:03 +0000 (17:24 +0100)]
Rewrite trie_insert_prefix() using ip_addr instead of net_addr
Igor Putovny [Wed, 12 Feb 2025 16:17:56 +0000 (17:17 +0100)]
Add shift values for ipa bit operations
Igor Putovny [Wed, 12 Feb 2025 16:12:10 +0000 (17:12 +0100)]
Rewrite create_route() using ip_addr instead of net_addr
Igor Putovny [Wed, 12 Feb 2025 16:07:21 +0000 (17:07 +0100)]
Remove collect_prefixes()
Igor Putovny [Wed, 12 Feb 2025 15:49:22 +0000 (16:49 +0100)]
Add macros for ipa bit operations
Igor Putovny [Tue, 11 Feb 2025 13:02:09 +0000 (14:02 +0100)]
Small changes
Igor Putovny [Mon, 10 Feb 2025 16:22:26 +0000 (17:22 +0100)]
Create default route in the thid pass
Igor Putovny [Mon, 10 Feb 2025 15:55:48 +0000 (16:55 +0100)]
Initialize root node with NON_FIB status
Igor Putovny [Mon, 10 Feb 2025 15:12:02 +0000 (16:12 +0100)]
Bugfix
Export new route when node status is changing from NON_FIB or UNASSIGNED to IN_FIB
Igor Putovny [Fri, 7 Feb 2025 16:28:53 +0000 (17:28 +0100)]
Use net_addr at rte_withdrawal struct, plus small changes
Igor Putovny [Fri, 7 Feb 2025 15:52:42 +0000 (16:52 +0100)]
Small changes
Igor Putovny [Fri, 7 Feb 2025 13:56:01 +0000 (14:56 +0100)]
Cleanup
Igor Putovny [Thu, 6 Feb 2025 14:55:02 +0000 (15:55 +0100)]
Do not set IN_FIB status for newly added prefixes
FIB status now truly reflects whether prefix is in export table or not.
Based on the change of FIB status, third pass can now decide whether
the export or route removal is needed.
Igor Putovny [Thu, 6 Feb 2025 14:27:53 +0000 (15:27 +0100)]
Process route withdrawals caused by incorporating updates to the trie
Igor Putovny [Thu, 6 Feb 2025 14:18:25 +0000 (15:18 +0100)]
trie_remove_prefix() now removes route from the table
Igor Putovny [Wed, 5 Feb 2025 18:09:55 +0000 (19:09 +0100)]
Implement route withdrawal
Igor Putovny [Wed, 5 Feb 2025 17:26:03 +0000 (18:26 +0100)]
Small changes
Igor Putovny [Mon, 3 Feb 2025 19:07:00 +0000 (20:07 +0100)]
Rename
Igor Putovny [Mon, 3 Feb 2025 19:06:19 +0000 (20:06 +0100)]
Cleanup
Igor Putovny [Mon, 3 Feb 2025 18:37:19 +0000 (19:37 +0100)]
Add assertions
Igor Putovny [Mon, 3 Feb 2025 17:01:08 +0000 (18:01 +0100)]
Add comments
Igor Putovny [Tue, 28 Jan 2025 15:33:48 +0000 (16:33 +0100)]
Keep track of current prefix during third pass
Igor Putovny [Tue, 28 Jan 2025 15:32:10 +0000 (16:32 +0100)]
Add find_subtree_prefix()
Igor Putovny [Tue, 28 Jan 2025 11:59:37 +0000 (12:59 +0100)]
Rename
Igor Putovny [Mon, 27 Jan 2025 15:35:33 +0000 (16:35 +0100)]
Move static variable to the top
Igor Putovny [Fri, 24 Jan 2025 16:10:19 +0000 (17:10 +0100)]
Incorporate withdrawals to the trie
Igor Putovny [Fri, 24 Jan 2025 15:51:57 +0000 (16:51 +0100)]
Deaggregation runs on the whole subtree
Igor Putovny [Fri, 24 Jan 2025 15:19:52 +0000 (16:19 +0100)]
Incorporate updates to the trie
Igor Putovny [Fri, 24 Jan 2025 14:37:06 +0000 (15:37 +0100)]
Implement deaggregation
Igor Putovny [Fri, 24 Jan 2025 14:30:53 +0000 (15:30 +0100)]
Overwrite removed nodes with garbage values
Igor Putovny [Fri, 24 Jan 2025 14:13:43 +0000 (15:13 +0100)]
Add more checks
Igor Putovny [Fri, 24 Jan 2025 13:58:54 +0000 (14:58 +0100)]
Rename