const char *prefix, afi_t afi,
safi_t safi, enum bgp_show_type type);
static int
-bgp_show_regexp (struct vty *vty, int argc, struct cmd_token **argv, afi_t afi,
+bgp_show_regexp (struct vty *vty, const char *regstr, afi_t afi,
safi_t safi, enum bgp_show_type type);
static int
bgp_show_community (struct vty *vty, const char *view_name, int argc,
[<\
cidr-only\
|community\
- |dampening <flap-statistics|dampened-paths>\
+ |dampening <flap-statistics|dampened-paths|parameters>\
|route-map WORD\
|prefix-list WORD\
|filter-list WORD\
IP_STR
BGP_STR
BGP_INSTANCE_HELP_STR
- "Address family\n"
+ "Address Family\n"
"Address Family modifier\n"
- "Address family\n"
"Address Family modifier\n"
- "Address family\n"
+ "Address Family\n"
"Address Family modifier\n"
- "Address family\n"
"Address Family modifier\n"
- "Address family\n"
+ "Address Family\n"
+ "Address Family modifier\n"
+ "Address Family\n"
"Address Family modifier\n"
"Display only routes with non-natural netmasks\n"
"Display routes matching the communities\n"
"Display routes matching the route-map\n"
"A route-map to match on\n"
"Display routes conforming to the prefix-list\n"
- "prefix-list name\n"
+ "Prefix-list name\n"
"Display routes conforming to the filter-list\n"
"Regular expression access list name\n"
"Display routes matching the communities\n"
"community-list name\n"
"Exact match of the communities\n"
"IPv4 prefix <network>/<length>, e.g., 35.0.0.0/8\n"
+ "Display route and more specific routes\n"
"IPv6 prefix <network>/<length>\n"
"Display route and more specific routes\n"
"JavaScript Object Notation\n")
if (strmatch(argv[idx]->text, "cidr-only"))
return bgp_show (vty, bgp, afi, safi, bgp_show_type_cidr_only, NULL, uj);
- else if (strmatch(argv[idx]->text, "dampened-paths"))
- return bgp_show (vty, bgp, afi, safi, bgp_show_type_dampend_paths, NULL, uj);
-
- else if (strmatch(argv[idx]->text, "flap-statistics"))
- return bgp_show (vty, bgp, afi, safi, bgp_show_type_flap_statistics, NULL, uj);
-
- else if (strmatch(argv[idx]->text, "regexp"))
- return bgp_show_regexp (vty, argc, argv, afi, safi, bgp_show_type_regexp);
+ else if (strmatch(argv[idx]->text, "dampening"))
+ {
+ if (argv_find (argv, argc, "dampened-paths", &idx))
+ return bgp_show (vty, bgp, afi, safi, bgp_show_type_dampend_paths, NULL, uj);
+ else if (argv_find (argv, argc, "flap-statistics", &idx))
+ return bgp_show (vty, bgp, afi, safi, bgp_show_type_flap_statistics, NULL, uj);
+ else if (argv_find (argv, argc, "parameters", &idx))
+ return bgp_show_dampening_parameters (vty, AFI_IP, SAFI_UNICAST);
+ }
else if (strmatch(argv[idx]->text, "prefix-list"))
return bgp_show_prefix_list (vty, vrf, argv[idx + 1]->arg, afi, safi, bgp_show_type_prefix_list);
}
else if (strmatch(argv[idx]->text, "community-list"))
{
- if (strmatch(argv[idx + 2]->text, "exact_match"))
+ const char *clist_number_or_name = argv[++idx]->arg;
+ if (++idx < argc && strmatch (argv[idx]->arg, "exact-match"))
exact_match = 1;
- return bgp_show_community_list (vty, vrf, argv[idx + 1]->arg, exact_match, afi, safi);
+ return bgp_show_community_list (vty, vrf, clist_number_or_name, exact_match, afi, safi);
}
/* prefix-longer */
else if (argv[idx]->type == IPV4_TKN || argv[idx]->type == IPV6_TKN)
IP_STR
BGP_STR
BGP_INSTANCE_HELP_STR
- "Address family\n"
+ "Address Family\n"
"Address Family modifier\n"
- "Address family\n"
"Address Family modifier\n"
- "Address family\n"
+ "Address Family\n"
"Address Family modifier\n"
- "Address family\n"
"Address Family modifier\n"
- "Address family\n"
+ "Address Family\n"
+ "Address Family modifier\n"
+ "Address Family\n"
"Address Family modifier\n"
- "Display information for a route distinguisher\n"
- "VPN Route Distinguisher\n"
"Network in the BGP routing table to display\n"
"IP prefix <network>/<length>, e.g., 35.0.0.0/8\n"
+ "Network in the BGP routing table to display\n"
"IPv6 prefix <network>/<length>\n"
"Display only the bestpath\n"
"Display only multipaths\n"
return bgp_show_route (vty, vrf, prefix, afi, safi, NULL, prefix_check, path_type, uj);
}
+DEFUN (show_ip_bgp_regexp,
+ show_ip_bgp_regexp_cmd,
+ "show [ip] bgp [<ipv4 [<unicast|multicast>]|ipv6 [<unicast|multicast>]|encap [unicast]|vpnv4 [unicast]>] regexp REGEX...",
+ SHOW_STR
+ IP_STR
+ BGP_STR
+ "Address Family\n"
+ "Address Family modifier\n"
+ "Address Family modifier\n"
+ "Address Family\n"
+ "Address Family modifier\n"
+ "Address Family modifier\n"
+ "Address Family\n"
+ "Address Family modifier\n"
+ "Address Family\n"
+ "Address Family modifier\n"
+ "Display routes matching the AS path regular expression\n"
+ "A regular-expression to match the BGP AS paths\n")
+{
+ afi_t afi = AFI_IP6;
+ safi_t safi = SAFI_UNICAST;
+
+ int idx = 0;
+
+ /* [<ipv4 [<unicast|multicast>]|ipv6 [<unicast|multicast>]|encap [unicast]|vpnv4 [unicast]>] */
+ if (argv_find (argv, argc, "ipv4", &idx) || argv_find (argv, argc, "ipv6", &idx))
+ {
+ afi = strmatch(argv[idx]->text, "ipv6") ? AFI_IP6 : AFI_IP;
+ if (argv_find (argv, argc, "unicast", &idx) || argv_find (argv, argc, "multicast", &idx))
+ safi = strmatch (argv[idx]->text, "unicast") ? SAFI_UNICAST : SAFI_MULTICAST;
+ }
+ else if (argv_find (argv, argc, "encap", &idx) || argv_find (argv, argc, "vpnv4", &idx))
+ {
+ afi = AFI_IP;
+ safi = strmatch (argv[idx]->text, "encap") ? SAFI_ENCAP : SAFI_MPLS_VPN;
+ // advance idx if necessary
+ argv_find (argv, argc, "unicast", &idx);
+ }
+
+ // get index of regex
+ argv_find (argv, argc, "regexp", &idx);
+ idx++;
+
+ char *regstr = argv_concat (argv, argc, idx);
+ int rc = bgp_show_regexp (vty, (const char *) regstr, afi, safi, bgp_show_type_regexp);
+ XFREE (MTYPE_TMP, regstr);
+ return rc;
+}
+
DEFUN (show_ip_bgp_instance_all,
show_ip_bgp_instance_all_cmd,
"show [ip] bgp <view|vrf> all [<ipv4 [<unicast|multicast>]|ipv6 [<unicast|multicast>]|encap [unicast]|vpnv4 [unicast]>] [json]",
IP_STR
BGP_STR
BGP_INSTANCE_ALL_HELP_STR
+ "Address Family\n"
+ "Address Family modifier\n"
+ "Address Family modifier\n"
+ "Address Family\n"
+ "Address Family modifier\n"
+ "Address Family modifier\n"
+ "Address Family\n"
+ "Address Family modifier\n"
+ "Address Family\n"
+ "Address Family modifier\n"
"JavaScript Object Notation\n")
{
afi_t afi = AFI_IP;
static int
-bgp_show_regexp (struct vty *vty, int argc, struct cmd_token **argv, afi_t afi,
+bgp_show_regexp (struct vty *vty, const char *regstr, afi_t afi,
safi_t safi, enum bgp_show_type type)
{
return CMD_SUCCESS;
-/* XXX(vtysh-grammar): Needs updating for new CLI backend.
- int i;
- struct buffer *b;
- char *regstr;
- int first;
regex_t *regex;
int rc;
- first = 0;
- b = buffer_new (1024);
- for (i = 0; i < argc; i++)
- {
- if (first)
- buffer_putc (b, ' ');
- else
- {
- if ((strcmp (argv[i]->arg, "unicast") == 0) || (strcmp (argv[i]->arg, "multicast") == 0))
- continue;
- first = 1;
- }
-
- buffer_putstr (b, argv[i]->arg);
- }
- buffer_putc (b, '\0');
-
- regstr = buffer_getstr (b);
- buffer_free (b);
-
regex = bgp_regcomp (regstr);
- XFREE(MTYPE_TMP, regstr);
if (! regex)
{
- vty_out (vty, "Can't compile regexp %s%s", argv[0]->arg,
- VTY_NEWLINE);
+ vty_out (vty, "Can't compile regexp %s%s", regstr, VTY_NEWLINE);
return CMD_WARNING;
}
rc = bgp_show (vty, NULL, afi, safi, type, regex, 0);
bgp_regex_free (regex);
return rc;
-*/
}
static int
SHOW_STR
IP_STR
BGP_STR
- "Address family\n"
+ "Address Family\n"
"Address Family modifier\n"
"Address Family modifier\n"
"Display detailed information about dampening\n"
"show bgp <ipv4|ipv6> <encap|multicast|unicast|vpn> statistics",
SHOW_STR
BGP_STR
- "Address family\n"
- "Address family\n"
+ "Address Family\n"
+ "Address Family\n"
"Address Family modifier\n"
"Address Family modifier\n"
"Address Family modifier\n"
SHOW_STR
BGP_STR
BGP_INSTANCE_HELP_STR
- "Address family\n"
- "Address family\n"
+ "Address Family\n"
+ "Address Family\n"
"Address Family modifier\n"
"Address Family modifier\n"
"Address Family modifier\n"
"show bgp ipv6 neighbors <A.B.C.D|X:X::X:X|WORD> prefix-counts [json]",
SHOW_STR
BGP_STR
- "Address family\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_STR
BGP_STR
BGP_INSTANCE_HELP_STR
- "Address family\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_STR
IP_STR
BGP_STR
- "Address family\n"
+ "Address Family\n"
"Address Family modifier\n"
"Address Family modifier\n"
"Detailed information on TCP and BGP neighbor connections\n"
SHOW_STR
IP_STR
BGP_STR
- "Address family\n"
+ "Address Family\n"
"Address Family modifier\n"
"Address Family modifier\n"
"Detailed information on TCP and BGP neighbor connections\n"
DEFUN (show_ip_bgp_instance_neighbor_advertised_route,
show_ip_bgp_instance_neighbor_advertised_route_cmd,
- "show [ip] bgp [<view|vrf>] WORD [<ipv4 [unicast]|ipv6 [unicast]|encap [unicast]|ipv4 multicast|vpnv4 unicast>] neighbors <A.B.C.D|X:X::X:X|WORD> [<received-routes [route-map WORD]|advertised-routes [route-map WORD]>] [json]",
+ "show [ip] bgp [<view|vrf>] WORD [<ipv4 [<unicast|multicast>]|ipv6 [<unicast|multicast>]|encap [unicast]|vpnv4 [unicast]>] neighbors <A.B.C.D|X:X::X:X|WORD> [<received-routes|advertised-routes> [route-map WORD]] [json]",
SHOW_STR
IP_STR
BGP_STR
BGP_INSTANCE_HELP_STR
- "Address family\n"
+ "Address Family\n"
+ "Address Family modifier\n"
"Address Family modifier\n"
- "Address family\n"
+ "Address Family\n"
"Address Family modifier\n"
- "Address family\n"
"Address Family modifier\n"
- "Address family\n"
+ "Address Family\n"
"Address Family modifier\n"
- "Address family\n"
+ "Address Family\n"
"Address Family modifier\n"
"Detailed information on TCP and BGP neighbor connections\n"
"Neighbor to display information about\n"
"Neighbor to display information about\n"
+ "Neighbor on bgp configured interface\n"
"Display the received routes from neighbor\n"
- "Route-map to modify the attributes\n"
- "Name of the route map\n"
"Display the routes advertised to a BGP neighbor\n"
"Route-map to modify the attributes\n"
"Name of the route map\n"
"JavaScript Object Notation\n")
{
- int idx_view_vrf = 3;
- int idx_vrf = 4;
- int idx_afi = 5;
- int idx_safi = 6;
- int idx_peer;
- int idx_adv_recv;
- int idx_rmap;
- int rcvd = 0;
+ afi_t afi = AFI_IP6;
+ safi_t safi = SAFI_UNICAST;
char *vrf = NULL;
char *rmap_name = NULL;
+ char *peerstr = NULL;
+ int rcvd;
+
struct peer *peer;
- afi_t afi;
- safi_t safi;
- u_char uj = use_json(argc, argv);
- vrf = bgp_get_argv_vrf (argc, argv, &afi, &safi, &idx_view_vrf, &idx_vrf, &idx_afi);
- idx_safi = idx_afi + 1;
- bgp_get_argv_afi_safi (argc, argv, idx_afi, idx_safi, &afi, &safi, &idx_peer);
+ int idx = 0;
- peer = peer_lookup_in_view (vty, vrf, argv[idx_peer]->arg, uj);
+ /* show [ip] bgp */
+ if (argv_find (argv, argc, "ip", &idx))
+ afi = AFI_IP;
+ /* [<view|vrf> WORD] */
+ if (argv_find (argv, argc, "view", &idx) || argv_find (argv, argc, "vrf", &idx))
+ vrf = argv[++idx]->arg;
+ /* [<ipv4 [<unicast|multicast>]|ipv6 [<unicast|multicast>]|encap [unicast]|vpnv4 [unicast]>] */
+ if (argv_find (argv, argc, "ipv4", &idx) || argv_find (argv, argc, "ipv6", &idx))
+ {
+ afi = strmatch(argv[idx]->text, "ipv6") ? AFI_IP6 : AFI_IP;
+ if (argv_find (argv, argc, "unicast", &idx) || argv_find (argv, argc, "multicast", &idx))
+ safi = strmatch (argv[idx]->text, "unicast") ? SAFI_UNICAST : SAFI_MULTICAST;
+ }
+ else if (argv_find (argv, argc, "encap", &idx) || argv_find (argv, argc, "vpnv4", &idx))
+ {
+ afi = AFI_IP;
+ safi = strmatch (argv[idx]->text, "encap") ? SAFI_ENCAP : SAFI_MPLS_VPN;
+ // advance idx if necessary
+ argv_find (argv, argc, "unicast", &idx);
+ }
+
+ /* neighbors <A.B.C.D|X:X::X:X|WORD> */
+ argv_find (argv, argc, "neighbors", &idx);
+ peerstr = argv[++idx]->arg;
+
+ u_char uj = use_json(argc, argv);
+
+ peer = peer_lookup_in_view (vty, vrf, peerstr, uj);
if (! peer)
{
return CMD_WARNING;
}
- idx_adv_recv = idx_peer + 1;
- idx_rmap = idx_adv_recv + 2;
-
- if (argc > idx_adv_recv)
- {
- if (strmatch(argv[idx_adv_recv]->text, "received-routes"))
- rcvd = 1;
- else if (strmatch(argv[idx_adv_recv]->text, "advertised-routes"))
- rcvd = 0;
-
- if (argc > idx_rmap)
- rmap_name = argv[idx_rmap]->arg;
- }
+ if (argv_find (argv, argc, "received-routes", &idx))
+ rcvd = 1;
+ if (argv_find (argv, argc, "advertised-routes", &idx))
+ rcvd = 0;
+ if (argv_find (argv, argc, "route-map", &idx))
+ rmap_name = argv[++idx]->arg;
return peer_adj_routes (vty, peer, afi, safi, rcvd, rmap_name, uj);
}
DEFUN (show_ip_bgp_neighbor_received_prefix_filter,
show_ip_bgp_neighbor_received_prefix_filter_cmd,
- "show [ip] bgp [<view|vrf> WORD] [<ipv4|ipv6> [unicast]] neighbors <A.B.C.D|X:X::X:X|WORD> received prefix-filter [json]",
+ "show [ip] bgp [<ipv4|ipv6> [unicast]] neighbors <A.B.C.D|X:X::X:X|WORD> received prefix-filter [json]",
SHOW_STR
IP_STR
BGP_STR
- BGP_INSTANCE_HELP_STR
- "Address family\n"
- "Address family\n"
+ "Address Family\n"
+ "Address Family\n"
"Address Family modifier\n"
"Detailed information on TCP and BGP neighbor connections\n"
"Neighbor to display information about\n"
"Display the prefixlist filter\n"
"JavaScript Object Notation\n")
{
- int idx_view_vrf = 3;
- int idx_vrf = 4;
- int idx_afi;
- int idx_safi;
- int idx_neighbors;
- int idx_peer;
- afi_t afi;
- safi_t safi;
+ afi_t afi = AFI_IP6;
+ safi_t safi = SAFI_UNICAST;
+ char *peerstr = NULL;
+
char name[BUFSIZ];
union sockunion su;
struct peer *peer;
int count, ret;
- u_char uj = use_json(argc, argv);
- bgp_get_argv_vrf (argc, argv, &afi, &safi, &idx_view_vrf, &idx_vrf, &idx_afi);
- idx_safi = idx_afi + 1;
- bgp_get_argv_afi_safi (argc, argv, idx_afi, idx_safi, &afi, &safi, &idx_neighbors);
- idx_peer = idx_neighbors + 1;
+ int idx = 0;
- ret = str2sockunion (argv[idx_peer]->arg, &su);
+ /* show [ip] bgp */
+ if (argv_find (argv, argc, "ip", &idx))
+ afi = AFI_IP;
+ /* [<ipv4|ipv6> [unicast]] */
+ if (argv_find (argv, argc, "ipv4", &idx))
+ afi = AFI_IP;
+ if (argv_find (argv, argc, "ipv6", &idx))
+ afi = AFI_IP6;
+ /* neighbors <A.B.C.D|X:X::X:X|WORD> */
+ argv_find (argv, argc, "neighbors", &idx);
+ peerstr = argv[++idx]->arg;
+
+ u_char uj = use_json(argc, argv);
+
+ ret = str2sockunion (peerstr, &su);
if (ret < 0)
{
- peer = peer_lookup_by_conf_if (NULL, argv[idx_peer]->arg);
+ peer = peer_lookup_by_conf_if (NULL, peerstr);
if (! peer)
{
if (uj)
vty_out (vty, "{}%s", VTY_NEWLINE);
else
- vty_out (vty, "%% Malformed address or name: %s%s", argv[idx_peer]->arg, VTY_NEWLINE);
+ vty_out (vty, "%% Malformed address or name: %s%s", peerstr, VTY_NEWLINE);
return CMD_WARNING;
}
}
if (count)
{
if (!uj)
- vty_out (vty, "Address family: %s%s", afi_safi_print(afi, safi), VTY_NEWLINE);
+ vty_out (vty, "Address Family: %s%s", afi_safi_print(afi, safi), VTY_NEWLINE);
prefix_bgp_show_prefix_list (vty, afi, name, uj);
}
else
DEFUN (show_ip_bgp_neighbor_routes,
show_ip_bgp_neighbor_routes_cmd,
- "show [ip] bgp [<view|vrf> WORD] [<ipv4 [unicast]|ipv6 [unicast]|encap [unicast]|ipv4 multicast|vpnv4 unicast>] neighbors <A.B.C.D|X:X::X:X|WORD> <flap-statistics|dampened-routes|routes> [json]",
+ "show [ip] bgp [<view|vrf> WORD] [<ipv4 [<unicast|multicast>]|ipv6 [<unicast|multicast>]|encap [unicast]|vpnv4 [unicast]>] neighbors <A.B.C.D|X:X::X:X|WORD> <flap-statistics|dampened-routes|routes> [json]",
SHOW_STR
IP_STR
BGP_STR
BGP_INSTANCE_HELP_STR
- "Address family\n"
- "Address family\n"
- "Address family\n"
- "Address family\n"
+ "Address Family\n"
+ "Address Family modifier\n"
+ "Address Family modifier\n"
+ "Address Family\n"
+ "Address Family modifier\n"
+ "Address Family modifier\n"
+ "Address Family\n"
"Address Family modifier\n"
- "Address family\n"
+ "Address Family\n"
"Address Family modifier\n"
"Detailed information on TCP and BGP neighbor connections\n"
"Neighbor to display information about\n"
"Neighbor to display information about\n"
"Neighbor on bgp configured interface\n"
- "Display routes learned from neighbor\n"
- "Display the dampened routes received from neighbor\n"
"Display flap statistics of the routes learned from neighbor\n"
+ "Display the dampened routes received from neighbor\n"
+ "Display routes learned from neighbor\n"
"JavaScript Object Notation\n")
{
- int idx_view_vrf = 3;
- int idx_vrf = 4;
- int idx_afi;
- int idx_safi;
- int idx_peer;
- int idx_sh_type;
char *vrf = NULL;
- afi_t afi;
- safi_t safi;
+ char *peerstr = NULL;
+
+ afi_t afi = AFI_IP6;
+ safi_t safi = SAFI_UNICAST;
struct peer *peer;
enum bgp_show_type sh_type = bgp_show_type_neighbor;
- u_char uj = use_json(argc, argv);
- vrf = bgp_get_argv_vrf (argc, argv, &afi, &safi, &idx_view_vrf, &idx_vrf, &idx_afi);
- idx_safi = idx_afi + 1;
- bgp_get_argv_afi_safi (argc, argv, idx_afi, idx_safi, &afi, &safi, &idx_peer);
+ int idx = 0;
- peer = peer_lookup_in_view (vty, vrf, argv[idx_peer]->arg, uj);
+ /* show [ip] bgp */
+ if (argv_find (argv, argc, "ip", &idx))
+ afi = AFI_IP;
+ /* [<view|vrf> WORD] */
+ if (argv_find (argv, argc, "view", &idx) || argv_find (argv, argc, "vrf", &idx))
+ vrf = argv[++idx]->arg;
+ /* [<ipv4 [<unicast|multicast>]|ipv6 [<unicast|multicast>]|encap [unicast]|vpnv4 [unicast]>] */
+ if (argv_find (argv, argc, "ipv4", &idx) || argv_find (argv, argc, "ipv6", &idx))
+ {
+ afi = strmatch(argv[idx]->text, "ipv6") ? AFI_IP6 : AFI_IP;
+ if (argv_find (argv, argc, "unicast", &idx) || argv_find (argv, argc, "multicast", &idx))
+ safi = strmatch (argv[idx]->text, "unicast") ? SAFI_UNICAST : SAFI_MULTICAST;
+ }
+ else if (argv_find (argv, argc, "encap", &idx) || argv_find (argv, argc, "vpnv4", &idx))
+ {
+ afi = AFI_IP;
+ safi = strmatch (argv[idx]->text, "encap") ? SAFI_ENCAP : SAFI_MPLS_VPN;
+ // advance idx if necessary
+ argv_find (argv, argc, "unicast", &idx);
+ }
+ /* neighbors <A.B.C.D|X:X::X:X|WORD> */
+ argv_find (argv, argc, "neighbors", &idx);
+ peerstr = argv[++idx]->arg;
+
+ u_char uj = use_json(argc, argv);
+
+ peer = peer_lookup_in_view (vty, vrf, peerstr, uj);
if (! peer)
{
vty_out (vty, "No such neighbor%s", VTY_NEWLINE);
return CMD_WARNING;
}
- idx_sh_type = idx_peer + 1;
-
- if (strmatch(argv[idx_sh_type]->text, "routes"))
- sh_type = bgp_show_type_neighbor;
-
- else if (strmatch(argv[idx_sh_type]->text, "dampened-routes"))
- sh_type = bgp_show_type_damp_neighbor;
-
- else if (strmatch(argv[idx_sh_type]->text, "flap-statistics"))
+ if (argv_find (argv, argc, "flap-statistics", &idx))
sh_type = bgp_show_type_flap_neighbor;
+ else if (argv_find (argv, argc, "dampened-routes", &idx))
+ sh_type = bgp_show_type_damp_neighbor;
+ else if (argv_find (argv, argc, "routes", &idx))
+ sh_type = bgp_show_type_neighbor;
return bgp_show_neighbor_route (vty, peer, afi, safi, sh_type, uj);
}
install_element (VIEW_NODE, &show_ip_bgp_instance_all_cmd);
install_element (VIEW_NODE, &show_ip_bgp_ipv4_cmd);
install_element (VIEW_NODE, &show_ip_bgp_route_cmd);
+ install_element (VIEW_NODE, &show_ip_bgp_regexp_cmd);
install_element (VIEW_NODE, &show_ip_bgp_instance_neighbor_advertised_route_cmd);
install_element (VIEW_NODE, &show_ip_bgp_neighbor_routes_cmd);
}
-/* Address family configuration. */
+/* Address Family configuration. */
DEFUN (address_family_ipv4,
address_family_ipv4_cmd,
"address-family ipv4",
"Enter Address Family command mode\n"
- "Address family\n")
+ "Address Family\n")
{
vty->node = BGP_IPV4_NODE;
return CMD_SUCCESS;
address_family_ipv4_safi_cmd,
"address-family ipv4 <unicast|multicast>",
"Enter Address Family command mode\n"
- "Address family\n"
+ "Address Family\n"
"Address Family modifier\n"
"Address Family modifier\n")
{
address_family_ipv6_cmd,
"address-family ipv6",
"Enter Address Family command mode\n"
- "Address family\n")
+ "Address Family\n")
{
vty->node = BGP_IPV6_NODE;
return CMD_SUCCESS;
address_family_ipv6_safi_cmd,
"address-family ipv6 <unicast|multicast>",
"Enter Address Family command mode\n"
- "Address family\n"
+ "Address Family\n"
"Address Family modifier\n"
"Address Family modifier\n")
{
address_family_vpnv4_cmd,
"address-family vpnv4 [unicast]",
"Enter Address Family command mode\n"
- "Address family\n"
+ "Address Family\n"
"Address Family Modifier\n")
{
vty->node = BGP_VPNV4_NODE;
address_family_vpnv6_cmd,
"address-family vpnv6 [unicast]",
"Enter Address Family command mode\n"
- "Address family\n"
+ "Address Family\n"
"Address Family Modifier\n")
{
vty->node = BGP_VPNV6_NODE;
address_family_encap_cmd,
"address-family <encap|encapv4>",
"Enter Address Family command mode\n"
- "Address family\n"
- "Address family\n")
+ "Address Family\n"
+ "Address Family\n")
{
vty->node = BGP_ENCAP_NODE;
return CMD_SUCCESS;
address_family_encapv6_cmd,
"address-family encapv6",
"Enter Address Family command mode\n"
- "Address family\n")
+ "Address Family\n")
{
vty->node = BGP_ENCAPV6_NODE;
return CMD_SUCCESS;
return CMD_SUCCESS;
}
-char *
-bgp_get_argv_vrf (int argc, struct cmd_token **argv, afi_t *afi, safi_t *safi,
- int *idx_view_vrf, int *idx_vrf, int *idx_next_token)
-{
- /*
- * The DEFUN that calls this MUST begin with one of the following
- * clear [ip] bgp [<view|vrf> WORD]
- * show [ip] bgp [<view|vrf> WORD]
- *
- * We will do the following
- * - set the afi/safi
- * - decrement the idx_view_vrf and idx_vrf pointers if needed
- * - return a pointer to the vrf name
- */
- int idx_ip = 1;
-
- /*
- * If the user does "<clear|show> ip bgp" then we default the afi safi to ipv4 unicast.
- * If the user does "<clear|show> bgp" then we default the afi safi to ipv6 unicast.
- * This may be over-written later in the command if they explicitly
- * specify an afi safi.
- */
- if (strmatch(argv[idx_ip]->text, "ip"))
- {
- *afi = AFI_IP;
- *safi = SAFI_UNICAST;
- }
- else
- {
- *afi = AFI_IP6;
- *safi = SAFI_UNICAST;
- *idx_view_vrf = *idx_view_vrf - 1;
- *idx_vrf = *idx_vrf - 1;
- }
-
- if (argc > *idx_vrf)
- if (strmatch(argv[*idx_view_vrf]->text, "view") || strmatch(argv[*idx_view_vrf]->text, "vrf"))
- {
- *idx_next_token = *idx_vrf + 1;
- return argv[*idx_vrf]->arg;
- }
-
- *idx_next_token = *idx_view_vrf;
- return NULL;
-}
-
-void
-bgp_get_argv_afi_safi (int argc, struct cmd_token **argv,
- int idx_afi, int idx_safi,
- afi_t *afi, safi_t *safi,
- int *idx_next_token)
-{
- /*
- * The DEFUN that calls this must use
- * <ipv4 unicast|ipv4 multicast|ipv6 unicast|vpnv4 unicast|encap unicast>
- */
- if (strmatch(argv[idx_afi]->text, "ipv4"))
- {
- *afi = AFI_IP;
-
- if (strmatch(argv[idx_safi]->text, "unicast"))
- *safi = SAFI_UNICAST;
- else if (strmatch(argv[idx_safi]->text, "multicast"))
- *safi = SAFI_MULTICAST;
-
- if (idx_next_token)
- *idx_next_token = idx_safi + 1;
- }
- else if (strmatch(argv[idx_afi]->text, "ipv6"))
- {
- *afi = AFI_IP6;
-
- if (strmatch(argv[idx_safi]->text, "unicast"))
- *safi = SAFI_UNICAST;
- else if (strmatch(argv[idx_safi]->text, "multicast"))
- *safi = SAFI_MULTICAST;
-
- if (idx_next_token)
- *idx_next_token = idx_safi + 1;
- }
- else if (strmatch(argv[idx_afi]->text, "encap"))
- {
- *afi = AFI_IP;
- *safi = SAFI_ENCAP;
-
- if (idx_next_token)
- *idx_next_token = idx_safi + 1;
- }
- else if (strmatch(argv[idx_afi]->text, "vpnv4"))
- {
- *afi = AFI_IP;
-
- if (idx_next_token)
- *idx_next_token = idx_safi + 1;
- *safi = SAFI_MPLS_VPN;
- }
- else
- {
- if (idx_next_token)
- *idx_next_token = idx_afi;
- }
-}
-
/* one clear bgp command to rule them all */
DEFUN (clear_ip_bgp_all,
clear_ip_bgp_all_cmd,
"Clear all external peers\n"
"Clear all members of peer-group\n"
"BGP peer-group name\n"
- "Address family\n"
+ "Address Family\n"
"Address Family modifier\n"
- "Address family\n"
"Address Family modifier\n"
- "Address family\n"
+ "Address Family\n"
"Address Family modifier\n"
- "Address family\n"
"Address Family modifier\n"
- "Address family\n"
+ "Address Family\n"
+ "Address Family modifier\n"
+ "Address Family\n"
"Address Family modifier\n"
- BGP_SOFT_STR
BGP_SOFT_STR
BGP_SOFT_IN_STR
- BGP_SOFT_STR
BGP_SOFT_OUT_STR
BGP_SOFT_IN_STR
"Push out prefix-list ORF and do inbound soft reconfig\n"
- BGP_SOFT_IN_STR
BGP_SOFT_OUT_STR)
{
char *vrf = NULL;
"clear bgp ipv6 <unicast|multicast> prefix X:X::X:X/M",
CLEAR_STR
BGP_STR
- "Address family\n"
+ "Address Family\n"
"Address Family Modifier\n"
"Clear bestpath and re-advertise\n"
"IPv6 prefix <network>/<length>, e.g., 3ffe::/16\n")
CLEAR_STR
BGP_STR
BGP_INSTANCE_HELP_STR
- "Address family\n"
+ "Address Family\n"
"Address Family Modifier\n"
"Clear bestpath and re-advertise\n"
"IPv6 prefix <network>/<length>, e.g., 3ffe::/16\n")
IP_STR
BGP_STR
BGP_INSTANCE_HELP_STR
- "Address family\n"
+ "Address Family\n"
"Address Family modifier\n"
- "Address family\n"
+ "Address Family\n"
"Address Family modifier\n"
- "Address family\n"
+ "Address Family\n"
"Address Family modifier\n"
- "Address family\n"
+ "Address Family\n"
"Address Family modifier\n"
- "Address family\n"
+ "Address Family\n"
"Address Family modifier\n"
"Summary of BGP neighbor status\n"
"JavaScript Object Notation\n")
for (safi = SAFI_UNICAST ; safi < SAFI_MAX ; safi++)
if (p->afc_adv[afi][safi] || p->afc_recv[afi][safi])
{
- vty_out (vty, " Address family %s:", afi_safi_print (afi, safi));
+ vty_out (vty, " Address Family %s:", afi_safi_print (afi, safi));
if (p->afc_adv[afi][safi])
vty_out (vty, " advertised");
if (p->afc_recv[afi][safi])
IP_STR
BGP_STR
BGP_INSTANCE_ALL_HELP_STR
- "Address family\n"
- "Address family\n"
+ "Address Family\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_STR
IP_STR
BGP_STR
- "Address family\n"
+ "Address Family\n"
"Address Family modifier\n"
"Address Family modifier\n"
"Path information\n")
IP_STR
BGP_STR
BGP_INSTANCE_HELP_STR
- "Address family\n"
+ "Address Family\n"
"Address Family modifier\n"
- "Address family\n"
+ "Address Family\n"
"Address Family modifier\n"
- "Address family\n"
+ "Address Family\n"
"Address Family modifier\n"
- "Address family\n"
+ "Address Family\n"
"Address Family modifier\n"
- "Address family\n"
+ "Address Family\n"
"Address Family modifier\n"
"Detailed info about dynamic update groups\n"
"Specific subgroup to display detailed info for\n")
"show bgp <ipv4|ipv6> <unicast|multicast> update-groups <advertise-queue|advertised-routes|packet-queue>",
SHOW_STR
BGP_STR
- "Address family\n"
- "Address family\n"
+ "Address Family\n"
+ "Address Family\n"
"Address Family modifier\n"
"Address Family modifier\n"
"BGP update groups\n"
"show bgp <ipv4|ipv6> <unicast|multicast> update-groups SUBGROUP-ID <advertise-queue|advertised-routes|packet-queue>",
SHOW_STR
BGP_STR
- "Address family\n"
- "Address family\n"
+ "Address Family\n"
+ "Address Family\n"
"Address Family modifier\n"
"Address Family modifier\n"
"BGP update groups\n"
/* "bgp config-type" commands. */
install_element (CONFIG_NODE, &bgp_config_type_cmd);
+ install_element (CONFIG_NODE, &no_bgp_config_type_cmd);
/* bgp route-map delay-timer commands. */
install_element (CONFIG_NODE, &bgp_set_route_map_delay_timer_cmd);
install_element (VIEW_NODE, &show_bgp_updgrps_adj_s_cmd);
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_bgp_updgrps_stats_cmd);
+ install_element (VIEW_NODE, &show_bgp_instance_updgrps_stats_cmd);
/* "show ip bgp neighbors" commands. */
install_element (VIEW_NODE, &show_ip_bgp_neighbors_cmd);