diff options
Diffstat (limited to 'iptables/nft.c')
-rw-r--r-- | iptables/nft.c | 28 |
1 files changed, 1 insertions, 27 deletions
diff --git a/iptables/nft.c b/iptables/nft.c index 17e735aa..38106147 100644 --- a/iptables/nft.c +++ b/iptables/nft.c @@ -1838,8 +1838,6 @@ int nft_chain_restore(struct nft_handle *h, const char *chain, const char *table struct chain_del_data { struct nft_handle *handle; - struct nft_cache *cache; - enum nft_table_type type; bool verbose; }; @@ -1860,10 +1858,7 @@ static int __nft_chain_del(struct nft_chain *nc, void *data) return -1; if (nft_chain_builtin(c)) { - uint32_t num = nftnl_chain_get_u32(c, NFTNL_CHAIN_HOOKNUM); - - if (nc == d->cache->table[d->type].base_chains[num]) - d->cache->table[d->type].base_chains[num] = NULL; + *nc->base_slot = NULL; } /* nftnl_chain is freed when deleting the batch object */ @@ -1877,7 +1872,6 @@ static int __nft_chain_del(struct nft_chain *nc, void *data) int nft_chain_del(struct nft_handle *h, const char *chain, const char *table, bool verbose) { - const struct builtin_table *t; struct chain_del_data d = { .handle = h, .verbose = verbose, @@ -1894,32 +1888,12 @@ int nft_chain_del(struct nft_handle *h, const char *chain, return 0; } - if (nft_chain_builtin(c->nftnl)) { - t = nft_table_builtin_find(h, table); - if (!t) { - errno = EINVAL; - return 0; - } - - d.type = t->type; - d.cache = h->cache; - } - ret = __nft_chain_del(c, &d); if (ret == -2) errno = EINVAL; goto out; } - t = nft_table_builtin_find(h, table); - if (!t) { - errno = EINVAL; - return 0; - } - - d.type = t->type; - d.cache = h->cache; - if (verbose) nft_cache_sort_chains(h, table); |