@@ -4725,6 +4725,8 @@ void bgp_shutdown_enable(struct bgp *bgp, const char *msg)
4725
4725
4726
4726
/* iterate through peers of BGP instance */
4727
4727
for (ALL_LIST_ELEMENTS_RO (bgp -> peer , node , peer )) {
4728
+ peer -> last_reset = PEER_DOWN_USER_SHUTDOWN ;
4729
+
4728
4730
/* continue, if peer is already in administrative shutdown. */
4729
4731
if (CHECK_FLAG (peer -> flags , PEER_FLAG_SHUTDOWN ))
4730
4732
continue ;
@@ -4779,8 +4781,10 @@ void bgp_shutdown_disable(struct bgp *bgp)
4779
4781
/* clear the BGP instances shutdown flag */
4780
4782
UNSET_FLAG (bgp -> flags , BGP_FLAG_SHUTDOWN );
4781
4783
4782
- for (ALL_LIST_ELEMENTS_RO (bgp -> peer , node , peer ))
4784
+ for (ALL_LIST_ELEMENTS_RO (bgp -> peer , node , peer )) {
4783
4785
bgp_timer_set (peer -> connection );
4786
+ peer -> last_reset = PEER_DOWN_WAITING_OPEN ;
4787
+ }
4784
4788
}
4785
4789
4786
4790
/* Change specified peer flag. */
@@ -4852,6 +4856,10 @@ static int peer_flag_modify(struct peer *peer, uint64_t flag, int set)
4852
4856
bgp_zebra_terminate_radv (peer -> bgp , peer );
4853
4857
}
4854
4858
4859
+ if (flag == PEER_FLAG_SHUTDOWN )
4860
+ peer -> last_reset = set ? PEER_DOWN_USER_SHUTDOWN
4861
+ : PEER_DOWN_WAITING_OPEN ;
4862
+
4855
4863
/* Execute flag action on peer. */
4856
4864
if (action .type == peer_change_reset )
4857
4865
peer_flag_modify_action (peer , flag );
@@ -4887,6 +4895,10 @@ static int peer_flag_modify(struct peer *peer, uint64_t flag, int set)
4887
4895
set ? bgp_zebra_initiate_radv (member -> bgp , member )
4888
4896
: bgp_zebra_terminate_radv (member -> bgp , member );
4889
4897
4898
+ if (flag == PEER_FLAG_SHUTDOWN )
4899
+ member -> last_reset = set ? PEER_DOWN_USER_SHUTDOWN
4900
+ : PEER_DOWN_WAITING_OPEN ;
4901
+
4890
4902
/* Execute flag action on peer-group member. */
4891
4903
if (action .type == peer_change_reset )
4892
4904
peer_flag_modify_action (member , flag );
0 commit comments