bgpd: Fix no ip as-path access-list...

Signed-off-by: Quentin Young <qlyoung@cumulusnetworks.com>
This commit is contained in:
Quentin Young 2016-11-18 20:51:40 +00:00
parent 37bc45eb47
commit 46c699abd1

View File

@ -457,8 +457,8 @@ DEFUN (ip_as_path,
regex = bgp_regcomp (regstr); regex = bgp_regcomp (regstr);
if (!regex) if (!regex)
{ {
XFREE (MTYPE_TMP, regstr);
vty_out (vty, "can't compile regexp %s%s", regstr, VTY_NEWLINE); vty_out (vty, "can't compile regexp %s%s", regstr, VTY_NEWLINE);
XFREE (MTYPE_TMP, regstr);
return CMD_WARNING; return CMD_WARNING;
} }
@ -490,27 +490,28 @@ DEFUN (no_ip_as_path,
"Specify packets to forward\n" "Specify packets to forward\n"
"A regular-expression to match the BGP AS paths\n") "A regular-expression to match the BGP AS paths\n")
{ {
int idx_word = 4; int idx = 0;
int idx_permit_deny = 5;
enum as_filter_type type; enum as_filter_type type;
struct as_filter *asfilter; struct as_filter *asfilter;
struct as_list *aslist; struct as_list *aslist;
char *regstr; char *regstr;
regex_t *regex; regex_t *regex;
char *aslistname = argv_find (argv, argc, "WORD", &idx) ? argv[idx]->arg : NULL;
/* Lookup AS list from AS path list. */ /* Lookup AS list from AS path list. */
aslist = as_list_lookup (argv[idx_word]->arg); aslist = as_list_lookup (aslistname);
if (aslist == NULL) if (aslist == NULL)
{ {
vty_out (vty, "ip as-path access-list %s doesn't exist%s", argv[idx_word]->arg, vty_out (vty, "ip as-path access-list %s doesn't exist%s", aslistname,
VTY_NEWLINE); VTY_NEWLINE);
return CMD_WARNING; return CMD_WARNING;
} }
/* Check the filter type. */ /* Check the filter type. */
if (strncmp (argv[idx_permit_deny]->arg, "p", 1) == 0) if (argv_find (argv, argc, "permit", &idx))
type = AS_FILTER_PERMIT; type = AS_FILTER_PERMIT;
else if (strncmp (argv[idx_permit_deny]->arg, "d", 1) == 0) else if (argv_find (argv, argc, "deny", &idx))
type = AS_FILTER_DENY; type = AS_FILTER_DENY;
else else
{ {
@ -519,14 +520,14 @@ DEFUN (no_ip_as_path,
} }
/* Compile AS path. */ /* Compile AS path. */
regstr = argv_concat(argv, argc, idx_permit_deny); argv_find (argv, argc, "LINE", &idx);
regstr = argv_concat(argv, argc, idx);
regex = bgp_regcomp (regstr); regex = bgp_regcomp (regstr);
if (!regex) if (!regex)
{ {
vty_out (vty, "can't compile regexp %s%s", regstr, VTY_NEWLINE);
XFREE (MTYPE_TMP, regstr); XFREE (MTYPE_TMP, regstr);
vty_out (vty, "can't compile regexp %s%s", argv[idx_word]->arg,
VTY_NEWLINE);
return CMD_WARNING; return CMD_WARNING;
} }