Nest: Fix table reconfiguration when nettype changes

Thanks to Toke Hoiland-Jorgensen for the bugreport.
This commit is contained in:
Ondrej Zajicek (work) 2018-03-18 13:48:47 +01:00
parent 364d5823ea
commit bcb4af81fc

View file

@ -2076,6 +2076,13 @@ rt_unlock_table(rtable *r)
} }
} }
static struct rtable_config *
rt_find_table_config(struct config *cf, char *name)
{
struct symbol *sym = cf_find_symbol(cf, name);
return (sym && (sym->class == SYM_TABLE)) ? sym->def : NULL;
}
/** /**
* rt_commit - commit new routing table configuration * rt_commit - commit new routing table configuration
* @new: new configuration * @new: new configuration
@ -2101,11 +2108,10 @@ rt_commit(struct config *new, struct config *old)
rtable *ot = o->table; rtable *ot = o->table;
if (!ot->deleted) if (!ot->deleted)
{ {
struct symbol *sym = cf_find_symbol(new, o->name); r = rt_find_table_config(new, o->name);
if (sym && sym->class == SYM_TABLE && !new->shutdown) if (r && (r->addr_type == o->addr_type) && !new->shutdown)
{ {
DBG("\t%s: same\n", o->name); DBG("\t%s: same\n", o->name);
r = sym->def;
r->table = ot; r->table = ot;
ot->name = r->name; ot->name = r->name;
ot->config = r; ot->config = r;