summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorFlorian Westphal <fw@strlen.de>2015-08-12 11:27:35 +0200
committerFlorian Westphal <fw@strlen.de>2015-09-18 00:06:53 +0200
commit5174b6850291b67769ebd018e5c90837897969c2 (patch)
tree9120eb135d480af93cbc9cf6a3ba2b062fc5ebb8
parentf7d5590688a676a61855a61a513dddb7251364fa (diff)
vlan: make != tests work
-rw-r--r--src/netlink_delinearize.c1
-rw-r--r--tests/regression/bridge/vlan.t1
-rw-r--r--tests/regression/bridge/vlan.t.payload11
3 files changed, 13 insertions, 0 deletions
diff --git a/src/netlink_delinearize.c b/src/netlink_delinearize.c
index 16e3aaaf..dc6338c2 100644
--- a/src/netlink_delinearize.c
+++ b/src/netlink_delinearize.c
@@ -1083,6 +1083,7 @@ static void relational_binop_postprocess(struct rule_pp_ctx *ctx, struct expr *e
struct expr *binop = expr->left, *value = expr->right;
if (binop->op == OP_AND && expr->op == OP_NEQ &&
+ value->dtype->basetype &&
value->dtype->basetype->type == TYPE_BITMASK &&
!mpz_cmp_ui(value->value, 0)) {
/* Flag comparison: data & flags != 0
diff --git a/tests/regression/bridge/vlan.t b/tests/regression/bridge/vlan.t
index e80ea508..f86561a2 100644
--- a/tests/regression/bridge/vlan.t
+++ b/tests/regression/bridge/vlan.t
@@ -6,6 +6,7 @@ vlan id 0;ok
# bad vlan id
vlan id 4096;fail
vlan id 4094 vlan cfi 0;ok
+vlan id 4094 vlan cfi != 1;ok
vlan id 4094 vlan cfi 1;ok
# bad cfi
vlan id 4094 vlan cfi 2;fail
diff --git a/tests/regression/bridge/vlan.t.payload b/tests/regression/bridge/vlan.t.payload
index 4a5714ad..35dc437a 100644
--- a/tests/regression/bridge/vlan.t.payload
+++ b/tests/regression/bridge/vlan.t.payload
@@ -25,6 +25,17 @@ bridge test-bridge input
[ bitwise reg 1 = (reg=1 & 0x00000010 ) ^ 0x00000000 ]
[ cmp eq reg 1 0x00000000 ]
+# vlan id 4094 vlan cfi != 1
+bridge test-bridge input
+ [ payload load 2b @ link header + 12 => reg 1 ]
+ [ cmp eq reg 1 0x00000081 ]
+ [ payload load 2b @ link header + 14 => reg 1 ]
+ [ bitwise reg 1 = (reg=1 & 0x0000ff0f ) ^ 0x00000000 ]
+ [ cmp eq reg 1 0x0000fe0f ]
+ [ payload load 1b @ link header + 15 => reg 1 ]
+ [ bitwise reg 1 = (reg=1 & 0x00000010 ) ^ 0x00000000 ]
+ [ cmp neq reg 1 0x00000010 ]
+
# vlan id 4094 vlan cfi 1
bridge test-bridge input
[ payload load 2b @ link header + 12 => reg 1 ]