mirror of
https://git.proxmox.com/git/mirror_frr
synced 2025-07-29 17:55:24 +00:00
Merge pull request #16276 from FRRouting/mergify/bp/stable/9.1/pr-16242
bgpd: Set last reset reason to admin shutdown if it was manually (backport #16242)
This commit is contained in:
commit
d1b69e0a97
@ -11248,8 +11248,7 @@ static void bgp_show_peer_reset(struct vty * vty, struct peer *peer,
|
|||||||
} else {
|
} else {
|
||||||
vty_out(vty, " %s (%s)\n",
|
vty_out(vty, " %s (%s)\n",
|
||||||
peer_down_str[(int)peer->last_reset],
|
peer_down_str[(int)peer->last_reset],
|
||||||
peer->soft_version ? peer->soft_version
|
peer->soft_version ? peer->soft_version : "n/a");
|
||||||
: "n/a");
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
14
bgpd/bgpd.c
14
bgpd/bgpd.c
@ -4725,6 +4725,8 @@ void bgp_shutdown_enable(struct bgp *bgp, const char *msg)
|
|||||||
|
|
||||||
/* iterate through peers of BGP instance */
|
/* iterate through peers of BGP instance */
|
||||||
for (ALL_LIST_ELEMENTS_RO(bgp->peer, node, peer)) {
|
for (ALL_LIST_ELEMENTS_RO(bgp->peer, node, peer)) {
|
||||||
|
peer->last_reset = PEER_DOWN_USER_SHUTDOWN;
|
||||||
|
|
||||||
/* continue, if peer is already in administrative shutdown. */
|
/* continue, if peer is already in administrative shutdown. */
|
||||||
if (CHECK_FLAG(peer->flags, PEER_FLAG_SHUTDOWN))
|
if (CHECK_FLAG(peer->flags, PEER_FLAG_SHUTDOWN))
|
||||||
continue;
|
continue;
|
||||||
@ -4779,8 +4781,10 @@ void bgp_shutdown_disable(struct bgp *bgp)
|
|||||||
/* clear the BGP instances shutdown flag */
|
/* clear the BGP instances shutdown flag */
|
||||||
UNSET_FLAG(bgp->flags, BGP_FLAG_SHUTDOWN);
|
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->connection);
|
bgp_timer_set(peer->connection);
|
||||||
|
peer->last_reset = PEER_DOWN_WAITING_OPEN;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Change specified peer flag. */
|
/* Change specified peer flag. */
|
||||||
@ -4852,6 +4856,10 @@ static int peer_flag_modify(struct peer *peer, uint64_t flag, int set)
|
|||||||
bgp_zebra_terminate_radv(peer->bgp, peer);
|
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. */
|
/* Execute flag action on peer. */
|
||||||
if (action.type == peer_change_reset)
|
if (action.type == peer_change_reset)
|
||||||
peer_flag_modify_action(peer, flag);
|
peer_flag_modify_action(peer, flag);
|
||||||
@ -4887,6 +4895,10 @@ static int peer_flag_modify(struct peer *peer, uint64_t flag, int set)
|
|||||||
set ? bgp_zebra_initiate_radv(member->bgp, member)
|
set ? bgp_zebra_initiate_radv(member->bgp, member)
|
||||||
: bgp_zebra_terminate_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. */
|
/* Execute flag action on peer-group member. */
|
||||||
if (action.type == peer_change_reset)
|
if (action.type == peer_change_reset)
|
||||||
peer_flag_modify_action(member, flag);
|
peer_flag_modify_action(member, flag);
|
||||||
|
Loading…
Reference in New Issue
Block a user