From 878eeec12bf020c9e7460040d225a929bbbd2bd2 Mon Sep 17 00:00:00 2001 From: Maria Matejka Date: Wed, 29 Sep 2021 16:15:13 +0200 Subject: Routing tables now have their own loops. This basically means that: * there are some more levels of indirection and asynchronicity, mostly in cleanup procedures, requiring correct lock ordering * all the internal table operations (prune, next hop update) are done without blocking the other parts of BIRD * the protocols may get their own loops very soon --- proto/radv/radv.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) (limited to 'proto/radv') diff --git a/proto/radv/radv.c b/proto/radv/radv.c index fa228c69..d572c1b7 100644 --- a/proto/radv/radv.c +++ b/proto/radv/radv.c @@ -555,7 +555,10 @@ radv_check_active(struct radv_proto *p) return 1; struct channel *c = p->p.main_channel; - return rt_examine(c->table, &cf->trigger, c, c->out_filter); + RT_LOCK(c->table); + int active = rt_examine(RT_PRIV(c->table), &cf->trigger, c, c->out_filter); + RT_UNLOCK(c->table); + return active; } static void -- cgit v1.2.3