diff --git a/conf/confbase.Y b/conf/confbase.Y index 31b36173..b48a9290 100644 --- a/conf/confbase.Y +++ b/conf/confbase.Y @@ -56,6 +56,7 @@ CF_DECLS %type ipa %type prefix prefix_or_ipa +%nonassoc PREFIX_DUMMY %nonassoc '=' '<' '>' '~' '.' GEQ LEQ NEQ %left '+' '-' %left '*' '/' '%' diff --git a/filter/config.Y b/filter/config.Y index a99e4a54..accf3184 100644 --- a/filter/config.Y +++ b/filter/config.Y @@ -211,7 +211,7 @@ pair: * Complex types, their bison value is struct f_val */ fprefix_s: - IPA '/' NUM { + IPA '/' NUM %prec '/' { if (!ip_is_prefix($1, $3)) cf_error("Invalid network prefix: %I/%d", $1, $3); $$.type = T_PREFIX; $$.val.px.ip = $1; $$.val.px.len = $3; } @@ -225,7 +225,7 @@ fprefix: ; fipa: - IPA { $$.type = T_IP; $$.val.px.ip = $1; } + IPA %prec PREFIX_DUMMY { $$.type = T_IP; $$.val.px.ip = $1; } ; set_atom: diff --git a/filter/test.conf b/filter/test.conf index bce8cfec..c7fe415f 100644 --- a/filter/test.conf +++ b/filter/test.conf @@ -6,7 +6,7 @@ router id 62.168.0.1; -#define xyzzy = 120+10; +define xyzzy = (120+10); function callme(int arg1; int arg2) int local1;