]> git.ipfire.org Git - thirdparty/iptables.git/commitdiff
nft: cache: Init per table set list along with chain list
authorPhil Sutter <phil@nwl.cc>
Mon, 6 Apr 2020 12:36:30 +0000 (14:36 +0200)
committerPhil Sutter <phil@nwl.cc>
Mon, 11 May 2020 12:28:28 +0000 (14:28 +0200)
This simplifies code a bit and also aligns set and chain lists handling
in cache.

Signed-off-by: Phil Sutter <phil@nwl.cc>
iptables/nft-cache.c

index 369692fe44fc73d217cc4ee132344399d8b6cae6..e042bd83bebf5eb17599066fa4ad7f119e0e1866 100644 (file)
@@ -113,6 +113,10 @@ static int fetch_table_cache(struct nft_handle *h)
                h->cache->table[type].chains = nftnl_chain_list_alloc();
                if (!h->cache->table[type].chains)
                        return 0;
+
+               h->cache->table[type].sets = nftnl_set_list_alloc();
+               if (!h->cache->table[type].sets)
+                       return 0;
        }
 
        return 1;
@@ -254,21 +258,6 @@ static int fetch_set_cache(struct nft_handle *h,
        char buf[16536];
        int i, ret;
 
-       if (!t) {
-               for (i = 0; i < NFT_TABLE_MAX; i++) {
-                       enum nft_table_type type = h->tables[i].type;
-
-                       if (!h->tables[i].name)
-                               continue;
-
-                       h->cache->table[type].sets = nftnl_set_list_alloc();
-                       if (!h->cache->table[type].sets)
-                               return -1;
-               }
-       } else if (!h->cache->table[t->type].sets) {
-               h->cache->table[t->type].sets = nftnl_set_list_alloc();
-       }
-
        if (t && set) {
                struct nftnl_set *s = nftnl_set_alloc();