From 39f15c243912a20f3014c0efba6b8dbc80caf0e9 Mon Sep 17 00:00:00 2001 From: Florian Westphal Date: Fri, 7 Aug 2015 12:09:08 +0200 Subject: nft: support listing expressions that use non-byte header fields This allows to list rules that check fields that are not aligned on byte boundary. Signed-off-by: Florian Westphal --- src/evaluate.c | 6 ++++++ 1 file changed, 6 insertions(+) (limited to 'src/evaluate.c') diff --git a/src/evaluate.c b/src/evaluate.c index 95469180..581f3641 100644 --- a/src/evaluate.c +++ b/src/evaluate.c @@ -310,8 +310,13 @@ static bool resolve_protocol_conflict(struct eval_ctx *ctx, const struct proto_desc *next = ctx->pctx.protocol[base + 1].desc; if (payload->payload.desc == next) { + ctx->pctx.protocol[base + 1].desc = NULL; + ctx->pctx.protocol[base].desc = next; + ctx->pctx.protocol[base].offset += desc->length; payload->payload.offset += desc->length; return true; + } else if (next) { + return false; } } @@ -321,6 +326,7 @@ static bool resolve_protocol_conflict(struct eval_ctx *ctx, payload->payload.offset += ctx->pctx.protocol[base].offset; list_add_tail(&nstmt->list, &ctx->stmt->list); + ctx->pctx.protocol[base + 1].desc = NULL; return true; } -- cgit v1.2.3