]> git.ipfire.org Git - thirdparty/nftables.git/commitdiff
monitor: Make JSON/XML output respect output_fp
authorPhil Sutter <phil@nwl.cc>
Wed, 28 Feb 2018 15:04:28 +0000 (16:04 +0100)
committerPablo Neira Ayuso <pablo@netfilter.org>
Wed, 28 Feb 2018 18:36:09 +0000 (19:36 +0100)
Make sure events callbacks print to output_ctx-defined stream for any
type of output format.

Since all of them use nft_print() as last call (if anything is printed
at all), the final call to fflush() in netlink_events_cb() can be
dropped.

Signed-off-by: Phil Sutter <phil@nwl.cc>
Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
src/netlink.c

index 4ead2ed2ddca67a3a527bf7ec2cd4360b934acbd..c7adf8b409c69ce0b3b7e3ab7e9d3167a4750178 100644 (file)
@@ -2028,9 +2028,9 @@ static int netlink_events_table_cb(const struct nlmsghdr *nlh, int type,
                break;
        case NFTNL_OUTPUT_XML:
        case NFTNL_OUTPUT_JSON:
-               nftnl_table_fprintf(stdout, nlt, monh->format,
-                                   netlink_msg2nftnl_of(type));
-               fprintf(stdout, "\n");
+               nftnl_table_fprintf(monh->ctx->octx->output_fp, nlt,
+                                   monh->format, netlink_msg2nftnl_of(type));
+               nft_mon_print(monh, "\n");
                break;
        }
 
@@ -2070,9 +2070,9 @@ static int netlink_events_chain_cb(const struct nlmsghdr *nlh, int type,
                break;
        case NFTNL_OUTPUT_XML:
        case NFTNL_OUTPUT_JSON:
-               nftnl_chain_fprintf(stdout, nlc, monh->format,
-                                   netlink_msg2nftnl_of(type));
-               fprintf(stdout, "\n");
+               nftnl_chain_fprintf(monh->ctx->octx->output_fp, nlc,
+                                   monh->format, netlink_msg2nftnl_of(type));
+               nft_mon_print(monh, "\n");
                break;
        }
 
@@ -2117,9 +2117,9 @@ static int netlink_events_set_cb(const struct nlmsghdr *nlh, int type,
                break;
        case NFTNL_OUTPUT_XML:
        case NFTNL_OUTPUT_JSON:
-               nftnl_set_fprintf(stdout, nls, monh->format,
-                               netlink_msg2nftnl_of(type));
-               fprintf(stdout, "\n");
+               nftnl_set_fprintf(monh->ctx->octx->output_fp, nls,
+                                 monh->format, netlink_msg2nftnl_of(type));
+               nft_mon_print(monh, "\n");
                break;
        }
 out:
@@ -2266,9 +2266,9 @@ static int netlink_events_setelem_cb(const struct nlmsghdr *nlh, int type,
                break;
        case NFTNL_OUTPUT_XML:
        case NFTNL_OUTPUT_JSON:
-               nftnl_set_fprintf(stdout, nls, monh->format,
-                                 netlink_msg2nftnl_of(type));
-               fprintf(stdout, "\n");
+               nftnl_set_fprintf(monh->ctx->octx->output_fp, nls,
+                                 monh->format, netlink_msg2nftnl_of(type));
+               nft_mon_print(monh, "\n");
                break;
        }
 out:
@@ -2311,9 +2311,9 @@ static int netlink_events_obj_cb(const struct nlmsghdr *nlh, int type,
                break;
        case NFTNL_OUTPUT_XML:
        case NFTNL_OUTPUT_JSON:
-               nftnl_obj_fprintf(stdout, nlo, monh->format,
-                                 netlink_msg2nftnl_of(type));
-               fprintf(stdout, "\n");
+               nftnl_obj_fprintf(monh->ctx->octx->output_fp, nlo,
+                                 monh->format, netlink_msg2nftnl_of(type));
+               nft_mon_print(monh, "\n");
                break;
        }
 
@@ -2367,9 +2367,9 @@ static int netlink_events_rule_cb(const struct nlmsghdr *nlh, int type,
                break;
        case NFTNL_OUTPUT_XML:
        case NFTNL_OUTPUT_JSON:
-               nftnl_rule_fprintf(stdout, nlr, monh->format,
-                                netlink_msg2nftnl_of(type));
-               fprintf(stdout, "\n");
+               nftnl_rule_fprintf(monh->ctx->octx->output_fp, nlr,
+                                  monh->format, netlink_msg2nftnl_of(type));
+               nft_mon_print(monh, "\n");
                break;
        }
 
@@ -2998,7 +2998,6 @@ static int netlink_events_cb(const struct nlmsghdr *nlh, void *data)
                ret = netlink_events_newgen_cb(nlh, type, monh);
                break;
        }
-       fflush(stdout);
 
        return ret;
 }