mirror of
https://git.proxmox.com/git/mirror_frr
synced 2025-08-14 02:37:21 +00:00
bgpd: add 'int idx_foo' argv index variables
Signed-off-by: Daniel Walton <dwalton@cumulusnetworks.com>
This commit is contained in:
parent
7c022376c8
commit
c500ae4060
@ -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;
|
||||
}
|
||||
|
@ -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)
|
||||
|
@ -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);
|
||||
|
||||
|
@ -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)
|
||||
|
@ -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
|
||||
|
873
bgpd/bgp_route.c
873
bgpd/bgp_route.c
File diff suppressed because it is too large
Load Diff
@ -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);
|
||||
}
|
||||
|
||||
/*
|
||||
|
1362
bgpd/bgp_vty.c
1362
bgpd/bgp_vty.c
File diff suppressed because it is too large
Load Diff
@ -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'
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user