DEFUN (match_community,
match_community_cmd,
- "match community <(1-99)|(100-500)|WORD>",
- MATCH_STR
- "Match BGP community list\n"
- "Community-list number (standard)\n"
- "Community-list number (expanded)\n"
- "Community-list name\n")
-{
- int idx_comm_list = 2;
- return bgp_route_match_add (vty, "community", argv[idx_comm_list]->arg,
- RMAP_EVENT_CLIST_ADDED);
-}
-
-DEFUN (match_community_exact,
- match_community_exact_cmd,
- "match community <(1-99)|(100-500)|WORD> exact-match",
+ "match community <(1-99)|(100-500)|WORD> [exact-match]",
MATCH_STR
"Match BGP community list\n"
"Community-list number (standard)\n"
int ret;
char *argstr;
- argstr = XMALLOC (MTYPE_ROUTE_MAP_COMPILED,
- strlen (argv[idx_comm_list]->arg) + strlen ("exact-match") + 2);
+ if (argc == 4)
+ {
+ argstr = XMALLOC (MTYPE_ROUTE_MAP_COMPILED,
+ strlen (argv[idx_comm_list]->arg) +
+ strlen ("exact-match") + 2);
- sprintf (argstr, "%s exact-match", argv[idx_comm_list]->arg);
+ sprintf (argstr, "%s exact-match", argv[idx_comm_list]->arg);
+ }
+ else
+ argstr = argv[idx_comm_list]->arg;
ret = bgp_route_match_add (vty, "community", argstr,
RMAP_EVENT_CLIST_ADDED);
- XFREE (MTYPE_ROUTE_MAP_COMPILED, argstr);
+ if (argstr != argv[idx_comm_list]->arg)
+ XFREE (MTYPE_ROUTE_MAP_COMPILED, argstr);
return ret;
}
DEFUN (match_lcommunity,
match_lcommunity_cmd,
- "match large-community [<(1-99)|(100-500)|WORD>]",
+ "match large-community <(1-99)|(100-500)|WORD>",
MATCH_STR
"Match BGP large community list\n"
"Large Community-list number (standard)\n"
DEFUN (set_aspath_prepend_lastas,
set_aspath_prepend_lastas_cmd,
- "set as-path prepend last-as (1-10)",
+ "set as-path prepend last-as (1-9)",
SET_STR
"Transform BGP AS_PATH attribute\n"
"Prepend to the as-path\n"
DEFUN (set_ipx_vpn_nexthop,
set_ipx_vpn_nexthop_cmd,
- "set <ipv4|ipv6> vpn next-hop [<A.B.C.D|X:X::X:X>]",
+ "set <ipv4|ipv6> vpn next-hop <A.B.C.D|X:X::X:X>",
SET_STR
"IPv4 information\n"
"IPv6 information\n"
"BGP originator ID attribute\n"
"IP address of originator\n")
{
- int idx_id = 3;
- if (argc < idx_id)
- return generic_set_delete (vty, VTY_GET_CONTEXT(route_map_index),
- "originator-id", NULL);
+ int idx = 0;
+ char *arg = argv_find (argv, argc, "A.B.C.D", &idx) ? argv[idx]->arg : NULL;
+
return generic_set_delete (vty, VTY_GET_CONTEXT(route_map_index),
- "originator-id", argv[idx_id]->arg);
+ "originator-id", arg);
}
install_element (RMAP_NODE, &match_local_pref_cmd);
install_element (RMAP_NODE, &no_match_local_pref_cmd);
install_element (RMAP_NODE, &match_community_cmd);
- install_element (RMAP_NODE, &match_community_exact_cmd);
install_element (RMAP_NODE, &no_match_community_cmd);
install_element (RMAP_NODE, &match_lcommunity_cmd);
install_element (RMAP_NODE, &no_match_lcommunity_cmd);
{
VTY_DECLVAR_CONTEXT (route_map_index, index);
+ int idx = 0;
+ char *arg = argv_find (argv, argc, "(1-4294967295)", &idx) ?
+ argv[idx]->arg : NULL;
+
if (rmap_match_set_hook.no_match_tag)
- return rmap_match_set_hook.no_match_tag (vty, index, "tag", argv[3]->arg,
+ return rmap_match_set_hook.no_match_tag (vty, index, "tag", arg,
RMAP_EVENT_MATCH_DELETED);
return CMD_SUCCESS;
}
"Goto Clause number\n"
"Number\n")
{
- int idx_number = 2;
- char *num = NULL;
- num = argv[idx_number]->arg;
-
+ int idx = 0;
+ char *num = argv_find (argv, argc, "(1-65535)", &idx) ? argv[idx]->arg : NULL;
struct route_map_index *index = VTY_GET_CONTEXT (route_map_index);
int d = 0;