summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPatrick McHardy <kaber@trash.net>2014-02-16 22:47:40 +0000
committerPatrick McHardy <kaber@trash.net>2014-02-17 17:17:18 +0000
commit6bad82aba5d304c7a2dd1b19fe57464dca327f4a (patch)
tree31b956e86135934c56f97fec20782b162c823eaa
parentc87646a2adad18fffde1c9f756a3ce7418f47785 (diff)
evaluate: use flagcmp for single RHS bitmask expression
Always use flagcmp for RHS bitmask expressions, independant of whether only one or an entire list of bitmask expression is specified. This makes sure that f.i. "tcp flags ack" will match any combinations of ACK instead of ACK and only ACK. Signed-off-by: Patrick McHardy <kaber@trash.net>
-rw-r--r--src/evaluate.c6
1 files changed, 5 insertions, 1 deletions
diff --git a/src/evaluate.c b/src/evaluate.c
index 8e51a63b..f10d0d98 100644
--- a/src/evaluate.c
+++ b/src/evaluate.c
@@ -885,7 +885,11 @@ static int expr_evaluate_relational(struct eval_ctx *ctx, struct expr **expr)
rel->op = OP_FLAGCMP;
break;
default:
- rel->op = OP_EQ;
+ if (right->dtype->basetype != NULL &&
+ right->dtype->basetype->type == TYPE_BITMASK)
+ rel->op = OP_FLAGCMP;
+ else
+ rel->op = OP_EQ;
break;
}
}