From db7c85284f7a1c472da0e905a0020ed02d37f539 Mon Sep 17 00:00:00 2001 From: Donald Sharp Date: Wed, 18 Nov 2015 15:36:04 -0800 Subject: [PATCH] Quagga: Fixup cli and json keyword The json keyword was being read incorrectly. Basically some commands read a variable # of arguments and in ospf the command values were being placed into argc and argv. With a variable # of arguments their existed a possibility that less arguments would be read from the cli than were being tested for in the command function handler. This caused core dumps in some situations. All code to read to decide to use the json keyword has been centralized through a function and all code converted to use it, irrelevant if it exhibited the bug Ticket: CM-8278 Reviewed by: CCR-3830 Testing: OSPF no longer crashes and all other test suites still run Signed-off-by: Donald Sharp --- bgpd/bgp_mplsvpn.c | 36 +-- bgpd/bgp_route.c | 564 ++++++++++++++++----------------------------- bgpd/bgp_vty.c | 90 +++----- lib/json.c | 18 ++ lib/json.h | 1 + ospfd/ospf_vty.c | 85 +++---- 6 files changed, 303 insertions(+), 491 deletions(-) diff --git a/bgpd/bgp_mplsvpn.c b/bgpd/bgp_mplsvpn.c index d3081887c4..e3aa9305d5 100644 --- a/bgpd/bgp_mplsvpn.c +++ b/bgpd/bgp_mplsvpn.c @@ -760,12 +760,12 @@ DEFUN (show_ip_bgp_vpnv4_all_neighbor_routes, union sockunion su; struct peer *peer; int ret; - u_char use_json = (argv[1] != NULL); + u_char uj = use_json(argc, argv); ret = str2sockunion (argv[0], &su); if (ret < 0) { - if (use_json) + if (uj) { json_object *json_no = NULL; json_no = json_object_new_object(); @@ -781,7 +781,7 @@ DEFUN (show_ip_bgp_vpnv4_all_neighbor_routes, peer = peer_lookup (NULL, &su); if (! peer || ! peer->afc[AFI_IP][SAFI_MPLS_VPN]) { - if (use_json) + if (uj) { json_object *json_no = NULL; json_no = json_object_new_object(); @@ -794,7 +794,7 @@ DEFUN (show_ip_bgp_vpnv4_all_neighbor_routes, return CMD_WARNING; } - return bgp_show_mpls_vpn (vty, NULL, bgp_show_type_neighbor, &su, 0, use_json); + return bgp_show_mpls_vpn (vty, NULL, bgp_show_type_neighbor, &su, 0, uj); } DEFUN (show_ip_bgp_vpnv4_rd_neighbor_routes, @@ -815,12 +815,12 @@ DEFUN (show_ip_bgp_vpnv4_rd_neighbor_routes, union sockunion su; struct peer *peer; struct prefix_rd prd; - u_char use_json = (argv[2] != NULL); + u_char uj = use_json(argc, argv); ret = str2prefix_rd (argv[0], &prd); if (! ret) { - if (use_json) + if (uj) { json_object *json_no = NULL; json_no = json_object_new_object(); @@ -836,7 +836,7 @@ DEFUN (show_ip_bgp_vpnv4_rd_neighbor_routes, ret = str2sockunion (argv[1], &su); if (ret < 0) { - if (use_json) + if (uj) { json_object *json_no = NULL; json_no = json_object_new_object(); @@ -852,7 +852,7 @@ DEFUN (show_ip_bgp_vpnv4_rd_neighbor_routes, peer = peer_lookup (NULL, &su); if (! peer || ! peer->afc[AFI_IP][SAFI_MPLS_VPN]) { - if (use_json) + if (uj) { json_object *json_no = NULL; json_no = json_object_new_object(); @@ -865,7 +865,7 @@ DEFUN (show_ip_bgp_vpnv4_rd_neighbor_routes, return CMD_WARNING; } - return bgp_show_mpls_vpn (vty, &prd, bgp_show_type_neighbor, &su, 0, use_json); + return bgp_show_mpls_vpn (vty, &prd, bgp_show_type_neighbor, &su, 0, uj); } DEFUN (show_ip_bgp_vpnv4_all_neighbor_advertised_routes, @@ -884,12 +884,12 @@ DEFUN (show_ip_bgp_vpnv4_all_neighbor_advertised_routes, int ret; struct peer *peer; union sockunion su; - u_char use_json = (argv[1] != NULL); + u_char uj = use_json(argc, argv); ret = str2sockunion (argv[0], &su); if (ret < 0) { - if (use_json) + if (uj) { json_object *json_no = NULL; json_no = json_object_new_object(); @@ -904,7 +904,7 @@ DEFUN (show_ip_bgp_vpnv4_all_neighbor_advertised_routes, peer = peer_lookup (NULL, &su); if (! peer || ! peer->afc[AFI_IP][SAFI_MPLS_VPN]) { - if (use_json) + if (uj) { json_object *json_no = NULL; json_no = json_object_new_object(); @@ -917,7 +917,7 @@ DEFUN (show_ip_bgp_vpnv4_all_neighbor_advertised_routes, return CMD_WARNING; } - return show_adj_route_vpn (vty, peer, NULL, use_json); + return show_adj_route_vpn (vty, peer, NULL, uj); } DEFUN (show_ip_bgp_vpnv4_rd_neighbor_advertised_routes, @@ -938,12 +938,12 @@ DEFUN (show_ip_bgp_vpnv4_rd_neighbor_advertised_routes, struct peer *peer; struct prefix_rd prd; union sockunion su; - u_char use_json = (argv[2] != NULL); + u_char uj = use_json(argc, argv); ret = str2sockunion (argv[1], &su); if (ret < 0) { - if (use_json) + if (uj) { json_object *json_no = NULL; json_no = json_object_new_object(); @@ -958,7 +958,7 @@ DEFUN (show_ip_bgp_vpnv4_rd_neighbor_advertised_routes, peer = peer_lookup (NULL, &su); if (! peer || ! peer->afc[AFI_IP][SAFI_MPLS_VPN]) { - if (use_json) + if (uj) { json_object *json_no = NULL; json_no = json_object_new_object(); @@ -974,7 +974,7 @@ DEFUN (show_ip_bgp_vpnv4_rd_neighbor_advertised_routes, ret = str2prefix_rd (argv[0], &prd); if (! ret) { - if (use_json) + if (uj) { json_object *json_no = NULL; json_no = json_object_new_object(); @@ -987,7 +987,7 @@ DEFUN (show_ip_bgp_vpnv4_rd_neighbor_advertised_routes, return CMD_WARNING; } - return show_adj_route_vpn (vty, peer, &prd, use_json); + return show_adj_route_vpn (vty, peer, &prd, uj); } void diff --git a/bgpd/bgp_route.c b/bgpd/bgp_route.c index 02b629e2e5..594794da2e 100644 --- a/bgpd/bgp_route.c +++ b/bgpd/bgp_route.c @@ -7483,8 +7483,7 @@ DEFUN (show_ip_bgp, BGP_STR "JavaScript Object Notation\n") { - u_char use_json = (argv[0] != NULL); - return bgp_show (vty, NULL, AFI_IP, SAFI_UNICAST, bgp_show_type_normal, NULL, use_json); + return bgp_show (vty, NULL, AFI_IP, SAFI_UNICAST, bgp_show_type_normal, NULL, use_json(argc, argv)); } DEFUN (show_ip_bgp_ipv4, @@ -7498,13 +7497,13 @@ DEFUN (show_ip_bgp_ipv4, "Address Family modifier\n" "JavaScript Object Notation\n") { - u_char use_json = (argv[1] != NULL); + u_char uj = use_json(argc, argv); if (strncmp (argv[0], "m", 1) == 0) return bgp_show (vty, NULL, AFI_IP, SAFI_MULTICAST, bgp_show_type_normal, - NULL, use_json); + NULL, uj); - return bgp_show (vty, NULL, AFI_IP, SAFI_UNICAST, bgp_show_type_normal, NULL, use_json); + return bgp_show (vty, NULL, AFI_IP, SAFI_UNICAST, bgp_show_type_normal, NULL, uj); } ALIAS (show_ip_bgp_ipv4, @@ -7526,8 +7525,7 @@ DEFUN (show_ip_bgp_route, "Network in the BGP routing table to display\n" "JavaScript Object Notation\n") { - u_char use_json = (argv[1] != NULL); - return bgp_show_route (vty, NULL, argv[0], AFI_IP, SAFI_UNICAST, NULL, 0, BGP_PATH_ALL, use_json); + return bgp_show_route (vty, NULL, argv[0], AFI_IP, SAFI_UNICAST, NULL, 0, BGP_PATH_ALL, use_json(argc, argv)); } DEFUN (show_ip_bgp_route_pathtype, @@ -7541,12 +7539,12 @@ DEFUN (show_ip_bgp_route_pathtype, "Display only multipaths\n" "JavaScript Object Notation\n") { - u_char use_json = (argv[2] != NULL); + u_char uj = use_json(argc, argv); if (strncmp (argv[1], "b", 1) == 0) - return bgp_show_route (vty, NULL, argv[0], AFI_IP, SAFI_UNICAST, NULL, 0, BGP_PATH_BESTPATH, use_json); + return bgp_show_route (vty, NULL, argv[0], AFI_IP, SAFI_UNICAST, NULL, 0, BGP_PATH_BESTPATH, uj); else - return bgp_show_route (vty, NULL, argv[0], AFI_IP, SAFI_UNICAST, NULL, 0, BGP_PATH_MULTIPATH, use_json); + return bgp_show_route (vty, NULL, argv[0], AFI_IP, SAFI_UNICAST, NULL, 0, BGP_PATH_MULTIPATH, uj); } DEFUN (show_bgp_ipv4_safi_route_pathtype, @@ -7562,18 +7560,18 @@ DEFUN (show_bgp_ipv4_safi_route_pathtype, "Display only multipaths\n" "JavaScript Object Notation\n") { - u_char use_json = (argv[3] != NULL); + u_char uj = use_json(argc, argv); if (strncmp (argv[0], "m", 1) == 0) if (strncmp (argv[2], "b", 1) == 0) - return bgp_show_route (vty, NULL, argv[1], AFI_IP, SAFI_MULTICAST, NULL, 0, BGP_PATH_BESTPATH, use_json); + return bgp_show_route (vty, NULL, argv[1], AFI_IP, SAFI_MULTICAST, NULL, 0, BGP_PATH_BESTPATH, uj); else - return bgp_show_route (vty, NULL, argv[1], AFI_IP, SAFI_MULTICAST, NULL, 0, BGP_PATH_MULTIPATH, use_json); + return bgp_show_route (vty, NULL, argv[1], AFI_IP, SAFI_MULTICAST, NULL, 0, BGP_PATH_MULTIPATH, uj); else if (strncmp (argv[2], "b", 1) == 0) - return bgp_show_route (vty, NULL, argv[1], AFI_IP, SAFI_UNICAST, NULL, 0, BGP_PATH_BESTPATH, use_json); + return bgp_show_route (vty, NULL, argv[1], AFI_IP, SAFI_UNICAST, NULL, 0, BGP_PATH_BESTPATH, uj); else - return bgp_show_route (vty, NULL, argv[1], AFI_IP, SAFI_UNICAST, NULL, 0, BGP_PATH_MULTIPATH, use_json); + return bgp_show_route (vty, NULL, argv[1], AFI_IP, SAFI_UNICAST, NULL, 0, BGP_PATH_MULTIPATH, uj); } DEFUN (show_ip_bgp_ipv4_route, @@ -7588,12 +7586,12 @@ DEFUN (show_ip_bgp_ipv4_route, "Network in the BGP routing table to display\n" "JavaScript Object Notation\n") { - u_char use_json = (argv[2] != NULL); + u_char uj = use_json(argc, argv); if (strncmp (argv[0], "m", 1) == 0) - return bgp_show_route (vty, NULL, argv[1], AFI_IP, SAFI_MULTICAST, NULL, 0, BGP_PATH_ALL, use_json); + return bgp_show_route (vty, NULL, argv[1], AFI_IP, SAFI_MULTICAST, NULL, 0, BGP_PATH_ALL, uj); - return bgp_show_route (vty, NULL, argv[1], AFI_IP, SAFI_UNICAST, NULL, 0, BGP_PATH_ALL, use_json); + return bgp_show_route (vty, NULL, argv[1], AFI_IP, SAFI_UNICAST, NULL, 0, BGP_PATH_ALL, uj); } ALIAS (show_ip_bgp_ipv4_route, @@ -7618,8 +7616,7 @@ DEFUN (show_ip_bgp_vpnv4_all_route, "Network in the BGP routing table to display\n" "JavaScript Object Notation\n") { - u_char use_json = (argv[1] != NULL); - return bgp_show_route (vty, NULL, argv[0], AFI_IP, SAFI_MPLS_VPN, NULL, 0, BGP_PATH_ALL, use_json); + return bgp_show_route (vty, NULL, argv[0], AFI_IP, SAFI_MPLS_VPN, NULL, 0, BGP_PATH_ALL, use_json(argc, argv)); } @@ -7637,7 +7634,7 @@ DEFUN (show_ip_bgp_vpnv4_rd_route, { int ret; struct prefix_rd prd; - u_char use_json = (argv[2] != NULL); + u_char uj= use_json(argc, argv); ret = str2prefix_rd (argv[0], &prd); if (! ret) @@ -7645,7 +7642,7 @@ DEFUN (show_ip_bgp_vpnv4_rd_route, vty_out (vty, "%% Malformed Route Distinguisher%s", VTY_NEWLINE); return CMD_WARNING; } - return bgp_show_route (vty, NULL, argv[1], AFI_IP, SAFI_MPLS_VPN, &prd, 0, BGP_PATH_ALL, use_json); + return bgp_show_route (vty, NULL, argv[1], AFI_IP, SAFI_MPLS_VPN, &prd, 0, BGP_PATH_ALL, uj); } DEFUN (show_ip_bgp_prefix, @@ -7657,8 +7654,7 @@ DEFUN (show_ip_bgp_prefix, "IP prefix /, e.g., 35.0.0.0/8\n" "JavaScript Object Notation\n") { - u_char use_json = (argv[1] != NULL); - return bgp_show_route (vty, NULL, argv[0], AFI_IP, SAFI_UNICAST, NULL, 1, BGP_PATH_ALL, use_json); + return bgp_show_route (vty, NULL, argv[0], AFI_IP, SAFI_UNICAST, NULL, 1, BGP_PATH_ALL, use_json(argc, argv)); } DEFUN (show_ip_bgp_prefix_pathtype, @@ -7672,11 +7668,11 @@ DEFUN (show_ip_bgp_prefix_pathtype, "Display only multipaths\n" "JavaScript Object Notation\n") { - u_char use_json = (argv[2] != NULL); + u_char uj = use_json(argc, argv); if (strncmp (argv[1], "b", 1) == 0) - return bgp_show_route (vty, NULL, argv[0], AFI_IP, SAFI_UNICAST, NULL, 1, BGP_PATH_BESTPATH, use_json); + return bgp_show_route (vty, NULL, argv[0], AFI_IP, SAFI_UNICAST, NULL, 1, BGP_PATH_BESTPATH, uj); else - return bgp_show_route (vty, NULL, argv[0], AFI_IP, SAFI_UNICAST, NULL, 1, BGP_PATH_MULTIPATH, use_json); + return bgp_show_route (vty, NULL, argv[0], AFI_IP, SAFI_UNICAST, NULL, 1, BGP_PATH_MULTIPATH, uj); } DEFUN (show_ip_bgp_ipv4_prefix, @@ -7691,12 +7687,12 @@ DEFUN (show_ip_bgp_ipv4_prefix, "IP prefix /, e.g., 35.0.0.0/8\n" "JavaScript Object Notation\n") { - u_char use_json = (argv[2] != NULL); + u_char uj = use_json(argc, argv); if (strncmp (argv[0], "m", 1) == 0) - return bgp_show_route (vty, NULL, argv[1], AFI_IP, SAFI_MULTICAST, NULL, 1, BGP_PATH_ALL, use_json); + return bgp_show_route (vty, NULL, argv[1], AFI_IP, SAFI_MULTICAST, NULL, 1, BGP_PATH_ALL, uj); - return bgp_show_route (vty, NULL, argv[1], AFI_IP, SAFI_UNICAST, NULL, 1, BGP_PATH_ALL, use_json); + return bgp_show_route (vty, NULL, argv[1], AFI_IP, SAFI_UNICAST, NULL, 1, BGP_PATH_ALL, uj); } ALIAS (show_ip_bgp_ipv4_prefix, @@ -7724,18 +7720,18 @@ DEFUN (show_ip_bgp_ipv4_prefix_pathtype, "Display only multipaths\n" "JavaScript Object Notation\n") { - u_char use_json = (argv[3] != NULL); + u_char uj = use_json(argc, argv); if (strncmp (argv[0], "m", 1) == 0) if (strncmp (argv[2], "b", 1) == 0) - return bgp_show_route (vty, NULL, argv[1], AFI_IP, SAFI_MULTICAST, NULL, 1, BGP_PATH_BESTPATH, use_json); + return bgp_show_route (vty, NULL, argv[1], AFI_IP, SAFI_MULTICAST, NULL, 1, BGP_PATH_BESTPATH, uj); else - return bgp_show_route (vty, NULL, argv[1], AFI_IP, SAFI_MULTICAST, NULL, 1, BGP_PATH_MULTIPATH, use_json); + return bgp_show_route (vty, NULL, argv[1], AFI_IP, SAFI_MULTICAST, NULL, 1, BGP_PATH_MULTIPATH, uj); else if (strncmp (argv[2], "b", 1) == 0) - return bgp_show_route (vty, NULL, argv[1], AFI_IP, SAFI_UNICAST, NULL, 1, BGP_PATH_BESTPATH, use_json); + return bgp_show_route (vty, NULL, argv[1], AFI_IP, SAFI_UNICAST, NULL, 1, BGP_PATH_BESTPATH, uj); else - return bgp_show_route (vty, NULL, argv[1], AFI_IP, SAFI_UNICAST, NULL, 1, BGP_PATH_MULTIPATH, use_json); + return bgp_show_route (vty, NULL, argv[1], AFI_IP, SAFI_UNICAST, NULL, 1, BGP_PATH_MULTIPATH, uj); } ALIAS (show_ip_bgp_ipv4_prefix_pathtype, @@ -7762,8 +7758,7 @@ DEFUN (show_ip_bgp_vpnv4_all_prefix, "IP prefix /, e.g., 35.0.0.0/8\n" "JavaScript Object Notation\n") { - u_char use_json = (argv[1] != NULL); - return bgp_show_route (vty, NULL, argv[0], AFI_IP, SAFI_MPLS_VPN, NULL, 1, BGP_PATH_ALL, use_json); + return bgp_show_route (vty, NULL, argv[0], AFI_IP, SAFI_MPLS_VPN, NULL, 1, BGP_PATH_ALL, use_json(argc, argv)); } DEFUN (show_ip_bgp_vpnv4_rd_prefix, @@ -7780,7 +7775,6 @@ DEFUN (show_ip_bgp_vpnv4_rd_prefix, { int ret; struct prefix_rd prd; - u_char use_json = (argv[2] != NULL); ret = str2prefix_rd (argv[0], &prd); if (! ret) @@ -7788,7 +7782,7 @@ DEFUN (show_ip_bgp_vpnv4_rd_prefix, vty_out (vty, "%% Malformed Route Distinguisher%s", VTY_NEWLINE); return CMD_WARNING; } - return bgp_show_route (vty, NULL, argv[1], AFI_IP, SAFI_MPLS_VPN, &prd, 0, BGP_PATH_ALL, use_json); + return bgp_show_route (vty, NULL, argv[1], AFI_IP, SAFI_MPLS_VPN, &prd, 0, BGP_PATH_ALL, use_json(argc, argv)); } DEFUN (show_ip_bgp_view, @@ -7802,7 +7796,6 @@ DEFUN (show_ip_bgp_view, "JavaScript Object Notation\n") { struct bgp *bgp; - u_char use_json = (argv[1] != NULL); /* BGP structure lookup. */ bgp = bgp_lookup_by_name (argv[0]); @@ -7812,7 +7805,7 @@ DEFUN (show_ip_bgp_view, return CMD_WARNING; } - return bgp_show (vty, bgp, AFI_IP, SAFI_UNICAST, bgp_show_type_normal, NULL, use_json); + return bgp_show (vty, bgp, AFI_IP, SAFI_UNICAST, bgp_show_type_normal, NULL, use_json(argc, argv)); } DEFUN (show_ip_bgp_view_route, @@ -7826,8 +7819,7 @@ DEFUN (show_ip_bgp_view_route, "Network in the BGP routing table to display\n" "JavaScript Object Notation\n") { - u_char use_json = (argv[2] != NULL); - return bgp_show_route (vty, argv[0], argv[1], AFI_IP, SAFI_UNICAST, NULL, 0, BGP_PATH_ALL, use_json); + return bgp_show_route (vty, argv[0], argv[1], AFI_IP, SAFI_UNICAST, NULL, 0, BGP_PATH_ALL, use_json(argc, argv)); } DEFUN (show_ip_bgp_view_prefix, @@ -7841,8 +7833,7 @@ DEFUN (show_ip_bgp_view_prefix, "IP prefix /, e.g., 35.0.0.0/8\n" "JavaScript Object Notation\n") { - u_char use_json = (argv[2] != NULL); - return bgp_show_route (vty, argv[0], argv[1], AFI_IP, SAFI_UNICAST, NULL, 1, BGP_PATH_ALL, use_json); + return bgp_show_route (vty, argv[0], argv[1], AFI_IP, SAFI_UNICAST, NULL, 1, BGP_PATH_ALL, use_json(argc, argv)); } #ifdef HAVE_IPV6 @@ -7853,9 +7844,8 @@ DEFUN (show_bgp, BGP_STR "JavaScript Object Notation\n") { - u_char use_json = (argv[0] != NULL); return bgp_show (vty, NULL, AFI_IP6, SAFI_UNICAST, bgp_show_type_normal, - NULL, use_json); + NULL, use_json(argc, argv)); } ALIAS (show_bgp, @@ -7876,12 +7866,12 @@ DEFUN (show_bgp_ipv6_safi, "Address Family modifier\n" "JavaScript Object Notation\n") { - u_char use_json = (argv[1] != NULL); + u_char uj = use_json(argc, argv); if (strncmp (argv[0], "m", 1) == 0) return bgp_show (vty, NULL, AFI_IP6, SAFI_MULTICAST, bgp_show_type_normal, - NULL, use_json); + NULL, uj); - return bgp_show (vty, NULL, AFI_IP6, SAFI_UNICAST, bgp_show_type_normal, NULL, use_json); + return bgp_show (vty, NULL, AFI_IP6, SAFI_UNICAST, bgp_show_type_normal, NULL, uj); } static void @@ -7901,10 +7891,9 @@ DEFUN (show_ipv6_bgp, BGP_STR "JavaScript Object Notation\n") { - u_char use_json = (argv[0] != NULL); bgp_show_ipv6_bgp_deprecate_warning(vty); return bgp_show (vty, NULL, AFI_IP6, SAFI_UNICAST, bgp_show_type_normal, - NULL, use_json); + NULL, use_json(argc, argv)); } DEFUN (show_bgp_route, @@ -7915,8 +7904,7 @@ DEFUN (show_bgp_route, "Network in the BGP routing table to display\n" "JavaScript Object Notation\n") { - u_char use_json = (argv[1] != NULL); - return bgp_show_route (vty, NULL, argv[0], AFI_IP6, SAFI_UNICAST, NULL, 0, BGP_PATH_ALL, use_json); + return bgp_show_route (vty, NULL, argv[0], AFI_IP6, SAFI_UNICAST, NULL, 0, BGP_PATH_ALL, use_json(argc, argv)); } ALIAS (show_bgp_route, @@ -7939,11 +7927,11 @@ DEFUN (show_bgp_ipv6_safi_route, "Network in the BGP routing table to display\n" "JavaScript Object Notation\n") { - u_char use_json = (argv[2] != NULL); + u_char uj = use_json(argc, argv); if (strncmp (argv[0], "m", 1) == 0) - return bgp_show_route (vty, NULL, argv[1], AFI_IP6, SAFI_MULTICAST, NULL, 0, BGP_PATH_ALL, use_json); + return bgp_show_route (vty, NULL, argv[1], AFI_IP6, SAFI_MULTICAST, NULL, 0, BGP_PATH_ALL, uj); - return bgp_show_route (vty, NULL, argv[1], AFI_IP6, SAFI_UNICAST, NULL, 0, BGP_PATH_ALL, use_json); + return bgp_show_route (vty, NULL, argv[1], AFI_IP6, SAFI_UNICAST, NULL, 0, BGP_PATH_ALL, uj); } DEFUN (show_bgp_route_pathtype, @@ -7956,11 +7944,11 @@ DEFUN (show_bgp_route_pathtype, "Display only multipaths\n" "JavaScript Object Notation\n") { - u_char use_json = (argv[2] != NULL); + u_char uj = use_json(argc, argv); if (strncmp (argv[1], "b", 1) == 0) - return bgp_show_route (vty, NULL, argv[0], AFI_IP6, SAFI_UNICAST, NULL, 0, BGP_PATH_BESTPATH, use_json); + return bgp_show_route (vty, NULL, argv[0], AFI_IP6, SAFI_UNICAST, NULL, 0, BGP_PATH_BESTPATH, uj); else - return bgp_show_route (vty, NULL, argv[0], AFI_IP6, SAFI_UNICAST, NULL, 0, BGP_PATH_MULTIPATH, use_json); + return bgp_show_route (vty, NULL, argv[0], AFI_IP6, SAFI_UNICAST, NULL, 0, BGP_PATH_MULTIPATH, uj); } ALIAS (show_bgp_route_pathtype, @@ -7987,17 +7975,17 @@ DEFUN (show_bgp_ipv6_safi_route_pathtype, "Display only multipaths\n" "JavaScript Object Notation\n") { - u_char use_json = (argv[3] != NULL); + u_char uj = use_json(argc, argv); if (strncmp (argv[0], "m", 1) == 0) if (strncmp (argv[2], "b", 1) == 0) - return bgp_show_route (vty, NULL, argv[1], AFI_IP6, SAFI_MULTICAST, NULL, 0, BGP_PATH_BESTPATH, use_json); + return bgp_show_route (vty, NULL, argv[1], AFI_IP6, SAFI_MULTICAST, NULL, 0, BGP_PATH_BESTPATH, uj); else - return bgp_show_route (vty, NULL, argv[1], AFI_IP6, SAFI_MULTICAST, NULL, 0, BGP_PATH_MULTIPATH, use_json); + return bgp_show_route (vty, NULL, argv[1], AFI_IP6, SAFI_MULTICAST, NULL, 0, BGP_PATH_MULTIPATH, uj); else if (strncmp (argv[2], "b", 1) == 0) - return bgp_show_route (vty, NULL, argv[1], AFI_IP6, SAFI_UNICAST, NULL, 0, BGP_PATH_BESTPATH, use_json); + return bgp_show_route (vty, NULL, argv[1], AFI_IP6, SAFI_UNICAST, NULL, 0, BGP_PATH_BESTPATH, uj); else - return bgp_show_route (vty, NULL, argv[1], AFI_IP6, SAFI_UNICAST, NULL, 0, BGP_PATH_MULTIPATH, use_json); + return bgp_show_route (vty, NULL, argv[1], AFI_IP6, SAFI_UNICAST, NULL, 0, BGP_PATH_MULTIPATH, uj); } /* old command */ @@ -8010,9 +7998,8 @@ DEFUN (show_ipv6_bgp_route, "Network in the BGP routing table to display\n" "JavaScript Object Notation\n") { - u_char use_json = (argv[1] != NULL); bgp_show_ipv6_bgp_deprecate_warning(vty); - return bgp_show_route (vty, NULL, argv[0], AFI_IP6, SAFI_UNICAST, NULL, 0, BGP_PATH_ALL, use_json); + return bgp_show_route (vty, NULL, argv[0], AFI_IP6, SAFI_UNICAST, NULL, 0, BGP_PATH_ALL, use_json(argc, argv)); } DEFUN (show_bgp_prefix, @@ -8023,8 +8010,7 @@ DEFUN (show_bgp_prefix, "IPv6 prefix /\n" "JavaScript Object Notation\n") { - u_char use_json = (argv[1] != NULL); - return bgp_show_route (vty, NULL, argv[0], AFI_IP6, SAFI_UNICAST, NULL, 1, BGP_PATH_ALL, use_json); + return bgp_show_route (vty, NULL, argv[0], AFI_IP6, SAFI_UNICAST, NULL, 1, BGP_PATH_ALL, use_json(argc, argv)); } ALIAS (show_bgp_prefix, @@ -8047,11 +8033,11 @@ DEFUN (show_bgp_ipv6_safi_prefix, "IPv6 prefix /, e.g., 3ffe::/16\n" "JavaScript Object Notation\n") { - u_char use_json = (argv[2] != NULL); + u_char uj = use_json(argc, argv); if (strncmp (argv[0], "m", 1) == 0) - return bgp_show_route (vty, NULL, argv[1], AFI_IP6, SAFI_MULTICAST, NULL, 1, BGP_PATH_ALL, use_json); + return bgp_show_route (vty, NULL, argv[1], AFI_IP6, SAFI_MULTICAST, NULL, 1, BGP_PATH_ALL, uj); - return bgp_show_route (vty, NULL, argv[1], AFI_IP6, SAFI_UNICAST, NULL, 1, BGP_PATH_ALL, use_json); + return bgp_show_route (vty, NULL, argv[1], AFI_IP6, SAFI_UNICAST, NULL, 1, BGP_PATH_ALL, uj); } DEFUN (show_bgp_prefix_pathtype, @@ -8064,11 +8050,11 @@ DEFUN (show_bgp_prefix_pathtype, "Display only multipaths\n" "JavaScript Object Notation\n") { - u_char use_json = (argv[2] != NULL); + u_char uj = use_json(argc, argv); if (strncmp (argv[1], "b", 1) == 0) - return bgp_show_route (vty, NULL, argv[0], AFI_IP6, SAFI_UNICAST, NULL, 1, BGP_PATH_BESTPATH, use_json); + return bgp_show_route (vty, NULL, argv[0], AFI_IP6, SAFI_UNICAST, NULL, 1, BGP_PATH_BESTPATH, uj); else - return bgp_show_route (vty, NULL, argv[0], AFI_IP6, SAFI_UNICAST, NULL, 1, BGP_PATH_MULTIPATH, use_json); + return bgp_show_route (vty, NULL, argv[0], AFI_IP6, SAFI_UNICAST, NULL, 1, BGP_PATH_MULTIPATH, uj); } ALIAS (show_bgp_prefix_pathtype, @@ -8095,17 +8081,17 @@ DEFUN (show_bgp_ipv6_safi_prefix_pathtype, "Display only multipaths\n" "JavaScript Object Notation\n") { - u_char use_json = (argv[3] != NULL); + u_char uj = use_json(argc, argv); if (strncmp (argv[0], "m", 1) == 0) if (strncmp (argv[2], "b", 1) == 0) - return bgp_show_route (vty, NULL, argv[1], AFI_IP6, SAFI_MULTICAST, NULL, 1, BGP_PATH_BESTPATH, use_json); + return bgp_show_route (vty, NULL, argv[1], AFI_IP6, SAFI_MULTICAST, NULL, 1, BGP_PATH_BESTPATH, uj); else - return bgp_show_route (vty, NULL, argv[1], AFI_IP6, SAFI_MULTICAST, NULL, 1, BGP_PATH_MULTIPATH, use_json); + return bgp_show_route (vty, NULL, argv[1], AFI_IP6, SAFI_MULTICAST, NULL, 1, BGP_PATH_MULTIPATH, uj); else if (strncmp (argv[2], "b", 1) == 0) - return bgp_show_route (vty, NULL, argv[1], AFI_IP6, SAFI_UNICAST, NULL, 1, BGP_PATH_BESTPATH, use_json); + return bgp_show_route (vty, NULL, argv[1], AFI_IP6, SAFI_UNICAST, NULL, 1, BGP_PATH_BESTPATH, uj); else - return bgp_show_route (vty, NULL, argv[1], AFI_IP6, SAFI_UNICAST, NULL, 1, BGP_PATH_MULTIPATH, use_json); + return bgp_show_route (vty, NULL, argv[1], AFI_IP6, SAFI_UNICAST, NULL, 1, BGP_PATH_MULTIPATH, uj); } /* old command */ @@ -8118,9 +8104,8 @@ DEFUN (show_ipv6_bgp_prefix, "IPv6 prefix /, e.g., 3ffe::/16\n" "JavaScript Object Notation\n") { - u_char use_json = (argv[1] != NULL); bgp_show_ipv6_bgp_deprecate_warning(vty); - return bgp_show_route (vty, NULL, argv[0], AFI_IP6, SAFI_UNICAST, NULL, 1, BGP_PATH_ALL, use_json); + return bgp_show_route (vty, NULL, argv[0], AFI_IP6, SAFI_UNICAST, NULL, 1, BGP_PATH_ALL, use_json(argc, argv)); } DEFUN (show_bgp_view, @@ -8133,17 +8118,16 @@ DEFUN (show_bgp_view, "JavaScript Object Notation\n") { struct bgp *bgp; - u_char use_json = (argv[1] != NULL); /* BGP structure lookup. */ bgp = bgp_lookup_by_name (argv[0]); if (bgp == NULL) - { - vty_out (vty, "Can't find BGP view %s%s", argv[0], VTY_NEWLINE); - return CMD_WARNING; - } - - return bgp_show (vty, bgp, AFI_IP6, SAFI_UNICAST, bgp_show_type_normal, NULL, use_json); + { + vty_out (vty, "Can't find BGP view %s%s", argv[0], VTY_NEWLINE); + return CMD_WARNING; + } + + return bgp_show (vty, bgp, AFI_IP6, SAFI_UNICAST, bgp_show_type_normal, NULL, use_json(argc, argv)); } ALIAS (show_bgp_view, @@ -8166,8 +8150,7 @@ DEFUN (show_bgp_view_route, "Network in the BGP routing table to display\n" "JavaScript Object Notation\n") { - u_char use_json = (argv[2] != NULL); - return bgp_show_route (vty, argv[0], argv[1], AFI_IP6, SAFI_UNICAST, NULL, 0, BGP_PATH_ALL, use_json); + return bgp_show_route (vty, argv[0], argv[1], AFI_IP6, SAFI_UNICAST, NULL, 0, BGP_PATH_ALL, use_json(argc, argv)); } ALIAS (show_bgp_view_route, @@ -8191,8 +8174,7 @@ DEFUN (show_bgp_view_prefix, "IPv6 prefix /\n" "JavaScript Object Notation\n") { - u_char use_json = (argv[2] != NULL); - return bgp_show_route (vty, argv[0], argv[1], AFI_IP6, SAFI_UNICAST, NULL, 1, BGP_PATH_ALL, use_json); + return bgp_show_route (vty, argv[0], argv[1], AFI_IP6, SAFI_UNICAST, NULL, 1, BGP_PATH_ALL, use_json(argc, argv)); } ALIAS (show_bgp_view_prefix, @@ -8215,10 +8197,9 @@ DEFUN (show_ipv6_mbgp, MBGP_STR "JavaScript Object Notation\n") { - u_char use_json = (argv[0] != NULL); bgp_show_ipv6_bgp_deprecate_warning(vty); return bgp_show (vty, NULL, AFI_IP6, SAFI_MULTICAST, bgp_show_type_normal, - NULL, use_json); + NULL, use_json(argc, argv)); } /* old command */ @@ -8231,9 +8212,8 @@ DEFUN (show_ipv6_mbgp_route, "Network in the MBGP routing table to display\n" "JavaScript Object Notation\n") { - u_char use_json = (argv[1] != NULL); bgp_show_ipv6_bgp_deprecate_warning(vty); - return bgp_show_route (vty, NULL, argv[0], AFI_IP6, SAFI_MULTICAST, NULL, 0, BGP_PATH_ALL, use_json); + return bgp_show_route (vty, NULL, argv[0], AFI_IP6, SAFI_MULTICAST, NULL, 0, BGP_PATH_ALL, use_json(argc, argv)); } /* old command */ @@ -8246,9 +8226,8 @@ DEFUN (show_ipv6_mbgp_prefix, "IPv6 prefix /, e.g., 3ffe::/16\n" "JavaScript Object Notation\n") { - u_char use_json = (argv[1] != NULL); bgp_show_ipv6_bgp_deprecate_warning(vty); - return bgp_show_route (vty, NULL, argv[0], AFI_IP6, SAFI_MULTICAST, NULL, 1, BGP_PATH_ALL, use_json); + return bgp_show_route (vty, NULL, argv[0], AFI_IP6, SAFI_MULTICAST, NULL, 1, BGP_PATH_ALL, use_json(argc, argv)); } #endif @@ -11020,18 +10999,13 @@ DEFUN (show_ip_bgp_neighbor_prefix_counts, "JavaScript Object Notation\n") { struct peer *peer; - u_char use_json; - - if (argv[argc - 1] && strcmp(argv[argc - 1], "json") == 0) - use_json = 1; - else - use_json = 0; + u_char uj = use_json(argc, argv); - peer = peer_lookup_in_view (vty, NULL, argv[0], use_json); + peer = peer_lookup_in_view (vty, NULL, argv[0], uj); if (! peer) return CMD_WARNING; - return bgp_peer_counts (vty, peer, AFI_IP, SAFI_UNICAST, use_json); + return bgp_peer_counts (vty, peer, AFI_IP, SAFI_UNICAST, uj); } DEFUN (show_bgp_ipv6_neighbor_prefix_counts, @@ -11048,18 +11022,13 @@ DEFUN (show_bgp_ipv6_neighbor_prefix_counts, "JavaScript Object Notation\n") { struct peer *peer; - u_char use_json; + u_char uj = use_json(argc, argv); - if (argv[argc - 1] && strcmp(argv[argc - 1], "json") == 0) - use_json = 1; - else - use_json = 0; - - peer = peer_lookup_in_view (vty, NULL, argv[0], use_json); + peer = peer_lookup_in_view (vty, NULL, argv[0], uj); if (! peer) return CMD_WARNING; - return bgp_peer_counts (vty, peer, AFI_IP6, SAFI_UNICAST, use_json); + return bgp_peer_counts (vty, peer, AFI_IP6, SAFI_UNICAST, uj); } DEFUN (show_ip_bgp_ipv4_neighbor_prefix_counts, @@ -11079,21 +11048,16 @@ DEFUN (show_ip_bgp_ipv4_neighbor_prefix_counts, "JavaScript Object Notation\n") { struct peer *peer; - u_char use_json; - - if (argv[argc - 1] && strcmp(argv[argc - 1], "json") == 0) - use_json = 1; - else - use_json = 0; + u_char uj = use_json(argc, argv); - peer = peer_lookup_in_view (vty, NULL, argv[1], use_json); + peer = peer_lookup_in_view (vty, NULL, argv[1], uj); if (! peer) return CMD_WARNING; if (strncmp (argv[0], "m", 1) == 0) - return bgp_peer_counts (vty, peer, AFI_IP, SAFI_MULTICAST, use_json); + return bgp_peer_counts (vty, peer, AFI_IP, SAFI_MULTICAST, uj); - return bgp_peer_counts (vty, peer, AFI_IP, SAFI_UNICAST, use_json); + return bgp_peer_counts (vty, peer, AFI_IP, SAFI_UNICAST, uj); } DEFUN (show_ip_bgp_vpnv4_neighbor_prefix_counts, @@ -11113,18 +11077,13 @@ DEFUN (show_ip_bgp_vpnv4_neighbor_prefix_counts, "JavaScript Object Notation\n") { struct peer *peer; - u_char use_json; - - if (argv[argc - 1] && strcmp(argv[argc - 1], "json") == 0) - use_json = 1; - else - use_json = 0; + u_char uj = use_json(argc, argv); - peer = peer_lookup_in_view (vty, NULL, argv[0], use_json); + peer = peer_lookup_in_view (vty, NULL, argv[0], uj); if (! peer) return CMD_WARNING; - return bgp_peer_counts (vty, peer, AFI_IP, SAFI_MPLS_VPN, use_json); + return bgp_peer_counts (vty, peer, AFI_IP, SAFI_MPLS_VPN, uj); } static void @@ -11382,23 +11341,17 @@ DEFUN (show_ip_bgp_view_neighbor_advertised_route, "JavaScript Object Notation\n") { struct peer *peer; - - u_char use_json; - - if (argv[argc - 1] && strcmp(argv[argc - 1], "json") == 0) - use_json = 1; - else - use_json = 0; + u_char uj = use_json(argc, argv); if (argc == 3 || (argc == 2 && argv[1] && strcmp(argv[1], "json") != 0)) - peer = peer_lookup_in_view (vty, argv[0], argv[1], use_json); + peer = peer_lookup_in_view (vty, argv[0], argv[1], uj); else - peer = peer_lookup_in_view (vty, NULL, argv[0], use_json); + peer = peer_lookup_in_view (vty, NULL, argv[0], uj); if (! peer) return CMD_WARNING; - return peer_adj_routes (vty, peer, AFI_IP, SAFI_UNICAST, 0, NULL, use_json); + return peer_adj_routes (vty, peer, AFI_IP, SAFI_UNICAST, 0, NULL, uj); } DEFUN (show_ip_bgp_neighbor_advertised_route, @@ -11417,14 +11370,9 @@ DEFUN (show_ip_bgp_neighbor_advertised_route, { struct peer *peer; const char *rmap_name = NULL; - u_char use_json; - - if (argv[argc - 1] && strcmp(argv[argc - 1], "json") == 0) - use_json = 1; - else - use_json = 0; + u_char uj = use_json(argc, argv); - peer = peer_lookup_in_view (vty, NULL, argv[0], use_json); + peer = peer_lookup_in_view (vty, NULL, argv[0], uj); if (! peer) return CMD_WARNING; @@ -11433,7 +11381,7 @@ DEFUN (show_ip_bgp_neighbor_advertised_route, || (argc == 3)) rmap_name = argv[1]; - return peer_adj_routes (vty, peer, AFI_IP, SAFI_UNICAST, 0, rmap_name, use_json); + return peer_adj_routes (vty, peer, AFI_IP, SAFI_UNICAST, 0, rmap_name, uj); } ALIAS (show_ip_bgp_neighbor_advertised_route, @@ -11467,14 +11415,9 @@ DEFUN (show_ip_bgp_ipv4_neighbor_advertised_route, { struct peer *peer; const char *rmap_name = NULL; - u_char use_json; + u_char uj = use_json(argc, argv); - if (argv[argc - 1] && strcmp(argv[argc - 1], "json") == 0) - use_json = 1; - else - use_json = 0; - - peer = peer_lookup_in_view (vty, NULL, argv[1], use_json); + peer = peer_lookup_in_view (vty, NULL, argv[1], uj); if (! peer) return CMD_WARNING; @@ -11482,9 +11425,9 @@ DEFUN (show_ip_bgp_ipv4_neighbor_advertised_route, rmap_name = argv[2]; if (strncmp (argv[0], "m", 1) == 0) - return peer_adj_routes (vty, peer, AFI_IP, SAFI_MULTICAST, 0, rmap_name, use_json); + return peer_adj_routes (vty, peer, AFI_IP, SAFI_MULTICAST, 0, rmap_name, uj); else - return peer_adj_routes (vty, peer, AFI_IP, SAFI_UNICAST, 0, rmap_name, use_json); + return peer_adj_routes (vty, peer, AFI_IP, SAFI_UNICAST, 0, rmap_name, uj); } ALIAS (show_ip_bgp_ipv4_neighbor_advertised_route, @@ -11520,22 +11463,17 @@ DEFUN (show_bgp_view_neighbor_advertised_route, "JavaScript Object Notation\n") { struct peer *peer; - u_char use_json; - - if (argv[argc - 1] && strcmp(argv[argc - 1], "json") == 0) - use_json = 1; - else - use_json = 0; + u_char uj = use_json(argc, argv); if (argc == 3 || (argc == 2 && argv[1] && strcmp(argv[1], "json") != 0)) - peer = peer_lookup_in_view (vty, argv[0], argv[1], use_json); + peer = peer_lookup_in_view (vty, argv[0], argv[1], uj); else - peer = peer_lookup_in_view (vty, NULL, argv[0], use_json); + peer = peer_lookup_in_view (vty, NULL, argv[0], uj); if (! peer) return CMD_WARNING; - return peer_adj_routes (vty, peer, AFI_IP6, SAFI_UNICAST, 0, NULL, use_json); + return peer_adj_routes (vty, peer, AFI_IP6, SAFI_UNICAST, 0, NULL, uj); } ALIAS (show_bgp_view_neighbor_advertised_route, @@ -11568,14 +11506,9 @@ DEFUN (show_bgp_neighbor_advertised_route, { struct peer *peer; const char *rmap_name = NULL; - u_char use_json; - - if (argv[argc - 1] && strcmp(argv[argc - 1], "json") == 0) - use_json = 1; - else - use_json = 0; + u_char uj = use_json(argc, argv); - peer = peer_lookup_in_view (vty, NULL, argv[0], use_json); + peer = peer_lookup_in_view (vty, NULL, argv[0], uj); if (!peer) return CMD_WARNING; @@ -11583,7 +11516,7 @@ DEFUN (show_bgp_neighbor_advertised_route, if (argc == 3 || (argc == 2 && argv[1] && strcmp(argv[1], "json") != 0)) rmap_name = argv[1]; - return peer_adj_routes (vty, peer, AFI_IP6, SAFI_UNICAST, 0, rmap_name, use_json); + return peer_adj_routes (vty, peer, AFI_IP6, SAFI_UNICAST, 0, rmap_name, uj); } ALIAS (show_bgp_neighbor_advertised_route, @@ -11629,19 +11562,14 @@ DEFUN (ipv6_mbgp_neighbor_advertised_route, "JavaScript Object Notation\n") { struct peer *peer; - u_char use_json; + u_char uj = use_json(argc, argv); - if (argv[argc - 1] && strcmp(argv[argc - 1], "json") == 0) - use_json = 1; - else - use_json = 0; - - peer = peer_lookup_in_view (vty, NULL, argv[0], use_json); + peer = peer_lookup_in_view (vty, NULL, argv[0], uj); if (! peer) return CMD_WARNING; bgp_show_ipv6_bgp_deprecate_warning(vty); - return peer_adj_routes (vty, peer, AFI_IP6, SAFI_MULTICAST, 0, NULL, use_json); + return peer_adj_routes (vty, peer, AFI_IP6, SAFI_MULTICAST, 0, NULL, uj); } #endif /* HAVE_IPV6 */ @@ -11660,32 +11588,27 @@ DEFUN (show_bgp_view_neighbor_received_routes, "JavaScript Object Notation\n") { struct peer *peer; - u_char use_json; - - if (argv[argc - 1] && strcmp(argv[argc - 1], "json") == 0) - use_json = 1; - else - use_json = 0; + u_char uj = use_json(argc, argv); - if (use_json) + if (uj) { if (argc == 3) - peer = peer_lookup_in_view (vty, argv[0], argv[1], use_json); + peer = peer_lookup_in_view (vty, argv[0], argv[1], uj); else - peer = peer_lookup_in_view (vty, NULL, argv[0], use_json); + peer = peer_lookup_in_view (vty, NULL, argv[0], uj); } else { if (argc == 2) - peer = peer_lookup_in_view (vty, argv[0], argv[1], use_json); + peer = peer_lookup_in_view (vty, argv[0], argv[1], uj); else - peer = peer_lookup_in_view (vty, NULL, argv[0], use_json); + peer = peer_lookup_in_view (vty, NULL, argv[0], uj); } if (! peer) return CMD_WARNING; - return peer_adj_routes (vty, peer, AFI_IP6, SAFI_UNICAST, 1, NULL, use_json); + return peer_adj_routes (vty, peer, AFI_IP6, SAFI_UNICAST, 1, NULL, uj); } DEFUN (show_ip_bgp_view_neighbor_received_routes, @@ -11704,22 +11627,17 @@ DEFUN (show_ip_bgp_view_neighbor_received_routes, "JavaScript Object Notation\n") { struct peer *peer; - u_char use_json; - - if (argv[argc - 1] && strcmp(argv[argc - 1], "json") == 0) - use_json = 1; - else - use_json = 0; + u_char uj = use_json(argc, argv); if (argc == 3 || (argc == 2 && argv[1] && strcmp(argv[1], "json") != 0)) - peer = peer_lookup_in_view (vty, argv[0], argv[1], use_json); + peer = peer_lookup_in_view (vty, argv[0], argv[1], uj); else - peer = peer_lookup_in_view (vty, NULL, argv[0], use_json); + peer = peer_lookup_in_view (vty, NULL, argv[0], uj); if (! peer) return CMD_WARNING; - return peer_adj_routes (vty, peer, AFI_IP, SAFI_UNICAST, 1, NULL, use_json); + return peer_adj_routes (vty, peer, AFI_IP, SAFI_UNICAST, 1, NULL, uj); } ALIAS (show_bgp_view_neighbor_received_routes, @@ -11753,14 +11671,9 @@ DEFUN (show_ip_bgp_neighbor_received_routes, { struct peer *peer; const char *rmap_name = NULL; - u_char use_json; - - if (argv[argc - 1] && strcmp(argv[argc - 1], "json") == 0) - use_json = 1; - else - use_json = 0; + u_char uj = use_json(argc, argv); - peer = peer_lookup_in_view (vty, NULL, argv[0], use_json); + peer = peer_lookup_in_view (vty, NULL, argv[0], uj); if (! peer) return CMD_WARNING; @@ -11768,7 +11681,7 @@ DEFUN (show_ip_bgp_neighbor_received_routes, if (argc == 3 || (argc == 2 && argv[1] && strcmp(argv[1], "json") != 0)) rmap_name = argv[1]; - return peer_adj_routes (vty, peer, AFI_IP, SAFI_UNICAST, 1, rmap_name, use_json); + return peer_adj_routes (vty, peer, AFI_IP, SAFI_UNICAST, 1, rmap_name, uj); } ALIAS (show_ip_bgp_neighbor_received_routes, @@ -11802,14 +11715,9 @@ DEFUN (show_ip_bgp_ipv4_neighbor_received_routes, { struct peer *peer; const char *rmap_name = NULL; - u_char use_json; + u_char uj = use_json(argc, argv); - if (argv[argc - 1] && strcmp(argv[argc - 1], "json") == 0) - use_json = 1; - else - use_json = 0; - - peer = peer_lookup_in_view (vty, NULL, argv[1], use_json); + peer = peer_lookup_in_view (vty, NULL, argv[1], uj); if (! peer) return CMD_WARNING; @@ -11817,9 +11725,9 @@ DEFUN (show_ip_bgp_ipv4_neighbor_received_routes, rmap_name = argv[2]; if (strncmp (argv[0], "m", 1) == 0) - return peer_adj_routes (vty, peer, AFI_IP, SAFI_MULTICAST, 1, rmap_name, use_json); + return peer_adj_routes (vty, peer, AFI_IP, SAFI_MULTICAST, 1, rmap_name, uj); else - return peer_adj_routes (vty, peer, AFI_IP, SAFI_UNICAST, 1, rmap_name, use_json); + return peer_adj_routes (vty, peer, AFI_IP, SAFI_UNICAST, 1, rmap_name, uj); } ALIAS (show_ip_bgp_ipv4_neighbor_received_routes, @@ -11867,33 +11775,18 @@ DEFUN (show_bgp_view_afi_safi_neighbor_adv_recd_routes, int safi; int in; struct peer *peer; - u_char use_json; + u_char uj = use_json(argc, argv); - if (argv[argc - 1] && strcmp(argv[argc - 1], "json") == 0) - use_json = 1; - else - use_json = 0; - -#ifdef HAVE_IPV6 - peer = peer_lookup_in_view (vty, argv[0], argv[3], use_json); -#else - peer = peer_lookup_in_view (vty, argv[0], argv[2], use_json); -#endif + peer = peer_lookup_in_view (vty, argv[0], argv[3], uj); if (! peer) return CMD_WARNING; -#ifdef HAVE_IPV6 afi = (strncmp (argv[1], "ipv6", 4) == 0) ? AFI_IP6 : AFI_IP; safi = (strncmp (argv[2], "m", 1) == 0) ? SAFI_MULTICAST : SAFI_UNICAST; in = (strncmp (argv[4], "r", 1) == 0) ? 1 : 0; -#else - afi = AFI_IP; - safi = (strncmp (argv[1], "m", 1) == 0) ? SAFI_MULTICAST : SAFI_UNICAST; - in = (strncmp (argv[3], "r", 1) == 0) ? 1 : 0; -#endif - return peer_adj_routes (vty, peer, afi, safi, in, NULL, use_json); + return peer_adj_routes (vty, peer, afi, safi, in, NULL, uj); } DEFUN (show_ip_bgp_neighbor_received_prefix_filter, @@ -11914,12 +11807,7 @@ DEFUN (show_ip_bgp_neighbor_received_prefix_filter, union sockunion su; struct peer *peer; int count, ret; - u_char use_json; - - if (argv[argc - 1] && strcmp(argv[argc - 1], "json") == 0) - use_json = 1; - else - use_json = 0; + u_char uj = use_json(argc, argv); ret = str2sockunion (argv[0], &su); if (ret < 0) @@ -11927,7 +11815,7 @@ DEFUN (show_ip_bgp_neighbor_received_prefix_filter, peer = peer_lookup_by_conf_if (NULL, argv[0]); if (! peer) { - if (use_json) + if (uj) { json_object *json_no = NULL; json_object *json_sub = NULL; @@ -11949,7 +11837,7 @@ DEFUN (show_ip_bgp_neighbor_received_prefix_filter, peer = peer_lookup (NULL, &su); if (! peer) { - if (use_json) + if (uj) { json_object *json_no = NULL; json_no = json_object_new_object(); @@ -11964,16 +11852,16 @@ DEFUN (show_ip_bgp_neighbor_received_prefix_filter, } sprintf (name, "%s.%d.%d", peer->host, AFI_IP, SAFI_UNICAST); - count = prefix_bgp_show_prefix_list (NULL, AFI_IP, name, use_json); + count = prefix_bgp_show_prefix_list (NULL, AFI_IP, name, uj); if (count) { - if (!use_json) + if (!uj) vty_out (vty, "Address family: IPv4 Unicast%s", VTY_NEWLINE); - prefix_bgp_show_prefix_list (vty, AFI_IP, name, use_json); + prefix_bgp_show_prefix_list (vty, AFI_IP, name, uj); } else { - if (use_json) + if (uj) { json_object *json_no = NULL; json_no = json_object_new_object(); @@ -12009,12 +11897,7 @@ DEFUN (show_ip_bgp_ipv4_neighbor_received_prefix_filter, union sockunion su; struct peer *peer; int count, ret; - u_char use_json; - - if (argv[argc - 1] && strcmp(argv[argc - 1], "json") == 0) - use_json = 1; - else - use_json = 0; + u_char uj = use_json(argc, argv); ret = str2sockunion (argv[1], &su); if (ret < 0) @@ -12022,7 +11905,7 @@ DEFUN (show_ip_bgp_ipv4_neighbor_received_prefix_filter, peer = peer_lookup_by_conf_if (NULL, argv[1]); if (! peer) { - if (use_json) + if (uj) { json_object *json_no = NULL; json_object *json_sub = NULL; @@ -12044,7 +11927,7 @@ DEFUN (show_ip_bgp_ipv4_neighbor_received_prefix_filter, peer = peer_lookup (NULL, &su); if (! peer) { - if (use_json) + if (uj) { json_object *json_no = NULL; json_no = json_object_new_object(); @@ -12061,16 +11944,16 @@ DEFUN (show_ip_bgp_ipv4_neighbor_received_prefix_filter, if (strncmp (argv[0], "m", 1) == 0) { sprintf (name, "%s.%d.%d", peer->host, AFI_IP, SAFI_MULTICAST); - count = prefix_bgp_show_prefix_list (NULL, AFI_IP, name, use_json); + count = prefix_bgp_show_prefix_list (NULL, AFI_IP, name, uj); if (count) { - if (!use_json) + if (!uj) vty_out (vty, "Address family: IPv4 Multicast%s", VTY_NEWLINE); - prefix_bgp_show_prefix_list (vty, AFI_IP, name, use_json); + prefix_bgp_show_prefix_list (vty, AFI_IP, name, uj); } else { - if (use_json) + if (uj) { json_object *json_no = NULL; json_no = json_object_new_object(); @@ -12085,16 +11968,16 @@ DEFUN (show_ip_bgp_ipv4_neighbor_received_prefix_filter, else { sprintf (name, "%s.%d.%d", peer->host, AFI_IP, SAFI_UNICAST); - count = prefix_bgp_show_prefix_list (NULL, AFI_IP, name, use_json); + count = prefix_bgp_show_prefix_list (NULL, AFI_IP, name, uj); if (count) { - if (!use_json) + if (!uj) vty_out (vty, "Address family: IPv4 Unicast%s", VTY_NEWLINE); - prefix_bgp_show_prefix_list (vty, AFI_IP, name, use_json); + prefix_bgp_show_prefix_list (vty, AFI_IP, name, uj); } else { - if (use_json) + if (uj) { json_object *json_no = NULL; json_no = json_object_new_object(); @@ -12152,12 +12035,7 @@ DEFUN (show_bgp_neighbor_received_prefix_filter, union sockunion su; struct peer *peer; int count, ret; - u_char use_json; - - if (argv[argc - 1] && strcmp(argv[argc - 1], "json") == 0) - use_json = 1; - else - use_json = 0; + u_char uj = use_json(argc, argv); ret = str2sockunion (argv[0], &su); if (ret < 0) @@ -12165,7 +12043,7 @@ DEFUN (show_bgp_neighbor_received_prefix_filter, peer = peer_lookup_by_conf_if (NULL, argv[0]); if (! peer) { - if (use_json) + if (uj) { json_object *json_no = NULL; json_object *json_sub = NULL; @@ -12187,7 +12065,7 @@ DEFUN (show_bgp_neighbor_received_prefix_filter, peer = peer_lookup (NULL, &su); if (! peer) { - if (use_json) + if (uj) { json_object *json_no = NULL; json_no = json_object_new_object(); @@ -12202,16 +12080,16 @@ DEFUN (show_bgp_neighbor_received_prefix_filter, } sprintf (name, "%s.%d.%d", peer->host, AFI_IP6, SAFI_UNICAST); - count = prefix_bgp_show_prefix_list (NULL, AFI_IP6, name, use_json); + count = prefix_bgp_show_prefix_list (NULL, AFI_IP6, name, uj); if (count) { - if (!use_json) + if (!uj) vty_out (vty, "Address family: IPv6 Unicast%s", VTY_NEWLINE); - prefix_bgp_show_prefix_list (vty, AFI_IP6, name, use_json); + prefix_bgp_show_prefix_list (vty, AFI_IP6, name, uj); } else { - if (use_json) + if (uj) { json_object *json_no = NULL; json_no = json_object_new_object(); @@ -12269,19 +12147,14 @@ DEFUN (ipv6_mbgp_neighbor_received_routes, "JavaScript Object Notation\n") { struct peer *peer; - u_char use_json; - - if (argv[argc - 1] && strcmp(argv[argc - 1], "json") == 0) - use_json = 1; - else - use_json = 0; + u_char uj = use_json(argc, argv); - peer = peer_lookup_in_view (vty, NULL, argv[0], use_json); + peer = peer_lookup_in_view (vty, NULL, argv[0], uj); if (! peer) return CMD_WARNING; bgp_show_ipv6_bgp_deprecate_warning(vty); - return peer_adj_routes (vty, peer, AFI_IP6, SAFI_MULTICAST, 1, NULL,use_json); + return peer_adj_routes (vty, peer, AFI_IP6, SAFI_MULTICAST, 1, NULL, uj); } DEFUN (show_bgp_view_neighbor_received_prefix_filter, @@ -12304,18 +12177,13 @@ DEFUN (show_bgp_view_neighbor_received_prefix_filter, struct peer *peer; struct bgp *bgp; int count, ret; - u_char use_json; - - if (argv[argc - 1] && strcmp(argv[argc - 1], "json") == 0) - use_json = 1; - else - use_json = 0; + u_char uj = use_json(argc, argv); /* BGP structure lookup. */ bgp = bgp_lookup_by_name (argv[0]); if (bgp == NULL) { - if (use_json) + if (uj) { json_object *json_no = NULL; json_no = json_object_new_object(); @@ -12334,7 +12202,7 @@ DEFUN (show_bgp_view_neighbor_received_prefix_filter, peer = peer_lookup_by_conf_if (bgp, argv[1]); if (! peer) { - if (use_json) + if (uj) { json_object *json_no = NULL; json_object *json_sub = NULL; @@ -12356,7 +12224,7 @@ DEFUN (show_bgp_view_neighbor_received_prefix_filter, peer = peer_lookup (bgp, &su); if (! peer) { - if (use_json) + if (uj) { json_object *json_no = NULL; json_no = json_object_new_object(); @@ -12372,12 +12240,12 @@ DEFUN (show_bgp_view_neighbor_received_prefix_filter, } sprintf (name, "%s.%d.%d", peer->host, AFI_IP6, SAFI_UNICAST); - count = prefix_bgp_show_prefix_list (NULL, AFI_IP6, name, use_json); + count = prefix_bgp_show_prefix_list (NULL, AFI_IP6, name, uj); if (count) { - if (!use_json) + if (!uj) vty_out (vty, "Address family: IPv6 Unicast%s", VTY_NEWLINE); - prefix_bgp_show_prefix_list (vty, AFI_IP6, name, use_json); + prefix_bgp_show_prefix_list (vty, AFI_IP6, name, uj); } return CMD_SUCCESS; @@ -12435,19 +12303,14 @@ DEFUN (show_ip_bgp_neighbor_routes, "JavaScript Object Notation\n") { struct peer *peer; - u_char use_json; - - if (argv[argc - 1] && strcmp(argv[argc - 1], "json") == 0) - use_json = 1; - else - use_json = 0; + u_char uj = use_json(argc, argv); - peer = peer_lookup_in_view (vty, NULL, argv[0], use_json); + peer = peer_lookup_in_view (vty, NULL, argv[0], uj); if (! peer) return CMD_WARNING; return bgp_show_neighbor_route (vty, peer, AFI_IP, SAFI_UNICAST, - bgp_show_type_neighbor, use_json); + bgp_show_type_neighbor, uj); } DEFUN (show_ip_bgp_neighbor_flap, @@ -12464,19 +12327,14 @@ DEFUN (show_ip_bgp_neighbor_flap, "JavaScript Object Notation\n") { struct peer *peer; - u_char use_json; + u_char uj = use_json(argc, argv); - if (argv[argc - 1] && strcmp(argv[argc - 1], "json") == 0) - use_json = 1; - else - use_json = 0; - - peer = peer_lookup_in_view (vty, NULL, argv[0], use_json); + peer = peer_lookup_in_view (vty, NULL, argv[0], uj); if (! peer) return CMD_WARNING; return bgp_show_neighbor_route (vty, peer, AFI_IP, SAFI_UNICAST, - bgp_show_type_flap_neighbor, use_json); + bgp_show_type_flap_neighbor, uj); } DEFUN (show_ip_bgp_neighbor_damp, @@ -12493,19 +12351,14 @@ DEFUN (show_ip_bgp_neighbor_damp, "JavaScript Object Notation\n") { struct peer *peer; - u_char use_json; + u_char uj = use_json(argc, argv); - if (argv[argc - 1] && strcmp(argv[argc - 1], "json") == 0) - use_json = 1; - else - use_json = 0; - - peer = peer_lookup_in_view (vty, NULL, argv[0], use_json); + peer = peer_lookup_in_view (vty, NULL, argv[0], uj); if (! peer) return CMD_WARNING; return bgp_show_neighbor_route (vty, peer, AFI_IP, SAFI_UNICAST, - bgp_show_type_damp_neighbor, use_json); + bgp_show_type_damp_neighbor, uj); } DEFUN (show_ip_bgp_ipv4_neighbor_routes, @@ -12525,23 +12378,18 @@ DEFUN (show_ip_bgp_ipv4_neighbor_routes, "JavaScript Object Notation\n") { struct peer *peer; - u_char use_json; - - if (argv[argc - 1] && strcmp(argv[argc - 1], "json") == 0) - use_json = 1; - else - use_json = 0; + u_char uj = use_json(argc, argv); - peer = peer_lookup_in_view (vty, NULL, argv[1], use_json); + peer = peer_lookup_in_view (vty, NULL, argv[1], uj); if (! peer) return CMD_WARNING; if (strncmp (argv[0], "m", 1) == 0) return bgp_show_neighbor_route (vty, peer, AFI_IP, SAFI_MULTICAST, - bgp_show_type_neighbor, use_json); + bgp_show_type_neighbor, uj); return bgp_show_neighbor_route (vty, peer, AFI_IP, SAFI_UNICAST, - bgp_show_type_neighbor, use_json); + bgp_show_type_neighbor, uj); } #ifdef HAVE_IPV6 @@ -12560,24 +12408,19 @@ DEFUN (show_bgp_view_neighbor_routes, "JavaScript Object Notation\n") { struct peer *peer; - u_char use_json; - - if (argv[argc - 1] && strcmp(argv[argc - 1], "json") == 0) - use_json = 1; - else - use_json = 0; + u_char uj = use_json(argc, argv); if ((argc == 3 && argv[2] && strcmp(argv[2], "json") == 0) || (argc == 2 && argv[1] && strcmp(argv[1], "json") != 0)) - peer = peer_lookup_in_view (vty, argv[0], argv[1], use_json); + peer = peer_lookup_in_view (vty, argv[0], argv[1], uj); else - peer = peer_lookup_in_view (vty, NULL, argv[0], use_json); + peer = peer_lookup_in_view (vty, NULL, argv[0], uj); if (! peer) return CMD_WARNING; return bgp_show_neighbor_route (vty, peer, AFI_IP6, SAFI_UNICAST, - bgp_show_type_neighbor, use_json); + bgp_show_type_neighbor, uj); } ALIAS (show_bgp_view_neighbor_routes, @@ -12610,24 +12453,19 @@ DEFUN (show_bgp_view_neighbor_damp, "JavaScript Object Notation\n") { struct peer *peer; - u_char use_json; - - if (argv[argc - 1] && strcmp(argv[argc - 1], "json") == 0) - use_json = 1; - else - use_json = 0; + u_char uj = use_json(argc, argv); if ((argc == 3 && argv[2] && strcmp(argv[2], "json") == 0) || (argc == 2 && argv[1] && strcmp(argv[1], "json") != 0)) - peer = peer_lookup_in_view (vty, argv[0], argv[1], use_json); + peer = peer_lookup_in_view (vty, argv[0], argv[1], uj); else - peer = peer_lookup_in_view (vty, NULL, argv[0], use_json); + peer = peer_lookup_in_view (vty, NULL, argv[0], uj); if (! peer) return CMD_WARNING; return bgp_show_neighbor_route (vty, peer, AFI_IP6, SAFI_UNICAST, - bgp_show_type_damp_neighbor, use_json); + bgp_show_type_damp_neighbor, uj); } ALIAS (show_bgp_view_neighbor_damp, @@ -12660,24 +12498,19 @@ DEFUN (show_bgp_view_neighbor_flap, "JavaScript Object Notation\n") { struct peer *peer; - u_char use_json; - - if (argv[argc - 1] && strcmp(argv[argc - 1], "json") == 0) - use_json = 1; - else - use_json = 0; + u_char uj = use_json(argc, argv); if ((argc == 3 && argv[2] && strcmp(argv[2], "json") == 0) || (argc == 2 && argv[1] && strcmp(argv[1], "json") != 0)) - peer = peer_lookup_in_view (vty, argv[0], argv[1], use_json); + peer = peer_lookup_in_view (vty, argv[0], argv[1], uj); else - peer = peer_lookup_in_view (vty, NULL, argv[0], use_json); + peer = peer_lookup_in_view (vty, NULL, argv[0], uj); if (! peer) return CMD_WARNING; return bgp_show_neighbor_route (vty, peer, AFI_IP6, SAFI_UNICAST, - bgp_show_type_flap_neighbor, use_json); + bgp_show_type_flap_neighbor, uj); } ALIAS (show_bgp_view_neighbor_flap, @@ -12750,20 +12583,15 @@ DEFUN (ipv6_mbgp_neighbor_routes, "JavaScript Object Notation\n") { struct peer *peer; - u_char use_json; - - if (argv[argc - 1] && strcmp(argv[argc - 1], "json") == 0) - use_json = 1; - else - use_json = 0; + u_char uj = use_json(argc, argv); - peer = peer_lookup_in_view (vty, NULL, argv[0], use_json); + peer = peer_lookup_in_view (vty, NULL, argv[0], uj); if (! peer) return CMD_WARNING; bgp_show_ipv6_bgp_deprecate_warning(vty); return bgp_show_neighbor_route (vty, peer, AFI_IP6, SAFI_MULTICAST, - bgp_show_type_neighbor, use_json); + bgp_show_type_neighbor, uj); } ALIAS (show_bgp_view_neighbor_flap, diff --git a/bgpd/bgp_vty.c b/bgpd/bgp_vty.c index 53448da349..6e218b85b8 100644 --- a/bgpd/bgp_vty.c +++ b/bgpd/bgp_vty.c @@ -8485,8 +8485,8 @@ DEFUN (show_ip_bgp_summary, "Summary of BGP neighbor status\n" "JavaScript Object Notation\n") { - u_char use_json = (argv[0] != NULL); - return bgp_show_summary_vty (vty, NULL, AFI_IP, SAFI_UNICAST, use_json); + u_char uj = use_json(argc, argv); + return bgp_show_summary_vty (vty, NULL, AFI_IP, SAFI_UNICAST, uj); } DEFUN (show_ip_bgp_instance_summary, @@ -8500,8 +8500,8 @@ DEFUN (show_ip_bgp_instance_summary, "Summary of BGP neighbor status\n" "JavaScript Object Notation\n") { - u_char use_json = (argv[1] != NULL); - return bgp_show_summary_vty (vty, argv[0], AFI_IP, SAFI_UNICAST, use_json); + u_char uj = use_json(argc, argv); + return bgp_show_summary_vty (vty, argv[0], AFI_IP, SAFI_UNICAST, uj); } DEFUN (show_ip_bgp_ipv4_summary, @@ -8516,11 +8516,11 @@ DEFUN (show_ip_bgp_ipv4_summary, "Summary of BGP neighbor status\n" "JavaScript Object Notation\n") { - u_char use_json = (argv[1] != NULL); + u_char uj = use_json(argc, argv); if (strncmp (argv[0], "m", 1) == 0) - return bgp_show_summary_vty (vty, NULL, AFI_IP, SAFI_MULTICAST, use_json); + return bgp_show_summary_vty (vty, NULL, AFI_IP, SAFI_MULTICAST, uj); - return bgp_show_summary_vty (vty, NULL, AFI_IP, SAFI_UNICAST, use_json); + return bgp_show_summary_vty (vty, NULL, AFI_IP, SAFI_UNICAST, uj); } ALIAS (show_ip_bgp_ipv4_summary, @@ -8547,11 +8547,11 @@ DEFUN (show_ip_bgp_instance_ipv4_summary, "Summary of BGP neighbor status\n" "JavaScript Object Notation\n") { - u_char use_json = (argv[2] != NULL); + u_char uj = use_json(argc, argv); if (strncmp (argv[1], "m", 1) == 0) - return bgp_show_summary_vty (vty, argv[0], AFI_IP, SAFI_MULTICAST, use_json); + return bgp_show_summary_vty (vty, argv[0], AFI_IP, SAFI_MULTICAST, uj); else - return bgp_show_summary_vty (vty, argv[0], AFI_IP, SAFI_UNICAST, use_json); + return bgp_show_summary_vty (vty, argv[0], AFI_IP, SAFI_UNICAST, uj); } ALIAS (show_ip_bgp_instance_ipv4_summary, @@ -8577,8 +8577,8 @@ DEFUN (show_ip_bgp_vpnv4_all_summary, "Summary of BGP neighbor status\n" "JavaScript Object Notation\n") { - u_char use_json = (argv[0] != NULL); - return bgp_show_summary_vty (vty, NULL, AFI_IP, SAFI_MPLS_VPN, use_json); + u_char uj = use_json(argc, argv); + return bgp_show_summary_vty (vty, NULL, AFI_IP, SAFI_MPLS_VPN, uj); } DEFUN (show_ip_bgp_vpnv4_rd_summary, @@ -8595,7 +8595,7 @@ DEFUN (show_ip_bgp_vpnv4_rd_summary, { int ret; struct prefix_rd prd; - u_char use_json = (argv[1] != NULL); + u_char uj = use_json(argc, argv); ret = str2prefix_rd (argv[0], &prd); if (! ret) @@ -8604,7 +8604,7 @@ DEFUN (show_ip_bgp_vpnv4_rd_summary, return CMD_WARNING; } - return bgp_show_summary_vty (vty, NULL, AFI_IP, SAFI_MPLS_VPN, use_json); + return bgp_show_summary_vty (vty, NULL, AFI_IP, SAFI_MPLS_VPN, uj); } #ifdef HAVE_IPV6 @@ -8616,8 +8616,7 @@ DEFUN (show_bgp_summary, "Summary of BGP neighbor status\n" "JavaScript Object Notation\n") { - u_char use_json = (argv[0] != NULL); - return bgp_show_summary_vty (vty, NULL, AFI_IP6, SAFI_UNICAST, use_json); + return bgp_show_summary_vty (vty, NULL, AFI_IP6, SAFI_UNICAST, use_json(argc, argv)); } DEFUN (show_bgp_instance_summary, @@ -8630,8 +8629,7 @@ DEFUN (show_bgp_instance_summary, "Summary of BGP neighbor status\n" "JavaScript Object Notation\n") { - u_char use_json = (argv[1] != NULL); - return bgp_show_summary_vty (vty, argv[0], AFI_IP6, SAFI_UNICAST, use_json); + return bgp_show_summary_vty (vty, argv[0], AFI_IP6, SAFI_UNICAST, use_json(argc, argv)); } ALIAS (show_bgp_summary, @@ -8663,11 +8661,11 @@ DEFUN (show_bgp_ipv6_safi_summary, "Summary of BGP neighbor status\n" "JavaScript Object Notation\n") { - u_char use_json = (argv[1] != NULL); + u_char uj = use_json(argc, argv); if (strncmp (argv[0], "m", 1) == 0) - return bgp_show_summary_vty (vty, NULL, AFI_IP6, SAFI_MULTICAST, use_json); + return bgp_show_summary_vty (vty, NULL, AFI_IP6, SAFI_MULTICAST, uj); - return bgp_show_summary_vty (vty, NULL, AFI_IP6, SAFI_UNICAST, use_json); + return bgp_show_summary_vty (vty, NULL, AFI_IP6, SAFI_UNICAST, uj); } DEFUN (show_bgp_instance_ipv6_safi_summary, @@ -8683,11 +8681,11 @@ DEFUN (show_bgp_instance_ipv6_safi_summary, "Summary of BGP neighbor status\n" "JavaScript Object Notation\n") { - u_char use_json = (argv[2] != NULL); + u_char uj = use_json(argc, argv); if (strncmp (argv[1], "m", 1) == 0) - return bgp_show_summary_vty (vty, argv[0], AFI_IP6, SAFI_MULTICAST, use_json); + return bgp_show_summary_vty (vty, argv[0], AFI_IP6, SAFI_MULTICAST, uj); - return bgp_show_summary_vty (vty, argv[0], AFI_IP6, SAFI_UNICAST, use_json); + return bgp_show_summary_vty (vty, argv[0], AFI_IP6, SAFI_UNICAST, uj); } /* old command */ @@ -8700,8 +8698,8 @@ DEFUN (show_ipv6_bgp_summary, "Summary of BGP neighbor status\n" "JavaScript Object Notation\n") { - u_char use_json = (argv[0] != NULL); - return bgp_show_summary_vty (vty, NULL, AFI_IP6, SAFI_UNICAST, use_json); + u_char uj = use_json(argc, argv); + return bgp_show_summary_vty (vty, NULL, AFI_IP6, SAFI_UNICAST, uj); } /* old command */ @@ -8714,8 +8712,8 @@ DEFUN (show_ipv6_mbgp_summary, "Summary of BGP neighbor status\n" "JavaScript Object Notation\n") { - u_char use_json = (argv[0] != NULL); - return bgp_show_summary_vty (vty, NULL, AFI_IP6, SAFI_MULTICAST, use_json); + u_char uj = use_json(argc, argv); + return bgp_show_summary_vty (vty, NULL, AFI_IP6, SAFI_MULTICAST, uj); } #endif /* HAVE_IPV6 */ @@ -10468,14 +10466,9 @@ DEFUN (show_ip_bgp_neighbors, "Detailed information on TCP and BGP neighbor connections\n" "JavaScript Object Notation\n") { - u_char use_json; + u_char uj = use_json(argc, argv); - if (argv[argc - 1] && strcmp(argv[argc - 1], "json") == 0) - use_json = 1; - else - use_json = 0; - - return bgp_show_neighbor_vty (vty, NULL, show_all, NULL, use_json); + return bgp_show_neighbor_vty (vty, NULL, show_all, NULL, uj); } ALIAS (show_ip_bgp_neighbors, @@ -10542,14 +10535,9 @@ DEFUN (show_ip_bgp_neighbors_peer, "Neighbor on bgp configured interface\n" "JavaScript Object Notation\n") { - u_char use_json; - - if (argv[argc - 1] && strcmp(argv[argc - 1], "json") == 0) - use_json = 1; - else - use_json = 0; + u_char uj = use_json(argc, argv); - return bgp_show_neighbor_vty (vty, NULL, show_peer, argv[argc - 2], use_json); + return bgp_show_neighbor_vty (vty, NULL, show_peer, argv[argc - 2], uj); } ALIAS (show_ip_bgp_neighbors_peer, @@ -10625,14 +10613,9 @@ DEFUN (show_ip_bgp_instance_neighbors, "Detailed information on TCP and BGP neighbor connections\n" "JavaScript Object Notation\n") { - u_char use_json; + u_char uj = use_json(argc, argv); - if (argv[1] && strcmp(argv[1], "json") == 0) - use_json = 1; - else - use_json = 0; - - return bgp_show_neighbor_vty (vty, argv[0], show_all, NULL, use_json); + return bgp_show_neighbor_vty (vty, argv[0], show_all, NULL, uj); } ALIAS (show_ip_bgp_instance_neighbors, @@ -10670,14 +10653,9 @@ DEFUN (show_ip_bgp_instance_neighbors_peer, "Neighbor on bgp configured interface\n" "JavaScript Object Notation\n") { - u_char use_json; - - if (argv[2] && strcmp(argv[2], "json") == 0) - use_json = 1; - else - use_json = 0; + u_char uj = use_json(argc, argv); - return bgp_show_neighbor_vty (vty, argv[0], show_peer, argv[1], use_json); + return bgp_show_neighbor_vty (vty, argv[0], show_peer, argv[1], uj); } ALIAS (show_ip_bgp_instance_neighbors_peer, diff --git a/lib/json.c b/lib/json.c index 07b70e4f06..f78bfcd844 100644 --- a/lib/json.c +++ b/lib/json.c @@ -19,8 +19,26 @@ * 02111-1307, USA. */ +#include #include "lib/json.h" +/* + * This function assumes that the json keyword + * is the *last* keyword on the line no matter + * what. + */ +int +use_json (const int argc, const char *argv[]) +{ + if (argc == 0) + return 0; + + if (argv[argc-1] && strcmp(argv[argc-1], "json") == 0) + return 1; + + return 0; +} + void json_object_string_add(struct json_object* obj, const char *key, const char *s) diff --git a/lib/json.h b/lib/json.h index e9b1976b96..e69b10acd2 100644 --- a/lib/json.h +++ b/lib/json.h @@ -24,6 +24,7 @@ #include +extern int use_json(const int argc, const char *argv[]); extern void json_object_string_add(struct json_object* obj, const char *key, const char *s); extern void json_object_int_add(struct json_object* obj, const char *key, diff --git a/ospfd/ospf_vty.c b/ospfd/ospf_vty.c index 22f38b212a..5132c7580a 100644 --- a/ospfd/ospf_vty.c +++ b/ospfd/ospf_vty.c @@ -63,7 +63,6 @@ static const char *ospf_network_type_str[] = "LOOPBACK" }; - /* Utility functions. */ static int ospf_str2area_id (const char *str, struct in_addr *area_id, int *format) @@ -3517,12 +3516,12 @@ DEFUN (show_ip_ospf, "JavaScript Object Notation\n") { struct ospf *ospf; - u_char use_json = (argv[0] != NULL); + u_char uj = use_json(argc, argv); if ((ospf = ospf_lookup()) == NULL || !ospf->oi_running) return CMD_SUCCESS; - return (show_ip_ospf_common(vty, ospf, use_json)); + return (show_ip_ospf_common(vty, ospf, uj)); } DEFUN (show_ip_ospf_instance, @@ -3536,13 +3535,13 @@ DEFUN (show_ip_ospf_instance, { struct ospf *ospf; u_short instance = 0; - u_char use_json = (argv[1] != NULL); + u_char uj = use_json(argc, argv); VTY_GET_INTEGER ("Instance", instance, argv[0]); if ((ospf = ospf_lookup_instance (instance)) == NULL || !ospf->oi_running) return CMD_SUCCESS; - return (show_ip_ospf_common(vty, ospf, use_json)); + return (show_ip_ospf_common(vty, ospf, uj)); } static void @@ -3912,18 +3911,12 @@ DEFUN (show_ip_ospf_interface, "JavaScript Object Notation\n") { struct ospf *ospf; - u_char use_json; - - if ((argv[0] && strcmp(argv[0], "json") == 0) || - (argv[1] && strcmp(argv[1], "json") == 0)) - use_json = 1; - else - use_json = 0; + u_char uj = use_json(argc, argv); if ((ospf = ospf_lookup()) == NULL || !ospf->oi_running) return CMD_SUCCESS; - return show_ip_ospf_interface_common(vty, ospf, argc, argv, 0, use_json); + return show_ip_ospf_interface_common(vty, ospf, argc, argv, 0, uj); } DEFUN (show_ip_ospf_instance_interface, @@ -3939,19 +3932,13 @@ DEFUN (show_ip_ospf_instance_interface, { struct ospf *ospf; u_short instance = 0; - u_char use_json; - - if ((argv[1] && strcmp(argv[1], "json") == 0) || - (argv[2] && strcmp(argv[2], "json") == 0)) - use_json = 1; - else - use_json = 0; + u_char uj = use_json(argc, argv); VTY_GET_INTEGER ("Instance", instance, argv[0]); if ((ospf = ospf_lookup_instance (instance)) == NULL || !ospf->oi_running) return CMD_SUCCESS; - return show_ip_ospf_interface_common(vty, ospf, argc, argv, 1, use_json); + return show_ip_ospf_interface_common(vty, ospf, argc, argv, 1, uj); } static void @@ -4080,12 +4067,12 @@ DEFUN (show_ip_ospf_neighbor, "JavaScript Object Notation\n") { struct ospf *ospf; - u_char use_json = (argv[0] != NULL); + u_char uj = use_json(argc, argv); if ((ospf = ospf_lookup()) == NULL || !ospf->oi_running) return CMD_SUCCESS; - return show_ip_ospf_neighbor_common(vty, ospf, use_json); + return show_ip_ospf_neighbor_common(vty, ospf, uj); } @@ -4101,13 +4088,13 @@ DEFUN (show_ip_ospf_instance_neighbor, { struct ospf *ospf; u_short instance = 0; - u_char use_json = (argv[1] != NULL); + u_char uj = use_json(argc, argv); VTY_GET_INTEGER ("Instance", instance, argv[0]); if ((ospf = ospf_lookup_instance(instance)) == NULL || !ospf->oi_running) return CMD_SUCCESS; - return show_ip_ospf_neighbor_common(vty, ospf, use_json); + return show_ip_ospf_neighbor_common(vty, ospf, uj); } static int @@ -4192,12 +4179,12 @@ DEFUN (show_ip_ospf_neighbor_all, "JavaScript Object Notation\n") { struct ospf *ospf; - u_char use_json = (argv[0] != NULL); + u_char uj = use_json(argc, argv); if ((ospf = ospf_lookup()) == NULL || !ospf->oi_running) return CMD_SUCCESS; - return show_ip_ospf_neighbor_all_common(vty, ospf, use_json); + return show_ip_ospf_neighbor_all_common(vty, ospf, uj); } DEFUN (show_ip_ospf_instance_neighbor_all, @@ -4213,13 +4200,13 @@ DEFUN (show_ip_ospf_instance_neighbor_all, { struct ospf *ospf; u_short instance = 0; - u_char use_json = (argv[1] != NULL); + u_char uj = use_json(argc, argv); VTY_GET_INTEGER ("Instance", instance, argv[0]); if ((ospf = ospf_lookup_instance(instance)) == NULL || !ospf->oi_running) return CMD_SUCCESS; - return show_ip_ospf_neighbor_all_common(vty, ospf, use_json); + return show_ip_ospf_neighbor_all_common(vty, ospf, uj); } static int @@ -4286,12 +4273,12 @@ DEFUN (show_ip_ospf_neighbor_int, "JavaScript Object Notation\n") { struct ospf *ospf; - u_char use_json = (argv[1] != NULL); + u_char uj = use_json(argc, argv); if ((ospf = ospf_lookup()) == NULL || !ospf->oi_running) return CMD_SUCCESS; - return show_ip_ospf_neighbor_int_common(vty, ospf, 0, argv, use_json); + return show_ip_ospf_neighbor_int_common(vty, ospf, 0, argv, uj); } DEFUN (show_ip_ospf_instance_neighbor_int, @@ -4307,13 +4294,13 @@ DEFUN (show_ip_ospf_instance_neighbor_int, { struct ospf *ospf; u_short instance = 0; - u_char use_json = (argv[2] != NULL); + u_char uj = use_json(argc, argv); VTY_GET_INTEGER ("Instance", instance, argv[0]); if ((ospf = ospf_lookup_instance(instance)) == NULL || !ospf->oi_running) return CMD_SUCCESS; - return show_ip_ospf_neighbor_int_common(vty, ospf, 1, argv, use_json); + return show_ip_ospf_neighbor_int_common(vty, ospf, 1, argv, uj); } static void @@ -4652,12 +4639,12 @@ DEFUN (show_ip_ospf_neighbor_id, "JavaScript Object Notation\n") { struct ospf *ospf; - u_char use_json = (argv[1] != NULL); + u_char uj = use_json(argc, argv); if ((ospf = ospf_lookup()) == NULL || !ospf->oi_running) return CMD_SUCCESS; - return show_ip_ospf_neighbor_id_common(vty, ospf, 0, argv, use_json); + return show_ip_ospf_neighbor_id_common(vty, ospf, 0, argv, uj); } DEFUN (show_ip_ospf_instance_neighbor_id, @@ -4673,13 +4660,13 @@ DEFUN (show_ip_ospf_instance_neighbor_id, { struct ospf *ospf; u_short instance = 0; - u_char use_json = (argv[2] != NULL); + u_char uj = use_json(argc, argv); VTY_GET_INTEGER ("Instance", instance, argv[0]); if ((ospf = ospf_lookup_instance(instance)) == NULL || !ospf->oi_running) return CMD_SUCCESS; - return show_ip_ospf_neighbor_id_common(vty, ospf, 1, argv, use_json); + return show_ip_ospf_neighbor_id_common(vty, ospf, 1, argv, uj); } static int @@ -4743,12 +4730,12 @@ DEFUN (show_ip_ospf_neighbor_detail, "JavaScript Object Notation\n") { struct ospf *ospf; - u_char use_json = (argv[0] != NULL); + u_char uj = use_json(argc, argv); if ((ospf = ospf_lookup()) == NULL || !ospf->oi_running) return CMD_SUCCESS; - return show_ip_ospf_neighbor_detail_common(vty, ospf, use_json); + return show_ip_ospf_neighbor_detail_common(vty, ospf, uj); } DEFUN (show_ip_ospf_instance_neighbor_detail, @@ -4764,13 +4751,13 @@ DEFUN (show_ip_ospf_instance_neighbor_detail, { struct ospf *ospf; u_short instance = 0; - u_char use_json = (argv[1] != NULL); + u_char uj = use_json(argc, argv); VTY_GET_INTEGER ("Instance", instance, argv[0]); if ((ospf = ospf_lookup_instance (instance)) == NULL || !ospf->oi_running) return CMD_SUCCESS; - return show_ip_ospf_neighbor_detail_common(vty, ospf, use_json); + return show_ip_ospf_neighbor_detail_common(vty, ospf, uj); } static int @@ -4841,12 +4828,12 @@ DEFUN (show_ip_ospf_neighbor_detail_all, "JavaScript Object Notation\n") { struct ospf *ospf; - u_char use_json = (argv[0] != NULL);; + u_char uj = use_json(argc, argv); if ((ospf = ospf_lookup()) == NULL || !ospf->oi_running) return CMD_SUCCESS; - return show_ip_ospf_neighbor_detail_all_common(vty, ospf, use_json); + return show_ip_ospf_neighbor_detail_all_common(vty, ospf, uj); } DEFUN (show_ip_ospf_instance_neighbor_detail_all, @@ -4863,13 +4850,13 @@ DEFUN (show_ip_ospf_instance_neighbor_detail_all, { struct ospf *ospf; u_short instance = 0; - u_char use_json = (argv[1] != NULL); + u_char uj = use_json(argc, argv); VTY_GET_INTEGER ("Instance", instance, argv[0]); if ((ospf = ospf_lookup_instance(instance)) == NULL || !ospf->oi_running) return CMD_SUCCESS; - return show_ip_ospf_neighbor_detail_all_common(vty, ospf, use_json); + return show_ip_ospf_neighbor_detail_all_common(vty, ospf, uj); } static int @@ -4943,12 +4930,12 @@ DEFUN (show_ip_ospf_neighbor_int_detail, "JavaScript Object Notation\n") { struct ospf *ospf; - u_char use_json = (argv[1] != NULL); + u_char uj = use_json(argc, argv); if ((ospf = ospf_lookup()) == NULL || !ospf->oi_running) return CMD_SUCCESS; - return show_ip_ospf_neighbor_int_detail_common(vty, ospf, 0, argv, use_json); + return show_ip_ospf_neighbor_int_detail_common(vty, ospf, 0, argv, uj); } DEFUN (show_ip_ospf_instance_neighbor_int_detail, @@ -4965,13 +4952,13 @@ DEFUN (show_ip_ospf_instance_neighbor_int_detail, { struct ospf *ospf; u_short instance = 0; - u_char use_json = (argv[2] != NULL); + u_char uj = use_json(argc, argv); VTY_GET_INTEGER ("Instance", instance, argv[0]); if ((ospf = ospf_lookup_instance(instance)) == NULL || !ospf->oi_running) return CMD_SUCCESS; - return show_ip_ospf_neighbor_int_detail_common(vty, ospf, 1, argv, use_json); + return show_ip_ospf_neighbor_int_detail_common(vty, ospf, 1, argv, uj); } /* Show functions */ -- 2.39.5