diff options
author | Donald Sharp <sharpd@cumulusnetworks.com> | 2016-10-19 17:44:39 +0200 |
---|---|---|
committer | Donald Sharp <sharpd@cumulusnetworks.com> | 2016-10-19 17:44:39 +0200 |
commit | 41246cb61418102f9f3bfa3e0acfce90c7798e67 (patch) | |
tree | 37c0fd2a2cd20f3507fbf7cae027346327e39953 /lib/zclient.c | |
parent | lib: Add cleanup for routemaps (diff) | |
download | frr-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.c | 16 |
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; } |