mirror of
https://git.proxmox.com/git/mirror_frr
synced 2025-06-03 23:25:34 +00:00
Merge pull request #3428 from pguibert6WIND/avoid_vni_overwrite
zebra: avoid initialising more than one the l3vni hash structure
This commit is contained in:
commit
b31c2a2ebf
@ -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();
|
||||||
|
@ -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");
|
||||||
|
@ -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);
|
||||||
}
|
}
|
||||||
|
@ -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,
|
||||||
|
Loading…
Reference in New Issue
Block a user