]> git.ipfire.org Git - thirdparty/nftables.git/commitdiff
netlink: add __binop_adjust helper
authorFlorian Westphal <fw@strlen.de>
Mon, 1 Aug 2016 15:11:41 +0000 (17:11 +0200)
committerFlorian Westphal <fw@strlen.de>
Mon, 1 Aug 2016 15:11:41 +0000 (17:11 +0200)
binop_adjust takes an expression whose LHS is expected to be
the binop expression that we use to adjust a payload expression
based on a mask (to match sub-byte headers like iphdr->version).

A followup patch has to pass the binop directly, so add
add a helper for it.

Signed-off-by: Florian Westphal <fw@strlen.de>
Acked-by: Pablo Neira Ayuso <pablo@netfilter.org>
src/netlink_delinearize.c

index 257473a4f8c3d76a2d69416ce2d158ecd0e430da..ae87280198b0a41ff4cc4fa9dc3972e7162a6ebd 100644 (file)
@@ -1265,10 +1265,10 @@ static void binop_adjust_one(const struct expr *binop, struct expr *value,
        }
 }
 
-static void binop_adjust(struct expr *expr, unsigned int shift)
+static void __binop_adjust(const struct expr *binop, struct expr *right,
+                          unsigned int shift)
 {
-       const struct expr *binop = expr->left;
-       struct expr *right = expr->right, *i;
+       struct expr *i;
 
        switch (right->ops->type) {
        case EXPR_VALUE:
@@ -1293,11 +1293,16 @@ static void binop_adjust(struct expr *expr, unsigned int shift)
                }
                break;
        default:
-               BUG("unknown expression type %s\n", expr->ops->name);
+               BUG("unknown expression type %s\n", right->ops->name);
                break;
        }
 }
 
+static void binop_adjust(struct expr *expr, unsigned int shift)
+{
+       __binop_adjust(expr->left, expr->right, shift);
+}
+
 static void binop_postprocess(struct rule_pp_ctx *ctx, struct expr *expr)
 {
        struct expr *binop = expr->left;