]> git.ipfire.org Git - thirdparty/nftables.git/commit
cache: chain listing implicitly sets on terse option
authorPablo Neira Ayuso <pablo@netfilter.org>
Tue, 22 Aug 2023 09:33:27 +0000 (11:33 +0200)
committerPablo Neira Ayuso <pablo@netfilter.org>
Wed, 23 Aug 2023 17:16:50 +0000 (19:16 +0200)
commit70d99ce8bf8bd3dab84ea0a6249812b04ec95b8c
treeec0657b962a09a7c9595a66e98489adef3d8b94b
parentc791765cb0d62ba261f0b495e07315437b3ae914
cache: chain listing implicitly sets on terse option

If user specifies a chain to be listed (which is internally handled via
filtering options), then toggle NFT_CACHE_TERSE to skip fetching set
content from kernel for non-anonymous sets.

With a large IPv6 set with bogons, before this patch:

 # time nft list chain inet raw x
 table inet raw {
        chain x {
                ip6 saddr @bogons6
                ip6 saddr { aaaa::, bbbb:: }
        }
 }

 real    0m2,913s
 user    0m1,345s
 sys     0m1,568s

After this patch:

 # time nft list chain inet raw prerouting
 table inet raw {
        chain x {
                ip6 saddr @bogons6
                ip6 saddr { aaaa::, bbbb:: }
        }
 }

 real    0m0,056s
 user    0m0,018s
 sys     0m0,039s

This speeds up chain listing in the presence of a large set.

Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
src/cache.c