HASH_INSERT2(p->buckets, AGGR_BUCK, p->p.pool, new_bucket);
/* Create root node */
- p->root = aggregator_create_new_node(p->trie_pool);
+ p->root = aggregator_create_new_node(p->trie_slab);
/*
* Root node is initialized with NON_FIB status.
ASSERT_DIE(p->bucket_pool == NULL);
ASSERT_DIE(p->route_pool == NULL);
- ASSERT_DIE(p->trie_pool == NULL);
+ ASSERT_DIE(p->trie_slab == NULL);
ASSERT_DIE(p->root == NULL);
p->addr_type = p->src->table->addr_type;
if (p->aggr_mode == PREFIX_AGGR)
{
- ASSERT_DIE(p->trie_pool == NULL);
- p->trie_pool = lp_new(P->pool);
+ ASSERT_DIE(p->trie_slab == NULL);
+ p->trie_slab = sl_new(P->pool, sizeof(struct trie_node));
ASSERT_DIE(p->bucket_list == NULL);
ASSERT_DIE(p->bucket_list_size == 0);
*/
p->bucket_pool = NULL;
p->route_pool = NULL;
- p->trie_pool = NULL;
+ p->trie_slab = NULL;
p->rte_withdrawal_pool = NULL;
p->root = NULL;
/* Aggregation trie */
uint addr_type;
- linpool *trie_pool;
+ struct slab *trie_slab;
struct trie_node *root;
int logging;
void aggregator_recalculate(struct aggregator_proto *p, struct aggregator_route *old, struct aggregator_route *new);
void aggregator_bucket_update(struct aggregator_proto *p, struct aggregator_bucket *bucket, struct network *net);
-struct trie_node *aggregator_create_new_node(linpool *trie_pool);
+struct trie_node *aggregator_create_new_node(struct slab *trie_slab);
#endif
};
/*
- * Allocate new node in protocol linpool
+ * Allocate new node in trie slab
*/
struct trie_node *
-aggregator_create_new_node(linpool *trie_pool)
+aggregator_create_new_node(struct slab *trie_slab)
{
- struct trie_node *node = lp_allocz(trie_pool, sizeof(*node));
- return node;
+ return sl_allocz(trie_slab);
}
static inline int
}
memset(node, 0, sizeof(*node));
+ sl_free(node);
}
/*
if (!node->child[bit])
{
- struct trie_node *new = aggregator_create_new_node(p->trie_pool);
+ struct trie_node *new = aggregator_create_new_node(p->trie_slab);
*new = (struct trie_node) {
.parent = node,
*/
if (!aggregator_is_bucket_potential(&imaginary_node, imaginary_node_inherited_bucket))
{
- struct trie_node *new = aggregator_create_new_node(p->trie_pool);
+ struct trie_node *new = aggregator_create_new_node(p->trie_slab);
*new = imaginary_node;
/* Connect new node to the trie */