summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--lib/cspf.c2
-rw-r--r--lib/cspf.h2
-rw-r--r--sharpd/sharp_vty.c3
-rw-r--r--zebra/zebra_gr.c3
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;