mirror of
https://gitlab.nic.cz/labs/bird.git
synced 2024-11-17 08:38:42 +00:00
Nest: Fix table reconfiguration when nettype changes
Thanks to Toke Hoiland-Jorgensen for the bugreport.
This commit is contained in:
parent
364d5823ea
commit
bcb4af81fc
@ -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;
|
||||||
|
Loading…
Reference in New Issue
Block a user