0
0
mirror of https://gitlab.nic.cz/labs/bird.git synced 2024-11-10 05:08:42 +00:00

Merge commit 'c7d0c5b2' into thread-next

This commit is contained in:
Maria Matejka 2022-08-03 20:01:42 +02:00
commit 74eb4bad5f
3 changed files with 12 additions and 11 deletions

View File

@ -313,9 +313,9 @@ proto_remove_channels(struct proto *p)
} }
static void static void
channel_roa_in_changed(struct rt_subscription *s) channel_roa_in_changed(void *_data)
{ {
struct channel *c = s->data; struct channel *c = _data;
int active = !!c->reload_req.hook; int active = !!c->reload_req.hook;
CD(c, "Reload triggered by RPKI change%s", active ? " - already active" : ""); CD(c, "Reload triggered by RPKI change%s", active ? " - already active" : "");
@ -327,9 +327,9 @@ channel_roa_in_changed(struct rt_subscription *s)
} }
static void static void
channel_roa_out_changed(struct rt_subscription *s) channel_roa_out_changed(void *_data)
{ {
struct channel *c = s->data; struct channel *c = _data;
CD(c, "Feeding triggered by RPKI change"); CD(c, "Feeding triggered by RPKI change");
c->refeed_pending = 1; c->refeed_pending = 1;
@ -347,14 +347,14 @@ struct roa_subscription {
static int static int
channel_roa_is_subscribed(struct channel *c, rtable *tab, int dir) channel_roa_is_subscribed(struct channel *c, rtable *tab, int dir)
{ {
void (*hook)(struct rt_subscription *) = void (*hook)(void *) =
dir ? channel_roa_in_changed : channel_roa_out_changed; dir ? channel_roa_in_changed : channel_roa_out_changed;
struct roa_subscription *s; struct roa_subscription *s;
node *n; node *n;
WALK_LIST2(s, n, c->roa_subscriptions, roa_node) WALK_LIST2(s, n, c->roa_subscriptions, roa_node)
if ((s->s.tab == tab) && (s->s.hook == hook)) if ((s->s.tab == tab) && (s->s.event->hook == hook))
return 1; return 1;
return 0; return 0;
@ -368,9 +368,9 @@ channel_roa_subscribe(struct channel *c, rtable *tab, int dir)
return; return;
struct roa_subscription *s = mb_allocz(c->proto->pool, sizeof(struct roa_subscription)); struct roa_subscription *s = mb_allocz(c->proto->pool, sizeof(struct roa_subscription));
s->s.event = ev_new_init(c->proto->pool, dir ? channel_roa_in_changed : channel_roa_out_changed, c);
s->s.list = proto_work_list(c->proto);
s->s.hook = dir ? channel_roa_in_changed : channel_roa_out_changed;
s->s.data = c;
rt_subscribe(tab, &s->s); rt_subscribe(tab, &s->s);
add_tail(&c->roa_subscriptions, &s->roa_node); add_tail(&c->roa_subscriptions, &s->roa_node);
@ -381,6 +381,7 @@ channel_roa_unsubscribe(struct roa_subscription *s)
{ {
rt_unsubscribe(&s->s); rt_unsubscribe(&s->s);
rem_node(&s->roa_node); rem_node(&s->roa_node);
rfree(s->s.event);
mb_free(s); mb_free(s);
} }

View File

@ -2436,7 +2436,7 @@ rt_settle_timer(timer *t)
struct rt_subscription *s; struct rt_subscription *s;
WALK_LIST(s, tab->subscribers) WALK_LIST(s, tab->subscribers)
s->hook(s); ev_send(s->list, s->event);
} }
static void static void

View File

@ -139,8 +139,8 @@ typedef struct rtable {
struct rt_subscription { struct rt_subscription {
node n; node n;
rtable *tab; rtable *tab;
void (*hook)(struct rt_subscription *b); event *event;
void *data; event_list *list;
}; };
struct rt_flowspec_link { struct rt_flowspec_link {