diff options
author | Pablo Neira Ayuso <pablo@netfilter.org> | 2018-02-14 16:26:31 +0100 |
---|---|---|
committer | Pablo Neira Ayuso <pablo@netfilter.org> | 2018-02-15 16:29:32 +0100 |
commit | 3ddc637cc42cd0a854ea2e7232a855330bfe22e5 (patch) | |
tree | 5b0475f874fc50256776065ebb32d7a4cf770afb /src/payload.c | |
parent | fb16c8b7f795e0dba5a2acea1b156a8796e75195 (diff) |
src: pass family to payload_dependency_kill()
This context information is very relevant when deciding if a redundant
dependency needs to be removed or not, specifically for the inet, bridge
and netdev families. This new parameter is used by follow up patch
entitled ("payload: add payload_may_dependency_kill()").
Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
Diffstat (limited to 'src/payload.c')
-rw-r--r-- | src/payload.c | 14 |
1 files changed, 8 insertions, 6 deletions
diff --git a/src/payload.c b/src/payload.c index 60090acc..df3c8136 100644 --- a/src/payload.c +++ b/src/payload.c @@ -438,7 +438,7 @@ void payload_dependency_store(struct payload_dep_ctx *ctx, * implies its existance. */ void __payload_dependency_kill(struct payload_dep_ctx *ctx, - enum proto_bases base) + enum proto_bases base, unsigned int family) { if (ctx->pbase != PROTO_BASE_INVALID && ctx->pbase == base && @@ -453,19 +453,21 @@ void __payload_dependency_kill(struct payload_dep_ctx *ctx, } } -void payload_dependency_kill(struct payload_dep_ctx *ctx, struct expr *expr) +void payload_dependency_kill(struct payload_dep_ctx *ctx, struct expr *expr, + unsigned int family) { - __payload_dependency_kill(ctx, expr->payload.base); + __payload_dependency_kill(ctx, expr->payload.base, family); } -void exthdr_dependency_kill(struct payload_dep_ctx *ctx, struct expr *expr) +void exthdr_dependency_kill(struct payload_dep_ctx *ctx, struct expr *expr, + unsigned int family) { switch (expr->exthdr.op) { case NFT_EXTHDR_OP_TCPOPT: - __payload_dependency_kill(ctx, PROTO_BASE_TRANSPORT_HDR); + __payload_dependency_kill(ctx, PROTO_BASE_TRANSPORT_HDR, family); break; case NFT_EXTHDR_OP_IPV6: - __payload_dependency_kill(ctx, PROTO_BASE_NETWORK_HDR); + __payload_dependency_kill(ctx, PROTO_BASE_NETWORK_HDR, family); break; default: break; |