diff options
author | Phil Sutter <phil@nwl.cc> | 2024-03-07 18:40:12 +0100 |
---|---|---|
committer | Phil Sutter <phil@nwl.cc> | 2024-03-19 18:24:47 +0100 |
commit | 38f04196ebef64a6672c55c27a6afe9af811c8f7 (patch) | |
tree | a27fa2069a0bb6a6052874ba4e79cc5703147e08 /src | |
parent | 3a9f29e217268c03d2b1c965f64abe10bec1a6a0 (diff) |
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 <phil@nwl.cc>
Diffstat (limited to 'src')
-rw-r--r-- | src/json.c | 8 |
1 files changed, 5 insertions, 3 deletions
@@ -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); |