Added forgotten route source locking in flowspec validation

This commit is contained in:
Maria Matejka 2022-07-11 13:04:01 +02:00
parent 2e5bfeb73a
commit b5c8fce284

View file

@ -2674,7 +2674,7 @@ static rte *
rt_flowspec_update_rte(rtable *tab, rte *r) rt_flowspec_update_rte(rtable *tab, rte *r)
{ {
#ifdef CONFIG_BGP #ifdef CONFIG_BGP
if (r->attrs->source != RTS_BGP) if ((r->attrs->source != RTS_BGP) || (r->sender->proto != r->src->proto))
return NULL; return NULL;
struct bgp_channel *bc = (struct bgp_channel *) r->sender; struct bgp_channel *bc = (struct bgp_channel *) r->sender;
@ -2697,6 +2697,7 @@ rt_flowspec_update_rte(rtable *tab, rte *r)
rte *new = sl_alloc(rte_slab); rte *new = sl_alloc(rte_slab);
memcpy(new, r, sizeof(rte)); memcpy(new, r, sizeof(rte));
new->attrs = rta_lookup(a); new->attrs = rta_lookup(a);
rt_lock_source(new->src);
return new; return new;
#else #else