]> git.ipfire.org Git - thirdparty/nftables.git/commitdiff
payload: add payload_dependency_release() helper function
authorPablo Neira Ayuso <pablo@netfilter.org>
Wed, 14 Feb 2018 15:26:46 +0000 (16:26 +0100)
committerPablo Neira Ayuso <pablo@netfilter.org>
Thu, 15 Feb 2018 15:29:32 +0000 (16:29 +0100)
Wrap code that releases existing dependencies that we have just
annotated in the context structure.

Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
src/payload.c

index df3c8136c88c2da99a4cf6570797ec75da5adfb4..21c2842807cd04bbb84fa3f4cd3ca66869939a22 100644 (file)
@@ -428,6 +428,17 @@ void payload_dependency_store(struct payload_dep_ctx *ctx,
        ctx->pdep  = stmt;
 }
 
+static void payload_dependency_release(struct payload_dep_ctx *ctx)
+{
+       list_del(&ctx->pdep->list);
+       stmt_free(ctx->pdep);
+
+       ctx->pbase = PROTO_BASE_INVALID;
+       if (ctx->pdep == ctx->prev)
+               ctx->prev = NULL;
+       ctx->pdep  = NULL;
+}
+
 /**
  * __payload_dependency_kill - kill a redundant payload depedency
  *
@@ -442,15 +453,8 @@ void __payload_dependency_kill(struct payload_dep_ctx *ctx,
 {
        if (ctx->pbase != PROTO_BASE_INVALID &&
            ctx->pbase == base &&
-           ctx->pdep != NULL) {
-               list_del(&ctx->pdep->list);
-               stmt_free(ctx->pdep);
-
-               ctx->pbase = PROTO_BASE_INVALID;
-               if (ctx->pdep == ctx->prev)
-                       ctx->prev = NULL;
-               ctx->pdep  = NULL;
-       }
+           ctx->pdep != NULL)
+               payload_dependency_release(ctx);
 }
 
 void payload_dependency_kill(struct payload_dep_ctx *ctx, struct expr *expr,