0
0
mirror of https://gitlab.nic.cz/labs/bird.git synced 2024-11-13 22:58:42 +00:00

Create event to run ORTC algorithm exactly once

This commit is contained in:
Igor Putovny 2023-11-21 12:58:24 +01:00
parent 54491f9606
commit b574c62d57
2 changed files with 9 additions and 0 deletions

View File

@ -1178,6 +1178,7 @@ aggregator_rt_notify(struct proto *P, struct channel *src_ch, net *net, rte *new
} }
HASH_WALK_END; HASH_WALK_END;
ev_schedule(&p->reload_trie);
/* Announce changes */ /* Announce changes */
if (old_bucket) if (old_bucket)
@ -1275,6 +1276,11 @@ aggregator_start(struct proto *P)
p->trie_slab = sl_new(p->p.pool, sizeof(struct trie_node)); p->trie_slab = sl_new(p->p.pool, sizeof(struct trie_node));
p->root = new_node(p->trie_slab); p->root = new_node(p->trie_slab);
p->reload_trie = (event) {
.hook = calculate_trie,
.data = p,
};
return PS_UP; return PS_UP;
} }
@ -1301,6 +1307,7 @@ aggregator_shutdown(struct proto *P)
} }
HASH_WALK_END; HASH_WALK_END;
ev_postpone(&p->reload_trie);
delete_trie(p->root); delete_trie(p->root);
p->root = NULL; p->root = NULL;

View File

@ -67,6 +67,8 @@ struct aggregator_proto {
/* Aggregation trie */ /* Aggregation trie */
slab *trie_slab; slab *trie_slab;
struct trie_node *root; struct trie_node *root;
struct event reload_trie;
}; };
enum aggr_item_type { enum aggr_item_type {