mirror of
https://git.proxmox.com/git/mirror_frr
synced 2025-08-14 14:17:20 +00:00
bgpd: bgp instance administrative shutdown.
* Fixed integration in FSM and packet handling. * Added CLI "show" output, incl. JSON. * For review and testing only. Signed-off-by: David Schweizer <dschweizer@opensourcerouting.org>
This commit is contained in:
parent
9cf5943257
commit
cb9196e77a
@ -1548,6 +1548,8 @@ int bgp_start(struct peer *peer)
|
||||
peer->host);
|
||||
if (CHECK_FLAG(peer->flags, PEER_FLAG_SHUTDOWN))
|
||||
peer->last_reset = PEER_DOWN_USER_SHUTDOWN;
|
||||
else if (CHECK_FLAG(peer->bgp->flags, BGP_FLAG_SHUTDOWN))
|
||||
peer->last_reset = PEER_DOWN_USER_SHUTDOWN;
|
||||
else if (CHECK_FLAG(peer->sflags, PEER_STATUS_PREFIX_OVERFLOW))
|
||||
peer->last_reset = PEER_DOWN_PFX_COUNT;
|
||||
return -1;
|
||||
|
@ -459,7 +459,8 @@ static int bgp_accept(struct thread *thread)
|
||||
return -1;
|
||||
}
|
||||
|
||||
if (CHECK_FLAG(peer1->flags, PEER_FLAG_SHUTDOWN)) {
|
||||
if (CHECK_FLAG(peer1->flags, PEER_FLAG_SHUTDOWN)
|
||||
|| CHECK_FLAG(peer1->bgp->flags, BGP_FLAG_SHUTDOWN)) {
|
||||
if (bgp_debug_neighbor_events(peer1))
|
||||
zlog_debug(
|
||||
"[Event] connection from %s rejected(%s:%u:%s) due to admin shutdown",
|
||||
|
@ -198,6 +198,8 @@ void bgp_check_update_delay(struct bgp *bgp)
|
||||
PEER_FLAG_CONFIG_NODE)
|
||||
&& !CHECK_FLAG(peer->flags,
|
||||
PEER_FLAG_SHUTDOWN)
|
||||
&& !CHECK_FLAG(peer->bgp->flags,
|
||||
BGP_FLAG_SHUTDOWN)
|
||||
&& !peer->update_delay_over) {
|
||||
if (bgp_debug_neighbor_events(peer))
|
||||
zlog_debug(
|
||||
|
@ -9355,7 +9355,8 @@ static int bgp_show_summary(struct vty *vty, struct bgp *bgp, int afi, int safi,
|
||||
json_object_int_add(json_peer,
|
||||
"pfxSnt",
|
||||
(PAF_SUBGRP(paf))->scount);
|
||||
if (CHECK_FLAG(peer->flags, PEER_FLAG_SHUTDOWN))
|
||||
if (CHECK_FLAG(peer->flags, PEER_FLAG_SHUTDOWN)
|
||||
|| CHECK_FLAG(peer->bgp->flags, BGP_FLAG_SHUTDOWN))
|
||||
json_object_string_add(json_peer, "state",
|
||||
"Idle (Admin)");
|
||||
else if (peer->afc_recv[afi][safi])
|
||||
@ -9474,7 +9475,8 @@ static int bgp_show_summary(struct vty *vty, struct bgp *bgp, int afi, int safi,
|
||||
->scount);
|
||||
}
|
||||
} else {
|
||||
if (CHECK_FLAG(peer->flags, PEER_FLAG_SHUTDOWN))
|
||||
if (CHECK_FLAG(peer->flags, PEER_FLAG_SHUTDOWN)
|
||||
|| CHECK_FLAG(peer->bgp->flags, BGP_FLAG_SHUTDOWN))
|
||||
vty_out(vty, " Idle (Admin)");
|
||||
else if (CHECK_FLAG(
|
||||
peer->sflags,
|
||||
@ -10971,7 +10973,8 @@ static void bgp_show_peer(struct vty *vty, struct peer *p, bool use_json,
|
||||
|
||||
if (use_json) {
|
||||
/* Administrative shutdown. */
|
||||
if (CHECK_FLAG(p->flags, PEER_FLAG_SHUTDOWN))
|
||||
if (CHECK_FLAG(p->flags, PEER_FLAG_SHUTDOWN)
|
||||
|| CHECK_FLAG(p->bgp->flags, BGP_FLAG_SHUTDOWN))
|
||||
json_object_boolean_true_add(json_neigh,
|
||||
"adminShutDown");
|
||||
|
||||
@ -11077,7 +11080,8 @@ static void bgp_show_peer(struct vty *vty, struct peer *p, bool use_json,
|
||||
}
|
||||
} else {
|
||||
/* Administrative shutdown. */
|
||||
if (CHECK_FLAG(p->flags, PEER_FLAG_SHUTDOWN))
|
||||
if (CHECK_FLAG(p->flags, PEER_FLAG_SHUTDOWN)
|
||||
|| CHECK_FLAG(p->bgp->flags, BGP_FLAG_SHUTDOWN))
|
||||
vty_out(vty, " Administratively shut down\n");
|
||||
|
||||
/* BGP Version. */
|
||||
@ -13651,7 +13655,8 @@ static int bgp_show_one_peer_group(struct vty *vty, struct peer_group *group)
|
||||
if (listcount(group->peer)) {
|
||||
vty_out(vty, " Peer-group members:\n");
|
||||
for (ALL_LIST_ELEMENTS(group->peer, node, nnode, peer)) {
|
||||
if (CHECK_FLAG(peer->flags, PEER_FLAG_SHUTDOWN))
|
||||
if (CHECK_FLAG(peer->flags, PEER_FLAG_SHUTDOWN)
|
||||
|| CHECK_FLAG(peer->bgp->flags, BGP_FLAG_SHUTDOWN))
|
||||
peer_status = "Idle (Admin)";
|
||||
else if (CHECK_FLAG(peer->sflags,
|
||||
PEER_STATUS_PREFIX_OVERFLOW))
|
||||
|
@ -6834,7 +6834,8 @@ int peer_ttl_security_hops_unset(struct peer *peer)
|
||||
*/
|
||||
int peer_clear(struct peer *peer, struct listnode **nnode)
|
||||
{
|
||||
if (!CHECK_FLAG(peer->flags, PEER_FLAG_SHUTDOWN)) {
|
||||
if (!CHECK_FLAG(peer->flags, PEER_FLAG_SHUTDOWN)
|
||||
|| !CHECK_FLAG(peer->bgp->flags, BGP_FLAG_SHUTDOWN)) {
|
||||
if (CHECK_FLAG(peer->sflags, PEER_STATUS_PREFIX_OVERFLOW)) {
|
||||
UNSET_FLAG(peer->sflags, PEER_STATUS_PREFIX_OVERFLOW);
|
||||
if (peer->t_pmax_restart) {
|
||||
|
@ -1463,7 +1463,8 @@ DECLARE_QOBJ_TYPE(peer)
|
||||
/* Check if suppress start/restart of sessions to peer. */
|
||||
#define BGP_PEER_START_SUPPRESSED(P) \
|
||||
(CHECK_FLAG((P)->flags, PEER_FLAG_SHUTDOWN) \
|
||||
|| CHECK_FLAG((P)->sflags, PEER_STATUS_PREFIX_OVERFLOW))
|
||||
|| CHECK_FLAG((P)->sflags, PEER_STATUS_PREFIX_OVERFLOW) \
|
||||
|| CHECK_FLAG((P)->bgp->flags, BGP_FLAG_SHUTDOWN))
|
||||
|
||||
#define PEER_PASSWORD_MINLEN (1)
|
||||
#define PEER_PASSWORD_MAXLEN (80)
|
||||
|
Loading…
Reference in New Issue
Block a user