summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--bgpd/bgpd.c11
1 files changed, 11 insertions, 0 deletions
diff --git a/bgpd/bgpd.c b/bgpd/bgpd.c
index 53ddbf61cc..ccfa90419b 100644
--- a/bgpd/bgpd.c
+++ b/bgpd/bgpd.c
@@ -3380,6 +3380,17 @@ void bgp_free(struct bgp *bgp)
rmap = &bgp->table_map[afi][safi];
if (rmap->name)
XFREE(MTYPE_ROUTE_MAP_NAME, rmap->name);
+
+ /*
+ * Yes this is per AFI, but
+ * the list_delete_and_null nulls the pointer
+ * and we'll not leak anything on going down
+ * and the if test will fail on the second safi.
+ */
+ if (bgp->vpn_policy[afi].import_vrf)
+ list_delete_and_null(&bgp->vpn_policy[afi].import_vrf);
+ if (bgp->vpn_policy[afi].export_vrf)
+ list_delete_and_null(&bgp->vpn_policy[afi].export_vrf);
}
bgp_scan_finish(bgp);