summaryrefslogtreecommitdiffstats
path: root/bgpd/bgp_peer.c
diff options
context:
space:
mode:
Diffstat (limited to 'bgpd/bgp_peer.c')
-rw-r--r--bgpd/bgp_peer.c15
1 files changed, 9 insertions, 6 deletions
diff --git a/bgpd/bgp_peer.c b/bgpd/bgp_peer.c
index 99430c1d..18634fb0 100644
--- a/bgpd/bgp_peer.c
+++ b/bgpd/bgp_peer.c
@@ -424,6 +424,7 @@ bgp_peer_stop (struct peer *peer)
BGP_TIMER_OFF (peer->t_asorig);
BGP_TIMER_OFF (peer->t_routeadv);
+ peer->cap = 0 ;
for (afi = AFI_IP ; afi < AFI_MAX ; afi++)
for (safi = SAFI_UNICAST ; safi < SAFI_MAX ; safi++)
{
@@ -1036,19 +1037,21 @@ void
bgp_peer_enable(bgp_peer peer)
{
/* Don't enable the session if:
- * 1) Peer not idle, means we're not ready yet, clearing, deleting or waiting
- * for disable.
- * 2) Shutdown
- * 3) Dealing with prefix overflow, its timer will enable peer when ready
+ * 1) the peer not idle, which means not ready yet: clearing, deleting or
+ * waiting for disable.
+ * 2) no address family is activated
+ * 3) the peer has been shutdown
+ * 4) is dealing with prefix overflow: its timer will enable peer when ready
*/
- zlog_err ("%s: enabling peer %s:", __func__, peer->host) ;
-
if ((peer->state == bgp_peer_sIdle)
+ && peer_active (peer)
&& !CHECK_FLAG (peer->flags, PEER_FLAG_SHUTDOWN)
&& !CHECK_FLAG (peer->sflags, PEER_STATUS_PREFIX_OVERFLOW))
{
/* enable the session */
+ zlog_err ("%s: enabling peer %s:", __func__, peer->host) ;
+
bgp_session_enable(peer);
}
}