* bgpd.c: Don't crash while deleting list of peer-groups.
[backport candidate]
diff --git a/bgpd/ChangeLog b/bgpd/ChangeLog
index 826b930..74fe596 100644
--- a/bgpd/ChangeLog
+++ b/bgpd/ChangeLog
@@ -1,3 +1,7 @@
+2005-05-26 Hasso Tepper <hass at quagga.net>
+
+ * bgpd.c: Don't crash while deleting list of peer-groups.
+
2005-05-25 Hasso Tepper <hasso at quagga.net>
* bgpd.c: Fix obvious (routeserver patch) merge error. This makes "no
diff --git a/bgpd/bgpd.c b/bgpd/bgpd.c
index c199568..f969661 100644
--- a/bgpd/bgpd.c
+++ b/bgpd/bgpd.c
@@ -1912,6 +1912,7 @@
bgp_delete (struct bgp *bgp)
{
struct peer *peer;
+ struct peer_group *group;
struct listnode *node;
struct listnode *next;
afi_t afi;
@@ -1927,8 +1928,8 @@
if (i != ZEBRA_ROUTE_BGP)
bgp_redistribute_unset (bgp, afi, i);
- bgp->group->del = (void (*)(void *)) peer_group_delete;
- list_delete (bgp->group);
+ for (ALL_LIST_ELEMENTS (bgp->group, node, next, group))
+ peer_group_delete (group);
for (ALL_LIST_ELEMENTS (bgp->peer, node, next, peer))
peer_delete (peer);