summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorPhil Sutter <phil@nwl.cc>2018-02-28 16:04:28 +0100
committerPablo Neira Ayuso <pablo@netfilter.org>2018-02-28 19:36:09 +0100
commit59034b47590d7cd19ba2fda24bf4426c355f95bc (patch)
tree448696cbecb022dbdaee8f0a069e5acef872da7a /src
parent657472843e7a7a4bc7f756356e6636b1f197b745 (diff)
monitor: Make JSON/XML output respect output_fp
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>
Diffstat (limited to 'src')
-rw-r--r--src/netlink.c37
1 files changed, 18 insertions, 19 deletions
diff --git a/src/netlink.c b/src/netlink.c
index 4ead2ed2..c7adf8b4 100644
--- a/src/netlink.c
+++ b/src/netlink.c
@@ -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;
}