On Tue, Aug 04, 2020 at 12:38:46PM +0200, Jose M. Guisado Gomez wrote: > This patch fixes a bug in which nft did not print any output when > specifying --echo and --json and reading nft native syntax. > > This patch respects behavior when input is json, in which the output > would be the identical input plus the handles. > > Adds a json_echo member inside struct nft_ctx to build and store the json object > containing the json command objects, the object is built using a mock > monitor to reuse monitor json code. This json object is only used when > we are sure we have not read json from input. > > Fixes: https://bugzilla.netfilter.org/show_bug.cgi?id=1446 > > Signed-off-by: Jose M. Guisado Gomez <guigom@xxxxxxxxxx> > --- > v4 respects previous behavior for json echo when reading json input too > > include/nftables.h | 1 + > src/json.c | 13 ++++++++++--- > src/monitor.c | 37 +++++++++++++++++++++++++++++-------- > src/parser_json.c | 24 +++++++++++++++++------- > 4 files changed, 57 insertions(+), 18 deletions(-) Why not just: --- a/src/monitor.c +++ b/src/monitor.c @@ -922,8 +922,11 @@ int netlink_echo_callback(const struct nlmsghdr *nlh, void *data) if (!nft_output_echo(&echo_monh.ctx->nft->output)) return MNL_CB_OK; - if (nft_output_json(&ctx->nft->output)) - return json_events_cb(nlh, &echo_monh); + if (nft_output_json(&ctx->nft->output)) { + if (ctx->nft->json_root) + return json_events_cb(nlh, &echo_monh); + echo_monh.format = NFTNL_OUTPUT_JSON; + } return netlink_events_cb(nlh, &echo_monh); } At a first glance, this seems to work just fine. Cheers, Phil