bgpd: add 'int idx_foo' argv index variables

Signed-off-by: Daniel Walton <dwalton@cumulusnetworks.com>
This commit is contained in:
Daniel Walton 2016-09-23 19:45:50 +00:00
parent 7c022376c8
commit c500ae4060
9 changed files with 1738 additions and 883 deletions

View File

@ -630,7 +630,8 @@ DEFUN (debug_bgp_neighbor_events_peer,
"BGP IPv6 neighbor to debug\n"
"BGP neighbor on interface to debug\n")
{
const char *host = argv[3]->arg;
int idx_peer = 3;
const char *host = argv[idx_peer]->arg;
if (!bgp_debug_neighbor_events_peers)
bgp_debug_neighbor_events_peers = list_new ();
@ -684,8 +685,9 @@ DEFUN (no_debug_bgp_neighbor_events_peer,
"BGP IPv6 neighbor to debug\n"
"BGP neighbor on interface to debug\n")
{
int idx_peer = 4;
int found_peer = 0;
const char *host = argv[4]->arg;
const char *host = argv[idx_peer]->arg;
if (bgp_debug_neighbor_events_peers && !list_isempty(bgp_debug_neighbor_events_peers))
{
@ -774,7 +776,8 @@ DEFUN (debug_bgp_keepalive_peer,
"BGP IPv6 neighbor to debug\n"
"BGP neighbor on interface to debug\n")
{
const char *host = argv[3]->arg;
int idx_peer = 3;
const char *host = argv[idx_peer]->arg;
if (!bgp_debug_keepalive_peers)
bgp_debug_keepalive_peers = list_new ();
@ -828,8 +831,9 @@ DEFUN (no_debug_bgp_keepalive_peer,
"BGP IPv6 neighbor to debug\n"
"BGP neighbor on interface to debug\n")
{
int idx_peer = 4;
int found_peer = 0;
const char *host = argv[4]->arg;
const char *host = argv[idx_peer]->arg;
if (bgp_debug_keepalive_peers && !list_isempty(bgp_debug_keepalive_peers))
{
@ -863,11 +867,12 @@ DEFUN (debug_bgp_bestpath_prefix,
"IPv6 prefix <network>/<length>\n")
{
int idx_ipv4_ipv6_prefixlen = 3;
struct prefix *argv_p;
int ret;
argv_p = prefix_new();
ret = str2prefix (argv[3]->arg, argv_p);
ret = str2prefix (argv[idx_ipv4_ipv6_prefixlen]->arg, argv_p);
if (!ret)
{
prefix_free(argv_p);
@ -881,7 +886,7 @@ DEFUN (debug_bgp_bestpath_prefix,
if (bgp_debug_list_has_entry(bgp_debug_bestpath_prefixes, NULL, argv_p))
{
vty_out (vty, "BGP bestptah debugging is already enabled for %s%s", argv[3]->arg, VTY_NEWLINE);
vty_out (vty, "BGP bestptah debugging is already enabled for %s%s", argv[idx_ipv4_ipv6_prefixlen]->arg, VTY_NEWLINE);
return CMD_SUCCESS;
}
@ -894,7 +899,7 @@ DEFUN (debug_bgp_bestpath_prefix,
else
{
TERM_DEBUG_ON (bestpath, BESTPATH);
vty_out (vty, "BGP bestpath debugging is on for %s%s", argv[3]->arg, VTY_NEWLINE);
vty_out (vty, "BGP bestpath debugging is on for %s%s", argv[idx_ipv4_ipv6_prefixlen]->arg, VTY_NEWLINE);
}
return CMD_SUCCESS;
@ -911,12 +916,13 @@ DEFUN (no_debug_bgp_bestpath_prefix,
"IPv6 prefix <network>/<length>\n")
{
int idx_ipv4_ipv6_prefixlen = 4;
struct prefix *argv_p;
int found_prefix = 0;
int ret;
argv_p = prefix_new();
ret = str2prefix (argv[4]->arg, argv_p);
ret = str2prefix (argv[idx_ipv4_ipv6_prefixlen]->arg, argv_p);
if (!ret)
{
prefix_free(argv_p);
@ -943,9 +949,9 @@ DEFUN (no_debug_bgp_bestpath_prefix,
}
if (found_prefix)
vty_out (vty, "BGP bestpath debugging is off for %s%s", argv[4]->arg, VTY_NEWLINE);
vty_out (vty, "BGP bestpath debugging is off for %s%s", argv[idx_ipv4_ipv6_prefixlen]->arg, VTY_NEWLINE);
else
vty_out (vty, "BGP bestpath debugging was not enabled for %s%s", argv[4]->arg, VTY_NEWLINE);
vty_out (vty, "BGP bestpath debugging was not enabled for %s%s", argv[idx_ipv4_ipv6_prefixlen]->arg, VTY_NEWLINE);
return CMD_SUCCESS;
}
@ -1005,22 +1011,23 @@ DEFUN (debug_bgp_update_direct,
"Inbound updates\n"
"Outbound updates\n")
{
int idx_in_out = 3;
if (strncmp ("i", argv[3]->arg, 1) == 0)
if (strncmp ("i", argv[idx_in_out]->arg, 1) == 0)
bgp_debug_list_free(bgp_debug_update_in_peers);
else
bgp_debug_list_free(bgp_debug_update_out_peers);
if (vty->node == CONFIG_NODE)
{
if (strncmp ("i", argv[3]->arg, 1) == 0)
if (strncmp ("i", argv[idx_in_out]->arg, 1) == 0)
DEBUG_ON (update, UPDATE_IN);
else
DEBUG_ON (update, UPDATE_OUT);
}
else
{
if (strncmp ("i", argv[3]->arg, 1) == 0)
if (strncmp ("i", argv[idx_in_out]->arg, 1) == 0)
{
TERM_DEBUG_ON (update, UPDATE_IN);
vty_out (vty, "BGP updates debugging is on (inbound)%s", VTY_NEWLINE);
@ -1046,7 +1053,9 @@ DEFUN (debug_bgp_update_direct_peer,
"BGP IPv6 neighbor to debug\n"
"BGP neighbor on interface to debug\n")
{
const char *host = argv[4]->arg;
int idx_in_out = 3;
int idx_peer = 4;
const char *host = argv[idx_peer]->arg;
int inbound;
if (!bgp_debug_update_in_peers)
@ -1055,7 +1064,7 @@ DEFUN (debug_bgp_update_direct_peer,
if (!bgp_debug_update_out_peers)
bgp_debug_update_out_peers = list_new ();
if (strncmp ("i", argv[3]->arg, 1) == 0)
if (strncmp ("i", argv[idx_in_out]->arg, 1) == 0)
inbound = 1;
else
inbound = 0;
@ -1117,12 +1126,12 @@ DEFUN (debug_bgp_update_direct_peer,
if (inbound)
{
TERM_DEBUG_ON (update, UPDATE_IN);
vty_out (vty, "BGP updates debugging is on (inbound) for %s%s", argv[4]->arg, VTY_NEWLINE);
vty_out (vty, "BGP updates debugging is on (inbound) for %s%s", argv[idx_peer]->arg, VTY_NEWLINE);
}
else
{
TERM_DEBUG_ON (update, UPDATE_OUT);
vty_out (vty, "BGP updates debugging is on (outbound) for %s%s", argv[4]->arg, VTY_NEWLINE);
vty_out (vty, "BGP updates debugging is on (outbound) for %s%s", argv[idx_peer]->arg, VTY_NEWLINE);
}
}
return CMD_SUCCESS;
@ -1138,7 +1147,8 @@ DEFUN (no_debug_bgp_update_direct,
"Inbound updates\n"
"Outbound updates\n")
{
if (strncmp ("i", argv[4]->arg, 1) == 0)
int idx_in_out = 4;
if (strncmp ("i", argv[idx_in_out]->arg, 1) == 0)
{
bgp_debug_list_free(bgp_debug_update_in_peers);
@ -1183,11 +1193,13 @@ DEFUN (no_debug_bgp_update_direct_peer,
"BGP IPv6 neighbor to debug\n"
"BGP neighbor on interface to debug\n")
{
int idx_in_out = 4;
int idx_peer = 5;
int inbound;
int found_peer = 0;
const char *host = argv[5]->arg;
const char *host = argv[idx_peer]->arg;
if (strncmp ("i", argv[4]->arg, 1) == 0)
if (strncmp ("i", argv[idx_in_out]->arg, 1) == 0)
inbound = 1;
else
inbound = 0;
@ -1271,11 +1283,12 @@ DEFUN (debug_bgp_update_prefix,
"IPv6 prefix <network>/<length>\n")
{
int idx_ipv4_ipv6_prefixlen = 4;
struct prefix *argv_p;
int ret;
argv_p = prefix_new();
ret = str2prefix (argv[4]->arg, argv_p);
ret = str2prefix (argv[idx_ipv4_ipv6_prefixlen]->arg, argv_p);
if (!ret)
{
prefix_free(argv_p);
@ -1289,7 +1302,7 @@ DEFUN (debug_bgp_update_prefix,
if (bgp_debug_list_has_entry(bgp_debug_update_prefixes, NULL, argv_p))
{
vty_out (vty, "BGP updates debugging is already enabled for %s%s", argv[4]->arg, VTY_NEWLINE);
vty_out (vty, "BGP updates debugging is already enabled for %s%s", argv[idx_ipv4_ipv6_prefixlen]->arg, VTY_NEWLINE);
return CMD_SUCCESS;
}
@ -1302,7 +1315,7 @@ DEFUN (debug_bgp_update_prefix,
else
{
TERM_DEBUG_ON (update, UPDATE_PREFIX);
vty_out (vty, "BGP updates debugging is on for %s%s", argv[4]->arg, VTY_NEWLINE);
vty_out (vty, "BGP updates debugging is on for %s%s", argv[idx_ipv4_ipv6_prefixlen]->arg, VTY_NEWLINE);
}
return CMD_SUCCESS;
@ -1320,12 +1333,13 @@ DEFUN (no_debug_bgp_update_prefix,
"IPv6 prefix <network>/<length>\n")
{
int idx_ipv4_ipv6_prefixlen = 5;
struct prefix *argv_p;
int found_prefix = 0;
int ret;
argv_p = prefix_new();
ret = str2prefix (argv[5]->arg, argv_p);
ret = str2prefix (argv[idx_ipv4_ipv6_prefixlen]->arg, argv_p);
if (!ret)
{
prefix_free(argv_p);
@ -1352,9 +1366,9 @@ DEFUN (no_debug_bgp_update_prefix,
}
if (found_prefix)
vty_out (vty, "BGP updates debugging is off for %s%s", argv[5]->arg, VTY_NEWLINE);
vty_out (vty, "BGP updates debugging is off for %s%s", argv[idx_ipv4_ipv6_prefixlen]->arg, VTY_NEWLINE);
else
vty_out (vty, "BGP updates debugging was not enabled for %s%s", argv[5]->arg, VTY_NEWLINE);
vty_out (vty, "BGP updates debugging was not enabled for %s%s", argv[idx_ipv4_ipv6_prefixlen]->arg, VTY_NEWLINE);
return CMD_SUCCESS;
}
@ -1418,11 +1432,12 @@ DEFUN (debug_bgp_zebra_prefix,
"IPv6 prefix <network>/<length>\n")
{
int idx_ipv4_ipv6_prefixlen = 4;
struct prefix *argv_p;
int ret;
argv_p = prefix_new();
ret = str2prefix (argv[4]->arg, argv_p);
ret = str2prefix (argv[idx_ipv4_ipv6_prefixlen]->arg, argv_p);
if (!ret)
{
prefix_free(argv_p);
@ -1435,7 +1450,7 @@ DEFUN (debug_bgp_zebra_prefix,
if (bgp_debug_list_has_entry(bgp_debug_zebra_prefixes, NULL, argv_p))
{
vty_out (vty, "BGP zebra debugging is already enabled for %s%s", argv[4]->arg, VTY_NEWLINE);
vty_out (vty, "BGP zebra debugging is already enabled for %s%s", argv[idx_ipv4_ipv6_prefixlen]->arg, VTY_NEWLINE);
return CMD_SUCCESS;
}
@ -1446,7 +1461,7 @@ DEFUN (debug_bgp_zebra_prefix,
else
{
TERM_DEBUG_ON (zebra, ZEBRA);
vty_out (vty, "BGP zebra debugging is on for %s%s", argv[4]->arg, VTY_NEWLINE);
vty_out (vty, "BGP zebra debugging is on for %s%s", argv[idx_ipv4_ipv6_prefixlen]->arg, VTY_NEWLINE);
}
return CMD_SUCCESS;
@ -1484,12 +1499,13 @@ DEFUN (no_debug_bgp_zebra_prefix,
"IPv6 prefix <network>/<length>\n")
{
int idx_ipv4_ipv6_prefixlen = 5;
struct prefix *argv_p;
int found_prefix = 0;
int ret;
argv_p = prefix_new();
ret = str2prefix (argv[5]->arg, argv_p);
ret = str2prefix (argv[idx_ipv4_ipv6_prefixlen]->arg, argv_p);
if (!ret)
{
prefix_free(argv_p);
@ -1514,9 +1530,9 @@ DEFUN (no_debug_bgp_zebra_prefix,
}
if (found_prefix)
vty_out (vty, "BGP zebra debugging is off for %s%s", argv[5]->arg, VTY_NEWLINE);
vty_out (vty, "BGP zebra debugging is off for %s%s", argv[idx_ipv4_ipv6_prefixlen]->arg, VTY_NEWLINE);
else
vty_out (vty, "BGP zebra debugging was not enabled for %s%s", argv[5]->arg, VTY_NEWLINE);
vty_out (vty, "BGP zebra debugging was not enabled for %s%s", argv[idx_ipv4_ipv6_prefixlen]->arg, VTY_NEWLINE);
return CMD_SUCCESS;
}

View File

@ -736,13 +736,16 @@ DEFUN (dump_bgp_all,
"Output filename\n"
"Interval of output\n")
{
int idx_dump_routes = 2;
int idx_path = 3;
int idx_interval = 4;
int bgp_dump_type = 0;
const char *interval = NULL;
struct bgp_dump *bgp_dump_struct = NULL;
const struct bgp_dump_type_map *map = NULL;
for (map = bgp_dump_type_map; map->str; map++)
if (strcmp(argv[2]->arg, map->str) == 0)
if (strcmp(argv[idx_dump_routes]->arg, map->str) == 0)
bgp_dump_type = map->type;
switch (bgp_dump_type)
@ -763,10 +766,10 @@ DEFUN (dump_bgp_all,
/* When an interval is given */
if (argc == 3)
interval = argv[4]->arg;
interval = argv[idx_interval]->arg;
return bgp_dump_set (vty, bgp_dump_struct, bgp_dump_type,
argv[3]->arg, interval);
argv[idx_path]->arg, interval);
}
DEFUN (no_dump_bgp_all,
@ -781,12 +784,13 @@ DEFUN (no_dump_bgp_all,
"Stop dump process updates-et\n"
"Stop dump process route-mrt\n")
{
int idx_dump_routes = 3;
int bgp_dump_type = 0;
const struct bgp_dump_type_map *map = NULL;
struct bgp_dump *bgp_dump_struct = NULL;
for (map = bgp_dump_type_map; map->str; map++)
if (strcmp(argv[3]->arg, map->str) == 0)
if (strcmp(argv[idx_dump_routes]->arg, map->str) == 0)
bgp_dump_type = map->type;
switch (bgp_dump_type)

View File

@ -437,6 +437,8 @@ DEFUN (ip_as_path,
"Specify packets to forward\n"
"A regular-expression to match the BGP AS paths\n")
{
int idx_word = 3;
int idx_permit_deny = 4;
enum as_filter_type type;
struct as_filter *asfilter;
struct as_list *aslist;
@ -444,9 +446,9 @@ DEFUN (ip_as_path,
char *regstr;
/* Check the filter type. */
if (strncmp (argv[4]->arg, "p", 1) == 0)
if (strncmp (argv[idx_permit_deny]->arg, "p", 1) == 0)
type = AS_FILTER_PERMIT;
else if (strncmp (argv[4]->arg, "d", 1) == 0)
else if (strncmp (argv[idx_permit_deny]->arg, "d", 1) == 0)
type = AS_FILTER_DENY;
else
{
@ -461,7 +463,7 @@ DEFUN (ip_as_path,
if (!regex)
{
XFREE (MTYPE_TMP, regstr);
vty_out (vty, "can't compile regexp %s%s", argv[3]->arg,
vty_out (vty, "can't compile regexp %s%s", argv[idx_word]->arg,
VTY_NEWLINE);
return CMD_WARNING;
}
@ -471,7 +473,7 @@ DEFUN (ip_as_path,
XFREE (MTYPE_TMP, regstr);
/* Install new filter to the access_list. */
aslist = as_list_get (argv[3]->arg);
aslist = as_list_get (argv[idx_word]->arg);
/* Duplicate insertion check. */;
if (as_list_dup_check (aslist, asfilter))
@ -494,6 +496,8 @@ DEFUN (no_ip_as_path,
"Specify packets to forward\n"
"A regular-expression to match the BGP AS paths\n")
{
int idx_word = 4;
int idx_permit_deny = 5;
enum as_filter_type type;
struct as_filter *asfilter;
struct as_list *aslist;
@ -501,18 +505,18 @@ DEFUN (no_ip_as_path,
regex_t *regex;
/* Lookup AS list from AS path list. */
aslist = as_list_lookup (argv[4]->arg);
aslist = as_list_lookup (argv[idx_word]->arg);
if (aslist == NULL)
{
vty_out (vty, "ip as-path access-list %s doesn't exist%s", argv[4]->arg,
vty_out (vty, "ip as-path access-list %s doesn't exist%s", argv[idx_word]->arg,
VTY_NEWLINE);
return CMD_WARNING;
}
/* Check the filter type. */
if (strncmp (argv[5]->arg, "p", 1) == 0)
if (strncmp (argv[idx_permit_deny]->arg, "p", 1) == 0)
type = AS_FILTER_PERMIT;
else if (strncmp (argv[5]->arg, "d", 1) == 0)
else if (strncmp (argv[idx_permit_deny]->arg, "d", 1) == 0)
type = AS_FILTER_DENY;
else
{
@ -527,7 +531,7 @@ DEFUN (no_ip_as_path,
if (!regex)
{
XFREE (MTYPE_TMP, regstr);
vty_out (vty, "can't compile regexp %s%s", argv[4]->arg,
vty_out (vty, "can't compile regexp %s%s", argv[idx_word]->arg,
VTY_NEWLINE);
return CMD_WARNING;
}
@ -558,12 +562,13 @@ DEFUN (no_ip_as_path_all,
"Specify an access list name\n"
"Regular expression access list name\n")
{
int idx_word = 4;
struct as_list *aslist;
aslist = as_list_lookup (argv[4]->arg);
aslist = as_list_lookup (argv[idx_word]->arg);
if (aslist == NULL)
{
vty_out (vty, "ip as-path access-list %s doesn't exist%s", argv[4]->arg,
vty_out (vty, "ip as-path access-list %s doesn't exist%s", argv[idx_word]->arg,
VTY_NEWLINE);
return CMD_WARNING;
}
@ -572,7 +577,7 @@ DEFUN (no_ip_as_path_all,
/* Run hook function. */
if (as_list_master.delete_hook)
(*as_list_master.delete_hook) (argv[4]->arg);
(*as_list_master.delete_hook) (argv[idx_word]->arg);
return CMD_SUCCESS;
}
@ -628,9 +633,10 @@ DEFUN (show_ip_as_path_access_list,
"List AS path access lists\n"
"AS path access list name\n")
{
int idx_word = 3;
struct as_list *aslist;
aslist = as_list_lookup (argv[3]->arg);
aslist = as_list_lookup (argv[idx_word]->arg);
if (aslist)
as_list_show (vty, aslist);

View File

@ -360,7 +360,10 @@ DEFUN (vpnv4_network,
"BGP tag\n"
"tag value\n")
{
return bgp_static_set_safi (SAFI_MPLS_VPN, vty, argv[1]->arg, argv[3]->arg, argv[5]->arg, NULL);
int idx_ipv4_prefixlen = 1;
int idx_ext_community = 3;
int idx_word = 5;
return bgp_static_set_safi (SAFI_MPLS_VPN, vty, argv[idx_ipv4_prefixlen]->arg, argv[idx_ext_community]->arg, argv[idx_word]->arg, NULL);
}
DEFUN (vpnv4_network_route_map,
@ -375,7 +378,11 @@ DEFUN (vpnv4_network_route_map,
"route map\n"
"route map name\n")
{
return bgp_static_set_safi (SAFI_MPLS_VPN, vty, argv[1]->arg, argv[3]->arg, argv[5]->arg, argv[7]->arg);
int idx_ipv4_prefixlen = 1;
int idx_ext_community = 3;
int idx_word = 5;
int idx_word_2 = 7;
return bgp_static_set_safi (SAFI_MPLS_VPN, vty, argv[idx_ipv4_prefixlen]->arg, argv[idx_ext_community]->arg, argv[idx_word]->arg, argv[idx_word_2]->arg);
}
/* For testing purpose, static route of MPLS-VPN. */
@ -390,7 +397,10 @@ DEFUN (no_vpnv4_network,
"BGP tag\n"
"tag value\n")
{
return bgp_static_unset_safi (SAFI_MPLS_VPN, vty, argv[2]->arg, argv[4]->arg, argv[6]->arg);
int idx_ipv4_prefixlen = 2;
int idx_ext_community = 4;
int idx_word = 6;
return bgp_static_unset_safi (SAFI_MPLS_VPN, vty, argv[idx_ipv4_prefixlen]->arg, argv[idx_ext_community]->arg, argv[idx_word]->arg);
}
static int
@ -791,10 +801,11 @@ DEFUN (show_bgp_ipv4_vpn_rd,
"VPN Route Distinguisher\n"
JSON_STR)
{
int idx_ext_community = 5;
int ret;
struct prefix_rd prd;
ret = str2prefix_rd (argv[5]->arg, &prd);
ret = str2prefix_rd (argv[idx_ext_community]->arg, &prd);
if (! ret)
{
vty_out (vty, "%% Malformed Route Distinguisher%s", VTY_NEWLINE);
@ -814,10 +825,11 @@ DEFUN (show_bgp_ipv6_vpn_rd,
"VPN Route Distinguisher\n"
JSON_STR)
{
int idx_ext_community = 5;
int ret;
struct prefix_rd prd;
ret = str2prefix_rd (argv[5]->arg, &prd);
ret = str2prefix_rd (argv[idx_ext_community]->arg, &prd);
if (!ret)
{
vty_out (vty, "%% Malformed Route Distinguisher%s", VTY_NEWLINE);
@ -849,10 +861,11 @@ DEFUN (show_ip_bgp_vpnv4_rd,
"Display information for a route distinguisher\n"
"VPN Route Distinguisher\n")
{
int idx_ext_community = 5;
int ret;
struct prefix_rd prd;
ret = str2prefix_rd (argv[5]->arg, &prd);
ret = str2prefix_rd (argv[idx_ext_community]->arg, &prd);
if (! ret)
{
vty_out (vty, "%% Malformed Route Distinguisher%s", VTY_NEWLINE);
@ -885,10 +898,11 @@ DEFUN (show_ip_bgp_vpnv4_rd_tags,
"VPN Route Distinguisher\n"
"Display BGP tags for prefixes\n")
{
int idx_ext_community = 5;
int ret;
struct prefix_rd prd;
ret = str2prefix_rd (argv[5]->arg, &prd);
ret = str2prefix_rd (argv[idx_ext_community]->arg, &prd);
if (! ret)
{
vty_out (vty, "%% Malformed Route Distinguisher%s", VTY_NEWLINE);
@ -910,12 +924,13 @@ DEFUN (show_ip_bgp_vpnv4_all_neighbor_routes,
"Display routes learned from neighbor\n"
"JavaScript Object Notation\n")
{
int idx_ipv4 = 6;
union sockunion su;
struct peer *peer;
int ret;
u_char uj = use_json(argc, argv);
ret = str2sockunion (argv[6]->arg, &su);
ret = str2sockunion (argv[idx_ipv4]->arg, &su);
if (ret < 0)
{
if (uj)
@ -927,7 +942,7 @@ DEFUN (show_ip_bgp_vpnv4_all_neighbor_routes,
json_object_free(json_no);
}
else
vty_out (vty, "Malformed address: %s%s", argv[6]->arg, VTY_NEWLINE);
vty_out (vty, "Malformed address: %s%s", argv[idx_ipv4]->arg, VTY_NEWLINE);
return CMD_WARNING;
}
@ -964,13 +979,15 @@ DEFUN (show_ip_bgp_vpnv4_rd_neighbor_routes,
"Display routes learned from neighbor\n"
"JavaScript Object Notation\n")
{
int idx_ext_community = 5;
int idx_ipv4 = 7;
int ret;
union sockunion su;
struct peer *peer;
struct prefix_rd prd;
u_char uj = use_json(argc, argv);
ret = str2prefix_rd (argv[5]->arg, &prd);
ret = str2prefix_rd (argv[idx_ext_community]->arg, &prd);
if (! ret)
{
if (uj)
@ -986,7 +1003,7 @@ DEFUN (show_ip_bgp_vpnv4_rd_neighbor_routes,
return CMD_WARNING;
}
ret = str2sockunion (argv[7]->arg, &su);
ret = str2sockunion (argv[idx_ipv4]->arg, &su);
if (ret < 0)
{
if (uj)
@ -998,7 +1015,7 @@ DEFUN (show_ip_bgp_vpnv4_rd_neighbor_routes,
json_object_free(json_no);
}
else
vty_out (vty, "Malformed address: %s%s", argv[5]->arg, VTY_NEWLINE);
vty_out (vty, "Malformed address: %s%s", argv[idx_ext_community]->arg, VTY_NEWLINE);
return CMD_WARNING;
}
@ -1034,12 +1051,13 @@ DEFUN (show_ip_bgp_vpnv4_all_neighbor_advertised_routes,
"Display the routes advertised to a BGP neighbor\n"
"JavaScript Object Notation\n")
{
int idx_ipv4 = 6;
int ret;
struct peer *peer;
union sockunion su;
u_char uj = use_json(argc, argv);
ret = str2sockunion (argv[6]->arg, &su);
ret = str2sockunion (argv[idx_ipv4]->arg, &su);
if (ret < 0)
{
if (uj)
@ -1051,7 +1069,7 @@ DEFUN (show_ip_bgp_vpnv4_all_neighbor_advertised_routes,
json_object_free(json_no);
}
else
vty_out (vty, "Malformed address: %s%s", argv[6]->arg, VTY_NEWLINE);
vty_out (vty, "Malformed address: %s%s", argv[idx_ipv4]->arg, VTY_NEWLINE);
return CMD_WARNING;
}
peer = peer_lookup (NULL, &su);
@ -1087,13 +1105,15 @@ DEFUN (show_ip_bgp_vpnv4_rd_neighbor_advertised_routes,
"Display the routes advertised to a BGP neighbor\n"
"JavaScript Object Notation\n")
{
int idx_ext_community = 5;
int idx_ipv4 = 7;
int ret;
struct peer *peer;
struct prefix_rd prd;
union sockunion su;
u_char uj = use_json(argc, argv);
ret = str2sockunion (argv[7]->arg, &su);
ret = str2sockunion (argv[idx_ipv4]->arg, &su);
if (ret < 0)
{
if (uj)
@ -1105,7 +1125,7 @@ DEFUN (show_ip_bgp_vpnv4_rd_neighbor_advertised_routes,
json_object_free(json_no);
}
else
vty_out (vty, "Malformed address: %s%s", argv[5]->arg, VTY_NEWLINE);
vty_out (vty, "Malformed address: %s%s", argv[idx_ext_community]->arg, VTY_NEWLINE);
return CMD_WARNING;
}
peer = peer_lookup (NULL, &su);
@ -1124,7 +1144,7 @@ DEFUN (show_ip_bgp_vpnv4_rd_neighbor_advertised_routes,
return CMD_WARNING;
}
ret = str2prefix_rd (argv[5]->arg, &prd);
ret = str2prefix_rd (argv[idx_ext_community]->arg, &prd);
if (! ret)
{
if (uj)

View File

@ -520,7 +520,8 @@ DEFUN (show_ip_bgp_instance_nexthop,
BGP_INSTANCE_HELP_STR
"BGP nexthop table\n")
{
return show_ip_bgp_nexthop_table (vty, argv[4]->arg, 0);
int idx_word = 4;
return show_ip_bgp_nexthop_table (vty, argv[idx_word]->arg, 0);
}
DEFUN (show_ip_bgp_instance_all_nexthop,
@ -545,7 +546,8 @@ DEFUN (show_ip_bgp_instance_nexthop_detail,
BGP_INSTANCE_HELP_STR
"BGP nexthop table\n")
{
return show_ip_bgp_nexthop_table (vty, argv[4]->arg, 1);
int idx_word = 4;
return show_ip_bgp_nexthop_table (vty, argv[idx_word]->arg, 1);
}
void

File diff suppressed because it is too large Load Diff

View File

@ -3000,7 +3000,8 @@ DEFUN (match_peer,
"IP address of peer\n"
"IPv6 address of peer\n")
{
return bgp_route_match_add (vty, vty->index, "peer", argv[2]->arg,
int idx_ip = 2;
return bgp_route_match_add (vty, vty->index, "peer", argv[idx_ip]->arg,
RMAP_EVENT_MATCH_ADDED);
}
@ -3054,7 +3055,8 @@ DEFUN (match_ip_address,
"IP access-list number (expanded range)\n"
"IP Access-list name\n")
{
return bgp_route_match_add (vty, vty->index, "ip address", argv[3]->arg,
int idx_acl = 3;
return bgp_route_match_add (vty, vty->index, "ip address", argv[idx_acl]->arg,
RMAP_EVENT_FILTER_ADDED);
}
@ -3093,7 +3095,8 @@ DEFUN (match_ip_next_hop,
"IP access-list number (expanded range)\n"
"IP Access-list name\n")
{
return bgp_route_match_add (vty, vty->index, "ip next-hop", argv[3]->arg,
int idx_acl = 3;
return bgp_route_match_add (vty, vty->index, "ip next-hop", argv[idx_acl]->arg,
RMAP_EVENT_FILTER_ADDED);
}
@ -3131,7 +3134,8 @@ DEFUN (match_probability,
"Match portion of routes defined by percentage value\n"
"Percentage of routes\n")
{
return bgp_route_match_add (vty, vty->index, "probability", argv[2]->arg,
int idx_number = 2;
return bgp_route_match_add (vty, vty->index, "probability", argv[idx_number]->arg,
RMAP_EVENT_MATCH_ADDED);
}
@ -3168,7 +3172,8 @@ DEFUN (match_ip_route_source,
"IP access-list number (expanded range)\n"
"IP standard access-list name\n")
{
return bgp_route_match_add (vty, vty->index, "ip route-source", argv[3]->arg,
int idx_acl = 3;
return bgp_route_match_add (vty, vty->index, "ip route-source", argv[idx_acl]->arg,
RMAP_EVENT_FILTER_ADDED);
}
@ -3206,8 +3211,9 @@ DEFUN (match_ip_address_prefix_list,
"Match entries of prefix-lists\n"
"IP prefix-list name\n")
{
int idx_word = 4;
return bgp_route_match_add (vty, vty->index, "ip address prefix-list",
argv[4]->arg, RMAP_EVENT_PLIST_ADDED);
argv[idx_word]->arg, RMAP_EVENT_PLIST_ADDED);
}
/*
@ -3244,8 +3250,9 @@ DEFUN (match_ip_next_hop_prefix_list,
"Match entries of prefix-lists\n"
"IP prefix-list name\n")
{
int idx_word = 4;
return bgp_route_match_add (vty, vty->index, "ip next-hop prefix-list",
argv[4]->arg, RMAP_EVENT_PLIST_ADDED);
argv[idx_word]->arg, RMAP_EVENT_PLIST_ADDED);
}
/*
@ -3282,8 +3289,9 @@ DEFUN (match_ip_route_source_prefix_list,
"Match entries of prefix-lists\n"
"IP prefix-list name\n")
{
int idx_word = 4;
return bgp_route_match_add (vty, vty->index, "ip route-source prefix-list",
argv[4]->arg, RMAP_EVENT_PLIST_ADDED);
argv[idx_word]->arg, RMAP_EVENT_PLIST_ADDED);
}
/*
@ -3318,7 +3326,8 @@ DEFUN (match_metric,
"Match metric of route\n"
"Metric value\n")
{
return bgp_route_match_add (vty, vty->index, "metric", argv[2]->arg,
int idx_number = 2;
return bgp_route_match_add (vty, vty->index, "metric", argv[idx_number]->arg,
RMAP_EVENT_MATCH_ADDED);
}
@ -3351,7 +3360,8 @@ DEFUN (match_local_pref,
"Match local-preference of route\n"
"Metric value\n")
{
return bgp_route_match_add (vty, vty->index, "local-preference", argv[2]->arg,
int idx_number = 2;
return bgp_route_match_add (vty, vty->index, "local-preference", argv[idx_number]->arg,
RMAP_EVENT_MATCH_ADDED);
}
@ -3386,7 +3396,8 @@ DEFUN (match_community,
"Community-list number (expanded)\n"
"Community-list name\n")
{
return bgp_route_match_add (vty, vty->index, "community", argv[2]->arg,
int idx_comm_list = 2;
return bgp_route_match_add (vty, vty->index, "community", argv[idx_comm_list]->arg,
RMAP_EVENT_CLIST_ADDED);
}
@ -3400,13 +3411,14 @@ DEFUN (match_community_exact,
"Community-list name\n"
"Do exact matching of communities\n")
{
int idx_comm_list = 2;
int ret;
char *argstr;
argstr = XMALLOC (MTYPE_ROUTE_MAP_COMPILED,
strlen (argv[2]->arg) + strlen ("exact-match") + 2);
strlen (argv[idx_comm_list]->arg) + strlen ("exact-match") + 2);
sprintf (argstr, "%s exact-match", argv[2]->arg);
sprintf (argstr, "%s exact-match", argv[idx_comm_list]->arg);
ret = bgp_route_match_add (vty, vty->index, "community", argstr,
RMAP_EVENT_CLIST_ADDED);
@ -3458,7 +3470,8 @@ DEFUN (match_ecommunity,
"Extended community-list number (expanded)\n"
"Extended community-list name\n")
{
return bgp_route_match_add (vty, vty->index, "extcommunity", argv[2]->arg,
int idx_comm_list = 2;
return bgp_route_match_add (vty, vty->index, "extcommunity", argv[idx_comm_list]->arg,
RMAP_EVENT_ECLIST_ADDED);
}
@ -3492,7 +3505,8 @@ DEFUN (match_aspath,
"Match BGP AS path list\n"
"AS path access-list name\n")
{
return bgp_route_match_add (vty, vty->index, "as-path", argv[2]->arg,
int idx_word = 2;
return bgp_route_match_add (vty, vty->index, "as-path", argv[idx_word]->arg,
RMAP_EVENT_ASLIST_ADDED);
}
@ -3526,13 +3540,14 @@ DEFUN (match_origin,
"local IGP\n"
"unknown heritage\n")
{
if (strncmp (argv[2]->arg, "igp", 2) == 0)
int idx_origin = 2;
if (strncmp (argv[idx_origin]->arg, "igp", 2) == 0)
return bgp_route_match_add (vty, vty->index, "origin", "igp",
RMAP_EVENT_MATCH_ADDED);
if (strncmp (argv[2]->arg, "egp", 1) == 0)
if (strncmp (argv[idx_origin]->arg, "egp", 1) == 0)
return bgp_route_match_add (vty, vty->index, "origin", "egp",
RMAP_EVENT_MATCH_ADDED);
if (strncmp (argv[2]->arg, "incomplete", 2) == 0)
if (strncmp (argv[idx_origin]->arg, "incomplete", 2) == 0)
return bgp_route_match_add (vty, vty->index, "origin", "incomplete",
RMAP_EVENT_MATCH_ADDED);
@ -3569,7 +3584,8 @@ DEFUN (match_interface,
"Match first hop interface of route\n"
"Interface name\n")
{
return bgp_route_match_add (vty, vty->index, "interface", argv[2]->arg,
int idx_word = 2;
return bgp_route_match_add (vty, vty->index, "interface", argv[idx_word]->arg,
RMAP_EVENT_MATCH_ADDED);
}
@ -3601,7 +3617,8 @@ DEFUN (match_tag,
"Match tag of route\n"
"Tag value\n")
{
return bgp_route_match_add (vty, vty->index, "tag", argv[2]->arg,
int idx_number = 2;
return bgp_route_match_add (vty, vty->index, "tag", argv[idx_number]->arg,
RMAP_EVENT_MATCH_ADDED);
}
@ -3635,10 +3652,11 @@ DEFUN (set_ip_nexthop,
"Next hop address\n"
"IP address of next hop\n")
{
int idx_ipv4 = 3;
union sockunion su;
int ret;
ret = str2sockunion (argv[3]->arg, &su);
ret = str2sockunion (argv[idx_ipv4]->arg, &su);
if (ret < 0)
{
vty_out (vty, "%% Malformed nexthop address%s", VTY_NEWLINE);
@ -3652,7 +3670,7 @@ DEFUN (set_ip_nexthop,
return CMD_WARNING;
}
return bgp_route_set_add (vty, vty->index, "ip next-hop", argv[3]->arg);
return bgp_route_set_add (vty, vty->index, "ip next-hop", argv[idx_ipv4]->arg);
}
DEFUN (set_ip_nexthop_peer,
@ -3728,7 +3746,8 @@ DEFUN (set_metric,
"Metric value for destination routing protocol\n"
"Metric value\n")
{
return bgp_route_set_add (vty, vty->index, "metric", argv[2]->arg);
int idx_number = 2;
return bgp_route_set_add (vty, vty->index, "metric", argv[idx_number]->arg);
}
@ -3760,7 +3779,8 @@ DEFUN (set_local_pref,
"BGP local preference path attribute\n"
"Preference value\n")
{
return bgp_route_set_add (vty, vty->index, "local-preference", argv[2]->arg);
int idx_number = 2;
return bgp_route_set_add (vty, vty->index, "local-preference", argv[idx_number]->arg);
}
/*
@ -3790,7 +3810,8 @@ DEFUN (set_weight,
"BGP weight for routing table\n"
"Weight value\n")
{
return bgp_route_set_add (vty, vty->index, "weight", argv[2]->arg);
int idx_number = 2;
return bgp_route_set_add (vty, vty->index, "weight", argv[idx_number]->arg);
}
/*
@ -4055,11 +4076,12 @@ DEFUN (set_community_delete,
"Community-list name\n"
"Delete matching communities\n")
{
int idx_comm_list = 2;
char *str;
str = XCALLOC (MTYPE_TMP, strlen (argv[2]->arg) + strlen (" delete") + 1);
strcpy (str, argv[2]->arg);
strcpy (str + strlen (argv[2]->arg), " delete");
str = XCALLOC (MTYPE_TMP, strlen (argv[idx_comm_list]->arg) + strlen (" delete") + 1);
strcpy (str, argv[idx_comm_list]->arg);
strcpy (str + strlen (argv[idx_comm_list]->arg), " delete");
bgp_route_set_add (vty, vty->index, "comm-list", str);
@ -4178,11 +4200,12 @@ DEFUN (set_origin,
"local IGP\n"
"unknown heritage\n")
{
if (strncmp (argv[2]->arg, "igp", 2) == 0)
int idx_origin = 2;
if (strncmp (argv[idx_origin]->arg, "igp", 2) == 0)
return bgp_route_set_add (vty, vty->index, "origin", "igp");
if (strncmp (argv[2]->arg, "egp", 1) == 0)
if (strncmp (argv[idx_origin]->arg, "egp", 1) == 0)
return bgp_route_set_add (vty, vty->index, "origin", "egp");
if (strncmp (argv[2]->arg, "incomplete", 2) == 0)
if (strncmp (argv[idx_origin]->arg, "incomplete", 2) == 0)
return bgp_route_set_add (vty, vty->index, "origin", "incomplete");
return CMD_WARNING;
@ -4238,11 +4261,13 @@ DEFUN (set_aggregator_as,
"AS number\n"
"IP address of aggregator\n")
{
int idx_number = 3;
int idx_ipv4 = 4;
int ret;
struct in_addr address;
char *argstr;
ret = inet_aton (argv[4]->arg, &address);
ret = inet_aton (argv[idx_ipv4]->arg, &address);
if (ret == 0)
{
vty_out (vty, "Aggregator IP address is invalid%s", VTY_NEWLINE);
@ -4250,9 +4275,9 @@ DEFUN (set_aggregator_as,
}
argstr = XMALLOC (MTYPE_ROUTE_MAP_COMPILED,
strlen (argv[3]->arg) + strlen (argv[4]->arg) + 2);
strlen (argv[idx_number]->arg) + strlen (argv[idx_ipv4]->arg) + 2);
sprintf (argstr, "%s %s", argv[3]->arg, argv[4]->arg);
sprintf (argstr, "%s %s", argv[idx_number]->arg, argv[idx_ipv4]->arg);
ret = bgp_route_set_add (vty, vty->index, "aggregator as", argstr);
@ -4314,7 +4339,8 @@ DEFUN (set_tag,
"Tag value for routing protocol\n"
"Tag value\n")
{
return bgp_route_set_add (vty, vty->index, "tag", argv[2]->arg);
int idx_number = 2;
return bgp_route_set_add (vty, vty->index, "tag", argv[idx_number]->arg);
}
/*
@ -4347,7 +4373,8 @@ DEFUN (match_ipv6_address,
"Match IPv6 address of route\n"
"IPv6 access-list name\n")
{
return bgp_route_match_add (vty, vty->index, "ipv6 address", argv[3]->arg,
int idx_word = 3;
return bgp_route_match_add (vty, vty->index, "ipv6 address", argv[idx_word]->arg,
RMAP_EVENT_FILTER_ADDED);
}
@ -4360,7 +4387,8 @@ DEFUN (no_match_ipv6_address,
"Match IPv6 address of route\n"
"IPv6 access-list name\n")
{
return bgp_route_match_delete (vty, vty->index, "ipv6 address", argv[4]->arg,
int idx_word = 4;
return bgp_route_match_delete (vty, vty->index, "ipv6 address", argv[idx_word]->arg,
RMAP_EVENT_FILTER_DELETED);
}
@ -4372,7 +4400,8 @@ DEFUN (match_ipv6_next_hop,
"Match IPv6 next-hop address of route\n"
"IPv6 address of next hop\n")
{
return bgp_route_match_add (vty, vty->index, "ipv6 next-hop", argv[3]->arg,
int idx_ipv6 = 3;
return bgp_route_match_add (vty, vty->index, "ipv6 next-hop", argv[idx_ipv6]->arg,
RMAP_EVENT_MATCH_ADDED);
}
@ -4385,7 +4414,8 @@ DEFUN (no_match_ipv6_next_hop,
"Match IPv6 next-hop address of route\n"
"IPv6 address of next hop\n")
{
return bgp_route_match_delete (vty, vty->index, "ipv6 next-hop", argv[4]->arg,
int idx_ipv6 = 4;
return bgp_route_match_delete (vty, vty->index, "ipv6 next-hop", argv[idx_ipv6]->arg,
RMAP_EVENT_MATCH_DELETED);
}
@ -4398,8 +4428,9 @@ DEFUN (match_ipv6_address_prefix_list,
"Match entries of prefix-lists\n"
"IP prefix-list name\n")
{
int idx_word = 4;
return bgp_route_match_add (vty, vty->index, "ipv6 address prefix-list",
argv[4]->arg, RMAP_EVENT_PLIST_ADDED);
argv[idx_word]->arg, RMAP_EVENT_PLIST_ADDED);
}
DEFUN (no_match_ipv6_address_prefix_list,
@ -4412,8 +4443,9 @@ DEFUN (no_match_ipv6_address_prefix_list,
"Match entries of prefix-lists\n"
"IP prefix-list name\n")
{
int idx_word = 5;
return bgp_route_match_delete (vty, vty->index, "ipv6 address prefix-list",
argv[5]->arg, RMAP_EVENT_PLIST_DELETED);
argv[idx_word]->arg, RMAP_EVENT_PLIST_DELETED);
}
DEFUN (set_ipv6_nexthop_peer,
@ -4471,10 +4503,11 @@ DEFUN (set_ipv6_nexthop_global,
"IPv6 global address\n"
"IPv6 address of next hop\n")
{
int idx_ipv6 = 4;
struct in6_addr addr;
int ret;
ret = inet_pton (AF_INET6, argv[4]->arg, &addr);
ret = inet_pton (AF_INET6, argv[idx_ipv6]->arg, &addr);
if (!ret)
{
vty_out (vty, "%% Malformed nexthop address%s", VTY_NEWLINE);
@ -4489,7 +4522,7 @@ DEFUN (set_ipv6_nexthop_global,
return CMD_WARNING;
}
return bgp_route_set_add (vty, vty->index, "ipv6 next-hop global", argv[4]->arg);
return bgp_route_set_add (vty, vty->index, "ipv6 next-hop global", argv[idx_ipv6]->arg);
}
/*
@ -4525,10 +4558,11 @@ DEFUN (set_ipv6_nexthop_local,
"IPv6 local address\n"
"IPv6 address of next hop\n")
{
int idx_ipv6 = 4;
struct in6_addr addr;
int ret;
ret = inet_pton (AF_INET6, argv[4]->arg, &addr);
ret = inet_pton (AF_INET6, argv[idx_ipv6]->arg, &addr);
if (!ret)
{
vty_out (vty, "%% Malformed nexthop address%s", VTY_NEWLINE);
@ -4540,7 +4574,7 @@ DEFUN (set_ipv6_nexthop_local,
return CMD_WARNING;
}
return bgp_route_set_add (vty, vty->index, "ipv6 next-hop local", argv[4]->arg);
return bgp_route_set_add (vty, vty->index, "ipv6 next-hop local", argv[idx_ipv6]->arg);
}
/*
@ -4576,7 +4610,8 @@ DEFUN (set_vpnv4_nexthop,
"VPNv4 next-hop address\n"
"IP address of next hop\n")
{
return bgp_route_set_add (vty, vty->index, "vpnv4 next-hop", argv[3]->arg);
int idx_ipv4 = 3;
return bgp_route_set_add (vty, vty->index, "vpnv4 next-hop", argv[idx_ipv4]->arg);
}
/*
@ -4608,7 +4643,8 @@ DEFUN (set_originator_id,
"BGP originator ID attribute\n"
"IP address of originator\n")
{
return bgp_route_set_add (vty, vty->index, "originator-id", argv[2]->arg);
int idx_ipv4 = 2;
return bgp_route_set_add (vty, vty->index, "originator-id", argv[idx_ipv4]->arg);
}
/*

File diff suppressed because it is too large Load Diff

View File

@ -262,6 +262,78 @@ def get_token_index_variable_name(line_number, token):
elif token == 'A.B.C.D|X:X::X:X':
return 'idx_ip'
elif token == 'in|out':
return 'idx_in_out'
elif token == 'deny|permit':
return 'idx_permit_deny'
elif token == 'view|vrf':
return 'idx_view_vrf'
elif token == 'unicast|multicast':
return 'idx_safi'
elif token == 'bestpath|multipath':
return 'idx_bestpath'
elif token == 'egp|igp|incomplete':
return 'idx_origin'
elif token == 'cisco|zebra':
return 'idx_vendor'
elif token == 'as-set|no-as-set':
return 'idx_as_set'
elif token == 'confed|missing-as-worst':
return 'idx_med_knob'
elif token == 'both|send|receive':
return 'idx_send_recv'
elif token == 'both|extended|standard':
return 'idx_type'
elif token == 'A.B.C.D|WORD':
return 'idx_ipv4_word'
elif token == 'advertise-queue|advertised-routes|packet-queue':
return 'idx_type'
elif token == 'ospf|table':
return 'idx_ospf_table'
elif token == 'as-path|next-hop|med' or token == 'next-hop|med' or token == 'as-path|med' or token == 'as-path|next-hop':
return 'idx_attribute'
elif token == '(1-4294967295)|external|internal' or token == '(1-4294967295)|internal|external':
return 'idx_remote_as'
elif token == '(1-500)|WORD' or token == '(1-99)|(100-500)|WORD':
return 'idx_comm_list'
elif token == 'ipv4|ipv6':
return 'idx_afi'
elif token == 'advertised-routes|received-routes':
return 'idx_adv_rcvd_routes'
elif token == 'encap|multicast|unicast|vpn' or token == 'unicast|multicast|vpn|encap':
return 'idx_safi'
elif token == 'AA:NN|local-AS|no-advertise|no-export':
return 'idx_community'
elif token == 'all|all-et|updates|updates-et|routes-mrt':
return 'idx_dump_routes'
elif token == 'A.B.C.D|X:X::X:X|WORD':
return 'idx_peer'
elif token == 'A.B.C.D/M|X:X::X:X/M':
return 'idx_ipv4_ipv6_prefixlen'
elif token == 'urib-only|mrib-only|mrib-then-urib|lower-distance|longer-prefix':
return 'idx_rpf_lookup_mode'