diff options
author | Jeremy Sowden <jeremy@azazel.net> | 2021-12-21 19:36:51 +0000 |
---|---|---|
committer | Florian Westphal <fw@strlen.de> | 2022-01-15 17:07:43 +0100 |
commit | 6217dfe0f7055612a7691fddef23e4317ce245ed (patch) | |
tree | c1827129a87a3d71706ce03f54207311d31bc6e4 /src | |
parent | 419b07764d5c4ed5ee269546732b3602583be80d (diff) |
src: remove arithmetic on booleans
Instead of subtracting a boolean from the protocol base for stacked
payloads, just decrement the base variable itself.
Signed-off-by: Jeremy Sowden <jeremy@azazel.net>
Signed-off-by: Florian Westphal <fw@strlen.de>
Diffstat (limited to 'src')
-rw-r--r-- | src/netlink.c | 10 | ||||
-rw-r--r-- | src/netlink_delinearize.c | 8 |
2 files changed, 10 insertions, 8 deletions
diff --git a/src/netlink.c b/src/netlink.c index 359d801c..5aad8659 100644 --- a/src/netlink.c +++ b/src/netlink.c @@ -1868,7 +1868,6 @@ static void trace_gen_stmts(struct list_head *stmts, const void *hdr; uint32_t hlen; unsigned int n; - bool stacked; if (!nftnl_trace_is_set(nlt, attr)) return; @@ -1923,6 +1922,8 @@ restart: n = 0; next: list_for_each_entry(stmt, &unordered, list) { + enum proto_bases b = base; + rel = stmt->expr; lhs = rel->left; @@ -1935,17 +1936,18 @@ next: list_move_tail(&stmt->list, stmts); n++; - stacked = payload_is_stacked(desc, rel); + if (payload_is_stacked(desc, rel)) + b--; if (lhs->flags & EXPR_F_PROTOCOL && pctx->pbase == PROTO_BASE_INVALID) { - payload_dependency_store(pctx, stmt, base - stacked); + payload_dependency_store(pctx, stmt, b); } else { /* Don't strip 'icmp type' from payload dump. */ if (pctx->icmp_type == 0) payload_dependency_kill(pctx, lhs, ctx->family); if (lhs->flags & EXPR_F_PROTOCOL) - payload_dependency_store(pctx, stmt, base - stacked); + payload_dependency_store(pctx, stmt, b); } goto next; diff --git a/src/netlink_delinearize.c b/src/netlink_delinearize.c index 83be2fec..39b0574e 100644 --- a/src/netlink_delinearize.c +++ b/src/netlink_delinearize.c @@ -1867,7 +1867,6 @@ static void payload_match_expand(struct rule_pp_ctx *ctx, struct stmt *nstmt; struct expr *nexpr = NULL; enum proto_bases base = left->payload.base; - bool stacked; payload_expr_expand(&list, left, &ctx->pctx); @@ -1893,7 +1892,8 @@ static void payload_match_expand(struct rule_pp_ctx *ctx, assert(left->payload.base); assert(base == left->payload.base); - stacked = payload_is_stacked(ctx->pctx.protocol[base].desc, nexpr); + if (payload_is_stacked(ctx->pctx.protocol[base].desc, nexpr)) + base--; /* Remember the first payload protocol expression to * kill it later on if made redundant by a higher layer @@ -1902,12 +1902,12 @@ static void payload_match_expand(struct rule_pp_ctx *ctx, if (ctx->pdctx.pbase == PROTO_BASE_INVALID && expr->op == OP_EQ && left->flags & EXPR_F_PROTOCOL) { - payload_dependency_store(&ctx->pdctx, nstmt, base - stacked); + payload_dependency_store(&ctx->pdctx, nstmt, base); } else { payload_dependency_kill(&ctx->pdctx, nexpr->left, ctx->pctx.family); if (expr->op == OP_EQ && left->flags & EXPR_F_PROTOCOL) - payload_dependency_store(&ctx->pdctx, nstmt, base - stacked); + payload_dependency_store(&ctx->pdctx, nstmt, base); } } list_del(&ctx->stmt->list); |