summaryrefslogtreecommitdiffstats
path: root/src/payload.c
diff options
context:
space:
mode:
authorPablo Neira Ayuso <pablo@netfilter.org>2018-02-14 16:26:31 +0100
committerPablo Neira Ayuso <pablo@netfilter.org>2018-02-15 16:29:32 +0100
commit3ddc637cc42cd0a854ea2e7232a855330bfe22e5 (patch)
tree5b0475f874fc50256776065ebb32d7a4cf770afb /src/payload.c
parentfb16c8b7f795e0dba5a2acea1b156a8796e75195 (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.c14
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;