summaryrefslogtreecommitdiffstats
path: root/lib/zclient.c
diff options
context:
space:
mode:
authorDonald Sharp <sharpd@cumulusnetworks.com>2016-10-19 17:44:39 +0200
committerDonald Sharp <sharpd@cumulusnetworks.com>2016-10-19 17:44:39 +0200
commit41246cb61418102f9f3bfa3e0acfce90c7798e67 (patch)
tree37c0fd2a2cd20f3507fbf7cae027346327e39953 /lib/zclient.c
parentlib: Add cleanup for routemaps (diff)
downloadfrr-41246cb61418102f9f3bfa3e0acfce90c7798e67.tar.xz
frr-41246cb61418102f9f3bfa3e0acfce90c7798e67.zip
lib: Fix redist memory free'ing
When shutting down, properly free memory associated with zclient. Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
Diffstat (limited to 'lib/zclient.c')
-rw-r--r--lib/zclient.c16
1 files changed, 11 insertions, 5 deletions
diff --git a/lib/zclient.c b/lib/zclient.c
index 8c7448dd7..84f7314ba 100644
--- a/lib/zclient.c
+++ b/lib/zclient.c
@@ -121,6 +121,7 @@ redist_del_instance (struct redist_proto *red, u_short instance)
return;
listnode_delete(red->instances, id);
+ free (id);
if (!red->instances->count)
{
red->enabled = 0;
@@ -160,11 +161,16 @@ zclient_stop (struct zclient *zclient)
zclient->fail = 0;
for (afi = AFI_IP; afi < AFI_MAX; afi++)
- for (i = 0; i < ZEBRA_ROUTE_MAX; i++)
- {
- vrf_bitmap_free(zclient->redist[afi][i]);
- zclient->redist[afi][i] = VRF_BITMAP_NULL;
- }
+ {
+ for (i = 0; i < ZEBRA_ROUTE_MAX; i++)
+ {
+ vrf_bitmap_free(zclient->redist[afi][i]);
+ zclient->redist[afi][i] = VRF_BITMAP_NULL;
+ }
+ redist_del_instance(&zclient->mi_redist[afi][zclient->redist_default],
+ zclient->instance);
+ }
+
vrf_bitmap_free(zclient->default_information);
zclient->default_information = VRF_BITMAP_NULL;
}