Skip to content

Commit d1b69e0

Browse files
authored
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)
2 parents 2187f54 + 294caa5 commit d1b69e0

File tree

2 files changed

+15
-4
lines changed

2 files changed

+15
-4
lines changed

bgpd/bgp_vty.c

+2-3
Original file line numberDiff line numberDiff line change
@@ -11246,10 +11246,9 @@ static void bgp_show_peer_reset(struct vty * vty, struct peer *peer,
1124611246
BGP_NOTIFY_CEASE_HARD_RESET)
1124711247
: "");
1124811248
} else {
11249-
vty_out(vty, " %s (%s)\n",
11249+
vty_out(vty, " %s (%s)\n",
1125011250
peer_down_str[(int)peer->last_reset],
11251-
peer->soft_version ? peer->soft_version
11252-
: "n/a");
11251+
peer->soft_version ? peer->soft_version : "n/a");
1125311252
}
1125411253
}
1125511254
}

bgpd/bgpd.c

+13-1
Original file line numberDiff line numberDiff line change
@@ -4725,6 +4725,8 @@ void bgp_shutdown_enable(struct bgp *bgp, const char *msg)
47254725

47264726
/* iterate through peers of BGP instance */
47274727
for (ALL_LIST_ELEMENTS_RO(bgp->peer, node, peer)) {
4728+
peer->last_reset = PEER_DOWN_USER_SHUTDOWN;
4729+
47284730
/* continue, if peer is already in administrative shutdown. */
47294731
if (CHECK_FLAG(peer->flags, PEER_FLAG_SHUTDOWN))
47304732
continue;
@@ -4779,8 +4781,10 @@ void bgp_shutdown_disable(struct bgp *bgp)
47794781
/* clear the BGP instances shutdown flag */
47804782
UNSET_FLAG(bgp->flags, BGP_FLAG_SHUTDOWN);
47814783

4782-
for (ALL_LIST_ELEMENTS_RO(bgp->peer, node, peer))
4784+
for (ALL_LIST_ELEMENTS_RO(bgp->peer, node, peer)) {
47834785
bgp_timer_set(peer->connection);
4786+
peer->last_reset = PEER_DOWN_WAITING_OPEN;
4787+
}
47844788
}
47854789

47864790
/* Change specified peer flag. */
@@ -4852,6 +4856,10 @@ static int peer_flag_modify(struct peer *peer, uint64_t flag, int set)
48524856
bgp_zebra_terminate_radv(peer->bgp, peer);
48534857
}
48544858

4859+
if (flag == PEER_FLAG_SHUTDOWN)
4860+
peer->last_reset = set ? PEER_DOWN_USER_SHUTDOWN
4861+
: PEER_DOWN_WAITING_OPEN;
4862+
48554863
/* Execute flag action on peer. */
48564864
if (action.type == peer_change_reset)
48574865
peer_flag_modify_action(peer, flag);
@@ -4887,6 +4895,10 @@ static int peer_flag_modify(struct peer *peer, uint64_t flag, int set)
48874895
set ? bgp_zebra_initiate_radv(member->bgp, member)
48884896
: bgp_zebra_terminate_radv(member->bgp, member);
48894897

4898+
if (flag == PEER_FLAG_SHUTDOWN)
4899+
member->last_reset = set ? PEER_DOWN_USER_SHUTDOWN
4900+
: PEER_DOWN_WAITING_OPEN;
4901+
48904902
/* Execute flag action on peer-group member. */
48914903
if (action.type == peer_change_reset)
48924904
peer_flag_modify_action(member, flag);

0 commit comments

Comments
 (0)