]> git.ipfire.org Git - thirdparty/nftables.git/commitdiff
evaluate: Merge some cases in cmd_evaluate_list()
authorPhil Sutter <phil@nwl.cc>
Wed, 14 Jun 2023 13:32:04 +0000 (15:32 +0200)
committerPhil Sutter <phil@nwl.cc>
Thu, 13 Jul 2023 14:57:54 +0000 (16:57 +0200)
The code for set, map and meter were almost identical apart from the
specific last check. Fold them together and make the distinction in that
spot only.

Signed-off-by: Phil Sutter <phil@nwl.cc>
src/evaluate.c

index 678ad9b8907d32abf2d0452f71e3d1b280fcedf9..d4942e2b58d9702ec21fdfa9f62ace5b5d6d6019 100644 (file)
@@ -5356,38 +5356,8 @@ static int cmd_evaluate_list(struct eval_ctx *ctx, struct cmd *cmd)
 
                return 0;
        case CMD_OBJ_SET:
-               table = table_cache_find(&ctx->nft->cache.table_cache,
-                                        cmd->handle.table.name,
-                                        cmd->handle.family);
-               if (!table)
-                       return table_not_found(ctx);
-
-               set = set_cache_find(table, cmd->handle.set.name);
-               if (set == NULL)
-                       return set_not_found(ctx, &ctx->cmd->handle.set.location,
-                                            ctx->cmd->handle.set.name);
-               else if (!set_is_literal(set->flags))
-                       return cmd_error(ctx, &ctx->cmd->handle.set.location,
-                                        "%s", strerror(ENOENT));
-
-               return 0;
-       case CMD_OBJ_METER:
-               table = table_cache_find(&ctx->nft->cache.table_cache,
-                                        cmd->handle.table.name,
-                                        cmd->handle.family);
-               if (!table)
-                       return table_not_found(ctx);
-
-               set = set_cache_find(table, cmd->handle.set.name);
-               if (set == NULL)
-                       return set_not_found(ctx, &ctx->cmd->handle.set.location,
-                                            ctx->cmd->handle.set.name);
-               else if (!set_is_meter(set->flags))
-                       return cmd_error(ctx, &ctx->cmd->handle.set.location,
-                                        "%s", strerror(ENOENT));
-
-               return 0;
        case CMD_OBJ_MAP:
+       case CMD_OBJ_METER:
                table = table_cache_find(&ctx->nft->cache.table_cache,
                                         cmd->handle.table.name,
                                         cmd->handle.family);
@@ -5398,7 +5368,9 @@ static int cmd_evaluate_list(struct eval_ctx *ctx, struct cmd *cmd)
                if (set == NULL)
                        return set_not_found(ctx, &ctx->cmd->handle.set.location,
                                             ctx->cmd->handle.set.name);
-               else if (!map_is_literal(set->flags))
+               if ((cmd->obj == CMD_OBJ_SET && !set_is_literal(set->flags)) ||
+                   (cmd->obj == CMD_OBJ_MAP && !map_is_literal(set->flags)) ||
+                   (cmd->obj == CMD_OBJ_METER && !set_is_meter(set->flags)))
                        return cmd_error(ctx, &ctx->cmd->handle.set.location,
                                         "%s", strerror(ENOENT));