Move this to the structure that stores, stateful information. Introduce nft_table_initialized() and use it. Signed-off-by: Pablo Neira Ayuso <pablo@xxxxxxxxxxxxx> --- iptables/nft.c | 14 ++++++++++---- iptables/nft.h | 2 +- 2 files changed, 11 insertions(+), 5 deletions(-) diff --git a/iptables/nft.c b/iptables/nft.c index 6852def381dd..618171e3208a 100644 --- a/iptables/nft.c +++ b/iptables/nft.c @@ -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); diff --git a/iptables/nft.h b/iptables/nft.h index 8cacae7394a3..9fe83ad134da 100644 --- a/iptables/nft.h +++ b/iptables/nft.h @@ -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; -- 2.11.0