summaryrefslogtreecommitdiffstats
path: root/bgpd/bgp_route.c
diff options
context:
space:
mode:
Diffstat (limited to 'bgpd/bgp_route.c')
-rw-r--r--bgpd/bgp_route.c11
1 files changed, 9 insertions, 2 deletions
diff --git a/bgpd/bgp_route.c b/bgpd/bgp_route.c
index 1beae6b2..5ca89b06 100644
--- a/bgpd/bgp_route.c
+++ b/bgpd/bgp_route.c
@@ -1722,7 +1722,7 @@ bgp_maximum_prefix_overflow (struct peer *peer, afi_t afi,
SET_FLAG (peer->sflags, PEER_STATUS_PREFIX_OVERFLOW);
/* Disable the peer, the timer routine will reenable. */
- bgp_notify_send_with_data_disable (peer, BGP_NOTIFY_CEASE,
+ bgp_notify_send_with_data(peer, BGP_NOTIFY_CEASE,
BGP_NOTIFY_CEASE_MAX_PREFIX, ndata, 7);
}
@@ -2728,7 +2728,14 @@ bgp_clear_node_complete (struct work_queue *wq)
bgp_peer_stop(peer);
BGP_EVENT_FLUSH (peer);
if (peer->state == bgp_peer_sClearing)
- peer_change_status (peer, bgp_peer_sIdle);
+ {
+ peer_change_status (peer, bgp_peer_sIdle);
+
+ /* enable peer if required */
+ if (!CHECK_FLAG (peer->flags, PEER_FLAG_SHUTDOWN) &&
+ !CHECK_FLAG (peer->sflags, PEER_STATUS_PREFIX_OVERFLOW))
+ bgp_peer_enable(peer);
+ }
peer_unlock (peer); /* bgp_clear_route */
}