]> git.proxmox.com Git - mirror_iproute2.git/commitdiff
ssfilter: Fix for inverted last expression
authorPhil Sutter <phil@nwl.cc>
Thu, 29 Nov 2018 12:20:37 +0000 (13:20 +0100)
committerStephen Hemminger <stephen@networkplumber.org>
Mon, 3 Dec 2018 22:33:19 +0000 (14:33 -0800)
When fixing for shift/reduce conflicts, possibility to invert the last
expression by prefixing with '!' or 'not' was accidentally removed.

Fix this by allowing for expr to be an inverted expr so that any
reference to it in exprlist accepts the inverted prefix.

Reported-by: Eric Dumazet <edumazet@google.com>
Fixes: b2038cc0b2403 ("ssfilter: Eliminate shift/reduce conflicts")
Signed-off-by: Phil Sutter <phil@nwl.cc>
Acked-by: Eric Dumazet <edumazet@google.com>
Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
misc/ssfilter.y

index 0413dddaa7584c5add220e899cbd544869dd3aa8..a901ae753a284794205c0c0907ae3cad0aa65cc1 100644 (file)
@@ -54,10 +54,6 @@ null:   /* NOTHING */ { $$ = NULL; }
         ;
 
 exprlist: expr
-        | '!' expr
-        {
-                $$ = alloc_node(SSF_NOT, $2);
-        }
         | exprlist '|' expr
         {
                 $$ = alloc_node(SSF_OR, $1);
@@ -83,6 +79,10 @@ expr:        '(' exprlist ')'
        {
                $$ = $2;
        }
+       | '!' expr
+       {
+               $$ = alloc_node(SSF_NOT, $2);
+       }
        | DCOND eq HOSTCOND
         {
                $$ = alloc_node(SSF_DCOND, $3);