diff options
author | Daniel Walton <dwalton@cumulusnetworks.com> | 2016-09-26 03:12:24 +0200 |
---|---|---|
committer | Daniel Walton <dwalton@cumulusnetworks.com> | 2016-09-26 03:12:24 +0200 |
commit | 74ca3d330b14a17218a82566931a061e94adaddf (patch) | |
tree | c5284bc7a691299f1c2afcda4eb2b4dc80b342c5 | |
parent | bgpd: minor grammar corrections (diff) | |
download | frr-74ca3d330b14a17218a82566931a061e94adaddf.tar.xz frr-74ca3d330b14a17218a82566931a061e94adaddf.zip |
bgpd: combine "show ip bgp summary" commands into one DEFUN
Signed-off-by: Daniel Walton <dwalton@cumulusnetworks.com>
-rw-r--r-- | bgpd/bgp_vty.c | 402 |
1 files changed, 75 insertions, 327 deletions
diff --git a/bgpd/bgp_vty.c b/bgpd/bgp_vty.c index b7e24ddcd..ae56fd05d 100644 --- a/bgpd/bgp_vty.c +++ b/bgpd/bgp_vty.c @@ -6220,7 +6220,6 @@ bgp_clear_prefix (struct vty *vty, const char *view_name, const char *ip_str, return CMD_SUCCESS; } -// dwalton /* one clear bgp command to rule them all */ DEFUN (clear_ip_bgp_all, clear_ip_bgp_all_cmd, @@ -7176,234 +7175,105 @@ bgp_show_all_instances_summary_vty (struct vty *vty, afi_t afi, safi_t safi, /* `show ip bgp summary' commands. */ DEFUN (show_ip_bgp_summary, show_ip_bgp_summary_cmd, - "show ip bgp summary [json]", - SHOW_STR - IP_STR - BGP_STR - "Summary of BGP neighbor status\n" - "JavaScript Object Notation\n") -{ - 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, - show_ip_bgp_instance_summary_cmd, - "show ip bgp <view|vrf> WORD summary [json]", + "show [ip] bgp [<view|vrf> WORD] [<ipv4 unicast|ipv4 multicast|ipv6 unicast|vpnv4 unicast|encap unicast>] summary [json]", SHOW_STR IP_STR BGP_STR BGP_INSTANCE_HELP_STR - "Summary of BGP neighbor status\n" - "JavaScript Object Notation\n") -{ - int idx_word = 4; - u_char uj = use_json(argc, argv); - return bgp_show_summary_vty (vty, argv[idx_word]->arg, AFI_IP, SAFI_UNICAST, uj); -} - -DEFUN (show_ip_bgp_instance_all_summary, - show_ip_bgp_instance_all_summary_cmd, - "show ip bgp <view|vrf> all summary [json]", - SHOW_STR - IP_STR - BGP_STR - BGP_INSTANCE_ALL_HELP_STR - "Summary of BGP neighbor status\n" - "JavaScript Object Notation\n") -{ - u_char uj = use_json(argc, argv); - - bgp_show_all_instances_summary_vty (vty, AFI_IP, SAFI_UNICAST, uj); - return CMD_SUCCESS; -} - -/* - * CHECK ME - The following ALIASes need to be implemented in this DEFUN - * "show bgp ipv4 (unicast|multicast) summary [json]", - * SHOW_STR - * BGP_STR - * "Address family\n" - * "Address Family modifier\n" - * "Address Family modifier\n" - * "Summary of BGP neighbor status\n" - * - */ -DEFUN (show_ip_bgp_ipv4_summary, - show_ip_bgp_ipv4_summary_cmd, - "show ip bgp ipv4 <unicast|multicast> summary [json]", - SHOW_STR - IP_STR - BGP_STR "Address family\n" "Address Family modifier\n" + "Address family\n" + "Address Family modifier\n" + "Address family\n" "Address Family modifier\n" - "Summary of BGP neighbor status\n" - "JavaScript Object Notation\n") -{ - int idx_safi = 4; - u_char uj = use_json(argc, argv); - if (strncmp (argv[idx_safi]->arg, "m", 1) == 0) - return bgp_show_summary_vty (vty, NULL, AFI_IP, SAFI_MULTICAST, uj); - - return bgp_show_summary_vty (vty, NULL, AFI_IP, SAFI_UNICAST, uj); -} - - -DEFUN (show_bgp_ipv4_vpn_summary, - show_bgp_ipv4_vpn_summary_cmd, - "show bgp ipv4 vpn summary [json]", - SHOW_STR - BGP_STR - "IPv4\n" - "Display VPN NLRI specific information\n" - "Summary of BGP neighbor status\n" - JSON_STR) -{ - return bgp_show_summary_vty (vty, NULL, AFI_IP, SAFI_MPLS_VPN, use_json (argc, argv)); -} - -/* `show ip bgp summary' commands. */ -DEFUN (show_bgp_ipv6_vpn_summary, - show_bgp_ipv6_vpn_summary_cmd, - "show bgp ipv6 vpn summary [json]", - SHOW_STR - BGP_STR - "IPv6\n" - "Display VPN NLRI specific information\n" - "Summary of BGP neighbor status\n" - JSON_STR) -{ - return bgp_show_summary_vty (vty, NULL, AFI_IP6, SAFI_MPLS_VPN, use_json (argc, argv)); -} - -/* - * CHECK ME - The following ALIASes need to be implemented in this DEFUN - * "show bgp view WORD ipv4 (unicast|multicast) summary [json]", - * SHOW_STR - * BGP_STR - * "BGP view\n" - * "View name\n" - * "Address family\n" - * "Address Family modifier\n" - * "Address Family modifier\n" - * "Summary of BGP neighbor status\n" - * - */ -DEFUN (show_ip_bgp_instance_ipv4_summary, - show_ip_bgp_instance_ipv4_summary_cmd, - "show ip bgp view WORD ipv4 <unicast|multicast> summary [json]", - SHOW_STR - IP_STR - BGP_STR - "BGP view\n" - "View name\n" "Address family\n" "Address Family modifier\n" + "Address family\n" "Address Family modifier\n" "Summary of BGP neighbor status\n" "JavaScript Object Notation\n") { - int idx_word = 4; - int idx_safi = 6; + int idx_ip = 1; + int idx_view_vrf = 3; + int idx_vrf = 4; + int idx_afi; + int idx_safi; + char *vrf = NULL; + afi_t afi; + safi_t safi; u_char uj = use_json(argc, argv); - if (strncmp (argv[idx_safi]->arg, "m", 1) == 0) - return bgp_show_summary_vty (vty, argv[idx_word]->arg, AFI_IP, SAFI_MULTICAST, uj); - else - return bgp_show_summary_vty (vty, argv[idx_word]->arg, AFI_IP, SAFI_UNICAST, uj); -} - -DEFUN (show_ip_bgp_vpnv4_all_summary, - show_ip_bgp_vpnv4_all_summary_cmd, - "show ip bgp vpnv4 all summary [json]", - SHOW_STR - IP_STR - BGP_STR - "Display VPNv4 NLRI specific information\n" - "Display information about all VPNv4 NLRIs\n" - "Summary of BGP neighbor status\n" - "JavaScript Object Notation\n") -{ - u_char uj = use_json(argc, argv); - return bgp_show_summary_vty (vty, NULL, AFI_IP, SAFI_MPLS_VPN, uj); -} + /* + * If the user does "show ip bgp" then we default the afi safi to ipv4 unicast. + * If the user does "show bgp" then we default the afi safi to ipv6 unicast. + * This may be over-written later in the command if they explicitly + * specify an afi safi. + */ + if (strmatch(argv[idx_ip]->text, "ip")) + { + afi = AFI_IP; + safi = SAFI_UNICAST; + } + else + { + afi = AFI_IP6; + safi = SAFI_UNICAST; + idx_view_vrf--; + idx_vrf--; + } -DEFUN (show_ip_bgp_vpnv4_rd_summary, - show_ip_bgp_vpnv4_rd_summary_cmd, - "show ip bgp vpnv4 rd ASN:nn_or_IP-address:nn summary [json]", - SHOW_STR - IP_STR - BGP_STR - "Display VPNv4 NLRI specific information\n" - "Display information for a route distinguisher\n" - "VPN Route Distinguisher\n" - "Summary of BGP neighbor status\n" - "JavaScript Object Notation\n") -{ - int idx_ext_community = 5; - int ret; - struct prefix_rd prd; - u_char uj = use_json(argc, argv); + if (strmatch(argv[idx_view_vrf]->text, "view") || strmatch(argv[idx_view_vrf]->text, "vrf")) + vrf = argv[idx_vrf]->arg; - ret = str2prefix_rd (argv[idx_ext_community]->arg, &prd); - if (! ret) + if (uj) { - vty_out (vty, "%% Malformed Route Distinguisher%s", VTY_NEWLINE); - return CMD_WARNING; + idx_afi = argc - 3; + idx_safi = argc - 2; + } + else + { + idx_afi = argc - 2; + idx_safi = argc - 1; } - return bgp_show_summary_vty (vty, NULL, AFI_IP, SAFI_MPLS_VPN, uj); -} + /* afi safi */ + if (strmatch(argv[idx_afi]->text, "ipv4")) + { + afi = AFI_IP; -#ifdef HAVE_IPV6 -/* - * CHECK ME - The following ALIASes need to be implemented in this DEFUN - * "show bgp ipv6 summary [json]", - * SHOW_STR - * BGP_STR - * "Address family\n" - * "Summary of BGP neighbor status\n" - * - */ -DEFUN (show_bgp_summary, - show_bgp_summary_cmd, - "show bgp summary [json]", - SHOW_STR - BGP_STR - "Summary of BGP neighbor status\n" - "JavaScript Object Notation\n") -{ - return bgp_show_summary_vty (vty, NULL, AFI_IP6, SAFI_UNICAST, use_json(argc, argv)); -} + if (strmatch(argv[idx_safi]->text, "unicast")) + safi = SAFI_UNICAST; + else if (strmatch(argv[idx_safi]->text, "multicast")) + safi = SAFI_MULTICAST; + } + else if (strmatch(argv[idx_afi]->text, "ipv6")) + { + afi = AFI_IP6; -/* - * CHECK ME - The following ALIASes need to be implemented in this DEFUN - * "show bgp <view|vrf> WORD ipv6 summary [json]", - * SHOW_STR - * BGP_STR - * BGP_INSTANCE_HELP_STR - * "Address family\n" - * "Summary of BGP neighbor status\n" - * - */ -DEFUN (show_bgp_instance_summary, - show_bgp_instance_summary_cmd, - "show bgp <view|vrf> WORD summary [json]", - SHOW_STR - BGP_STR - BGP_INSTANCE_HELP_STR - "Summary of BGP neighbor status\n" - "JavaScript Object Notation\n") -{ - int idx_word = 3; - return bgp_show_summary_vty (vty, argv[idx_word]->arg, AFI_IP6, SAFI_UNICAST, use_json(argc, argv)); + if (strmatch(argv[idx_safi]->text, "unicast")) + safi = SAFI_UNICAST; + else if (strmatch(argv[idx_safi]->text, "multicast")) + safi = SAFI_MULTICAST; + } + else if (strmatch(argv[idx_afi]->text, "encap")) + { + afi = AFI_IP; + safi = SAFI_ENCAP; + } + else if (strmatch(argv[idx_afi]->text, "vpnv4")) + { + afi = AFI_IP; + safi = SAFI_MPLS_VPN; + } + + return bgp_show_summary_vty (vty, vrf, afi, safi, uj); } -DEFUN (show_bgp_instance_all_summary, - show_bgp_instance_all_summary_cmd, - "show bgp <view|vrf> all summary [json]", +DEFUN (show_ip_bgp_instance_all_summary, + show_ip_bgp_instance_all_summary_cmd, + "show ip bgp <view|vrf> all summary [json]", SHOW_STR + IP_STR BGP_STR BGP_INSTANCE_ALL_HELP_STR "Summary of BGP neighbor status\n" @@ -7411,81 +7281,10 @@ DEFUN (show_bgp_instance_all_summary, { u_char uj = use_json(argc, argv); - bgp_show_all_instances_summary_vty (vty, AFI_IP6, SAFI_UNICAST, uj); + bgp_show_all_instances_summary_vty (vty, AFI_IP, SAFI_UNICAST, uj); return CMD_SUCCESS; } - - -DEFUN (show_bgp_ipv6_safi_summary, - show_bgp_ipv6_safi_summary_cmd, - "show bgp ipv6 <unicast|multicast> summary [json]", - SHOW_STR - BGP_STR - "Address family\n" - "Address Family modifier\n" - "Address Family modifier\n" - "Summary of BGP neighbor status\n" - "JavaScript Object Notation\n") -{ - int idx_safi = 3; - u_char uj = use_json(argc, argv); - if (strncmp (argv[idx_safi]->arg, "m", 1) == 0) - return bgp_show_summary_vty (vty, NULL, AFI_IP6, SAFI_MULTICAST, uj); - - return bgp_show_summary_vty (vty, NULL, AFI_IP6, SAFI_UNICAST, uj); -} - -DEFUN (show_bgp_instance_ipv6_safi_summary, - show_bgp_instance_ipv6_safi_summary_cmd, - "show bgp <view|vrf> WORD ipv6 <unicast|multicast> summary [json]", - SHOW_STR - BGP_STR - BGP_INSTANCE_HELP_STR - "Address family\n" - "Address Family modifier\n" - "Address Family modifier\n" - "Summary of BGP neighbor status\n" - "JavaScript Object Notation\n") -{ - int idx_word = 3; - int idx_safi = 5; - u_char uj = use_json(argc, argv); - if (strncmp (argv[idx_safi]->arg, "m", 1) == 0) - return bgp_show_summary_vty (vty, argv[idx_word]->arg, AFI_IP6, SAFI_MULTICAST, uj); - - return bgp_show_summary_vty (vty, argv[idx_word]->arg, AFI_IP6, SAFI_UNICAST, uj); -} - -/* old command */ -DEFUN (show_ipv6_bgp_summary, - show_ipv6_bgp_summary_cmd, - "show ipv6 bgp summary [json]", - SHOW_STR - IPV6_STR - BGP_STR - "Summary of BGP neighbor status\n" - "JavaScript Object Notation\n") -{ - u_char uj = use_json(argc, argv); - return bgp_show_summary_vty (vty, NULL, AFI_IP6, SAFI_UNICAST, uj); -} - -/* old command */ -DEFUN (show_ipv6_mbgp_summary, - show_ipv6_mbgp_summary_cmd, - "show ipv6 mbgp summary [json]", - SHOW_STR - IPV6_STR - MBGP_STR - "Summary of BGP neighbor status\n" - "JavaScript Object Notation\n") -{ - u_char uj = use_json(argc, argv); - return bgp_show_summary_vty (vty, NULL, AFI_IP6, SAFI_MULTICAST, uj); -} -#endif /* HAVE_IPV6 */ - const char * afi_safi_print (afi_t afi, safi_t safi) { @@ -12007,19 +11806,7 @@ bgp_vty_init (void) install_element (VIEW_NODE, &show_bgp_updgrps_adj_s_cmd); install_element (VIEW_NODE, &show_bgp_instance_updgrps_adj_s_cmd); install_element (VIEW_NODE, &show_bgp_updgrps_afi_adj_s_cmd); - install_element (VIEW_NODE, &show_ip_bgp_instance_summary_cmd); install_element (VIEW_NODE, &show_ip_bgp_instance_all_summary_cmd); - install_element (VIEW_NODE, &show_ip_bgp_ipv4_summary_cmd); - install_element (VIEW_NODE, &show_ip_bgp_instance_ipv4_summary_cmd); - install_element (VIEW_NODE, &show_ip_bgp_vpnv4_all_summary_cmd); - install_element (VIEW_NODE, &show_ip_bgp_vpnv4_rd_summary_cmd); -#ifdef HAVE_IPV6 - install_element (VIEW_NODE, &show_bgp_summary_cmd); - install_element (VIEW_NODE, &show_bgp_instance_summary_cmd); - install_element (VIEW_NODE, &show_bgp_instance_all_summary_cmd); - install_element (VIEW_NODE, &show_bgp_ipv6_safi_summary_cmd); - install_element (VIEW_NODE, &show_bgp_instance_ipv6_safi_summary_cmd); -#endif /* HAVE_IPV6 */ install_element (RESTRICTED_NODE, &show_ip_bgp_summary_cmd); install_element (RESTRICTED_NODE, &show_ip_bgp_updgrps_cmd); install_element (RESTRICTED_NODE, &show_ip_bgp_instance_updgrps_cmd); @@ -12043,19 +11830,7 @@ bgp_vty_init (void) install_element (RESTRICTED_NODE, &show_bgp_updgrps_adj_s_cmd); install_element (RESTRICTED_NODE, &show_bgp_instance_updgrps_adj_s_cmd); install_element (RESTRICTED_NODE, &show_bgp_updgrps_afi_adj_s_cmd); - install_element (RESTRICTED_NODE, &show_ip_bgp_instance_summary_cmd); install_element (RESTRICTED_NODE, &show_ip_bgp_instance_all_summary_cmd); - install_element (RESTRICTED_NODE, &show_ip_bgp_ipv4_summary_cmd); - install_element (RESTRICTED_NODE, &show_ip_bgp_instance_ipv4_summary_cmd); - install_element (RESTRICTED_NODE, &show_ip_bgp_vpnv4_all_summary_cmd); - install_element (RESTRICTED_NODE, &show_ip_bgp_vpnv4_rd_summary_cmd); -#ifdef HAVE_IPV6 - install_element (RESTRICTED_NODE, &show_bgp_summary_cmd); - install_element (RESTRICTED_NODE, &show_bgp_instance_summary_cmd); - install_element (RESTRICTED_NODE, &show_bgp_instance_all_summary_cmd); - install_element (RESTRICTED_NODE, &show_bgp_ipv6_safi_summary_cmd); - install_element (RESTRICTED_NODE, &show_bgp_instance_ipv6_safi_summary_cmd); -#endif /* HAVE_IPV6 */ install_element (ENABLE_NODE, &show_ip_bgp_summary_cmd); install_element (ENABLE_NODE, &show_ip_bgp_updgrps_cmd); install_element (ENABLE_NODE, &show_ip_bgp_instance_updgrps_cmd); @@ -12079,25 +11854,7 @@ bgp_vty_init (void) install_element (ENABLE_NODE, &show_bgp_updgrps_adj_s_cmd); install_element (ENABLE_NODE, &show_bgp_instance_updgrps_adj_s_cmd); install_element (ENABLE_NODE, &show_bgp_updgrps_afi_adj_s_cmd); - install_element (ENABLE_NODE, &show_ip_bgp_instance_summary_cmd); install_element (ENABLE_NODE, &show_ip_bgp_instance_all_summary_cmd); - install_element (ENABLE_NODE, &show_ip_bgp_ipv4_summary_cmd); - install_element (ENABLE_NODE, &show_ip_bgp_instance_ipv4_summary_cmd); - install_element (ENABLE_NODE, &show_ip_bgp_vpnv4_all_summary_cmd); - install_element (ENABLE_NODE, &show_ip_bgp_vpnv4_rd_summary_cmd); -#ifdef HAVE_IPV6 - install_element (ENABLE_NODE, &show_bgp_summary_cmd); - install_element (ENABLE_NODE, &show_bgp_instance_summary_cmd); - install_element (ENABLE_NODE, &show_bgp_instance_all_summary_cmd); - install_element (ENABLE_NODE, &show_bgp_ipv6_safi_summary_cmd); - install_element (ENABLE_NODE, &show_bgp_instance_ipv6_safi_summary_cmd); -#endif /* HAVE_IPV6 */ - - install_element (VIEW_NODE, &show_bgp_ipv4_vpn_summary_cmd); - install_element (ENABLE_NODE, &show_bgp_ipv4_vpn_summary_cmd); - - install_element (VIEW_NODE, &show_bgp_ipv6_vpn_summary_cmd); - install_element (ENABLE_NODE, &show_bgp_ipv6_vpn_summary_cmd); /* "show ip bgp neighbors" commands. */ install_element (VIEW_NODE, &show_ip_bgp_neighbors_cmd); @@ -12113,15 +11870,6 @@ bgp_vty_init (void) install_element (ENABLE_NODE, &show_ip_bgp_instance_all_neighbors_cmd); install_element (ENABLE_NODE, &show_ip_bgp_instance_neighbors_peer_cmd); -#ifdef HAVE_IPV6 - - /* Old commands. */ - install_element (VIEW_NODE, &show_ipv6_bgp_summary_cmd); - install_element (VIEW_NODE, &show_ipv6_mbgp_summary_cmd); - install_element (ENABLE_NODE, &show_ipv6_bgp_summary_cmd); - install_element (ENABLE_NODE, &show_ipv6_mbgp_summary_cmd); -#endif /* HAVE_IPV6 */ - /* "show ip bgp peer-group" commands. */ install_element (VIEW_NODE, &show_ip_bgp_peer_groups_cmd); install_element (VIEW_NODE, &show_ip_bgp_instance_peer_groups_cmd); |