summaryrefslogtreecommitdiff
path: root/bgpd/bgp_route.c
diff options
context:
space:
mode:
Diffstat (limited to 'bgpd/bgp_route.c')
-rw-r--r--bgpd/bgp_route.c194
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)