pimd: Cleanup bfd memory on shutdown

When shutting down pim, ensure that we cleanup bfd memory

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
This commit is contained in:
Donald Sharp 2018-08-02 22:56:55 -04:00
parent e2c4bc88d2
commit 662ba9e6f0
3 changed files with 8 additions and 5 deletions

View File

@ -99,9 +99,9 @@ void pim_bfd_info_nbr_create(struct pim_interface *pim_ifp,
/* /*
* pim_bfd_info_free - Free BFD info structure * pim_bfd_info_free - Free BFD info structure
*/ */
void pim_bfd_info_free(void **bfd_info) void pim_bfd_info_free(struct bfd_info **bfd_info)
{ {
bfd_info_free((struct bfd_info **)bfd_info); bfd_info_free(bfd_info);
} }
static void pim_bfd_reg_dereg_nbr(struct pim_neighbor *nbr, int command) static void pim_bfd_reg_dereg_nbr(struct pim_neighbor *nbr, int command)
@ -151,7 +151,7 @@ int pim_bfd_reg_dereg_all_nbr(struct interface *ifp, int command)
if (command != ZEBRA_BFD_DEST_DEREGISTER) if (command != ZEBRA_BFD_DEST_DEREGISTER)
pim_bfd_info_nbr_create(pim_ifp, neigh); pim_bfd_info_nbr_create(pim_ifp, neigh);
else else
bfd_info_free((struct bfd_info **)&neigh->bfd_info); pim_bfd_info_free((struct bfd_info **)&neigh->bfd_info);
pim_bfd_reg_dereg_nbr(neigh, command); pim_bfd_reg_dereg_nbr(neigh, command);
} }
@ -170,7 +170,7 @@ void pim_bfd_trigger_event(struct pim_interface *pim_ifp,
pim_bfd_info_nbr_create(pim_ifp, nbr); pim_bfd_info_nbr_create(pim_ifp, nbr);
pim_bfd_reg_dereg_nbr(nbr, ZEBRA_BFD_DEST_REGISTER); pim_bfd_reg_dereg_nbr(nbr, ZEBRA_BFD_DEST_REGISTER);
} else { } else {
pim_bfd_info_free((void *)&nbr->bfd_info); pim_bfd_info_free(&nbr->bfd_info);
pim_bfd_reg_dereg_nbr(nbr, ZEBRA_BFD_DEST_DEREGISTER); pim_bfd_reg_dereg_nbr(nbr, ZEBRA_BFD_DEST_DEREGISTER);
} }
} }

View File

@ -36,5 +36,5 @@ void pim_bfd_trigger_event(struct pim_interface *pim_ifp,
struct pim_neighbor *nbr, uint8_t nbr_up); struct pim_neighbor *nbr, uint8_t nbr_up);
void pim_bfd_info_nbr_create(struct pim_interface *pim_ifp, void pim_bfd_info_nbr_create(struct pim_interface *pim_ifp,
struct pim_neighbor *neigh); struct pim_neighbor *neigh);
void pim_bfd_info_free(void **bfd_info); void pim_bfd_info_free(struct bfd_info **bfd_info);
#endif /* _PIM_BFD_H */ #endif /* _PIM_BFD_H */

View File

@ -409,6 +409,9 @@ void pim_neighbor_free(struct pim_neighbor *neigh)
list_delete_and_null(&neigh->upstream_jp_agg); list_delete_and_null(&neigh->upstream_jp_agg);
THREAD_OFF(neigh->jp_timer); THREAD_OFF(neigh->jp_timer);
if (neigh->bfd_info)
pim_bfd_info_free(&neigh->bfd_info);
XFREE(MTYPE_PIM_NEIGHBOR, neigh); XFREE(MTYPE_PIM_NEIGHBOR, neigh);
} }