]> git.ipfire.org Git - thirdparty/nftables.git/commitdiff
netlink_delinarize: shift constant for ranges too
authorFlorian Westphal <fw@strlen.de>
Mon, 7 Mar 2016 17:28:33 +0000 (18:28 +0100)
committerFlorian Westphal <fw@strlen.de>
Thu, 10 Mar 2016 13:08:40 +0000 (14:08 +0100)
... else rule like vlan pcp 1-3 won't work and will be displayed
as 0-0 (reverse direction already works since range is represented
as two lte/gte compare expressions).

Signed-off-by: Florian Westphal <fw@strlen.de>
Acked-by: Pablo Neira Ayuso <pablo@netfilter.org>
src/netlink_linearize.c
tests/py/bridge/vlan.t.payload
tests/py/bridge/vlan.t.payload.netdev

index 49b46760433bdc345fc2ab8d90d8a41ab1e94b15..bb51de73771b7d6e5fa763dd4c89d0bf9836f796 100644 (file)
@@ -446,6 +446,7 @@ static void netlink_gen_range(struct netlink_linearize_ctx *ctx,
                BUG("invalid range operation %u\n", expr->op);
        }
 
+       payload_shift_value(expr->left, range->left);
        netlink_gen_data(range->left, &nld);
        nftnl_expr_set(nle, NFTNL_EXPR_CMP_DATA, nld.value, nld.len);
        nftnl_rule_add_expr(ctx->nlr, nle);
@@ -466,6 +467,7 @@ static void netlink_gen_range(struct netlink_linearize_ctx *ctx,
                BUG("invalid range operation %u\n", expr->op);
        }
 
+       payload_shift_value(expr->left, range->right);
        netlink_gen_data(range->right, &nld);
        nftnl_expr_set(nle, NFTNL_EXPR_CMP_DATA, nld.value, nld.len);
        nftnl_rule_add_expr(ctx->nlr, nle);
index 02242d229ac797029ec798dd3892c7181589593c..78ee7ef7cbee8b6c5d7e93d8c5cdf5ec25fc4d1c 100644 (file)
@@ -196,6 +196,6 @@ bridge test-bridge input
   [ lookup reg 1 set set%d ]
   [ payload load 1b @ link header + 14 => reg 1 ]
   [ bitwise reg 1 = (reg=1 & 0x000000e0 ) ^ 0x00000000 ]
-  [ cmp gte reg 1 0x00000001 ]
-  [ cmp lte reg 1 0x00000003 ]
+  [ cmp gte reg 1 0x00000020 ]
+  [ cmp lte reg 1 0x00000060 ]
 
index 62c7adf96bf5cddad1cc328ac354fa43d03b31cc..f60587fc9530112196fd299bb717e75aa849ac96 100644 (file)
@@ -230,6 +230,6 @@ netdev test-netdev ingress
   [ lookup reg 1 set set%d ]
   [ payload load 1b @ link header + 14 => reg 1 ]
   [ bitwise reg 1 = (reg=1 & 0x000000e0 ) ^ 0x00000000 ]
-  [ cmp gte reg 1 0x00000001 ]
-  [ cmp lte reg 1 0x00000003 ]
+  [ cmp gte reg 1 0x00000020 ]
+  [ cmp lte reg 1 0x00000060 ]