]> git.ipfire.org Git - thirdparty/iptables.git/commitdiff
nft: move initialize to struct nft_handle
authorPablo Neira Ayuso <pablo@netfilter.org>
Sat, 17 Nov 2018 17:38:30 +0000 (18:38 +0100)
committerPablo Neira Ayuso <pablo@netfilter.org>
Mon, 19 Nov 2018 13:05:49 +0000 (14:05 +0100)
Move this to the structure that stores, stateful information. Introduce
nft_table_initialized() and use it.

Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
iptables/nft.c
iptables/nft.h

index 6852def381dd4d47081ed5730ec4e3407549aaf0..618171e3208aeef1a640dee93789121da62ea42e 100644 (file)
@@ -587,13 +587,19 @@ struct builtin_table xtables_bridge[NFT_TABLE_MAX] = {
        },
 };
 
+static bool nft_table_initialized(const struct nft_handle *h,
+                                 enum nft_table_type type)
+{
+       return h->table[type].initialized;
+}
+
 static int nft_table_builtin_add(struct nft_handle *h,
                                 struct builtin_table *_t)
 {
        struct nftnl_table *t;
        int ret;
 
-       if (_t->initialized)
+       if (nft_table_initialized(h, _t->type))
                return 0;
 
        t = nftnl_table_alloc();
@@ -707,7 +713,7 @@ static int nft_xt_builtin_init(struct nft_handle *h, const char *table)
        if (t == NULL)
                return -1;
 
-       if (t->initialized)
+       if (nft_table_initialized(h, t->type))
                return 0;
 
        if (nft_table_builtin_add(h, t) < 0)
@@ -715,7 +721,7 @@ static int nft_xt_builtin_init(struct nft_handle *h, const char *table)
 
        nft_chain_builtin_init(h, t);
 
-       t->initialized = true;
+       h->table[t->type].initialized = true;
 
        return 0;
 }
@@ -1902,7 +1908,7 @@ static int __nft_table_flush(struct nft_handle *h, const char *table)
 
        _t = nft_table_builtin_find(h, table);
        assert(_t);
-       _t->initialized = false;
+       h->table[_t->type].initialized = false;
 
        flush_chain_cache(h, table);
        flush_rule_cache(h, table);
index 8cacae7394a336b061c2506e206bf79084fe7028..9fe83ad134dac9d6403c33fd1ee071dc9774fc0f 100644 (file)
@@ -25,7 +25,6 @@ struct builtin_table {
        const char *name;
        enum nft_table_type type;
        struct builtin_chain chains[NF_INET_NUMHOOKS];
-       bool initialized;
 };
 
 struct nft_handle {
@@ -41,6 +40,7 @@ struct nft_handle {
        struct builtin_table    *tables;
        struct {
                struct nftnl_chain_list *chain_cache;
+               bool                    initialized;
        } table[NFT_TABLE_MAX];
        struct nftnl_rule_list  *rule_cache;
        bool                    restore;