summaryrefslogtreecommitdiff
path: root/bgpd
diff options
context:
space:
mode:
Diffstat (limited to 'bgpd')
-rw-r--r--bgpd/bgp_route.c672
-rw-r--r--bgpd/bgp_vty.c52
2 files changed, 629 insertions, 95 deletions
diff --git a/bgpd/bgp_route.c b/bgpd/bgp_route.c
index 9259f5a6..5c2fad49 100644
--- a/bgpd/bgp_route.c
+++ b/bgpd/bgp_route.c
@@ -4558,10 +4558,9 @@ bgp_show_callback (struct vty *vty, int unlock)
}
int
-bgp_show (struct vty *vty, char *view_name, afi_t afi, safi_t safi,
+bgp_show (struct vty *vty, struct bgp *bgp, afi_t afi, safi_t safi,
enum bgp_show_type type)
{
- struct bgp *bgp;
struct bgp_info *ri;
struct bgp_node *rn;
struct bgp_table *table;
@@ -4575,24 +4574,14 @@ bgp_show (struct vty *vty, char *view_name, afi_t afi, safi_t safi,
? vty->lines : vty->height - 2));
limit = limit > 0 ? limit : 2;
- /* BGP structure lookup. */
- if (view_name)
- {
- bgp = bgp_lookup_by_name (view_name);
- if (bgp == NULL)
- {
- vty_out (vty, "Can't find BGP view %s%s", view_name, VTY_NEWLINE);
- return CMD_WARNING;
- }
- }
- else
+ if (bgp == NULL) {
+ bgp = bgp_get_default ();
+ }
+
+ if (bgp == NULL)
{
- bgp = bgp_get_default ();
- if (bgp == NULL)
- {
- vty_out (vty, "No BGP process is configured%s", VTY_NEWLINE);
- return CMD_WARNING;
- }
+ vty_out (vty, "No BGP process is configured%s", VTY_NEWLINE);
+ return CMD_WARNING;
}
count = 0;
@@ -5190,7 +5179,17 @@ DEFUN (show_ip_bgp_view,
"BGP view\n"
"BGP view name\n")
{
- return bgp_show (vty, argv[0], AFI_IP, SAFI_UNICAST, bgp_show_type_normal);
+ struct bgp *bgp;
+
+ /* BGP structure lookup. */
+ bgp = bgp_lookup_by_name (argv[0]);
+ if (bgp == NULL)
+ {
+ vty_out (vty, "Can't find BGP view %s%s", argv[0], VTY_NEWLINE);
+ return CMD_WARNING;
+ }
+
+ return bgp_show (vty, bgp, AFI_IP, SAFI_UNICAST, bgp_show_type_normal);
}
DEFUN (show_ip_bgp_view_route,
@@ -5307,6 +5306,80 @@ DEFUN (show_ipv6_bgp_prefix,
return bgp_show_route (vty, NULL, argv[0], AFI_IP6, SAFI_UNICAST, NULL, 1);
}
+DEFUN (show_bgp_view,
+ show_bgp_view_cmd,
+ "show bgp view WORD",
+ SHOW_STR
+ BGP_STR
+ "BGP view\n"
+ "View name\n")
+{
+ struct bgp *bgp;
+
+ /* BGP structure lookup. */
+ bgp = bgp_lookup_by_name (argv[0]);
+ if (bgp == NULL)
+ {
+ vty_out (vty, "Can't find BGP view %s%s", argv[0], VTY_NEWLINE);
+ return CMD_WARNING;
+ }
+
+ return bgp_show (vty, bgp, AFI_IP6, SAFI_UNICAST, bgp_show_type_normal);
+}
+
+ALIAS (show_bgp_view,
+ show_bgp_view_ipv6_cmd,
+ "show bgp view WORD ipv6",
+ SHOW_STR
+ BGP_STR
+ "BGP view\n"
+ "View name\n"
+ "Address family\n")
+
+DEFUN (show_bgp_view_route,
+ show_bgp_view_route_cmd,
+ "show bgp view WORD X:X::X:X",
+ SHOW_STR
+ BGP_STR
+ "BGP view\n"
+ "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);
+}
+
+ALIAS (show_bgp_view_route,
+ show_bgp_view_ipv6_route_cmd,
+ "show bgp view WORD ipv6 X:X::X:X",
+ SHOW_STR
+ BGP_STR
+ "BGP view\n"
+ "View name\n"
+ "Address family\n"
+ "Network in the BGP routing table to display\n")
+
+DEFUN (show_bgp_view_prefix,
+ show_bgp_view_prefix_cmd,
+ "show bgp view WORD X:X::X:X/M",
+ SHOW_STR
+ BGP_STR
+ "BGP view\n"
+ "View name\n"
+ "IPv6 prefix <network>/<length>\n")
+{
+ return bgp_show_route (vty, argv[0], argv[1], AFI_IP6, SAFI_UNICAST, NULL, 1);
+}
+
+ALIAS (show_bgp_view_prefix,
+ show_bgp_view_ipv6_prefix_cmd,
+ "show bgp view WORD ipv6 X:X::X:X/M",
+ SHOW_STR
+ BGP_STR
+ "BGP view\n"
+ "View name\n"
+ "Address family\n"
+ "IPv6 prefix <network>/<length>\n")
+
/* old command */
DEFUN (show_ipv6_mbgp,
show_ipv6_mbgp_cmd,
@@ -7271,7 +7344,54 @@ DEFUN (show_ipv6_mbgp_prefix_longer,
bgp_show_type_prefix_longer);
}
#endif /* HAVE_IPV6 */
-
+
+struct peer *
+peer_lookup_in_view (struct vty *vty, char *view_name, char *ip_str)
+{
+ int ret;
+ struct bgp *bgp;
+ struct peer *peer;
+ union sockunion su;
+
+ /* BGP structure lookup. */
+ if (view_name)
+ {
+ bgp = bgp_lookup_by_name (view_name);
+ if (! bgp)
+ {
+ vty_out (vty, "Can't find BGP view %s%s", view_name, VTY_NEWLINE);
+ return NULL;
+ }
+ }
+ else // view_name==NULL
+ {
+ bgp = bgp_get_default ();
+ if (! bgp)
+ {
+ vty_out (vty, "No BGP process is configured%s", VTY_NEWLINE);
+ return NULL;
+ }
+ }
+
+ /* Get peer sockunion. */
+ ret = str2sockunion (ip_str, &su);
+ if (ret < 0)
+ {
+ vty_out (vty, "Malformed address: %s%s", ip_str, VTY_NEWLINE);
+ return NULL;
+ }
+
+ /* Peer structure lookup. */
+ peer = peer_lookup (bgp, &su);
+ if (! peer)
+ {
+ vty_out (vty, "No such neighbor%s", VTY_NEWLINE);
+ return NULL;
+ }
+
+ return peer;
+}
+
void
show_adj_route (struct vty *vty, struct peer *peer, afi_t afi, safi_t safi,
int in)
@@ -7285,7 +7405,7 @@ show_adj_route (struct vty *vty, struct peer *peer, afi_t afi, safi_t safi,
struct bgp *bgp;
int header2 = 1;
- bgp = bgp_get_default ();
+ bgp = peer->bgp;
if (! bgp)
return;
@@ -7362,19 +7482,8 @@ show_adj_route (struct vty *vty, struct peer *peer, afi_t afi, safi_t safi,
}
int
-peer_adj_routes (struct vty *vty, char *ip_str, afi_t afi, safi_t safi, int in)
-{
- int ret;
- struct peer *peer;
- union sockunion su;
-
- ret = str2sockunion (ip_str, &su);
- if (ret < 0)
- {
- vty_out (vty, "Malformed address: %s%s", ip_str, VTY_NEWLINE);
- return CMD_WARNING;
- }
- peer = peer_lookup (NULL, &su);
+peer_adj_routes (struct vty *vty, struct peer *peer, afi_t afi, safi_t safi, int in)
+{
if (! peer || ! peer->afc[afi][safi])
{
vty_out (vty, "%% No such neighbor or address family%s", VTY_NEWLINE);
@@ -7404,7 +7513,13 @@ DEFUN (show_ip_bgp_neighbor_advertised_route,
"Neighbor to display information about\n"
"Display the routes advertised to a BGP neighbor\n")
{
- return peer_adj_routes (vty, argv[0], AFI_IP, SAFI_UNICAST, 0);
+ struct peer *peer;
+
+ peer = peer_lookup_in_view (vty, NULL, argv[0]);
+ if (! peer)
+ return CMD_WARNING;
+
+ return peer_adj_routes (vty, peer, AFI_IP, SAFI_UNICAST, 0);
}
DEFUN (show_ip_bgp_ipv4_neighbor_advertised_route,
@@ -7421,27 +7536,106 @@ DEFUN (show_ip_bgp_ipv4_neighbor_advertised_route,
"Neighbor to display information about\n"
"Display the routes advertised to a BGP neighbor\n")
{
+ struct peer *peer;
+
+ peer = peer_lookup_in_view (vty, NULL, argv[1]);
+ if (! peer)
+ return CMD_WARNING;
+
if (strncmp (argv[0], "m", 1) == 0)
- return peer_adj_routes (vty, argv[1], AFI_IP, SAFI_MULTICAST, 0);
+ return peer_adj_routes (vty, peer, AFI_IP, SAFI_MULTICAST, 0);
- return peer_adj_routes (vty, argv[1], AFI_IP, SAFI_UNICAST, 0);
+ return peer_adj_routes (vty, peer, AFI_IP, SAFI_UNICAST, 0);
}
#ifdef HAVE_IPV6
-DEFUN (show_bgp_neighbor_advertised_route,
- show_bgp_neighbor_advertised_route_cmd,
- "show bgp neighbors (A.B.C.D|X:X::X:X) advertised-routes",
+DEFUN (show_bgp_view_neighbor_advertised_route,
+ show_bgp_view_neighbor_advertised_route_cmd,
+ "show bgp view WORD neighbors (A.B.C.D|X:X::X:X) advertised-routes",
SHOW_STR
BGP_STR
+ "BGP view\n"
+ "View name\n"
"Detailed information on TCP and BGP neighbor connections\n"
"Neighbor to display information about\n"
"Neighbor to display information about\n"
"Display the routes advertised to a BGP neighbor\n")
{
- return peer_adj_routes (vty, argv[0], AFI_IP6, SAFI_UNICAST, 0);
+ struct peer *peer;
+
+ if (argc == 2)
+ peer = peer_lookup_in_view (vty, argv[0], argv[1]);
+ else
+ peer = peer_lookup_in_view (vty, NULL, argv[0]);
+
+ if (! peer)
+ return CMD_WARNING;
+
+ return peer_adj_routes (vty, peer, AFI_IP6, SAFI_UNICAST, 0);
+}
+
+ALIAS (show_bgp_view_neighbor_advertised_route,
+ show_bgp_view_ipv6_neighbor_advertised_route_cmd,
+ "show bgp view WORD ipv6 neighbors (A.B.C.D|X:X::X:X) advertised-routes",
+ SHOW_STR
+ BGP_STR
+ "BGP view\n"
+ "View name\n"
+ "Address family\n"
+ "Detailed information on TCP and BGP neighbor connections\n"
+ "Neighbor to display information about\n"
+ "Neighbor to display information about\n"
+ "Display the routes advertised to a BGP neighbor\n")
+
+DEFUN (show_bgp_view_neighbor_received_routes,
+ show_bgp_view_neighbor_received_routes_cmd,
+ "show bgp view WORD neighbors (A.B.C.D|X:X::X:X) received-routes",
+ SHOW_STR
+ BGP_STR
+ "BGP view\n"
+ "View name\n"
+ "Detailed information on TCP and BGP neighbor connections\n"
+ "Neighbor to display information about\n"
+ "Neighbor to display information about\n"
+ "Display the received routes from neighbor\n")
+{
+ struct peer *peer;
+
+ if (argc == 2)
+ peer = peer_lookup_in_view (vty, argv[0], argv[1]);
+ else
+ peer = peer_lookup_in_view (vty, NULL, argv[0]);
+
+ if (! peer)
+ return CMD_WARNING;
+
+ return peer_adj_routes (vty, peer, AFI_IP6, SAFI_UNICAST, 1);
}
-ALIAS (show_bgp_neighbor_advertised_route,
+ALIAS (show_bgp_view_neighbor_received_routes,
+ show_bgp_view_ipv6_neighbor_received_routes_cmd,
+ "show bgp view WORD ipv6 neighbors (A.B.C.D|X:X::X:X) received-routes",
+ SHOW_STR
+ BGP_STR
+ "BGP view\n"
+ "View name\n"
+ "Address family\n"
+ "Detailed information on TCP and BGP neighbor connections\n"
+ "Neighbor to display information about\n"
+ "Neighbor to display information about\n"
+ "Display the received routes from neighbor\n")
+
+ALIAS (show_bgp_view_neighbor_advertised_route,
+ show_bgp_neighbor_advertised_route_cmd,
+ "show bgp neighbors (A.B.C.D|X:X::X:X) advertised-routes",
+ SHOW_STR
+ BGP_STR
+ "Detailed information on TCP and BGP neighbor connections\n"
+ "Neighbor to display information about\n"
+ "Neighbor to display information about\n"
+ "Display the routes advertised to a BGP neighbor\n")
+
+ALIAS (show_bgp_view_neighbor_advertised_route,
show_bgp_ipv6_neighbor_advertised_route_cmd,
"show bgp ipv6 neighbors (A.B.C.D|X:X::X:X) advertised-routes",
SHOW_STR
@@ -7453,7 +7647,7 @@ ALIAS (show_bgp_neighbor_advertised_route,
"Display the routes advertised to a BGP neighbor\n")
/* old command */
-DEFUN (ipv6_bgp_neighbor_advertised_route,
+ALIAS (show_bgp_view_neighbor_advertised_route,
ipv6_bgp_neighbor_advertised_route_cmd,
"show ipv6 bgp neighbors (A.B.C.D|X:X::X:X) advertised-routes",
SHOW_STR
@@ -7463,10 +7657,7 @@ DEFUN (ipv6_bgp_neighbor_advertised_route,
"Neighbor to display information about\n"
"Neighbor to display information about\n"
"Display the routes advertised to a BGP neighbor\n")
-{
- return peer_adj_routes (vty, argv[0], AFI_IP6, SAFI_UNICAST, 0);
-}
-
+
/* old command */
DEFUN (ipv6_mbgp_neighbor_advertised_route,
ipv6_mbgp_neighbor_advertised_route_cmd,
@@ -7479,7 +7670,13 @@ DEFUN (ipv6_mbgp_neighbor_advertised_route,
"Neighbor to display information about\n"
"Display the routes advertised to a BGP neighbor\n")
{
- return peer_adj_routes (vty, argv[0], AFI_IP6, SAFI_MULTICAST, 0);
+ struct peer *peer;
+
+ peer = peer_lookup_in_view (vty, NULL, argv[0]);
+ if (! peer)
+ return CMD_WARNING;
+
+ return peer_adj_routes (vty, peer, AFI_IP6, SAFI_MULTICAST, 0);
}
#endif /* HAVE_IPV6 */
@@ -7494,7 +7691,13 @@ DEFUN (show_ip_bgp_neighbor_received_routes,
"Neighbor to display information about\n"
"Display the received routes from neighbor\n")
{
- return peer_adj_routes (vty, argv[0], AFI_IP, SAFI_UNICAST, 1);
+ struct peer *peer;
+
+ peer = peer_lookup_in_view (vty, NULL, argv[0]);
+ if (! peer)
+ return CMD_WARNING;
+
+ return peer_adj_routes (vty, peer, AFI_IP, SAFI_UNICAST, 1);
}
DEFUN (show_ip_bgp_ipv4_neighbor_received_routes,
@@ -7511,10 +7714,16 @@ DEFUN (show_ip_bgp_ipv4_neighbor_received_routes,
"Neighbor to display information about\n"
"Display the received routes from neighbor\n")
{
+ struct peer *peer;
+
+ peer = peer_lookup_in_view (vty, NULL, argv[1]);
+ if (! peer)
+ return CMD_WARNING;
+
if (strncmp (argv[0], "m", 1) == 0)
- return peer_adj_routes (vty, argv[1], AFI_IP, SAFI_MULTICAST, 1);
+ return peer_adj_routes (vty, peer, AFI_IP, SAFI_MULTICAST, 1);
- return peer_adj_routes (vty, argv[1], AFI_IP, SAFI_UNICAST, 1);
+ return peer_adj_routes (vty, peer, AFI_IP, SAFI_UNICAST, 1);
}
DEFUN (show_ip_bgp_neighbor_received_prefix_filter,
@@ -7607,7 +7816,7 @@ DEFUN (show_ip_bgp_ipv4_neighbor_received_prefix_filter,
#ifdef HAVE_IPV6
-DEFUN (show_bgp_neighbor_received_routes,
+ALIAS (show_bgp_view_neighbor_received_routes,
show_bgp_neighbor_received_routes_cmd,
"show bgp neighbors (A.B.C.D|X:X::X:X) received-routes",
SHOW_STR
@@ -7616,11 +7825,8 @@ DEFUN (show_bgp_neighbor_received_routes,
"Neighbor to display information about\n"
"Neighbor to display information about\n"
"Display the received routes from neighbor\n")
-{
- return peer_adj_routes (vty, argv[0], AFI_IP6, SAFI_UNICAST, 1);
-}
-ALIAS (show_bgp_neighbor_received_routes,
+ALIAS (show_bgp_view_neighbor_received_routes,
show_bgp_ipv6_neighbor_received_routes_cmd,
"show bgp ipv6 neighbors (A.B.C.D|X:X::X:X) received-routes",
SHOW_STR
@@ -7679,7 +7885,7 @@ ALIAS (show_bgp_neighbor_received_prefix_filter,
"Display the prefixlist filter\n")
/* old command */
-DEFUN (ipv6_bgp_neighbor_received_routes,
+ALIAS (show_bgp_view_neighbor_received_routes,
ipv6_bgp_neighbor_received_routes_cmd,
"show ipv6 bgp neighbors (A.B.C.D|X:X::X:X) received-routes",
SHOW_STR
@@ -7689,9 +7895,6 @@ DEFUN (ipv6_bgp_neighbor_received_routes,
"Neighbor to display information about\n"
"Neighbor to display information about\n"
"Display the received routes from neighbor\n")
-{
- return peer_adj_routes (vty, argv[0], AFI_IP6, SAFI_UNICAST, 1);
-}
/* old command */
DEFUN (ipv6_mbgp_neighbor_received_routes,
@@ -7705,8 +7908,74 @@ DEFUN (ipv6_mbgp_neighbor_received_routes,
"Neighbor to display information about\n"
"Display the received routes from neighbor\n")
{
- return peer_adj_routes (vty, argv[0], AFI_IP6, SAFI_MULTICAST, 1);
+ struct peer *peer;
+
+ peer = peer_lookup_in_view (vty, NULL, argv[0]);
+ if (! peer)
+ return CMD_WARNING;
+
+ return peer_adj_routes (vty, peer, AFI_IP6, SAFI_MULTICAST, 1);
+}
+
+DEFUN (show_bgp_view_neighbor_received_prefix_filter,
+ show_bgp_view_neighbor_received_prefix_filter_cmd,
+ "show bgp view WORD neighbors (A.B.C.D|X:X::X:X) received prefix-filter",
+ SHOW_STR
+ BGP_STR
+ "BGP view\n"
+ "View name\n"
+ "Detailed information on TCP and BGP neighbor connections\n"
+ "Neighbor to display information about\n"
+ "Neighbor to display information about\n"
+ "Display information received from a BGP neighbor\n"
+ "Display the prefixlist filter\n")
+{
+ char name[BUFSIZ];
+ union sockunion *su;
+ struct peer *peer;
+ struct bgp *bgp;
+ int count;
+
+ /* BGP structure lookup. */
+ bgp = bgp_lookup_by_name (argv[0]);
+ if (bgp == NULL)
+ {
+ vty_out (vty, "Can't find BGP view %s%s", argv[0], VTY_NEWLINE);
+ return CMD_WARNING;
+ }
+
+ su = sockunion_str2su (argv[1]);
+ if (su == NULL)
+ return CMD_WARNING;
+
+ peer = peer_lookup (bgp, su);
+ if (! peer)
+ return CMD_WARNING;
+
+ sprintf (name, "%s.%d.%d", peer->host, AFI_IP6, SAFI_UNICAST);
+ count = prefix_bgp_show_prefix_list (NULL, AFI_IP6, name);
+ if (count)
+ {
+ vty_out (vty, "Address family: IPv6 Unicast%s", VTY_NEWLINE);
+ prefix_bgp_show_prefix_list (vty, AFI_IP6, name);
+ }
+
+ return CMD_SUCCESS;
}
+
+ALIAS (show_bgp_view_neighbor_received_prefix_filter,
+ show_bgp_view_ipv6_neighbor_received_prefix_filter_cmd,
+ "show bgp view WORD ipv6 neighbors (A.B.C.D|X:X::X:X) received prefix-filter",
+ SHOW_STR
+ BGP_STR
+ "BGP view\n"
+ "View name\n"
+ "Address family\n"
+ "Detailed information on TCP and BGP neighbor connections\n"
+ "Neighbor to display information about\n"
+ "Neighbor to display information about\n"
+ "Display information received from a BGP neighbor\n"
+ "Display the prefixlist filter\n")
#endif /* HAVE_IPV6 */
void
@@ -7719,31 +7988,19 @@ bgp_show_neighbor_route_clean (struct vty *vty)
}
int
-bgp_show_neighbor_route (struct vty *vty, char *ip_str, afi_t afi,
+bgp_show_neighbor_route (struct vty *vty, struct peer *peer, afi_t afi,
safi_t safi, enum bgp_show_type type)
{
- union sockunion *su;
- struct peer *peer;
-
- su = sockunion_str2su (ip_str);
- if (su == NULL)
- {
- vty_out (vty, "Malformed address: %s%s", ip_str, VTY_NEWLINE);
- return CMD_WARNING;
- }
-
- peer = peer_lookup (NULL, su);
if (! peer || ! peer->afc[afi][safi])
{
vty_out (vty, "%% No such neighbor or address family%s", VTY_NEWLINE);
- XFREE (MTYPE_SOCKUNION, su);
return CMD_WARNING;
}
- vty->output_arg = su;
+ vty->output_arg = sockunion_dup (&peer->su);
vty->output_clean = bgp_show_neighbor_route_clean;
- return bgp_show (vty, NULL, afi, safi, type);
+ return bgp_show (vty, peer->bgp, afi, safi, type);
}
DEFUN (show_ip_bgp_neighbor_routes,
@@ -7757,7 +8014,13 @@ DEFUN (show_ip_bgp_neighbor_routes,
"Neighbor to display information about\n"
"Display routes learned from neighbor\n")
{
- return bgp_show_neighbor_route (vty, argv[0], AFI_IP, SAFI_UNICAST,
+ struct peer *peer;
+
+ peer = peer_lookup_in_view (vty, NULL, argv[0]);
+ if (! peer)
+ return CMD_WARNING;
+
+ return bgp_show_neighbor_route (vty, peer, AFI_IP, SAFI_UNICAST,
bgp_show_type_neighbor);
}
@@ -7772,7 +8035,13 @@ DEFUN (show_ip_bgp_neighbor_flap,
"Neighbor to display information about\n"
"Display flap statistics of the routes learned from neighbor\n")
{
- return bgp_show_neighbor_route (vty, argv[0], AFI_IP, SAFI_UNICAST,
+ struct peer *peer;
+
+ peer = peer_lookup_in_view (vty, NULL, argv[0]);
+ if (! peer)
+ return CMD_WARNING;
+
+ return bgp_show_neighbor_route (vty, peer, AFI_IP, SAFI_UNICAST,
bgp_show_type_flap_neighbor);
}
@@ -7787,7 +8056,13 @@ DEFUN (show_ip_bgp_neighbor_damp,
"Neighbor to display information about\n"
"Display the dampened routes received from neighbor\n")
{
- return bgp_show_neighbor_route (vty, argv[0], AFI_IP, SAFI_UNICAST,
+ struct peer *peer;
+
+ peer = peer_lookup_in_view (vty, NULL, argv[0]);
+ if (! peer)
+ return CMD_WARNING;
+
+ return bgp_show_neighbor_route (vty, peer, AFI_IP, SAFI_UNICAST,
bgp_show_type_damp_neighbor);
}
@@ -7805,29 +8080,150 @@ DEFUN (show_ip_bgp_ipv4_neighbor_routes,
"Neighbor to display information about\n"
"Display routes learned from neighbor\n")
{
+ struct peer *peer;
+
+ peer = peer_lookup_in_view (vty, NULL, argv[1]);
+ if (! peer)
+ return CMD_WARNING;
+
if (strncmp (argv[0], "m", 1) == 0)
- return bgp_show_neighbor_route (vty, argv[1], AFI_IP, SAFI_MULTICAST,
+ return bgp_show_neighbor_route (vty, peer, AFI_IP, SAFI_MULTICAST,
bgp_show_type_neighbor);
- return bgp_show_neighbor_route (vty, argv[1], AFI_IP, SAFI_UNICAST,
+ return bgp_show_neighbor_route (vty, peer, AFI_IP, SAFI_UNICAST,
bgp_show_type_neighbor);
}
+
#ifdef HAVE_IPV6
-DEFUN (show_bgp_neighbor_routes,
- show_bgp_neighbor_routes_cmd,
- "show bgp neighbors (A.B.C.D|X:X::X:X) routes",
+DEFUN (show_bgp_view_neighbor_routes,
+ show_bgp_view_neighbor_routes_cmd,
+ "show bgp view WORD neighbors (A.B.C.D|X:X::X:X) routes",
SHOW_STR
BGP_STR
+ "BGP view\n"
+ "BGP view name\n"
"Detailed information on TCP and BGP neighbor connections\n"
"Neighbor to display information about\n"
"Neighbor to display information about\n"
"Display routes learned from neighbor\n")
{
- return bgp_show_neighbor_route (vty, argv[0], AFI_IP6, SAFI_UNICAST,
+ struct peer *peer;
+
+ if (argc == 2)
+ peer = peer_lookup_in_view (vty, argv[0], argv[1]);
+ else
+ peer = peer_lookup_in_view (vty, NULL, argv[0]);
+
+ if (! peer)
+ return CMD_WARNING;
+
+ return bgp_show_neighbor_route (vty, peer, AFI_IP6, SAFI_UNICAST,
bgp_show_type_neighbor);
}
-ALIAS (show_bgp_neighbor_routes,
+ALIAS (show_bgp_view_neighbor_routes,
+ show_bgp_view_ipv6_neighbor_routes_cmd,
+ "show bgp view WORD ipv6 neighbors (A.B.C.D|X:X::X:X) routes",
+ SHOW_STR
+ BGP_STR
+ "BGP view\n"
+ "BGP view name\n"
+ "Address family\n"
+ "Detailed information on TCP and BGP neighbor connections\n"
+ "Neighbor to display information about\n"
+ "Neighbor to display information about\n"
+ "Display routes learned from neighbor\n")
+
+DEFUN (show_bgp_view_neighbor_damp,
+ show_bgp_view_neighbor_damp_cmd,
+ "show bgp view WORD neighbors (A.B.C.D|X:X::X:X) dampened-routes",
+ SHOW_STR
+ BGP_STR
+ "BGP view\n"
+ "BGP view name\n"
+ "Detailed information on TCP and BGP neighbor connections\n"
+ "Neighbor to display information about\n"
+ "Neighbor to display information about\n"
+ "Display the dampened routes received from neighbor\n")
+{
+ struct peer *peer;
+
+ if (argc == 2)
+ peer = peer_lookup_in_view (vty, argv[0], argv[1]);
+ else
+ peer = peer_lookup_in_view (vty, NULL, argv[0]);
+
+ if (! peer)
+ return CMD_WARNING;
+
+ return bgp_show_neighbor_route (vty, peer, AFI_IP6, SAFI_UNICAST,
+ bgp_show_type_damp_neighbor);
+}
+
+ALIAS (show_bgp_view_neighbor_damp,
+ show_bgp_view_ipv6_neighbor_damp_cmd,
+ "show bgp view WORD ipv6 neighbors (A.B.C.D|X:X::X:X) dampened-routes",
+ SHOW_STR
+ BGP_STR
+ "BGP view\n"
+ "BGP view name\n"
+ "Address family\n"
+ "Detailed information on TCP and BGP neighbor connections\n"
+ "Neighbor to display information about\n"
+ "Neighbor to display information about\n"
+ "Display the dampened routes received from neighbor\n")
+
+DEFUN (show_bgp_view_neighbor_flap,
+ show_bgp_view_neighbor_flap_cmd,
+ "show bgp view WORD neighbors (A.B.C.D|X:X::X:X) flap-statistics",
+ SHOW_STR
+ BGP_STR
+ "BGP view\n"
+ "BGP view name\n"
+ "Detailed information on TCP and BGP neighbor connections\n"
+ "Neighbor to display information about\n"
+ "Neighbor to display information about\n"
+ "Display flap statistics of the routes learned from neighbor\n")
+{
+ struct peer *peer;
+
+ if (argc == 2)
+ peer = peer_lookup_in_view (vty, argv[0], argv[1]);
+ else
+ peer = peer_lookup_in_view (vty, NULL, argv[0]);
+
+ if (! peer)
+ return CMD_WARNING;
+
+ return bgp_show_neighbor_route (vty, peer, AFI_IP6, SAFI_UNICAST,
+ bgp_show_type_flap_neighbor);
+}
+
+ALIAS (show_bgp_view_neighbor_flap,
+ show_bgp_view_ipv6_neighbor_flap_cmd,
+ "show bgp view WORD ipv6 neighbors (A.B.C.D|X:X::X:X) flap-statistics",
+ SHOW_STR
+ BGP_STR
+ "BGP view\n"
+ "BGP view name\n"
+ "Address family\n"
+ "Detailed information on TCP and BGP neighbor connections\n"
+ "Neighbor to display information about\n"
+ "Neighbor to display information about\n"
+ "Display flap statistics of the routes learned from neighbor\n")
+
+ALIAS (show_bgp_view_neighbor_routes,
+ show_bgp_neighbor_routes_cmd,
+ "show bgp neighbors (A.B.C.D|X:X::X:X) routes",
+ SHOW_STR
+ BGP_STR
+ "Detailed information on TCP and BGP neighbor connections\n"
+ "Neighbor to display information about\n"
+ "Neighbor to display information about\n"
+ "Display routes learned from neighbor\n")
+
+
+ALIAS (show_bgp_view_neighbor_routes,
show_bgp_ipv6_neighbor_routes_cmd,
"show bgp ipv6 neighbors (A.B.C.D|X:X::X:X) routes",
SHOW_STR
@@ -7839,7 +8235,7 @@ ALIAS (show_bgp_neighbor_routes,
"Display routes learned from neighbor\n")
/* old command */
-DEFUN (ipv6_bgp_neighbor_routes,
+ALIAS (show_bgp_view_neighbor_routes,
ipv6_bgp_neighbor_routes_cmd,
"show ipv6 bgp neighbors (A.B.C.D|X:X::X:X) routes",
SHOW_STR
@@ -7849,10 +8245,6 @@ DEFUN (ipv6_bgp_neighbor_routes,
"Neighbor to display information about\n"
"Neighbor to display information about\n"
"Display routes learned from neighbor\n")
-{
- return bgp_show_neighbor_route (vty, argv[0], AFI_IP6, SAFI_UNICAST,
- bgp_show_type_neighbor);
-}
/* old command */
DEFUN (ipv6_mbgp_neighbor_routes,
@@ -7866,9 +8258,57 @@ DEFUN (ipv6_mbgp_neighbor_routes,
"Neighbor to display information about\n"
"Display routes learned from neighbor\n")
{
- return bgp_show_neighbor_route (vty, argv[0], AFI_IP6, SAFI_MULTICAST,
+ struct peer *peer;
+
+ peer = peer_lookup_in_view (vty, NULL, argv[0]);
+ if (! peer)
+ return CMD_WARNING;
+
+ return bgp_show_neighbor_route (vty, peer, AFI_IP6, SAFI_MULTICAST,
bgp_show_type_neighbor);
}
+
+ALIAS (show_bgp_view_neighbor_flap,
+ show_bgp_neighbor_flap_cmd,
+ "show bgp neighbors (A.B.C.D|X:X::X:X) flap-statistics",
+ SHOW_STR
+ BGP_STR
+ "Detailed information on TCP and BGP neighbor connections\n"
+ "Neighbor to display information about\n"
+ "Neighbor to display information about\n"
+ "Display flap statistics of the routes learned from neighbor\n")
+
+ALIAS (show_bgp_view_neighbor_flap,
+ show_bgp_ipv6_neighbor_flap_cmd,
+ "show bgp ipv6 neighbors (A.B.C.D|X:X::X:X) flap-statistics",
+ SHOW_STR
+ BGP_STR
+ "Address family\n"
+ "Detailed information on TCP and BGP neighbor connections\n"
+ "Neighbor to display information about\n"
+ "Neighbor to display information about\n"
+ "Display flap statistics of the routes learned from neighbor\n")
+
+ALIAS (show_bgp_view_neighbor_damp,
+ show_bgp_neighbor_damp_cmd,
+ "show bgp neighbors (A.B.C.D|X:X::X:X) dampened-routes",
+ SHOW_STR
+ BGP_STR
+ "Detailed information on TCP and BGP neighbor connections\n"
+ "Neighbor to display information about\n"
+ "Neighbor to display information about\n"
+ "Display the dampened routes received from neighbor\n")
+
+ALIAS (show_bgp_view_neighbor_damp,
+ show_bgp_ipv6_neighbor_damp_cmd,
+ "show bgp ipv6 neighbors (A.B.C.D|X:X::X:X) dampened-routes",
+ SHOW_STR
+ BGP_STR
+ "Address family\n"
+ "Detailed information on TCP and BGP neighbor connections\n"
+ "Neighbor to display information about\n"
+ "Neighbor to display information about\n"
+ "Display the dampened routes received from neighbor\n")
#endif /* HAVE_IPV6 */
struct bgp_table *bgp_distance_table;
@@ -8907,6 +9347,28 @@ bgp_route_init ()
install_element (VIEW_NODE, &show_bgp_ipv6_neighbor_routes_cmd);
install_element (VIEW_NODE, &show_bgp_neighbor_received_prefix_filter_cmd);
install_element (VIEW_NODE, &show_bgp_ipv6_neighbor_received_prefix_filter_cmd);
+ install_element (VIEW_NODE, &show_bgp_neighbor_flap_cmd);
+ install_element (VIEW_NODE, &show_bgp_ipv6_neighbor_flap_cmd);
+ 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_view_cmd);
+ install_element (VIEW_NODE, &show_bgp_view_ipv6_cmd);
+ install_element (VIEW_NODE, &show_bgp_view_route_cmd);
+ install_element (VIEW_NODE, &show_bgp_view_ipv6_route_cmd);
+ install_element (VIEW_NODE, &show_bgp_view_prefix_cmd);
+ install_element (VIEW_NODE, &show_bgp_view_ipv6_prefix_cmd);
+ install_element (VIEW_NODE, &show_bgp_view_neighbor_advertised_route_cmd);
+ install_element (VIEW_NODE, &show_bgp_view_ipv6_neighbor_advertised_route_cmd);
+ install_element (VIEW_NODE, &show_bgp_view_neighbor_received_routes_cmd);
+ install_element (VIEW_NODE, &show_bgp_view_ipv6_neighbor_received_routes_cmd);
+ install_element (VIEW_NODE, &show_bgp_view_neighbor_routes_cmd);
+ install_element (VIEW_NODE, &show_bgp_view_ipv6_neighbor_routes_cmd);
+ install_element (VIEW_NODE, &show_bgp_view_neighbor_received_prefix_filter_cmd);
+ install_element (VIEW_NODE, &show_bgp_view_ipv6_neighbor_received_prefix_filter_cmd);
+ install_element (VIEW_NODE, &show_bgp_view_neighbor_flap_cmd);
+ install_element (VIEW_NODE, &show_bgp_view_ipv6_neighbor_flap_cmd);
+ install_element (VIEW_NODE, &show_bgp_view_neighbor_damp_cmd);
+ install_element (VIEW_NODE, &show_bgp_view_ipv6_neighbor_damp_cmd);
install_element (ENABLE_NODE, &show_bgp_cmd);
install_element (ENABLE_NODE, &show_bgp_ipv6_cmd);
@@ -8954,6 +9416,28 @@ bgp_route_init ()
install_element (ENABLE_NODE, &show_bgp_ipv6_neighbor_routes_cmd);
install_element (ENABLE_NODE, &show_bgp_neighbor_received_prefix_filter_cmd);
install_element (ENABLE_NODE, &show_bgp_ipv6_neighbor_received_prefix_filter_cmd);
+ install_element (ENABLE_NODE, &show_bgp_neighbor_flap_cmd);
+ install_element (ENABLE_NODE, &show_bgp_ipv6_neighbor_flap_cmd);
+ 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_view_cmd);
+ install_element (ENABLE_NODE, &show_bgp_view_ipv6_cmd);
+ install_element (ENABLE_NODE, &show_bgp_view_route_cmd);
+ install_element (ENABLE_NODE, &show_bgp_view_ipv6_route_cmd);
+ install_element (ENABLE_NODE, &show_bgp_view_prefix_cmd);
+ install_element (ENABLE_NODE, &show_bgp_view_ipv6_prefix_cmd);
+ install_element (ENABLE_NODE, &show_bgp_view_neighbor_advertised_route_cmd);
+ install_element (ENABLE_NODE, &show_bgp_view_ipv6_neighbor_advertised_route_cmd);
+ install_element (ENABLE_NODE, &show_bgp_view_neighbor_received_routes_cmd);
+ install_element (ENABLE_NODE, &show_bgp_view_ipv6_neighbor_received_routes_cmd);
+ install_element (ENABLE_NODE, &show_bgp_view_neighbor_routes_cmd);
+ install_element (ENABLE_NODE, &show_bgp_view_ipv6_neighbor_routes_cmd);
+ install_element (ENABLE_NODE, &show_bgp_view_neighbor_received_prefix_filter_cmd);
+ install_element (ENABLE_NODE, &show_bgp_view_ipv6_neighbor_received_prefix_filter_cmd);
+ install_element (ENABLE_NODE, &show_bgp_view_neighbor_flap_cmd);
+ install_element (ENABLE_NODE, &show_bgp_view_ipv6_neighbor_flap_cmd);
+ install_element (ENABLE_NODE, &show_bgp_view_neighbor_damp_cmd);
+ install_element (ENABLE_NODE, &show_bgp_view_ipv6_neighbor_damp_cmd);
/* old command */
install_element (VIEW_NODE, &show_ipv6_bgp_cmd);
@@ -8992,7 +9476,7 @@ bgp_route_init ()
install_element (VIEW_NODE, &show_ipv6_mbgp_community_list_cmd);
install_element (VIEW_NODE, &show_ipv6_mbgp_community_list_exact_cmd);
install_element (VIEW_NODE, &show_ipv6_mbgp_prefix_longer_cmd);
-
+
/* old command */
install_element (ENABLE_NODE, &show_ipv6_bgp_cmd);
install_element (ENABLE_NODE, &show_ipv6_bgp_route_cmd);
diff --git a/bgpd/bgp_vty.c b/bgpd/bgp_vty.c
index 39a43c04..58ff5c5c 100644
--- a/bgpd/bgp_vty.c
+++ b/bgpd/bgp_vty.c
@@ -6973,6 +6973,25 @@ DEFUN (show_ip_bgp_instance_neighbors,
return bgp_show_neighbor_vty (vty, argv[0], show_all, NULL);
}
+ALIAS (show_ip_bgp_instance_neighbors,
+ show_bgp_instance_neighbors_cmd,
+ "show bgp view WORD neighbors",
+ SHOW_STR
+ BGP_STR
+ "BGP view\n"
+ "View name\n"
+ "Detailed information on TCP and BGP neighbor connections\n")
+
+ALIAS (show_ip_bgp_instance_neighbors,
+ show_bgp_instance_ipv6_neighbors_cmd,
+ "show bgp view WORD ipv6 neighbors",
+ SHOW_STR
+ BGP_STR
+ "BGP view\n"
+ "View name\n"
+ "Address family\n"
+ "Detailed information on TCP and BGP neighbor connections\n")
+
DEFUN (show_ip_bgp_instance_neighbors_peer,
show_ip_bgp_instance_neighbors_peer_cmd,
"show ip bgp view WORD neighbors (A.B.C.D|X:X::X:X)",
@@ -6987,7 +7006,30 @@ DEFUN (show_ip_bgp_instance_neighbors_peer,
{
return bgp_show_neighbor_vty (vty, argv[0], show_peer, argv[1]);
}
-
+
+ALIAS (show_ip_bgp_instance_neighbors_peer,
+ show_bgp_instance_neighbors_peer_cmd,
+ "show bgp view WORD neighbors (A.B.C.D|X:X::X:X)",
+ SHOW_STR
+ BGP_STR
+ "BGP view\n"
+ "View name\n"
+ "Detailed information on TCP and BGP neighbor connections\n"
+ "Neighbor to display information about\n"
+ "Neighbor to display information about\n")
+
+ALIAS (show_ip_bgp_instance_neighbors_peer,
+ show_bgp_instance_ipv6_neighbors_peer_cmd,
+ "show bgp view WORD ipv6 neighbors (A.B.C.D|X:X::X:X)",
+ SHOW_STR
+ BGP_STR
+ "BGP view\n"
+ "View name\n"
+ "Address family\n"
+ "Detailed information on TCP and BGP neighbor connections\n"
+ "Neighbor to display information about\n"
+ "Neighbor to display information about\n")
+
/* Show BGP's AS paths internal data. There are both `show ip bgp
paths' and `show ip mbgp paths'. Those functions results are the
same.*/
@@ -8502,10 +8544,18 @@ bgp_vty_init ()
install_element (VIEW_NODE, &show_bgp_ipv6_neighbors_cmd);
install_element (VIEW_NODE, &show_bgp_neighbors_peer_cmd);
install_element (VIEW_NODE, &show_bgp_ipv6_neighbors_peer_cmd);
+ install_element (VIEW_NODE, &show_bgp_instance_neighbors_cmd);
+ install_element (VIEW_NODE, &show_bgp_instance_ipv6_neighbors_cmd);
+ install_element (VIEW_NODE, &show_bgp_instance_neighbors_peer_cmd);
+ install_element (VIEW_NODE, &show_bgp_instance_ipv6_neighbors_peer_cmd);
install_element (ENABLE_NODE, &show_bgp_neighbors_cmd);
install_element (ENABLE_NODE, &show_bgp_ipv6_neighbors_cmd);
install_element (ENABLE_NODE, &show_bgp_neighbors_peer_cmd);
install_element (ENABLE_NODE, &show_bgp_ipv6_neighbors_peer_cmd);
+ install_element (ENABLE_NODE, &show_bgp_instance_neighbors_cmd);
+ install_element (ENABLE_NODE, &show_bgp_instance_ipv6_neighbors_cmd);
+ install_element (ENABLE_NODE, &show_bgp_instance_neighbors_peer_cmd);
+ install_element (ENABLE_NODE, &show_bgp_instance_ipv6_neighbors_peer_cmd);
/* Old commands. */
install_element (VIEW_NODE, &show_ipv6_bgp_summary_cmd);