diff options
Diffstat (limited to 'bgpd/bgp_route.c')
| -rw-r--r-- | bgpd/bgp_route.c | 194 |
1 files changed, 111 insertions, 83 deletions
diff --git a/bgpd/bgp_route.c b/bgpd/bgp_route.c index 7762af1b34..01120ef44a 100644 --- a/bgpd/bgp_route.c +++ b/bgpd/bgp_route.c @@ -12464,6 +12464,8 @@ DEFPY(show_ip_bgp, show_ip_bgp_cmd, output_arg, show_flags, rpki_target_state); } else { + struct listnode *node; + struct bgp *abgp; /* show <ip> bgp ipv4 all: AFI_IP, show <ip> bgp ipv6 all: * AFI_IP6 */ @@ -12475,66 +12477,80 @@ DEFPY(show_ip_bgp, show_ip_bgp_cmd, afi = CHECK_FLAG(show_flags, BGP_SHOW_OPT_AFI_IP) ? AFI_IP : AFI_IP6; - FOREACH_SAFI (safi) { - if (!bgp_afi_safi_peer_exists(bgp, afi, safi)) - continue; + for (ALL_LIST_ELEMENTS_RO(bm->bgp, node, abgp)) { + FOREACH_SAFI (safi) { + if (!bgp_afi_safi_peer_exists(abgp, afi, + safi)) + continue; - if (uj) { - if (first) - first = false; + if (uj) { + if (first) + first = false; + else + vty_out(vty, ",\n"); + vty_out(vty, "\"%s\":{\n", + get_afi_safi_str(afi, + safi, + true)); + } else + vty_out(vty, + "\nFor address family: %s\n", + get_afi_safi_str( + afi, safi, + false)); + + if (community) + bgp_show_community( + vty, abgp, community, + exact_match, afi, safi, + show_flags); else - vty_out(vty, ",\n"); - vty_out(vty, "\"%s\":{\n", - get_afi_safi_str(afi, safi, - true)); - } else - vty_out(vty, - "\nFor address family: %s\n", - get_afi_safi_str(afi, safi, - false)); - - if (community) - bgp_show_community(vty, bgp, community, - exact_match, afi, - safi, show_flags); - else - bgp_show(vty, bgp, afi, safi, sh_type, - output_arg, show_flags, - rpki_target_state); - if (uj) - vty_out(vty, "}\n"); + bgp_show(vty, abgp, afi, safi, + sh_type, output_arg, + show_flags, + rpki_target_state); + if (uj) + vty_out(vty, "}\n"); + } } } else { /* show <ip> bgp all: for each AFI and SAFI*/ - FOREACH_AFI_SAFI (afi, safi) { - if (!bgp_afi_safi_peer_exists(bgp, afi, safi)) - continue; - - if (uj) { - if (first) - first = false; - else - vty_out(vty, ",\n"); + for (ALL_LIST_ELEMENTS_RO(bm->bgp, node, abgp)) { + FOREACH_AFI_SAFI (afi, safi) { + if (!bgp_afi_safi_peer_exists(abgp, afi, + safi)) + continue; - vty_out(vty, "\"%s\":{\n", - get_afi_safi_str(afi, safi, - true)); - } else - vty_out(vty, - "\nFor address family: %s\n", - get_afi_safi_str(afi, safi, - false)); + if (uj) { + if (first) + first = false; + else + vty_out(vty, ",\n"); - if (community) - bgp_show_community(vty, bgp, community, - exact_match, afi, - safi, show_flags); - else - bgp_show(vty, bgp, afi, safi, sh_type, - output_arg, show_flags, - rpki_target_state); - if (uj) - vty_out(vty, "}\n"); + vty_out(vty, "\"%s\":{\n", + get_afi_safi_str(afi, + safi, + true)); + } else + vty_out(vty, + "\nFor address family: %s\n", + get_afi_safi_str( + afi, safi, + false)); + + if (community) + bgp_show_community( + vty, abgp, community, + exact_match, afi, safi, + show_flags); + else + bgp_show(vty, abgp, afi, safi, + sh_type, output_arg, + show_flags, + rpki_target_state); + if (uj) + vty_out(vty, "}\n"); + } } } if (uj) @@ -13962,6 +13978,8 @@ DEFPY (show_ip_bgp_instance_neighbor_advertised_route, int idx = 0; bool first = true; uint16_t show_flags = 0; + struct listnode *node; + struct bgp *abgp; if (uj) { argc--; @@ -14013,42 +14031,52 @@ DEFPY (show_ip_bgp_instance_neighbor_advertised_route, || CHECK_FLAG(show_flags, BGP_SHOW_OPT_AFI_IP6)) { afi = CHECK_FLAG(show_flags, BGP_SHOW_OPT_AFI_IP) ? AFI_IP : AFI_IP6; - FOREACH_SAFI (safi) { - if (!bgp_afi_safi_peer_exists(bgp, afi, safi)) - continue; + for (ALL_LIST_ELEMENTS_RO(bm->bgp, node, abgp)) { + FOREACH_SAFI (safi) { + if (!bgp_afi_safi_peer_exists(abgp, afi, safi)) + continue; - if (uj) { - if (first) - first = false; - else - vty_out(vty, ",\n"); - vty_out(vty, "\"%s\":", - get_afi_safi_str(afi, safi, true)); - } else - vty_out(vty, "\nFor address family: %s\n", - get_afi_safi_str(afi, safi, false)); + if (uj) { + if (first) + first = false; + else + vty_out(vty, ",\n"); + vty_out(vty, "\"%s\":", + get_afi_safi_str(afi, safi, + true)); + } else + vty_out(vty, + "\nFor address family: %s\n", + get_afi_safi_str(afi, safi, + false)); - peer_adj_routes(vty, peer, afi, safi, type, rmap_name, - show_flags); + peer_adj_routes(vty, peer, afi, safi, type, + rmap_name, show_flags); + } } } else { - FOREACH_AFI_SAFI (afi, safi) { - if (!bgp_afi_safi_peer_exists(bgp, afi, safi)) - continue; + for (ALL_LIST_ELEMENTS_RO(bm->bgp, node, abgp)) { + FOREACH_AFI_SAFI (afi, safi) { + if (!bgp_afi_safi_peer_exists(abgp, afi, safi)) + continue; - if (uj) { - if (first) - first = false; - else - vty_out(vty, ",\n"); - vty_out(vty, "\"%s\":", - get_afi_safi_str(afi, safi, true)); - } else - vty_out(vty, "\nFor address family: %s\n", - get_afi_safi_str(afi, safi, false)); + if (uj) { + if (first) + first = false; + else + vty_out(vty, ",\n"); + vty_out(vty, "\"%s\":", + get_afi_safi_str(afi, safi, + true)); + } else + vty_out(vty, + "\nFor address family: %s\n", + get_afi_safi_str(afi, safi, + false)); - peer_adj_routes(vty, peer, afi, safi, type, rmap_name, - show_flags); + peer_adj_routes(vty, peer, afi, safi, type, + rmap_name, show_flags); + } } } if (uj) |
