Re: [PATCH nft v4] src: enable json echo output when reading native syntax

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On 4/8/20 14:37, Phil Sutter wrote:
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

This does not output anything on my machine. This is because json_echo is not initialized before netlink_echo_callback.

The mock monitor is responsible of appending the appropriate json cmd object to nft->json_echo, so we need it initialized when the case is as we have discussed before, native input and echo+json.

In addition netlink_echo_callback is called each time we receive something from the mnl socket. So checking if nft->json_echo is already initialized is necessary too, if not checked only the last response is shown, and for each past response that means a lost json_t reference to an array of cmd objs for that given response.

Regards.



[Index of Archives]     [Netfitler Users]     [Berkeley Packet Filter]     [LARTC]     [Bugtraq]     [Yosemite Forum]

  Powered by Linux