]> git.puffer.fish Git - mirror/frr.git/commitdiff
bgpd: [GR] fix mode change vtysh return code 15924/head
authorChirag Shah <chirag@nvidia.com>
Fri, 2 Feb 2024 20:11:58 +0000 (12:11 -0800)
committerChirag Shah <chirag@nvidia.com>
Sun, 5 May 2024 03:33:49 +0000 (20:33 -0700)
When a bgp neighbor graceful-restart config mode change
is applied, after accepting the config if it does not
take effect instead of throwing vtysh error code,
return the success to vtysh and warn the user.
The debug log is already present at critical code point
where GR failure is seen during config apply.

Ticket: #3761481
Testing Done:

root@tor-1:# vtysh -c 'config t' -c 'router bgp 65564
vrf VRF2' -c 'neighbor 20.1.1.1 graceful-restart'
As part of configuring graceful-restart, capability send to zebra failed
root@tor-1:# echo $?
0

Signed-off-by: Chirag Shah <chirag@nvidia.com>
bgpd/bgp_vty.c

index 5aedd6b82894f6c6c6b79017bc3d16ee6f19c3ba..d5f12897ea9377c3c1b2210a3f562aee305d2d95 100644 (file)
@@ -3347,7 +3347,7 @@ DEFUN (bgp_neighbor_graceful_restart_set,
 {
        int idx_peer = 1;
        struct peer *peer;
-       int ret = BGP_GR_FAILURE;
+       int result = BGP_GR_FAILURE, ret = BGP_GR_SUCCESS;
 
        VTY_BGP_GR_DEFINE_LOOP_VARIABLE;
 
@@ -3359,8 +3359,8 @@ DEFUN (bgp_neighbor_graceful_restart_set,
        if (!peer)
                return CMD_WARNING_CONFIG_FAILED;
 
-       ret = bgp_neighbor_graceful_restart(peer, PEER_GR_CMD);
-       if (ret == BGP_GR_SUCCESS) {
+       result = bgp_neighbor_graceful_restart(peer, PEER_GR_CMD);
+       if (result == BGP_GR_SUCCESS) {
                VTY_BGP_GR_ROUTER_DETECT(bgp, peer, peer->bgp->peer);
                VTY_SEND_BGP_GR_CAPABILITY_TO_ZEBRA(peer->bgp, ret);
                vty_out(vty,
@@ -3371,7 +3371,11 @@ DEFUN (bgp_neighbor_graceful_restart_set,
                zlog_debug(
                        "[BGP_GR] bgp_neighbor_graceful_restart_set_cmd : END ");
 
-       return bgp_vty_return(vty, ret);
+       if (ret != BGP_GR_SUCCESS)
+               vty_out(vty,
+                       "As part of configuring graceful-restart, capability send to zebra failed\n");
+
+       return bgp_vty_return(vty, result);
 }
 
 DEFUN (no_bgp_neighbor_graceful_restart,
@@ -3384,7 +3388,7 @@ DEFUN (no_bgp_neighbor_graceful_restart,
       )
 {
        int idx_peer = 2;
-       int ret = BGP_GR_FAILURE;
+       int result = BGP_GR_FAILURE, ret = BGP_GR_SUCCESS;
        struct peer *peer;
 
        VTY_BGP_GR_DEFINE_LOOP_VARIABLE;
@@ -3397,7 +3401,7 @@ DEFUN (no_bgp_neighbor_graceful_restart,
                zlog_debug(
                        "[BGP_GR] no_bgp_neighbor_graceful_restart_set_cmd : START ");
 
-       ret = bgp_neighbor_graceful_restart(peer, NO_PEER_GR_CMD);
+       result = bgp_neighbor_graceful_restart(peer, NO_PEER_GR_CMD);
        if (ret == BGP_GR_SUCCESS) {
                VTY_BGP_GR_ROUTER_DETECT(bgp, peer, peer->bgp->peer);
                VTY_SEND_BGP_GR_CAPABILITY_TO_ZEBRA(peer->bgp, ret);
@@ -3409,7 +3413,11 @@ DEFUN (no_bgp_neighbor_graceful_restart,
                zlog_debug(
                        "[BGP_GR] no_bgp_neighbor_graceful_restart_set_cmd : END ");
 
-       return bgp_vty_return(vty, ret);
+       if (ret != BGP_GR_SUCCESS)
+               vty_out(vty,
+                       "As part of configuring graceful-restart, capability send to zebra failed\n");
+
+       return bgp_vty_return(vty, result);
 }
 
 DEFUN (bgp_neighbor_graceful_restart_helper_set,