* [PATCH nft] json: output set/map element count
@ 2026-04-19 15:57 Niklas Fiekas
2026-08-20 11:31 ` Pablo Neira Ayuso
0 siblings, 1 reply; 2+ messages in thread
From: Niklas Fiekas @ 2026-04-19 15:57 UTC (permalink / raw)
To: netfilter-devel
Useful with --terse, when dumping all elements is too expensive.
Mirrors non-json dumps, which already include "... # count 12345".
Signed-off-by: Niklas Fiekas <niklas.fiekas@backscattering.de>
---
doc/libnftables-json.adoc | 4 ++++
src/json.c | 4 ++++
.../testcases/rule_management/dumps/0011reset_0.json-nft | 1 +
tests/shell/testcases/sets/dumps/0016element_leak_0.json-nft | 1 +
.../shell/testcases/sets/dumps/0017add_after_flush_0.json-nft | 1 +
.../shell/testcases/sets/dumps/0018set_check_size_1.json-nft | 1 +
.../shell/testcases/sets/dumps/0019set_check_size_0.json-nft | 1 +
.../testcases/sets/dumps/0045concat_ipv4_service.json-nft | 1 +
.../testcases/sets/dumps/0057set_create_fails_0.json-nft | 1 +
tests/shell/testcases/sets/dumps/0060set_multistmt_1.json-nft | 1 +
tests/shell/testcases/sets/dumps/interval_size.json-nft | 2 ++
11 files changed, 18 insertions(+)
diff --git a/doc/libnftables-json.adoc b/doc/libnftables-json.adoc
index 23a928df..697fdfa4 100644
--- a/doc/libnftables-json.adoc
+++ b/doc/libnftables-json.adoc
@@ -346,6 +346,7 @@ ____
"timeout":* 'NUMBER'*,
"gc-interval":* 'NUMBER'*,
"size":* 'NUMBER'*,
+ "count":* 'NUMBER'*,
"auto-merge":* 'BOOLEAN'
*}}*
@@ -362,6 +363,7 @@ ____
"timeout":* 'NUMBER'*,
"gc-interval":* 'NUMBER'*,
"size":* 'NUMBER'*,
+ "count":* 'NUMBER'*,
"auto-merge":* 'BOOLEAN'
*}}*
@@ -402,6 +404,8 @@ that they translate a unique key to a value.
Garbage collector interval in seconds.
*size*::
Maximum number of elements supported.
+*count*::
+ Current number of elements. Not used in input.
*auto-merge*::
Automatic merging of adjacent/overlapping set elements in interval sets.
diff --git a/src/json.c b/src/json.c
index 7312215d..dd1bdb04 100644
--- a/src/json.c
+++ b/src/json.c
@@ -203,6 +203,10 @@ static json_t *set_print_json(struct output_ctx *octx, const struct set *set)
if (set->desc.size) {
tmp = nft_json_pack("i", set->desc.size);
json_object_set_new(root, "size", tmp);
+ if (set->count) {
+ tmp = nft_json_pack("i", set->count);
+ json_object_set_new(root, "count", tmp);
+ }
}
}
diff --git a/tests/shell/testcases/rule_management/dumps/0011reset_0.json-nft b/tests/shell/testcases/rule_management/dumps/0011reset_0.json-nft
index bc242467..ebeec1d3 100644
--- a/tests/shell/testcases/rule_management/dumps/0011reset_0.json-nft
+++ b/tests/shell/testcases/rule_management/dumps/0011reset_0.json-nft
@@ -38,6 +38,7 @@
"type": "ipv4_addr",
"handle": 0,
"size": 65535,
+ "count": 1,
"flags": [
"dynamic"
],
diff --git a/tests/shell/testcases/sets/dumps/0016element_leak_0.json-nft b/tests/shell/testcases/sets/dumps/0016element_leak_0.json-nft
index 96b9714a..bf09eada 100644
--- a/tests/shell/testcases/sets/dumps/0016element_leak_0.json-nft
+++ b/tests/shell/testcases/sets/dumps/0016element_leak_0.json-nft
@@ -22,6 +22,7 @@
"type": "ipv4_addr",
"handle": 0,
"size": 2,
+ "count": 1,
"elem": [
"1.1.1.1"
]
diff --git a/tests/shell/testcases/sets/dumps/0017add_after_flush_0.json-nft b/tests/shell/testcases/sets/dumps/0017add_after_flush_0.json-nft
index 96b9714a..bf09eada 100644
--- a/tests/shell/testcases/sets/dumps/0017add_after_flush_0.json-nft
+++ b/tests/shell/testcases/sets/dumps/0017add_after_flush_0.json-nft
@@ -22,6 +22,7 @@
"type": "ipv4_addr",
"handle": 0,
"size": 2,
+ "count": 1,
"elem": [
"1.1.1.1"
]
diff --git a/tests/shell/testcases/sets/dumps/0018set_check_size_1.json-nft b/tests/shell/testcases/sets/dumps/0018set_check_size_1.json-nft
index d226811c..e16c7b4b 100644
--- a/tests/shell/testcases/sets/dumps/0018set_check_size_1.json-nft
+++ b/tests/shell/testcases/sets/dumps/0018set_check_size_1.json-nft
@@ -22,6 +22,7 @@
"type": "ipv4_addr",
"handle": 0,
"size": 2,
+ "count": 2,
"elem": [
"1.1.1.1",
"1.1.1.2"
diff --git a/tests/shell/testcases/sets/dumps/0019set_check_size_0.json-nft b/tests/shell/testcases/sets/dumps/0019set_check_size_0.json-nft
index d226811c..e16c7b4b 100644
--- a/tests/shell/testcases/sets/dumps/0019set_check_size_0.json-nft
+++ b/tests/shell/testcases/sets/dumps/0019set_check_size_0.json-nft
@@ -22,6 +22,7 @@
"type": "ipv4_addr",
"handle": 0,
"size": 2,
+ "count": 2,
"elem": [
"1.1.1.1",
"1.1.1.2"
diff --git a/tests/shell/testcases/sets/dumps/0045concat_ipv4_service.json-nft b/tests/shell/testcases/sets/dumps/0045concat_ipv4_service.json-nft
index 8473c333..39343478 100644
--- a/tests/shell/testcases/sets/dumps/0045concat_ipv4_service.json-nft
+++ b/tests/shell/testcases/sets/dumps/0045concat_ipv4_service.json-nft
@@ -33,6 +33,7 @@
],
"handle": 0,
"size": 65536,
+ "count": 1,
"flags": [
"timeout",
"dynamic"
diff --git a/tests/shell/testcases/sets/dumps/0057set_create_fails_0.json-nft b/tests/shell/testcases/sets/dumps/0057set_create_fails_0.json-nft
index 79d7257e..9d43ce1b 100644
--- a/tests/shell/testcases/sets/dumps/0057set_create_fails_0.json-nft
+++ b/tests/shell/testcases/sets/dumps/0057set_create_fails_0.json-nft
@@ -22,6 +22,7 @@
"type": "ipv4_addr",
"handle": 0,
"size": 65535,
+ "count": 1,
"elem": [
"1.1.1.1"
]
diff --git a/tests/shell/testcases/sets/dumps/0060set_multistmt_1.json-nft b/tests/shell/testcases/sets/dumps/0060set_multistmt_1.json-nft
index aea0fe49..7ba55f5f 100644
--- a/tests/shell/testcases/sets/dumps/0060set_multistmt_1.json-nft
+++ b/tests/shell/testcases/sets/dumps/0060set_multistmt_1.json-nft
@@ -34,6 +34,7 @@
"type": "ipv4_addr",
"handle": 0,
"size": 65535,
+ "count": 3,
"flags": [
"dynamic"
],
diff --git a/tests/shell/testcases/sets/dumps/interval_size.json-nft b/tests/shell/testcases/sets/dumps/interval_size.json-nft
index 3ae54e08..d8551406 100644
--- a/tests/shell/testcases/sets/dumps/interval_size.json-nft
+++ b/tests/shell/testcases/sets/dumps/interval_size.json-nft
@@ -29,6 +29,7 @@
},
"handle": 0,
"size": 1,
+ "count": 1,
"flags": [
"interval"
],
@@ -58,6 +59,7 @@
},
"handle": 0,
"size": 1,
+ "count": 1,
"flags": [
"interval"
],
--
2.53.0
^ permalink raw reply related [flat|nested] 2+ messages in thread
* Re: [PATCH nft] json: output set/map element count
2026-04-19 15:57 [PATCH nft] json: output set/map element count Niklas Fiekas
@ 2026-08-20 11:31 ` Pablo Neira Ayuso
0 siblings, 0 replies; 2+ messages in thread
From: Pablo Neira Ayuso @ 2026-08-20 11:31 UTC (permalink / raw)
To: Niklas Fiekas; +Cc: netfilter-devel
On Sun, Apr 19, 2026 at 05:57:30PM +0200, Niklas Fiekas wrote:
> Useful with --terse, when dumping all elements is too expensive.
>
> Mirrors non-json dumps, which already include "... # count 12345".
Applied, thanks
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2026-08-20 11:31 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-04-19 15:57 [PATCH nft] json: output set/map element count Niklas Fiekas
2026-08-20 11:31 ` Pablo Neira Ayuso
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox