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.0.6.1~224 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=bbf0030d3b2df5d8a0841bed12a07ce2fee9b192;p=thirdparty%2Fnftables.git json: Order output like nft_cmd_expand() commit 38f04196ebef64a6672c55c27a6afe9af811c8f7 upstream. 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 727700b8..67ef95b6 100644 --- a/src/json.c +++ b/src/json.c @@ -1674,6 +1674,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); @@ -1689,9 +1694,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);