From bcb4af81fc8ea0acf7c2fa5a6854cd3c23d92d9f Mon Sep 17 00:00:00 2001 From: "Ondrej Zajicek (work)" Date: Sun, 18 Mar 2018 13:48:47 +0100 Subject: [PATCH] Nest: Fix table reconfiguration when nettype changes Thanks to Toke Hoiland-Jorgensen for the bugreport. --- nest/rt-table.c | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/nest/rt-table.c b/nest/rt-table.c index 686d0e84..b885c6e3 100644 --- a/nest/rt-table.c +++ b/nest/rt-table.c @@ -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 * @new: new configuration @@ -2101,11 +2108,10 @@ rt_commit(struct config *new, struct config *old) rtable *ot = o->table; if (!ot->deleted) { - struct symbol *sym = cf_find_symbol(new, o->name); - if (sym && sym->class == SYM_TABLE && !new->shutdown) + r = rt_find_table_config(new, o->name); + if (r && (r->addr_type == o->addr_type) && !new->shutdown) { DBG("\t%s: same\n", o->name); - r = sym->def; r->table = ot; ot->name = r->name; ot->config = r;