mirror of
https://git.proxmox.com/git/mirror_frr
synced 2025-08-15 20:32:18 +00:00
zebra: Cleanup svd_nh_table on shutdown
Signed-off-by: Donald Sharp <sharpd@nvidia.com>
This commit is contained in:
parent
30c0efd68c
commit
a7628b1b2d
@ -246,6 +246,7 @@ void zebra_router_terminate(void)
|
|||||||
zebra_script_destroy();
|
zebra_script_destroy();
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
zebra_vxlan_terminate();
|
||||||
/* OS-specific deinit */
|
/* OS-specific deinit */
|
||||||
kernel_router_terminate();
|
kernel_router_terminate();
|
||||||
}
|
}
|
||||||
|
@ -82,7 +82,7 @@ static int zl3vni_nh_uninstall(struct zebra_l3vni *zl3vni,
|
|||||||
struct zebra_neigh *n);
|
struct zebra_neigh *n);
|
||||||
static struct zebra_neigh *svd_nh_add(const struct ipaddr *vtep_ip,
|
static struct zebra_neigh *svd_nh_add(const struct ipaddr *vtep_ip,
|
||||||
const struct ethaddr *rmac);
|
const struct ethaddr *rmac);
|
||||||
static int svd_nh_del(struct zebra_neigh *n);
|
static void svd_nh_del(struct zebra_neigh *n);
|
||||||
static int svd_nh_install(struct zebra_l3vni *zl3vni, struct zebra_neigh *n);
|
static int svd_nh_install(struct zebra_l3vni *zl3vni, struct zebra_neigh *n);
|
||||||
static int svd_nh_uninstall(struct zebra_l3vni *zl3vni, struct zebra_neigh *n);
|
static int svd_nh_uninstall(struct zebra_l3vni *zl3vni, struct zebra_neigh *n);
|
||||||
|
|
||||||
@ -1590,17 +1590,24 @@ static struct zebra_neigh *svd_nh_add(const struct ipaddr *ip,
|
|||||||
/*
|
/*
|
||||||
* Del Single VXlan Device neighbor entry.
|
* Del Single VXlan Device neighbor entry.
|
||||||
*/
|
*/
|
||||||
static int svd_nh_del(struct zebra_neigh *n)
|
static void svd_nh_del(struct zebra_neigh *n)
|
||||||
{
|
{
|
||||||
if (n->refcnt > 0)
|
if (n->refcnt > 0)
|
||||||
return -1;
|
return;
|
||||||
|
|
||||||
hash_release(svd_nh_table, n);
|
hash_release(svd_nh_table, n);
|
||||||
XFREE(MTYPE_L3NEIGH, n);
|
XFREE(MTYPE_L3NEIGH, n);
|
||||||
|
|
||||||
return 0;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void svd_nh_del_terminate(void *ptr)
|
||||||
|
{
|
||||||
|
struct zebra_neigh *n = ptr;
|
||||||
|
|
||||||
|
n->refcnt = 0;
|
||||||
|
svd_nh_del(n);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Common code to install remote nh as neigh into the kernel.
|
* Common code to install remote nh as neigh into the kernel.
|
||||||
*/
|
*/
|
||||||
@ -5813,6 +5820,11 @@ void zebra_vxlan_init(void)
|
|||||||
zebra_evpn_mh_init();
|
zebra_evpn_mh_init();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void zebra_vxlan_terminate(void)
|
||||||
|
{
|
||||||
|
hash_clean_and_free(&svd_nh_table, svd_nh_del_terminate);
|
||||||
|
}
|
||||||
|
|
||||||
/* free l3vni table */
|
/* free l3vni table */
|
||||||
void zebra_vxlan_disable(void)
|
void zebra_vxlan_disable(void)
|
||||||
{
|
{
|
||||||
|
@ -185,6 +185,7 @@ 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_init(void);
|
extern void zebra_vxlan_init(void);
|
||||||
|
extern void zebra_vxlan_terminate(void);
|
||||||
extern void zebra_vxlan_disable(void);
|
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,
|
||||||
const struct ethaddr *rmac,
|
const struct ethaddr *rmac,
|
||||||
|
Loading…
Reference in New Issue
Block a user