summaryrefslogtreecommitdiffstats
path: root/src/rule.c
diff options
context:
space:
mode:
authorPablo Neira Ayuso <pablo@netfilter.org>2015-06-28 21:02:32 +0200
committerPablo Neira Ayuso <pablo@netfilter.org>2015-08-18 01:13:35 +0200
commit51d659450c1aecdd881c521ab290439d44125156 (patch)
tree2e8d992600c554903f607b1dfbb8ded4e98ac4a2 /src/rule.c
parentc2f7d6a6b0629e521d91d5caed87061a1a697ce9 (diff)
src: add table declaration to cache
Add declared table objects to the cache, thus we can refer to objects that come in this batch but that are not yet available in the kernel. This happens from the evaluation step. Get rid of code that is doing this from the later do_command_*() stage. Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
Diffstat (limited to 'src/rule.c')
-rw-r--r--src/rule.c15
1 files changed, 2 insertions, 13 deletions
diff --git a/src/rule.c b/src/rule.c
index 7701e211..ccfde3de 100644
--- a/src/rule.c
+++ b/src/rule.c
@@ -1003,15 +1003,8 @@ static int do_command_list(struct netlink_ctx *ctx, struct cmd *cmd)
struct table *table = NULL;
struct set *set;
- /* No need to allocate the table object when listing all tables */
- if (cmd->handle.table != NULL) {
+ if (cmd->handle.table != NULL)
table = table_lookup(&cmd->handle);
- if (table == NULL) {
- table = table_alloc();
- handle_merge(&table->handle, &cmd->handle);
- table_add_hash(table);
- }
- }
switch (cmd->obj) {
case CMD_OBJ_TABLE:
@@ -1072,14 +1065,10 @@ static int do_command_flush(struct netlink_ctx *ctx, struct cmd *cmd)
static int do_command_rename(struct netlink_ctx *ctx, struct cmd *cmd)
{
- struct table *table;
+ struct table *table = table_lookup(&cmd->handle);
struct chain *chain;
int err;
- table = table_alloc();
- handle_merge(&table->handle, &cmd->handle);
- table_add_hash(table);
-
switch (cmd->obj) {
case CMD_OBJ_CHAIN:
err = netlink_get_chain(ctx, &cmd->handle, &cmd->location);