diff options
-rw-r--r-- | bgpd/bgp_peer.c | 3 | ||||
-rw-r--r-- | bgpd/bgpd.c | 4 |
2 files changed, 4 insertions, 3 deletions
diff --git a/bgpd/bgp_peer.c b/bgpd/bgp_peer.c index ff2b8364..eeb39912 100644 --- a/bgpd/bgp_peer.c +++ b/bgpd/bgp_peer.c @@ -1019,7 +1019,8 @@ bgp_peer_disable(bgp_peer peer, bgp_notify notification) /* and the peer */ bgp_peer_stop(peer); - peer_change_status (peer, bgp_peer_sClearing); + if (peer->state == bgp_peer_sEstablished) + peer_change_status (peer, bgp_peer_sClearing); } /* Called after event occurred, this function change status and reset diff --git a/bgpd/bgpd.c b/bgpd/bgpd.c index 0604da8c..f05e91f3 100644 --- a/bgpd/bgpd.c +++ b/bgpd/bgpd.c @@ -2008,8 +2008,8 @@ peer_flag_modify_action (struct peer *peer, u_int32_t flag) if (CHECK_FLAG (peer->sflags, PEER_STATUS_NSF_WAIT)) peer_nsf_stop (peer); - bgp_peer_disable(peer, bgp_notify_new(BGP_NOTIFY_CEASE, - BGP_NOTIFY_CEASE_ADMIN_SHUTDOWN, 0)); + bgp_notify_send_with_data_disable(peer, BGP_NOTIFY_CEASE, + BGP_NOTIFY_CEASE_ADMIN_SHUTDOWN, NULL, 0); } else { |