From ea66cec4882d8e3c53cbe9465cb4313c667e87bf Mon Sep 17 00:00:00 2001 From: Donald Sharp Date: Fri, 4 Jan 2019 08:36:02 -0500 Subject: [PATCH] zebra: Store actual safi in info pointer and don't free then remalloc When we call zebra_vrf_table_create, we've already created the info pointer in zebra_router_get_table, so properly set the info->safi and just store the zvrf->table[afi][safi] value. Signed-off-by: Donald Sharp --- zebra/zebra_router.c | 2 +- zebra/zebra_vrf.c | 16 ++-------------- 2 files changed, 3 insertions(+), 15 deletions(-) diff --git a/zebra/zebra_router.c b/zebra/zebra_router.c index 2e1c69fb92..7f911164cd 100644 --- a/zebra/zebra_router.c +++ b/zebra/zebra_router.c @@ -105,7 +105,7 @@ struct route_table *zebra_router_get_table(struct zebra_vrf *zvrf, info = XCALLOC(MTYPE_RIB_TABLE_INFO, sizeof(*info)); info->zvrf = zvrf; info->afi = afi; - info->safi = SAFI_UNICAST; + info->safi = safi; route_table_set_info(zrt->table, info); zrt->table->cleanup = zebra_rtable_node_cleanup; diff --git a/zebra/zebra_vrf.c b/zebra/zebra_vrf.c index 38b8b43d73..f1458cb138 100644 --- a/zebra/zebra_vrf.c +++ b/zebra/zebra_vrf.c @@ -370,22 +370,10 @@ static void zebra_rnhtable_node_cleanup(struct route_table *table, static void zebra_vrf_table_create(struct zebra_vrf *zvrf, afi_t afi, safi_t safi) { - rib_table_info_t *info; - struct route_table *table; - assert(!zvrf->table[afi][safi]); - table = zebra_router_get_table(zvrf, zvrf->table_id, afi, safi); - - table->cleanup = zebra_rtable_node_cleanup; - zvrf->table[afi][safi] = table; - - XFREE(MTYPE_RIB_TABLE_INFO, table->info); - info = XCALLOC(MTYPE_RIB_TABLE_INFO, sizeof(*info)); - info->zvrf = zvrf; - info->afi = afi; - info->safi = safi; - route_table_set_info(table, info); + zvrf->table[afi][safi] = + zebra_router_get_table(zvrf, zvrf->table_id, afi, safi); } /* Allocate new zebra VRF. */ -- 2.39.5