From: Phil Sutter Date: Thu, 7 Mar 2024 17:40:12 +0000 (+0100) Subject: json: Order output like nft_cmd_expand() X-Git-Tag: v1.1.0~76 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=38f04196ebef64a6672c55c27a6afe9af811c8f7;p=thirdparty%2Fnftables.git json: Order output like nft_cmd_expand() Print empty chain add commands early in list so following verdict maps and rules referring to them won't cause spurious errors when loading the resulting ruleset dump. Signed-off-by: Phil Sutter --- diff --git a/src/json.c b/src/json.c index b3e1e4e1..bb515164 100644 --- a/src/json.c +++ b/src/json.c @@ -1704,6 +1704,11 @@ static json_t *table_print_json_full(struct netlink_ctx *ctx, tmp = table_print_json(table); json_array_append_new(root, tmp); + /* both maps and rules may refer to chains, list them first */ + list_for_each_entry(chain, &table->chain_cache.list, cache.list) { + tmp = chain_print_json(chain); + json_array_append_new(root, tmp); + } list_for_each_entry(obj, &table->obj_cache.list, cache.list) { tmp = obj_print_json(obj); json_array_append_new(root, tmp); @@ -1719,9 +1724,6 @@ static json_t *table_print_json_full(struct netlink_ctx *ctx, json_array_append_new(root, tmp); } list_for_each_entry(chain, &table->chain_cache.list, cache.list) { - tmp = chain_print_json(chain); - json_array_append_new(root, tmp); - list_for_each_entry(rule, &chain->rules, list) { tmp = rule_print_json(&ctx->nft->output, rule); json_array_append_new(rules, tmp);