summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--bgpd/bgp_table.c1
-rw-r--r--bgpd/bgpd.c6
2 files changed, 6 insertions, 1 deletions
diff --git a/bgpd/bgp_table.c b/bgpd/bgp_table.c
index 810dab54..5faf5856 100644
--- a/bgpd/bgp_table.c
+++ b/bgpd/bgp_table.c
@@ -368,6 +368,7 @@ bgp_node_delete (struct bgp_node *node)
assert (node->lock == 0);
assert (node->info == NULL);
+ assert (node->table->count > 0);
if (node->l_left && node->l_right)
return;
diff --git a/bgpd/bgpd.c b/bgpd/bgpd.c
index c4e54f03..b37e577d 100644
--- a/bgpd/bgpd.c
+++ b/bgpd/bgpd.c
@@ -1243,7 +1243,10 @@ peer_delete (struct peer *peer)
for (afi = AFI_IP; afi < AFI_MAX; afi++)
for (safi = SAFI_UNICAST; safi < SAFI_MAX; safi++)
if (peer->rib[afi][safi] && ! peer->af_group[afi][safi])
- bgp_table_finish (peer->rib[afi][safi]);
+ {
+ bgp_table_finish (peer->rib[afi][safi]);
+ peer->rib[afi][safi] = NULL;
+ }
/* Buffers. */
if (peer->ibuf)
@@ -1835,6 +1838,7 @@ peer_group_bind (struct bgp *bgp, union sockunion *su,
}
bgp_table_finish (peer->rib[afi][safi]);
+ peer->rib[afi][safi] = NULL;
/* Import policy. */
if (peer->filter[afi][safi].map[RMAP_IMPORT].name)