diff options
| -rw-r--r-- | lib/cspf.c | 2 | ||||
| -rw-r--r-- | lib/cspf.h | 2 | ||||
| -rw-r--r-- | sharpd/sharp_vty.c | 3 | ||||
| -rw-r--r-- | zebra/zebra_gr.c | 3 |
4 files changed, 8 insertions, 2 deletions
diff --git a/lib/cspf.c b/lib/cspf.c index b92c9cb395..6a0fb7f63c 100644 --- a/lib/cspf.c +++ b/lib/cspf.c @@ -88,7 +88,7 @@ static struct c_path *cpath_copy(struct c_path *dest, const struct c_path *src) * * @param path Constrained Path structure to be deleted */ -static void cpath_del(struct c_path *path) +void cpath_del(struct c_path *path) { if (!path) return; diff --git a/lib/cspf.h b/lib/cspf.h index 3eceaa04af..bba685a617 100644 --- a/lib/cspf.h +++ b/lib/cspf.h @@ -191,6 +191,8 @@ extern void cspf_del(struct cspf *algo); */ extern struct c_path *compute_p2p_path(struct cspf *algo, struct ls_ted *ted); +extern void cpath_del(struct c_path *path); + #ifdef __cplusplus } #endif diff --git a/sharpd/sharp_vty.c b/sharpd/sharp_vty.c index 77b562d6a6..1fdac2c286 100644 --- a/sharpd/sharp_vty.c +++ b/sharpd/sharp_vty.c @@ -1245,6 +1245,7 @@ DEFPY (show_sharp_cspf, } if (path->status != SUCCESS) { vty_out(vty, "Path computation failed: %d\n", path->status); + cpath_del(path); return CMD_SUCCESS; } @@ -1260,7 +1261,7 @@ DEFPY (show_sharp_cspf, &edge->attributes->standard.remote6); } vty_out(vty, "\n"); - + cpath_del(path); return CMD_SUCCESS; } diff --git a/zebra/zebra_gr.c b/zebra/zebra_gr.c index 40efbf5db4..cf2056b7ac 100644 --- a/zebra/zebra_gr.c +++ b/zebra/zebra_gr.c @@ -651,6 +651,9 @@ void zebra_gr_process_client(afi_t afi, vrf_id_t vrf_id, uint8_t proto, struct client_gr_info *info = NULL; struct zebra_gr_afi_clean *gac; + if (client == NULL) + return; + TAILQ_FOREACH (info, &client->gr_info_queue, gr_info) { if (info->vrf_id == vrf_id) break; |
