Useful with --terse, when dumping all elements is too expensive. Mirrors non-json dumps, which already include "... # count 12345". Signed-off-by: Niklas Fiekas --- 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