diff options
author | vivek <vivek@cumulusnetworks.com> | 2016-04-13 02:33:03 +0200 |
---|---|---|
committer | vivek <vivek@cumulusnetworks.com> | 2016-04-13 18:59:00 +0200 |
commit | f186de2680ae17f96f8532559cd41f96cc2f65e0 (patch) | |
tree | 00799e867a6702c60df2bf81a9228d83480ed105 /bgpd | |
parent | lib: Fix priviledge modification for vty group specified (diff) | |
download | frr-f186de2680ae17f96f8532559cd41f96cc2f65e0.tar.xz frr-f186de2680ae17f96f8532559cd41f96cc2f65e0.zip |
BGP: Implement key show commands for all VRFs
Key BGP 'show' commands have been expanded to support 'vrf all':
show ip bgp vrf all summary
show ip bgp vrf all neighbors
show ip bgp vrf all nexthop
show ip bgp vrf all update-group
show ip bgp vrf all
show bgp vrf all summary
show bgp vrf all update-group
show bgp vrf all
Signed-off-by: Vivek Venkatraman <vivek@cumulusnetworks.com>
Reviewed-by: Donald Sharp <sharpd@cumulusnetworks.com>
Reviewed-by: Don Slice <dslice@cumulusnetworks.com>
Ticket: CM-10402
Reviewed By: CCR-4466
Testing Done: Manual
Diffstat (limited to 'bgpd')
-rw-r--r-- | bgpd/bgp_nexthop.c | 65 | ||||
-rw-r--r-- | bgpd/bgp_route.c | 53 | ||||
-rw-r--r-- | bgpd/bgp_vty.c | 138 | ||||
-rw-r--r-- | bgpd/bgp_vty.h | 2 |
4 files changed, 245 insertions, 13 deletions
diff --git a/bgpd/bgp_nexthop.c b/bgpd/bgp_nexthop.c index 534f29de5..d959076e5 100644 --- a/bgpd/bgp_nexthop.c +++ b/bgpd/bgp_nexthop.c @@ -372,8 +372,8 @@ bgp_multiaccess_check_v4 (struct in_addr nexthop, struct peer *peer) return (ret); } -static int -show_ip_bgp_nexthop_table (struct vty *vty, const char *name, int detail) +static void +bgp_show_nexthops (struct vty *vty, struct bgp *bgp, int detail) { struct bgp_node *rn; struct bgp_nexthop_cache *bnc; @@ -381,17 +381,6 @@ show_ip_bgp_nexthop_table (struct vty *vty, const char *name, int detail) struct nexthop *nexthop; time_t tbuf; afi_t afi; - struct bgp *bgp; - - if (name) - bgp = bgp_lookup_by_name (name); - else - bgp = bgp_get_default (); - if (!bgp) - { - vty_out (vty, "%% No such BGP instance exist%s", VTY_NEWLINE); - return CMD_WARNING; - } vty_out (vty, "Current BGP nexthop cache:%s", VTY_NEWLINE); for (afi = AFI_IP ; afi < AFI_MAX ; afi++) @@ -459,9 +448,44 @@ show_ip_bgp_nexthop_table (struct vty *vty, const char *name, int detail) } } } +} + +static int +show_ip_bgp_nexthop_table (struct vty *vty, const char *name, int detail) +{ + struct bgp *bgp; + + if (name) + bgp = bgp_lookup_by_name (name); + else + bgp = bgp_get_default (); + if (!bgp) + { + vty_out (vty, "%% No such BGP instance exist%s", VTY_NEWLINE); + return CMD_WARNING; + } + + bgp_show_nexthops (vty, bgp, detail); + return CMD_SUCCESS; } +static void +bgp_show_all_instances_nexthops_vty (struct vty *vty) +{ + struct listnode *node, *nnode; + struct bgp *bgp; + + for (ALL_LIST_ELEMENTS (bm->bgp, node, nnode, bgp)) + { + vty_out (vty, "%sInstance %s:%s", + VTY_NEWLINE, + (bgp->inst_type == BGP_INSTANCE_TYPE_DEFAULT) ? "Default" : bgp->name, + VTY_NEWLINE); + bgp_show_nexthops (vty, bgp, 0); + } +} + DEFUN (show_ip_bgp_nexthop, show_ip_bgp_nexthop_cmd, "show ip bgp nexthop", @@ -496,6 +520,19 @@ DEFUN (show_ip_bgp_instance_nexthop, return show_ip_bgp_nexthop_table (vty, argv[1], 0); } +DEFUN (show_ip_bgp_instance_all_nexthop, + show_ip_bgp_instance_all_nexthop_cmd, + "show ip bgp " BGP_INSTANCE_ALL_CMD " nexthop", + SHOW_STR + IP_STR + BGP_STR + BGP_INSTANCE_ALL_HELP_STR + "BGP nexthop table\n") +{ + bgp_show_all_instances_nexthops_vty (vty); + return CMD_SUCCESS; +} + DEFUN (show_ip_bgp_instance_nexthop_detail, show_ip_bgp_instance_nexthop_detail_cmd, "show ip bgp " BGP_INSTANCE_CMD " nexthop detail", @@ -531,7 +568,9 @@ bgp_scan_vty_init (void) install_element (VIEW_NODE, &show_ip_bgp_nexthop_detail_cmd); install_element (ENABLE_NODE, &show_ip_bgp_nexthop_detail_cmd); install_element (ENABLE_NODE, &show_ip_bgp_instance_nexthop_cmd); + install_element (ENABLE_NODE, &show_ip_bgp_instance_all_nexthop_cmd); install_element (VIEW_NODE, &show_ip_bgp_instance_nexthop_cmd); + install_element (VIEW_NODE, &show_ip_bgp_instance_all_nexthop_cmd); install_element (VIEW_NODE, &show_ip_bgp_instance_nexthop_detail_cmd); install_element (ENABLE_NODE, &show_ip_bgp_instance_nexthop_detail_cmd); } diff --git a/bgpd/bgp_route.c b/bgpd/bgp_route.c index d745dfdfd..7a7504fbf 100644 --- a/bgpd/bgp_route.c +++ b/bgpd/bgp_route.c @@ -7291,6 +7291,26 @@ bgp_show (struct vty *vty, struct bgp *bgp, afi_t afi, safi_t safi, return bgp_show_table (vty, table, &bgp->router_id, type, output_arg, use_json); } +static void +bgp_show_all_instances_routes_vty (struct vty *vty, afi_t afi, safi_t safi, + u_char use_json) +{ + struct listnode *node, *nnode; + struct bgp *bgp; + struct bgp_table *table; + + for (ALL_LIST_ELEMENTS (bm->bgp, node, nnode, bgp)) + { + vty_out (vty, "%sInstance %s:%s", + VTY_NEWLINE, + (bgp->inst_type == BGP_INSTANCE_TYPE_DEFAULT) ? "Default" : bgp->name, + VTY_NEWLINE); + table = bgp->rib[afi][safi]; + bgp_show_table (vty, table, &bgp->router_id, + bgp_show_type_normal, NULL, use_json); + } +} + /* Header of detailed BGP route information */ static void route_vty_out_detail_header (struct vty *vty, struct bgp *bgp, @@ -7901,6 +7921,21 @@ DEFUN (show_ip_bgp_view, return bgp_show (vty, bgp, AFI_IP, SAFI_UNICAST, bgp_show_type_normal, NULL, use_json(argc, argv)); } +DEFUN (show_ip_bgp_instance_all, + show_ip_bgp_instance_all_cmd, + "show ip bgp " BGP_INSTANCE_ALL_CMD " {json}", + SHOW_STR + IP_STR + BGP_STR + BGP_INSTANCE_ALL_HELP_STR + "JavaScript Object Notation\n") +{ + u_char uj = use_json(argc, argv); + + bgp_show_all_instances_routes_vty (vty, AFI_IP, SAFI_UNICAST, uj); + return CMD_SUCCESS; +} + DEFUN (show_ip_bgp_instance_route, show_ip_bgp_instance_route_cmd, "show ip bgp " BGP_INSTANCE_CMD " A.B.C.D {json}", @@ -8259,6 +8294,20 @@ DEFUN (show_bgp_view, return bgp_show (vty, bgp, AFI_IP6, SAFI_UNICAST, bgp_show_type_normal, NULL, use_json(argc, argv)); } +DEFUN (show_bgp_instance_all, + show_bgp_instance_all_cmd, + "show bgp " BGP_INSTANCE_ALL_CMD " {json}", + SHOW_STR + BGP_STR + BGP_INSTANCE_ALL_HELP_STR + "JavaScript Object Notation\n") +{ + u_char uj = use_json(argc, argv); + + bgp_show_all_instances_routes_vty (vty, AFI_IP6, SAFI_UNICAST, uj); + return CMD_SUCCESS; +} + ALIAS (show_bgp_view, show_bgp_instance_ipv6_cmd, "show bgp " BGP_INSTANCE_CMD " ipv6 {json}", @@ -13974,6 +14023,7 @@ bgp_route_init (void) install_element (VIEW_NODE, &show_ip_bgp_cmd); install_element (VIEW_NODE, &show_ip_bgp_instance_cmd); + install_element (VIEW_NODE, &show_ip_bgp_instance_all_cmd); install_element (VIEW_NODE, &show_ip_bgp_ipv4_cmd); install_element (VIEW_NODE, &show_bgp_ipv4_safi_cmd); install_element (VIEW_NODE, &show_ip_bgp_route_cmd); @@ -14116,6 +14166,7 @@ bgp_route_init (void) install_element (ENABLE_NODE, &show_ip_bgp_cmd); install_element (ENABLE_NODE, &show_ip_bgp_instance_cmd); + install_element (ENABLE_NODE, &show_ip_bgp_instance_all_cmd); install_element (ENABLE_NODE, &show_ip_bgp_ipv4_cmd); install_element (ENABLE_NODE, &show_bgp_ipv4_safi_cmd); install_element (ENABLE_NODE, &show_ip_bgp_route_cmd); @@ -14313,6 +14364,7 @@ bgp_route_init (void) install_element (VIEW_NODE, &show_bgp_neighbor_damp_cmd); install_element (VIEW_NODE, &show_bgp_ipv6_neighbor_damp_cmd); install_element (VIEW_NODE, &show_bgp_instance_cmd); + install_element (VIEW_NODE, &show_bgp_instance_all_cmd); install_element (VIEW_NODE, &show_bgp_instance_ipv6_cmd); install_element (VIEW_NODE, &show_bgp_instance_route_cmd); install_element (VIEW_NODE, &show_bgp_instance_ipv6_route_cmd); @@ -14445,6 +14497,7 @@ bgp_route_init (void) install_element (ENABLE_NODE, &show_bgp_neighbor_damp_cmd); install_element (ENABLE_NODE, &show_bgp_ipv6_neighbor_damp_cmd); install_element (ENABLE_NODE, &show_bgp_instance_cmd); + install_element (ENABLE_NODE, &show_bgp_instance_all_cmd); install_element (ENABLE_NODE, &show_bgp_instance_ipv6_cmd); install_element (ENABLE_NODE, &show_bgp_instance_route_cmd); install_element (ENABLE_NODE, &show_bgp_instance_ipv6_route_cmd); diff --git a/bgpd/bgp_vty.c b/bgpd/bgp_vty.c index c1648c1c9..d54e1c7e4 100644 --- a/bgpd/bgp_vty.c +++ b/bgpd/bgp_vty.c @@ -10105,6 +10105,23 @@ bgp_show_summary_vty (struct vty *vty, const char *name, return CMD_SUCCESS; } +static void +bgp_show_all_instances_summary_vty (struct vty *vty, afi_t afi, safi_t safi, + u_char use_json) +{ + struct listnode *node, *nnode; + struct bgp *bgp; + + for (ALL_LIST_ELEMENTS (bm->bgp, node, nnode, bgp)) + { + vty_out (vty, "%sInstance %s:%s", + VTY_NEWLINE, + (bgp->inst_type == BGP_INSTANCE_TYPE_DEFAULT) ? "Default" : bgp->name, + VTY_NEWLINE); + bgp_show_summary (vty, bgp, afi, safi, use_json); + } +} + /* `show ip bgp summary' commands. */ DEFUN (show_ip_bgp_summary, show_ip_bgp_summary_cmd, @@ -10133,6 +10150,22 @@ DEFUN (show_ip_bgp_instance_summary, return bgp_show_summary_vty (vty, argv[1], AFI_IP, SAFI_UNICAST, uj); } +DEFUN (show_ip_bgp_instance_all_summary, + show_ip_bgp_instance_all_summary_cmd, + "show ip bgp " BGP_INSTANCE_ALL_CMD " 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; +} + DEFUN (show_ip_bgp_ipv4_summary, show_ip_bgp_ipv4_summary_cmd, "show ip bgp ipv4 (unicast|multicast) summary {json}", @@ -10260,6 +10293,21 @@ DEFUN (show_bgp_instance_summary, return bgp_show_summary_vty (vty, argv[1], AFI_IP6, SAFI_UNICAST, use_json(argc, argv)); } +DEFUN (show_bgp_instance_all_summary, + show_bgp_instance_all_summary_cmd, + "show bgp " BGP_INSTANCE_ALL_CMD " summary {json}", + SHOW_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_IP6, SAFI_UNICAST, uj); + return CMD_SUCCESS; +} + ALIAS (show_bgp_summary, show_bgp_ipv6_summary_cmd, "show bgp ipv6 summary {json}", @@ -12095,6 +12143,25 @@ bgp_show_neighbor_vty (struct vty *vty, const char *name, return CMD_SUCCESS; } +static void +bgp_show_all_instances_neighbors_vty (struct vty *vty, u_char use_json) +{ + struct listnode *node, *nnode; + struct bgp *bgp; + json_object *json = NULL; + + for (ALL_LIST_ELEMENTS (bm->bgp, node, nnode, bgp)) + { + vty_out (vty, "%sInstance %s:%s", + VTY_NEWLINE, + (bgp->inst_type == BGP_INSTANCE_TYPE_DEFAULT) ? "Default" : bgp->name, + VTY_NEWLINE); + if (use_json) + json = json_object_new_object(); + bgp_show_neighbor (vty, bgp, show_all, NULL, NULL, use_json, json); + } +} + /* "show ip bgp neighbors" commands. */ DEFUN (show_ip_bgp_neighbors, show_ip_bgp_neighbors_cmd, @@ -12256,6 +12323,22 @@ DEFUN (show_ip_bgp_instance_neighbors, return bgp_show_neighbor_vty (vty, argv[1], show_all, NULL, uj); } +DEFUN (show_ip_bgp_instance_all_neighbors, + show_ip_bgp_instance_all_neighbors_cmd, + "show ip bgp " BGP_INSTANCE_ALL_CMD " neighbors {json}", + SHOW_STR + IP_STR + BGP_STR + BGP_INSTANCE_ALL_HELP_STR + "Detailed information on TCP and BGP neighbor connections\n" + "JavaScript Object Notation\n") +{ + u_char uj = use_json(argc, argv); + + bgp_show_all_instances_neighbors_vty (vty, uj); + return CMD_SUCCESS; +} + ALIAS (show_ip_bgp_instance_neighbors, show_bgp_instance_neighbors_cmd, "show bgp " BGP_INSTANCE_CMD " neighbors {json}", @@ -12410,6 +12493,22 @@ static int bgp_show_update_groups(struct vty *vty, const char *name, return CMD_SUCCESS; } +static void +bgp_show_all_instances_updgrps_vty (struct vty *vty, afi_t afi, safi_t safi) +{ + struct listnode *node, *nnode; + struct bgp *bgp; + + for (ALL_LIST_ELEMENTS (bm->bgp, node, nnode, bgp)) + { + vty_out (vty, "%sInstance %s:%s", + VTY_NEWLINE, + (bgp->inst_type == BGP_INSTANCE_TYPE_DEFAULT) ? "Default" : bgp->name, + VTY_NEWLINE); + update_group_show(bgp, afi, safi, vty, 0); + } +} + DEFUN (show_ip_bgp_updgrps, show_ip_bgp_updgrps_cmd, "show ip bgp update-groups", @@ -12433,6 +12532,19 @@ DEFUN (show_ip_bgp_instance_updgrps, return (bgp_show_update_groups(vty, argv[1], AFI_IP, SAFI_UNICAST, 0)); } +DEFUN (show_ip_bgp_instance_all_updgrps, + show_ip_bgp_instance_all_updgrps_cmd, + "show ip bgp " BGP_INSTANCE_ALL_CMD " update-groups", + SHOW_STR + IP_STR + BGP_STR + BGP_INSTANCE_ALL_HELP_STR + "Detailed info about dynamic update groups\n") +{ + bgp_show_all_instances_updgrps_vty (vty, AFI_IP, SAFI_UNICAST); + return CMD_SUCCESS; +} + DEFUN (show_bgp_ipv6_updgrps, show_bgp_ipv6_updgrps_cmd, "show bgp update-groups", @@ -12454,6 +12566,18 @@ DEFUN (show_bgp_instance_ipv6_updgrps, return (bgp_show_update_groups(vty, argv[1], AFI_IP6, SAFI_UNICAST, 0)); } +DEFUN (show_bgp_instance_all_ipv6_updgrps, + show_bgp_instance_all_ipv6_updgrps_cmd, + "show bgp " BGP_INSTANCE_ALL_CMD " update-groups", + SHOW_STR + BGP_STR + BGP_INSTANCE_ALL_HELP_STR + "Detailed info about v6 dynamic update groups\n") +{ + bgp_show_all_instances_updgrps_vty (vty, AFI_IP6, SAFI_UNICAST); + return CMD_SUCCESS; +} + DEFUN (show_bgp_updgrps, show_bgp_updgrps_cmd, "show bgp (ipv4|ipv6) (unicast|multicast) update-groups", @@ -14889,9 +15013,11 @@ bgp_vty_init (void) install_element (VIEW_NODE, &show_ip_bgp_summary_cmd); install_element (VIEW_NODE, &show_ip_bgp_updgrps_cmd); install_element (VIEW_NODE, &show_ip_bgp_instance_updgrps_cmd); + install_element (VIEW_NODE, &show_ip_bgp_instance_all_updgrps_cmd); install_element (VIEW_NODE, &show_bgp_updgrps_cmd); install_element (VIEW_NODE, &show_bgp_ipv6_updgrps_cmd); install_element (VIEW_NODE, &show_bgp_instance_ipv6_updgrps_cmd); + install_element (VIEW_NODE, &show_bgp_instance_all_ipv6_updgrps_cmd); install_element (VIEW_NODE, &show_ip_bgp_updgrps_s_cmd); install_element (VIEW_NODE, &show_ip_bgp_instance_updgrps_s_cmd); install_element (VIEW_NODE, &show_bgp_updgrps_s_cmd); @@ -14908,6 +15034,7 @@ bgp_vty_init (void) 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_bgp_ipv4_safi_summary_cmd); install_element (VIEW_NODE, &show_ip_bgp_instance_ipv4_summary_cmd); @@ -14917,6 +15044,7 @@ bgp_vty_init (void) #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_summary_cmd); install_element (VIEW_NODE, &show_bgp_ipv6_safi_summary_cmd); install_element (VIEW_NODE, &show_bgp_instance_ipv6_summary_cmd); @@ -14925,9 +15053,11 @@ bgp_vty_init (void) 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); + install_element (RESTRICTED_NODE, &show_ip_bgp_instance_all_updgrps_cmd); install_element (RESTRICTED_NODE, &show_bgp_updgrps_cmd); install_element (RESTRICTED_NODE, &show_bgp_ipv6_updgrps_cmd); install_element (RESTRICTED_NODE, &show_bgp_instance_ipv6_updgrps_cmd); + install_element (RESTRICTED_NODE, &show_bgp_instance_all_ipv6_updgrps_cmd); install_element (RESTRICTED_NODE, &show_ip_bgp_updgrps_s_cmd); install_element (RESTRICTED_NODE, &show_ip_bgp_instance_updgrps_s_cmd); install_element (RESTRICTED_NODE, &show_bgp_updgrps_s_cmd); @@ -14944,6 +15074,7 @@ bgp_vty_init (void) 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_bgp_ipv4_safi_summary_cmd); install_element (RESTRICTED_NODE, &show_ip_bgp_instance_ipv4_summary_cmd); @@ -14953,6 +15084,7 @@ bgp_vty_init (void) #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_summary_cmd); install_element (RESTRICTED_NODE, &show_bgp_ipv6_safi_summary_cmd); install_element (RESTRICTED_NODE, &show_bgp_instance_ipv6_summary_cmd); @@ -14961,9 +15093,11 @@ bgp_vty_init (void) 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); + install_element (ENABLE_NODE, &show_ip_bgp_instance_all_updgrps_cmd); install_element (ENABLE_NODE, &show_bgp_updgrps_cmd); install_element (ENABLE_NODE, &show_bgp_ipv6_updgrps_cmd); install_element (ENABLE_NODE, &show_bgp_instance_ipv6_updgrps_cmd); + install_element (ENABLE_NODE, &show_bgp_instance_all_ipv6_updgrps_cmd); install_element (ENABLE_NODE, &show_ip_bgp_updgrps_s_cmd); install_element (ENABLE_NODE, &show_ip_bgp_instance_updgrps_s_cmd); install_element (ENABLE_NODE, &show_bgp_updgrps_s_cmd); @@ -14980,6 +15114,7 @@ bgp_vty_init (void) 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_bgp_ipv4_safi_summary_cmd); install_element (ENABLE_NODE, &show_ip_bgp_instance_ipv4_summary_cmd); @@ -14989,6 +15124,7 @@ bgp_vty_init (void) #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_summary_cmd); install_element (ENABLE_NODE, &show_bgp_ipv6_safi_summary_cmd); install_element (ENABLE_NODE, &show_bgp_instance_ipv6_summary_cmd); @@ -15005,6 +15141,7 @@ bgp_vty_init (void) install_element (VIEW_NODE, &show_ip_bgp_vpnv4_all_neighbors_peer_cmd); install_element (VIEW_NODE, &show_ip_bgp_vpnv4_rd_neighbors_peer_cmd); install_element (VIEW_NODE, &show_ip_bgp_instance_neighbors_cmd); + install_element (VIEW_NODE, &show_ip_bgp_instance_all_neighbors_cmd); install_element (VIEW_NODE, &show_ip_bgp_instance_neighbors_peer_cmd); install_element (RESTRICTED_NODE, &show_ip_bgp_neighbors_peer_cmd); install_element (RESTRICTED_NODE, &show_ip_bgp_ipv4_neighbors_peer_cmd); @@ -15020,6 +15157,7 @@ bgp_vty_init (void) install_element (ENABLE_NODE, &show_ip_bgp_vpnv4_all_neighbors_peer_cmd); install_element (ENABLE_NODE, &show_ip_bgp_vpnv4_rd_neighbors_peer_cmd); install_element (ENABLE_NODE, &show_ip_bgp_instance_neighbors_cmd); + 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 diff --git a/bgpd/bgp_vty.h b/bgpd/bgp_vty.h index 53456ffcd..16cda49f6 100644 --- a/bgpd/bgp_vty.h +++ b/bgpd/bgp_vty.h @@ -27,6 +27,8 @@ Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA #define DYNAMIC_NEIGHBOR_LIMIT_RANGE "<1-5000>" #define BGP_INSTANCE_CMD "(view|vrf) WORD" #define BGP_INSTANCE_HELP_STR "BGP view\nBGP VRF\nView/VRF name\n" +#define BGP_INSTANCE_ALL_CMD "(view|vrf) all" +#define BGP_INSTANCE_ALL_HELP_STR "BGP view\nBGP VRF\nAll Views/VRFs\n" extern void bgp_vty_init (void); extern const char *afi_safi_print (afi_t, safi_t); |