diff options
author | Florian Westphal <fw@strlen.de> | 2016-08-01 17:11:41 +0200 |
---|---|---|
committer | Florian Westphal <fw@strlen.de> | 2016-08-01 17:11:41 +0200 |
commit | a0ed637e76da3fe44eb34eb2ab91d72be2365411 (patch) | |
tree | b3774ac9bc0c3d44396f15fda8fb9534d2db7b89 /src/netlink_delinearize.c | |
parent | 7947f4535af129290aa84d8173a8e5b2a296ed82 (diff) |
netlink: add __binop_adjust helper
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>
Diffstat (limited to 'src/netlink_delinearize.c')
-rw-r--r-- | src/netlink_delinearize.c | 13 |
1 files changed, 9 insertions, 4 deletions
diff --git a/src/netlink_delinearize.c b/src/netlink_delinearize.c index 257473a4..ae872801 100644 --- a/src/netlink_delinearize.c +++ b/src/netlink_delinearize.c @@ -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; |