netfilter-devel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Pablo Neira Ayuso <pablo@netfilter.org>
To: netfilter-devel@vger.kernel.org
Subject: [PATCH nft 07/10] evaluate: add object to the cache
Date: Thu, 15 Apr 2021 15:13:27 +0200	[thread overview]
Message-ID: <20210415131330.6692-8-pablo@netfilter.org> (raw)
In-Reply-To: <20210415131330.6692-1-pablo@netfilter.org>

If the cache does not contain this object that is defined in this batch,
add it to the cache. This allows for references to this new object in
the same batch.

This patch also adds missing handle_merge() to set the object name,
otherwise object name is NULL and obj_cache_find() crashes.

Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
---
 src/evaluate.c | 10 ++++++++++
 1 file changed, 10 insertions(+)

diff --git a/src/evaluate.c b/src/evaluate.c
index 7b2d01c5dee1..72cf756bbb5c 100644
--- a/src/evaluate.c
+++ b/src/evaluate.c
@@ -4210,6 +4210,15 @@ static int ct_timeout_evaluate(struct eval_ctx *ctx, struct obj *obj)
 
 static int obj_evaluate(struct eval_ctx *ctx, struct obj *obj)
 {
+	struct table *table;
+
+	table = table_lookup_global(ctx);
+	if (table == NULL)
+		return table_not_found(ctx);
+
+	if (obj_cache_find(table, obj->handle.obj.name, obj->type) == NULL)
+		obj_cache_add(obj_get(obj), table);
+
 	switch (obj->type) {
 	case NFT_OBJECT_CT_TIMEOUT:
 		return ct_timeout_evaluate(ctx, obj);
@@ -4296,6 +4305,7 @@ static int cmd_evaluate_add(struct eval_ctx *ctx, struct cmd *cmd)
 	case CMD_OBJ_SECMARK:
 	case CMD_OBJ_CT_EXPECT:
 	case CMD_OBJ_SYNPROXY:
+		handle_merge(&cmd->object->handle, &cmd->handle);
 		return obj_evaluate(ctx, cmd->object);
 	default:
 		BUG("invalid command object type %u\n", cmd->obj);
-- 
2.20.1


  parent reply	other threads:[~2021-04-15 13:13 UTC|newest]

Thread overview: 11+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-04-15 13:13 [PATCH nft 0/10] cache updates Pablo Neira Ayuso
2021-04-15 13:13 ` [PATCH nft 01/10] cache: add hashtable cache for object Pablo Neira Ayuso
2021-04-15 13:13 ` [PATCH nft 02/10] cache: add hashtable cache for flowtable Pablo Neira Ayuso
2021-04-15 13:13 ` [PATCH nft 03/10] cache: add set_cache_del() and use it Pablo Neira Ayuso
2021-04-15 13:13 ` [PATCH nft 04/10] evaluate: add set to the cache Pablo Neira Ayuso
2021-04-15 13:13 ` [PATCH nft 05/10] evaluate: add flowtable " Pablo Neira Ayuso
2021-04-15 13:13 ` [PATCH nft 06/10] cache: missing table cache for several policy objects Pablo Neira Ayuso
2021-04-15 13:13 ` Pablo Neira Ayuso [this message]
2021-04-15 13:13 ` [PATCH nft 08/10] cache: move struct nft_cache declaration to cache.h Pablo Neira Ayuso
2021-04-15 13:13 ` [PATCH nft 09/10] cache: add hashtable cache for table Pablo Neira Ayuso
2021-04-15 13:13 ` [PATCH nft 10/10] evaluate: remove table_lookup_global() Pablo Neira Ayuso

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20210415131330.6692-8-pablo@netfilter.org \
    --to=pablo@netfilter.org \
    --cc=netfilter-devel@vger.kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).