]> git.ipfire.org Git - thirdparty/nftables.git/commitdiff
vlan: make != tests work
authorFlorian Westphal <fw@strlen.de>
Wed, 12 Aug 2015 09:27:35 +0000 (11:27 +0200)
committerFlorian Westphal <fw@strlen.de>
Thu, 17 Sep 2015 22:06:53 +0000 (00:06 +0200)
src/netlink_delinearize.c
tests/regression/bridge/vlan.t
tests/regression/bridge/vlan.t.payload

index 16e3aaaf9d358d7d0bab0f7b925232d7edf9b90e..dc6338c22798bdbd92ecd3ab5ffbedfc3a5dbf76 100644 (file)
@@ -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
index e80ea508b3b880201f2276acdc4e50a64686596f..f86561a2a7d1fe55529ce5dc26ac3351b5bccd09 100644 (file)
@@ -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
index 4a5714adc4a427017bb2af780c0f7000847c4095..35dc437ad5cb6f309e67984f2bf231069641e8fa 100644 (file)
@@ -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 ]