From 100cfb99175ed6f7307ff71fd78443c8dea35a08 Mon Sep 17 00:00:00 2001 From: Pablo Neira Ayuso Date: Fri, 3 Jul 2015 13:15:48 +0200 Subject: src: add set declaration to cache This patch adds set objects to the cache if they don't exist in the kernel, so they can be referenced from this batch. This occurs from the evaluation step. Signed-off-by: Pablo Neira Ayuso --- src/evaluate.c | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/src/evaluate.c b/src/evaluate.c index d5817f9b..8c161953 100644 --- a/src/evaluate.c +++ b/src/evaluate.c @@ -1736,8 +1736,17 @@ static int setelem_evaluate(struct eval_ctx *ctx, struct expr **expr) static int set_evaluate(struct eval_ctx *ctx, struct set *set) { + struct table *table; const char *type; + table = table_lookup(&ctx->cmd->handle); + if (table == NULL) + return cmd_error(ctx, "Could not process rule: Table '%s' does not exist", + ctx->cmd->handle.table); + + if (set_lookup(table, set->handle.set) == NULL) + set_add_hash(set_get(set), table); + type = set->flags & SET_F_MAP ? "map" : "set"; if (set->keytype == NULL) -- cgit v1.2.3