From: Daniel Walton <[email protected]>
Signed-off-by: Daniel Walton <[email protected]>
---
bgpd/bgp_route.c | 309 ++++++++++++++++++++++++++++++++++++++++++++++++-------
bgpd/bgp_route.h | 7 ++
2 files changed, 279 insertions(+), 37 deletions(-)
diff --git a/bgpd/bgp_route.c b/bgpd/bgp_route.c
index 9240497..972ec0e 100644
--- a/bgpd/bgp_route.c
+++ b/bgpd/bgp_route.c
@@ -6683,7 +6683,7 @@ static int
bgp_show_route_in_table (struct vty *vty, struct bgp *bgp,
struct bgp_table *rib, const char *ip_str,
afi_t afi, safi_t safi, struct prefix_rd *prd,
- int prefix_check)
+ int prefix_check, enum bgp_path_type pathtype)
{
int ret;
int header;
@@ -6733,7 +6733,12 @@ bgp_show_route_in_table (struct vty *vty, struct bgp
*bgp,
header = 0;
}
display++;
- route_vty_out_detail (vty, bgp, &rm->p, ri, AFI_IP,
SAFI_MPLS_VPN);
+
+ if (pathtype == BGP_PATH_ALL ||
+ (pathtype == BGP_PATH_BESTPATH && CHECK_FLAG
(ri->flags, BGP_INFO_SELECTED)) ||
+ (pathtype == BGP_PATH_MULTIPATH &&
+ (CHECK_FLAG (ri->flags, BGP_INFO_MULTIPATH) ||
CHECK_FLAG (ri->flags, BGP_INFO_SELECTED))))
+ route_vty_out_detail (vty, bgp, &rm->p, ri, AFI_IP,
SAFI_MPLS_VPN);
}
bgp_unlock_node (rm);
@@ -6757,7 +6762,12 @@ bgp_show_route_in_table (struct vty *vty, struct bgp
*bgp,
header = 0;
}
display++;
- route_vty_out_detail (vty, bgp, &rn->p, ri, afi, safi);
+
+ if (pathtype == BGP_PATH_ALL ||
+ (pathtype == BGP_PATH_BESTPATH && CHECK_FLAG (ri->flags,
BGP_INFO_SELECTED)) ||
+ (pathtype == BGP_PATH_MULTIPATH &&
+ (CHECK_FLAG (ri->flags, BGP_INFO_MULTIPATH) ||
CHECK_FLAG (ri->flags, BGP_INFO_SELECTED))))
+ route_vty_out_detail (vty, bgp, &rn->p, ri, afi, safi);
}
}
@@ -6778,7 +6788,7 @@ bgp_show_route_in_table (struct vty *vty, struct bgp *bgp,
static int
bgp_show_route (struct vty *vty, const char *view_name, const char *ip_str,
afi_t afi, safi_t safi, struct prefix_rd *prd,
- int prefix_check)
+ int prefix_check, enum bgp_path_type pathtype)
{
struct bgp *bgp;
@@ -6803,7 +6813,7 @@ bgp_show_route (struct vty *vty, const char *view_name,
const char *ip_str,
}
return bgp_show_route_in_table (vty, bgp, bgp->rib[afi][safi], ip_str,
- afi, safi, prd, prefix_check);
+ afi, safi, prd, prefix_check, pathtype);
}
/* BGP route print out function. */
@@ -6851,7 +6861,47 @@ DEFUN (show_ip_bgp_route,
BGP_STR
"Network in the BGP routing table to display\n")
{
- return bgp_show_route (vty, NULL, argv[0], AFI_IP, SAFI_UNICAST, NULL, 0);
+ return bgp_show_route (vty, NULL, argv[0], AFI_IP, SAFI_UNICAST, NULL, 0,
BGP_PATH_ALL);
+}
+
+DEFUN (show_ip_bgp_route_pathtype,
+ show_ip_bgp_route_pathtype_cmd,
+ "show ip bgp A.B.C.D (bestpath|multipath)",
+ SHOW_STR
+ IP_STR
+ BGP_STR
+ "IP prefix <network>/<length>, e.g., 35.0.0.0/8\n"
+ "Display only the bestpath\n"
+ "Display only multipaths\n")
+{
+ if (strncmp (argv[1], "b", 1) == 0)
+ return bgp_show_route (vty, NULL, argv[0], AFI_IP, SAFI_UNICAST, NULL, 0,
BGP_PATH_BESTPATH);
+ else
+ return bgp_show_route (vty, NULL, argv[0], AFI_IP, SAFI_UNICAST, NULL, 0,
BGP_PATH_MULTIPATH);
+}
+
+DEFUN (show_bgp_ipv4_safi_route_pathtype,
+ show_bgp_ipv4_safi_route_pathtype_cmd,
+ "show bgp ipv4 (unicast|multicast) A.B.C.D (bestpath|multipath)",
+ SHOW_STR
+ BGP_STR
+ "Address family\n"
+ "Address Family modifier\n"
+ "Address Family modifier\n"
+ "IP prefix <network>/<length>, e.g., 35.0.0.0/8\n"
+ "Display only the bestpath\n"
+ "Display only multipaths\n")
+{
+ 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);
+ else
+ return bgp_show_route (vty, NULL, argv[1], AFI_IP, SAFI_MULTICAST, NULL,
0, BGP_PATH_MULTIPATH);
+ 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);
+ else
+ return bgp_show_route (vty, NULL, argv[1], AFI_IP, SAFI_UNICAST, NULL,
0, BGP_PATH_MULTIPATH);
}
DEFUN (show_ip_bgp_ipv4_route,
@@ -6866,9 +6916,9 @@ DEFUN (show_ip_bgp_ipv4_route,
"Network in the BGP routing table to display\n")
{
if (strncmp (argv[0], "m", 1) == 0)
- return bgp_show_route (vty, NULL, argv[1], AFI_IP, SAFI_MULTICAST, NULL,
0);
+ return bgp_show_route (vty, NULL, argv[1], AFI_IP, SAFI_MULTICAST, NULL,
0, BGP_PATH_ALL);
- return bgp_show_route (vty, NULL, argv[1], AFI_IP, SAFI_UNICAST, NULL, 0);
+ return bgp_show_route (vty, NULL, argv[1], AFI_IP, SAFI_UNICAST, NULL, 0,
BGP_PATH_ALL);
}
ALIAS (show_ip_bgp_ipv4_route,
@@ -6891,9 +6941,10 @@ DEFUN (show_ip_bgp_vpnv4_all_route,
"Display information about all VPNv4 NLRIs\n"
"Network in the BGP routing table to display\n")
{
- return bgp_show_route (vty, NULL, argv[0], AFI_IP, SAFI_MPLS_VPN, NULL, 0);
+ return bgp_show_route (vty, NULL, argv[0], AFI_IP, SAFI_MPLS_VPN, NULL, 0,
BGP_PATH_ALL);
}
+
DEFUN (show_ip_bgp_vpnv4_rd_route,
show_ip_bgp_vpnv4_rd_route_cmd,
"show ip bgp vpnv4 rd ASN:nn_or_IP-address:nn A.B.C.D",
@@ -6914,7 +6965,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);
+ return bgp_show_route (vty, NULL, argv[1], AFI_IP, SAFI_MPLS_VPN, &prd, 0,
BGP_PATH_ALL);
}
DEFUN (show_ip_bgp_prefix,
@@ -6925,7 +6976,23 @@ DEFUN (show_ip_bgp_prefix,
BGP_STR
"IP prefix <network>/<length>, e.g., 35.0.0.0/8\n")
{
- return bgp_show_route (vty, NULL, argv[0], AFI_IP, SAFI_UNICAST, NULL, 1);
+ return bgp_show_route (vty, NULL, argv[0], AFI_IP, SAFI_UNICAST, NULL, 1,
BGP_PATH_ALL);
+}
+
+DEFUN (show_ip_bgp_prefix_pathtype,
+ show_ip_bgp_prefix_pathtype_cmd,
+ "show ip bgp A.B.C.D/M (bestpath|multipath)",
+ SHOW_STR
+ IP_STR
+ BGP_STR
+ "IP prefix <network>/<length>, e.g., 35.0.0.0/8\n"
+ "Display only the bestpath\n"
+ "Display only multipaths\n")
+{
+ if (strncmp (argv[1], "b", 1) == 0)
+ return bgp_show_route (vty, NULL, argv[0], AFI_IP, SAFI_UNICAST, NULL, 1,
BGP_PATH_BESTPATH);
+ else
+ return bgp_show_route (vty, NULL, argv[0], AFI_IP, SAFI_UNICAST, NULL, 1,
BGP_PATH_MULTIPATH);
}
DEFUN (show_ip_bgp_ipv4_prefix,
@@ -6940,9 +7007,9 @@ DEFUN (show_ip_bgp_ipv4_prefix,
"IP prefix <network>/<length>, e.g., 35.0.0.0/8\n")
{
if (strncmp (argv[0], "m", 1) == 0)
- return bgp_show_route (vty, NULL, argv[1], AFI_IP, SAFI_MULTICAST, NULL,
1);
+ return bgp_show_route (vty, NULL, argv[1], AFI_IP, SAFI_MULTICAST, NULL,
1, BGP_PATH_ALL);
- return bgp_show_route (vty, NULL, argv[1], AFI_IP, SAFI_UNICAST, NULL, 1);
+ return bgp_show_route (vty, NULL, argv[1], AFI_IP, SAFI_UNICAST, NULL, 1,
BGP_PATH_ALL);
}
ALIAS (show_ip_bgp_ipv4_prefix,
@@ -6955,6 +7022,43 @@ ALIAS (show_ip_bgp_ipv4_prefix,
"Address Family modifier\n"
"IP prefix <network>/<length>, e.g., 35.0.0.0/8\n")
+DEFUN (show_ip_bgp_ipv4_prefix_pathtype,
+ show_ip_bgp_ipv4_prefix_pathtype_cmd,
+ "show ip bgp ipv4 (unicast|multicast) A.B.C.D/M (bestpath|multipath)",
+ SHOW_STR
+ IP_STR
+ BGP_STR
+ "Address family\n"
+ "Address Family modifier\n"
+ "Address Family modifier\n"
+ "IP prefix <network>/<length>, e.g., 35.0.0.0/8\n"
+ "Display only the bestpath\n"
+ "Display only multipaths\n")
+{
+ 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);
+ else
+ return bgp_show_route (vty, NULL, argv[1], AFI_IP, SAFI_MULTICAST, NULL,
1, BGP_PATH_MULTIPATH);
+ 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);
+ else
+ return bgp_show_route (vty, NULL, argv[1], AFI_IP, SAFI_UNICAST, NULL,
1, BGP_PATH_MULTIPATH);
+}
+
+ALIAS (show_ip_bgp_ipv4_prefix_pathtype,
+ show_bgp_ipv4_safi_prefix_pathtype_cmd,
+ "show bgp ipv4 (unicast|multicast) A.B.C.D/M (bestpath|multipath)",
+ SHOW_STR
+ BGP_STR
+ "Address family\n"
+ "Address Family modifier\n"
+ "Address Family modifier\n"
+ "IP prefix <network>/<length>, e.g., 35.0.0.0/8\n"
+ "Display only the bestpath\n"
+ "Display only multipaths\n")
+
DEFUN (show_ip_bgp_vpnv4_all_prefix,
show_ip_bgp_vpnv4_all_prefix_cmd,
"show ip bgp vpnv4 all A.B.C.D/M",
@@ -6965,7 +7069,7 @@ DEFUN (show_ip_bgp_vpnv4_all_prefix,
"Display information about all VPNv4 NLRIs\n"
"IP prefix <network>/<length>, e.g., 35.0.0.0/8\n")
{
- return bgp_show_route (vty, NULL, argv[0], AFI_IP, SAFI_MPLS_VPN, NULL, 1);
+ return bgp_show_route (vty, NULL, argv[0], AFI_IP, SAFI_MPLS_VPN, NULL, 1,
BGP_PATH_ALL);
}
DEFUN (show_ip_bgp_vpnv4_rd_prefix,
@@ -6988,7 +7092,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, 1);
+ return bgp_show_route (vty, NULL, argv[1], AFI_IP, SAFI_MPLS_VPN, &prd, 1,
BGP_PATH_ALL);
}
DEFUN (show_ip_bgp_view,
@@ -7023,7 +7127,7 @@ DEFUN (show_ip_bgp_view_route,
"View name\n"
"Network in the BGP routing table to display\n")
{
- return bgp_show_route (vty, argv[0], argv[1], AFI_IP, SAFI_UNICAST, NULL, 0);
+ return bgp_show_route (vty, argv[0], argv[1], AFI_IP, SAFI_UNICAST, NULL, 0,
BGP_PATH_ALL);
}
DEFUN (show_ip_bgp_view_prefix,
@@ -7036,7 +7140,7 @@ DEFUN (show_ip_bgp_view_prefix,
"View name\n"
"IP prefix <network>/<length>, e.g., 35.0.0.0/8\n")
{
- return bgp_show_route (vty, argv[0], argv[1], AFI_IP, SAFI_UNICAST, NULL, 1);
+ return bgp_show_route (vty, argv[0], argv[1], AFI_IP, SAFI_UNICAST, NULL, 1,
BGP_PATH_ALL);
}
#ifdef HAVE_IPV6
@@ -7092,7 +7196,7 @@ DEFUN (show_bgp_route,
BGP_STR
"Network in the BGP routing table to display\n")
{
- return bgp_show_route (vty, NULL, argv[0], AFI_IP6, SAFI_UNICAST, NULL, 0);
+ return bgp_show_route (vty, NULL, argv[0], AFI_IP6, SAFI_UNICAST, NULL, 0,
BGP_PATH_ALL);
}
ALIAS (show_bgp_route,
@@ -7114,9 +7218,58 @@ DEFUN (show_bgp_ipv6_safi_route,
"Network in the BGP routing table to display\n")
{
if (strncmp (argv[0], "m", 1) == 0)
- return bgp_show_route (vty, NULL, argv[1], AFI_IP6, SAFI_MULTICAST, NULL,
0);
+ return bgp_show_route (vty, NULL, argv[1], AFI_IP6, SAFI_MULTICAST, NULL,
0, BGP_PATH_ALL);
- return bgp_show_route (vty, NULL, argv[1], AFI_IP6, SAFI_UNICAST, NULL, 0);
+ return bgp_show_route (vty, NULL, argv[1], AFI_IP6, SAFI_UNICAST, NULL, 0,
BGP_PATH_ALL);
+}
+
+DEFUN (show_bgp_route_pathtype,
+ show_bgp_route_pathtype_cmd,
+ "show bgp X:X::X:X (bestpath|multipath)",
+ SHOW_STR
+ BGP_STR
+ "Network in the BGP routing table to display\n"
+ "Display only the bestpath\n"
+ "Display only multipaths\n")
+{
+ if (strncmp (argv[1], "b", 1) == 0)
+ return bgp_show_route (vty, NULL, argv[0], AFI_IP6, SAFI_UNICAST, NULL, 0,
BGP_PATH_BESTPATH);
+ else
+ return bgp_show_route (vty, NULL, argv[0], AFI_IP6, SAFI_UNICAST, NULL, 0,
BGP_PATH_MULTIPATH);
+}
+
+ALIAS (show_bgp_route_pathtype,
+ show_bgp_ipv6_route_pathtype_cmd,
+ "show bgp ipv6 X:X::X:X (bestpath|multipath)",
+ SHOW_STR
+ BGP_STR
+ "Address family\n"
+ "Network in the BGP routing table to display\n"
+ "Display only the bestpath\n"
+ "Display only multipaths\n")
+
+DEFUN (show_bgp_ipv6_safi_route_pathtype,
+ show_bgp_ipv6_safi_route_pathtype_cmd,
+ "show bgp ipv6 (unicast|multicast) X:X::X:X (bestpath|multipath)",
+ SHOW_STR
+ BGP_STR
+ "Address family\n"
+ "Address Family modifier\n"
+ "Address Family modifier\n"
+ "Network in the BGP routing table to display\n"
+ "Display only the bestpath\n"
+ "Display only multipaths\n")
+{
+ 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);
+ else
+ return bgp_show_route (vty, NULL, argv[1], AFI_IP6, SAFI_MULTICAST,
NULL, 0, BGP_PATH_MULTIPATH);
+ 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);
+ else
+ return bgp_show_route (vty, NULL, argv[1], AFI_IP6, SAFI_UNICAST, NULL,
0, BGP_PATH_MULTIPATH);
}
/* old command */
@@ -7128,7 +7281,7 @@ DEFUN (show_ipv6_bgp_route,
BGP_STR
"Network in the BGP routing table to display\n")
{
- return bgp_show_route (vty, NULL, argv[0], AFI_IP6, SAFI_UNICAST, NULL, 0);
+ return bgp_show_route (vty, NULL, argv[0], AFI_IP6, SAFI_UNICAST, NULL, 0,
BGP_PATH_ALL);
}
DEFUN (show_bgp_prefix,
@@ -7138,7 +7291,7 @@ DEFUN (show_bgp_prefix,
BGP_STR
"IPv6 prefix <network>/<length>\n")
{
- return bgp_show_route (vty, NULL, argv[0], AFI_IP6, SAFI_UNICAST, NULL, 1);
+ return bgp_show_route (vty, NULL, argv[0], AFI_IP6, SAFI_UNICAST, NULL, 1,
BGP_PATH_ALL);
}
ALIAS (show_bgp_prefix,
@@ -7160,9 +7313,58 @@ DEFUN (show_bgp_ipv6_safi_prefix,
"IPv6 prefix <network>/<length>, e.g., 3ffe::/16\n")
{
if (strncmp (argv[0], "m", 1) == 0)
- return bgp_show_route (vty, NULL, argv[1], AFI_IP6, SAFI_MULTICAST, NULL,
1);
+ return bgp_show_route (vty, NULL, argv[1], AFI_IP6, SAFI_MULTICAST, NULL,
1, BGP_PATH_ALL);
- return bgp_show_route (vty, NULL, argv[1], AFI_IP6, SAFI_UNICAST, NULL, 1);
+ return bgp_show_route (vty, NULL, argv[1], AFI_IP6, SAFI_UNICAST, NULL, 1,
BGP_PATH_ALL);
+}
+
+DEFUN (show_bgp_prefix_pathtype,
+ show_bgp_prefix_pathtype_cmd,
+ "show bgp X:X::X:X/M (bestpath|multipath)",
+ SHOW_STR
+ BGP_STR
+ "IPv6 prefix <network>/<length>\n"
+ "Display only the bestpath\n"
+ "Display only multipaths\n")
+{
+ if (strncmp (argv[1], "b", 1) == 0)
+ return bgp_show_route (vty, NULL, argv[0], AFI_IP6, SAFI_UNICAST, NULL, 1,
BGP_PATH_BESTPATH);
+ else
+ return bgp_show_route (vty, NULL, argv[0], AFI_IP6, SAFI_UNICAST, NULL, 1,
BGP_PATH_MULTIPATH);
+}
+
+ALIAS (show_bgp_prefix_pathtype,
+ show_bgp_ipv6_prefix_pathtype_cmd,
+ "show bgp ipv6 X:X::X:X/M (bestpath|multipath)",
+ SHOW_STR
+ BGP_STR
+ "Address family\n"
+ "IPv6 prefix <network>/<length>\n"
+ "Display only the bestpath\n"
+ "Display only multipaths\n")
+
+DEFUN (show_bgp_ipv6_safi_prefix_pathtype,
+ show_bgp_ipv6_safi_prefix_pathtype_cmd,
+ "show bgp ipv6 (unicast|multicast) X:X::X:X/M (bestpath|multipath)",
+ SHOW_STR
+ BGP_STR
+ "Address family\n"
+ "Address Family modifier\n"
+ "Address Family modifier\n"
+ "IPv6 prefix <network>/<length>, e.g., 3ffe::/16\n"
+ "Display only the bestpath\n"
+ "Display only multipaths\n")
+{
+ 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);
+ else
+ return bgp_show_route (vty, NULL, argv[1], AFI_IP6, SAFI_MULTICAST,
NULL, 1, BGP_PATH_MULTIPATH);
+ 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);
+ else
+ return bgp_show_route (vty, NULL, argv[1], AFI_IP6, SAFI_UNICAST, NULL,
1, BGP_PATH_MULTIPATH);
}
/* old command */
@@ -7174,7 +7376,7 @@ DEFUN (show_ipv6_bgp_prefix,
BGP_STR
"IPv6 prefix <network>/<length>, e.g., 3ffe::/16\n")
{
- return bgp_show_route (vty, NULL, argv[0], AFI_IP6, SAFI_UNICAST, NULL, 1);
+ return bgp_show_route (vty, NULL, argv[0], AFI_IP6, SAFI_UNICAST, NULL, 1,
BGP_PATH_ALL);
}
DEFUN (show_bgp_view,
@@ -7216,7 +7418,7 @@ DEFUN (show_bgp_view_route,
"View name\n"
"Network in the BGP routing table to display\n")
{
- return bgp_show_route (vty, argv[0], argv[1], AFI_IP6, SAFI_UNICAST, NULL,
0);
+ return bgp_show_route (vty, argv[0], argv[1], AFI_IP6, SAFI_UNICAST, NULL,
0, BGP_PATH_ALL);
}
ALIAS (show_bgp_view_route,
@@ -7238,7 +7440,7 @@ DEFUN (show_bgp_view_prefix,
"View name\n"
"IPv6 prefix <network>/<length>\n")
{
- return bgp_show_route (vty, argv[0], argv[1], AFI_IP6, SAFI_UNICAST, NULL,
1);
+ return bgp_show_route (vty, argv[0], argv[1], AFI_IP6, SAFI_UNICAST, NULL,
1, BGP_PATH_ALL);
}
ALIAS (show_bgp_view_prefix,
@@ -7272,7 +7474,7 @@ DEFUN (show_ipv6_mbgp_route,
MBGP_STR
"Network in the MBGP routing table to display\n")
{
- return bgp_show_route (vty, NULL, argv[0], AFI_IP6, SAFI_MULTICAST, NULL, 0);
+ return bgp_show_route (vty, NULL, argv[0], AFI_IP6, SAFI_MULTICAST, NULL, 0,
BGP_PATH_ALL);
}
/* old command */
@@ -7284,7 +7486,7 @@ DEFUN (show_ipv6_mbgp_prefix,
MBGP_STR
"IPv6 prefix <network>/<length>, e.g., 3ffe::/16\n")
{
- return bgp_show_route (vty, NULL, argv[0], AFI_IP6, SAFI_MULTICAST, NULL, 1);
+ return bgp_show_route (vty, NULL, argv[0], AFI_IP6, SAFI_MULTICAST, NULL, 1,
BGP_PATH_ALL);
}
#endif
@@ -11083,7 +11285,7 @@ DEFUN (show_ip_bgp_view_rsclient_route,
return bgp_show_route_in_table (vty, bgp, peer->rib[AFI_IP][SAFI_UNICAST],
(argc == 3) ? argv[2] : argv[1],
- AFI_IP, SAFI_UNICAST, NULL, 0);
+ AFI_IP, SAFI_UNICAST, NULL, 0, BGP_PATH_ALL);
}
ALIAS (show_ip_bgp_view_rsclient_route,
@@ -11162,7 +11364,7 @@ DEFUN (show_bgp_view_ipv4_safi_rsclient_route,
return bgp_show_route_in_table (vty, bgp, peer->rib[AFI_IP][safi],
(argc == 4) ? argv[3] : argv[2],
- AFI_IP, safi, NULL, 0);
+ AFI_IP, safi, NULL, 0, BGP_PATH_ALL);
}
ALIAS (show_bgp_view_ipv4_safi_rsclient_route,
@@ -11237,7 +11439,7 @@ DEFUN (show_ip_bgp_view_rsclient_prefix,
return bgp_show_route_in_table (vty, bgp, peer->rib[AFI_IP][SAFI_UNICAST],
(argc == 3) ? argv[2] : argv[1],
- AFI_IP, SAFI_UNICAST, NULL, 1);
+ AFI_IP, SAFI_UNICAST, NULL, 1, BGP_PATH_ALL);
}
ALIAS (show_ip_bgp_view_rsclient_prefix,
@@ -11316,7 +11518,7 @@ DEFUN (show_bgp_view_ipv4_safi_rsclient_prefix,
return bgp_show_route_in_table (vty, bgp, peer->rib[AFI_IP][safi],
(argc == 4) ? argv[3] : argv[2],
- AFI_IP, safi, NULL, 1);
+ AFI_IP, safi, NULL, 1, BGP_PATH_ALL);
}
ALIAS (show_bgp_view_ipv4_safi_rsclient_prefix,
@@ -11729,7 +11931,7 @@ DEFUN (show_bgp_view_rsclient_route,
return bgp_show_route_in_table (vty, bgp, peer->rib[AFI_IP6][SAFI_UNICAST],
(argc == 3) ? argv[2] : argv[1],
- AFI_IP6, SAFI_UNICAST, NULL, 0);
+ AFI_IP6, SAFI_UNICAST, NULL, 0,
BGP_PATH_ALL);
}
ALIAS (show_bgp_view_rsclient_route,
@@ -11807,7 +12009,7 @@ DEFUN (show_bgp_view_ipv6_safi_rsclient_route,
return bgp_show_route_in_table (vty, bgp, peer->rib[AFI_IP6][safi],
(argc == 4) ? argv[3] : argv[2],
- AFI_IP6, safi, NULL, 0);
+ AFI_IP6, safi, NULL, 0, BGP_PATH_ALL);
}
ALIAS (show_bgp_view_ipv6_safi_rsclient_route,
@@ -11881,7 +12083,7 @@ DEFUN (show_bgp_view_rsclient_prefix,
return bgp_show_route_in_table (vty, bgp, peer->rib[AFI_IP6][SAFI_UNICAST],
(argc == 3) ? argv[2] : argv[1],
- AFI_IP6, SAFI_UNICAST, NULL, 1);
+ AFI_IP6, SAFI_UNICAST, NULL, 1,
BGP_PATH_ALL);
}
ALIAS (show_bgp_view_rsclient_prefix,
@@ -11959,7 +12161,7 @@ DEFUN (show_bgp_view_ipv6_safi_rsclient_prefix,
return bgp_show_route_in_table (vty, bgp, peer->rib[AFI_IP6][safi],
(argc == 4) ? argv[3] : argv[2],
- AFI_IP6, safi, NULL, 1);
+ AFI_IP6, safi, NULL, 1, BGP_PATH_ALL);
}
ALIAS (show_bgp_view_ipv6_safi_rsclient_prefix,
@@ -12839,13 +13041,18 @@ bgp_route_init (void)
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);
+ install_element (VIEW_NODE, &show_ip_bgp_route_pathtype_cmd);
+ install_element (VIEW_NODE, &show_bgp_ipv4_safi_route_pathtype_cmd);
install_element (VIEW_NODE, &show_ip_bgp_ipv4_route_cmd);
install_element (VIEW_NODE, &show_bgp_ipv4_safi_route_cmd);
install_element (VIEW_NODE, &show_ip_bgp_vpnv4_all_route_cmd);
install_element (VIEW_NODE, &show_ip_bgp_vpnv4_rd_route_cmd);
install_element (VIEW_NODE, &show_ip_bgp_prefix_cmd);
install_element (VIEW_NODE, &show_ip_bgp_ipv4_prefix_cmd);
+ install_element (VIEW_NODE, &show_ip_bgp_ipv4_prefix_pathtype_cmd);
+ install_element (VIEW_NODE, &show_bgp_ipv4_safi_prefix_pathtype_cmd);
install_element (VIEW_NODE, &show_bgp_ipv4_safi_prefix_cmd);
+ install_element (VIEW_NODE, &show_ip_bgp_prefix_pathtype_cmd);
install_element (VIEW_NODE, &show_ip_bgp_vpnv4_all_prefix_cmd);
install_element (VIEW_NODE, &show_ip_bgp_vpnv4_rd_prefix_cmd);
install_element (VIEW_NODE, &show_ip_bgp_view_cmd);
@@ -12937,12 +13144,17 @@ bgp_route_init (void)
/* Restricted node: VIEW_NODE - (set of dangerous commands) */
install_element (RESTRICTED_NODE, &show_ip_bgp_route_cmd);
+ install_element (RESTRICTED_NODE, &show_ip_bgp_route_pathtype_cmd);
+ install_element (RESTRICTED_NODE, &show_bgp_ipv4_safi_route_pathtype_cmd);
install_element (RESTRICTED_NODE, &show_ip_bgp_ipv4_route_cmd);
install_element (RESTRICTED_NODE, &show_bgp_ipv4_safi_route_cmd);
install_element (RESTRICTED_NODE, &show_ip_bgp_vpnv4_rd_route_cmd);
install_element (RESTRICTED_NODE, &show_ip_bgp_prefix_cmd);
install_element (RESTRICTED_NODE, &show_ip_bgp_ipv4_prefix_cmd);
+ install_element (RESTRICTED_NODE, &show_ip_bgp_ipv4_prefix_pathtype_cmd);
+ install_element (RESTRICTED_NODE, &show_bgp_ipv4_safi_prefix_pathtype_cmd);
install_element (RESTRICTED_NODE, &show_bgp_ipv4_safi_prefix_cmd);
+ install_element (RESTRICTED_NODE, &show_ip_bgp_prefix_pathtype_cmd);
install_element (RESTRICTED_NODE, &show_ip_bgp_vpnv4_all_prefix_cmd);
install_element (RESTRICTED_NODE, &show_ip_bgp_vpnv4_rd_prefix_cmd);
install_element (RESTRICTED_NODE, &show_ip_bgp_view_route_cmd);
@@ -12981,13 +13193,18 @@ bgp_route_init (void)
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);
+ install_element (ENABLE_NODE, &show_ip_bgp_route_pathtype_cmd);
+ install_element (ENABLE_NODE, &show_bgp_ipv4_safi_route_pathtype_cmd);
install_element (ENABLE_NODE, &show_ip_bgp_ipv4_route_cmd);
install_element (ENABLE_NODE, &show_bgp_ipv4_safi_route_cmd);
install_element (ENABLE_NODE, &show_ip_bgp_vpnv4_all_route_cmd);
install_element (ENABLE_NODE, &show_ip_bgp_vpnv4_rd_route_cmd);
install_element (ENABLE_NODE, &show_ip_bgp_prefix_cmd);
install_element (ENABLE_NODE, &show_ip_bgp_ipv4_prefix_cmd);
+ install_element (ENABLE_NODE, &show_ip_bgp_ipv4_prefix_pathtype_cmd);
+ install_element (ENABLE_NODE, &show_bgp_ipv4_safi_prefix_pathtype_cmd);
install_element (ENABLE_NODE, &show_bgp_ipv4_safi_prefix_cmd);
+ install_element (ENABLE_NODE, &show_ip_bgp_prefix_pathtype_cmd);
install_element (ENABLE_NODE, &show_ip_bgp_vpnv4_all_prefix_cmd);
install_element (ENABLE_NODE, &show_ip_bgp_vpnv4_rd_prefix_cmd);
install_element (ENABLE_NODE, &show_ip_bgp_view_cmd);
@@ -13123,9 +13340,15 @@ bgp_route_init (void)
install_element (VIEW_NODE, &show_bgp_route_cmd);
install_element (VIEW_NODE, &show_bgp_ipv6_route_cmd);
install_element (VIEW_NODE, &show_bgp_ipv6_safi_route_cmd);
+ install_element (VIEW_NODE, &show_bgp_route_pathtype_cmd);
+ install_element (VIEW_NODE, &show_bgp_ipv6_route_pathtype_cmd);
+ install_element (VIEW_NODE, &show_bgp_ipv6_safi_route_pathtype_cmd);
install_element (VIEW_NODE, &show_bgp_prefix_cmd);
install_element (VIEW_NODE, &show_bgp_ipv6_prefix_cmd);
install_element (VIEW_NODE, &show_bgp_ipv6_safi_prefix_cmd);
+ install_element (VIEW_NODE, &show_bgp_prefix_pathtype_cmd);
+ install_element (VIEW_NODE, &show_bgp_ipv6_prefix_pathtype_cmd);
+ install_element (VIEW_NODE, &show_bgp_ipv6_safi_prefix_pathtype_cmd);
install_element (VIEW_NODE, &show_bgp_regexp_cmd);
install_element (VIEW_NODE, &show_bgp_ipv6_regexp_cmd);
install_element (VIEW_NODE, &show_bgp_prefix_list_cmd);
@@ -13207,9 +13430,15 @@ bgp_route_init (void)
install_element (RESTRICTED_NODE, &show_bgp_route_cmd);
install_element (RESTRICTED_NODE, &show_bgp_ipv6_route_cmd);
install_element (RESTRICTED_NODE, &show_bgp_ipv6_safi_route_cmd);
+ install_element (RESTRICTED_NODE, &show_bgp_route_pathtype_cmd);
+ install_element (RESTRICTED_NODE, &show_bgp_ipv6_route_pathtype_cmd);
+ install_element (RESTRICTED_NODE, &show_bgp_ipv6_safi_route_pathtype_cmd);
install_element (RESTRICTED_NODE, &show_bgp_prefix_cmd);
install_element (RESTRICTED_NODE, &show_bgp_ipv6_prefix_cmd);
install_element (RESTRICTED_NODE, &show_bgp_ipv6_safi_prefix_cmd);
+ install_element (RESTRICTED_NODE, &show_bgp_prefix_pathtype_cmd);
+ install_element (RESTRICTED_NODE, &show_bgp_ipv6_prefix_pathtype_cmd);
+ install_element (RESTRICTED_NODE, &show_bgp_ipv6_safi_prefix_pathtype_cmd);
install_element (RESTRICTED_NODE, &show_bgp_community_cmd);
install_element (RESTRICTED_NODE, &show_bgp_ipv6_community_cmd);
install_element (RESTRICTED_NODE, &show_bgp_community2_cmd);
@@ -13247,7 +13476,13 @@ bgp_route_init (void)
install_element (ENABLE_NODE, &show_bgp_route_cmd);
install_element (ENABLE_NODE, &show_bgp_ipv6_route_cmd);
install_element (ENABLE_NODE, &show_bgp_ipv6_safi_route_cmd);
+ install_element (ENABLE_NODE, &show_bgp_route_pathtype_cmd);
+ install_element (ENABLE_NODE, &show_bgp_ipv6_route_pathtype_cmd);
+ install_element (ENABLE_NODE, &show_bgp_ipv6_safi_route_pathtype_cmd);
install_element (ENABLE_NODE, &show_bgp_prefix_cmd);
+ install_element (ENABLE_NODE, &show_bgp_prefix_pathtype_cmd);
+ install_element (ENABLE_NODE, &show_bgp_ipv6_prefix_pathtype_cmd);
+ install_element (ENABLE_NODE, &show_bgp_ipv6_safi_prefix_pathtype_cmd);
install_element (ENABLE_NODE, &show_bgp_ipv6_prefix_cmd);
install_element (ENABLE_NODE, &show_bgp_ipv6_safi_prefix_cmd);
install_element (ENABLE_NODE, &show_bgp_regexp_cmd);
diff --git a/bgpd/bgp_route.h b/bgpd/bgp_route.h
index a97fe11..399d5e0 100644
--- a/bgpd/bgp_route.h
+++ b/bgpd/bgp_route.h
@@ -185,6 +185,13 @@ enum bgp_clear_route_type
BGP_CLEAR_ROUTE_MY_RSCLIENT
};
+enum bgp_path_type
+{
+ BGP_PATH_ALL,
+ BGP_PATH_BESTPATH,
+ BGP_PATH_MULTIPATH
+};
+
/* Prototypes. */
extern void bgp_process_queue_init (void);
extern void bgp_route_init (void);
--
1.9.1
_______________________________________________
Quagga-dev mailing list
[email protected]
https://lists.quagga.net/mailman/listinfo/quagga-dev