From: Pablo Neira Ayuso Date: Fri, 3 Jul 2015 11:15:48 +0000 (+0200) Subject: src: add set declaration to cache X-Git-Tag: v0.5~22 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=100cfb99175ed6f7307ff71fd78443c8dea35a08;p=thirdparty%2Fnftables.git 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 --- 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)