/* iterate through peers of BGP instance */
for (ALL_LIST_ELEMENTS_RO(bgp->peer, node, peer)) {
+ peer->last_reset = PEER_DOWN_USER_SHUTDOWN;
+
/* continue, if peer is already in administrative shutdown. */
if (CHECK_FLAG(peer->flags, PEER_FLAG_SHUTDOWN))
continue;
/* clear the BGP instances shutdown flag */
UNSET_FLAG(bgp->flags, BGP_FLAG_SHUTDOWN);
- for (ALL_LIST_ELEMENTS_RO(bgp->peer, node, peer))
+ for (ALL_LIST_ELEMENTS_RO(bgp->peer, node, peer)) {
bgp_timer_set(peer);
+ peer->last_reset = PEER_DOWN_WAITING_OPEN;
+ }
}
/* Change specified peer flag. */
bgp_zebra_terminate_radv(peer->bgp, peer);
}
+ if (flag == PEER_FLAG_SHUTDOWN)
+ peer->last_reset = set ? PEER_DOWN_USER_SHUTDOWN
+ : PEER_DOWN_WAITING_OPEN;
+
/* Execute flag action on peer. */
if (action.type == peer_change_reset)
peer_flag_modify_action(peer, flag);
set ? bgp_zebra_initiate_radv(member->bgp, member)
: bgp_zebra_terminate_radv(member->bgp, member);
+ if (flag == PEER_FLAG_SHUTDOWN)
+ member->last_reset = set ? PEER_DOWN_USER_SHUTDOWN
+ : PEER_DOWN_WAITING_OPEN;
+
/* Execute flag action on peer-group member. */
if (action.type == peer_change_reset)
peer_flag_modify_action(member, flag);