Merge pull request #3428 from pguibert6WIND/avoid_vni_overwrite

zebra: avoid initialising more than one the l3vni hash structure
This commit is contained in:
Donald Sharp 2018-12-17 07:22:45 -05:00 committed by GitHub
commit b31c2a2ebf
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 7 additions and 9 deletions

View File

@ -76,7 +76,6 @@ static int zebra_ns_new(struct ns *ns)
/* Do any needed per-NS data structure allocation. */ /* Do any needed per-NS data structure allocation. */
zns->if_table = route_table_init(); zns->if_table = route_table_init();
zebra_vxlan_ns_init(zns);
return 0; return 0;
} }
@ -142,7 +141,6 @@ int zebra_ns_enable(ns_id_t ns_id, void **info)
static int zebra_ns_disable_internal(struct zebra_ns *zns, bool complete) static int zebra_ns_disable_internal(struct zebra_ns *zns, bool complete)
{ {
route_table_finish(zns->if_table); route_table_finish(zns->if_table);
zebra_vxlan_ns_disable(zns);
#if defined(HAVE_RTADV) #if defined(HAVE_RTADV)
rtadv_terminate(zns); rtadv_terminate(zns);
#endif #endif
@ -201,7 +199,6 @@ int zebra_ns_init(void)
/* Do any needed per-NS data structure allocation. */ /* Do any needed per-NS data structure allocation. */
dzns->if_table = route_table_init(); dzns->if_table = route_table_init();
zebra_vxlan_ns_init(dzns);
/* Register zebra VRF callbacks, create and activate default VRF. */ /* Register zebra VRF callbacks, create and activate default VRF. */
zebra_vrf_init(); zebra_vrf_init();

View File

@ -24,6 +24,7 @@
#include "zebra_router.h" #include "zebra_router.h"
#include "zebra_memory.h" #include "zebra_memory.h"
#include "zebra_pbr.h" #include "zebra_pbr.h"
#include "zebra_vxlan.h"
struct zebra_router zrouter; struct zebra_router zrouter;
@ -157,6 +158,7 @@ void zebra_router_terminate(void)
zebra_router_free_table(zrt); zebra_router_free_table(zrt);
} }
zebra_vxlan_disable();
hash_clean(zrouter.rules_hash, zebra_pbr_rules_free); hash_clean(zrouter.rules_hash, zebra_pbr_rules_free);
hash_free(zrouter.rules_hash); hash_free(zrouter.rules_hash);
@ -170,8 +172,7 @@ void zebra_router_terminate(void)
void zebra_router_init(void) void zebra_router_init(void)
{ {
zrouter.l3vni_table = NULL; zebra_vxlan_init();
zrouter.rules_hash = hash_create_size(8, zebra_pbr_rules_hash_key, zrouter.rules_hash = hash_create_size(8, zebra_pbr_rules_hash_key,
zebra_pbr_rules_hash_equal, zebra_pbr_rules_hash_equal,
"Rules Hash"); "Rules Hash");

View File

@ -8864,14 +8864,14 @@ void zebra_vxlan_close_tables(struct zebra_vrf *zvrf)
} }
/* init the l3vni table */ /* init the l3vni table */
void zebra_vxlan_ns_init(struct zebra_ns *zns) void zebra_vxlan_init(void)
{ {
zrouter.l3vni_table = hash_create(l3vni_hash_keymake, l3vni_hash_cmp, zrouter.l3vni_table = hash_create(l3vni_hash_keymake, l3vni_hash_cmp,
"Zebra VRF L3 VNI table"); "Zebra VRF L3 VNI table");
} }
/* free l3vni table */ /* free l3vni table */
void zebra_vxlan_ns_disable(struct zebra_ns *zns) void zebra_vxlan_disable(void)
{ {
hash_free(zrouter.l3vni_table); hash_free(zrouter.l3vni_table);
} }

View File

@ -183,8 +183,8 @@ extern int zebra_vxlan_process_vrf_vni_cmd(struct zebra_vrf *zvrf, vni_t vni,
extern void zebra_vxlan_init_tables(struct zebra_vrf *zvrf); extern void zebra_vxlan_init_tables(struct zebra_vrf *zvrf);
extern void zebra_vxlan_close_tables(struct zebra_vrf *); extern void zebra_vxlan_close_tables(struct zebra_vrf *);
extern void zebra_vxlan_cleanup_tables(struct zebra_vrf *); extern void zebra_vxlan_cleanup_tables(struct zebra_vrf *);
extern void zebra_vxlan_ns_init(struct zebra_ns *zns); extern void zebra_vxlan_init(void);
extern void zebra_vxlan_ns_disable(struct zebra_ns *zns); extern void zebra_vxlan_disable(void);
extern void zebra_vxlan_evpn_vrf_route_add(vrf_id_t vrf_id, extern void zebra_vxlan_evpn_vrf_route_add(vrf_id_t vrf_id,
struct ethaddr *rmac, struct ethaddr *rmac,
struct ipaddr *ip, struct ipaddr *ip,