]> git.ipfire.org Git - thirdparty/bird.git/commitdiff
Refactor dump_trie()
authorIgor Putovny <igor.putovny@nic.cz>
Tue, 8 Apr 2025 11:51:31 +0000 (13:51 +0200)
committerIgor Putovny <igor.putovny@nic.cz>
Tue, 29 Apr 2025 13:01:15 +0000 (15:01 +0200)
proto/aggregator/trie.c

index 04a1b576f76965bf905e66874dbe7ae3d2ce4fef..3603424701ee32964f0414821c1731fc19d83978 100644 (file)
@@ -348,9 +348,8 @@ aggregator_merge_potential_buckets(struct trie_node *target, const struct trie_n
  * Dump aggregation trie
  */
 static void
-aggregator_dump_trie_helper(const struct aggregator_proto *p, const struct trie_node *node, ip_addr *prefix, u32 pxlen, struct buffer *buf)
+aggregator_dump_trie_helper(const struct trie_node *node, ip_addr *prefix, u32 pxlen, u32 addr_type, struct buffer *buf)
 {
-  ASSERT_DIE(p != NULL);
   ASSERT_DIE(node != NULL);
   ASSERT_DIE(prefix != NULL);
 
@@ -407,16 +406,16 @@ aggregator_dump_trie_helper(const struct aggregator_proto *p, const struct trie_
   if (node->child[0])
   {
     ASSERT_DIE((u32)node->depth == pxlen);
-    ip6_clrbit(prefix, node->depth + ipa_shift[p->addr_type]);
-    aggregator_dump_trie_helper(p, node->child[0], prefix, pxlen + 1, buf);
+    ip6_clrbit(prefix, node->depth + ipa_shift[addr_type]);
+    aggregator_dump_trie_helper(node->child[0], prefix, pxlen + 1, addr_type, buf);
   }
 
   if (node->child[1])
   {
     ASSERT_DIE((u32)node->depth == pxlen);
-    ip6_setbit(prefix, node->depth + ipa_shift[p->addr_type]);
-    aggregator_dump_trie_helper(p, node->child[1], prefix, pxlen + 1, buf);
-    ip6_clrbit(prefix, node->depth + ipa_shift[p->addr_type]);
+    ip6_setbit(prefix, node->depth + ipa_shift[addr_type]);
+    aggregator_dump_trie_helper(node->child[1], prefix, pxlen + 1, addr_type, buf);
+    ip6_clrbit(prefix, node->depth + ipa_shift[addr_type]);
   }
 }
 
@@ -429,7 +428,7 @@ aggregator_dump_trie(const struct aggregator_proto *p)
   LOG_BUFFER_INIT(buf);
 
   log("==== TRIE BEGIN ====");
-  aggregator_dump_trie_helper(p, p->root, &prefix, 0, &buf);
+  aggregator_dump_trie_helper(p->root, &prefix, 0, p->addr_type, &buf);
   log("==== TRIE   END ====");
 }