From e6bf11428303c18c681603fd5030d724296955cf Mon Sep 17 00:00:00 2001 From: Pablo Neira Ayuso Date: Wed, 14 Dec 2011 11:05:41 +0100 Subject: extend nfacct_list to allow to zero counters --- include/libnetfilter_acct/libnetfilter_acct.h | 2 +- src/libnetfilter_acct.c | 8 ++++++-- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/include/libnetfilter_acct/libnetfilter_acct.h b/include/libnetfilter_acct/libnetfilter_acct.h index 5a162b3..f5b0040 100644 --- a/include/libnetfilter_acct/libnetfilter_acct.h +++ b/include/libnetfilter_acct/libnetfilter_acct.h @@ -11,7 +11,7 @@ struct nfacct { }; struct nlmsghdr *nfacct_add(char *buf, struct nfacct *nfacct); -struct nlmsghdr *nfacct_list(char *buf); +struct nlmsghdr *nfacct_list(char *buf, bool ctrzero); int nfacct_list_cb(const struct nlmsghdr *nlh, void *data); struct nlmsghdr *nfacct_flush(char *buf); struct nlmsghdr *nfacct_delete(char *buf, const char *filter_name); diff --git a/src/libnetfilter_acct.c b/src/libnetfilter_acct.c index ab01925..777c960 100644 --- a/src/libnetfilter_acct.c +++ b/src/libnetfilter_acct.c @@ -40,13 +40,17 @@ struct nlmsghdr *nfacct_add(char *buf, struct nfacct *nfacct) } EXPORT_SYMBOL(nfacct_add); -struct nlmsghdr *nfacct_list(char *buf) +struct nlmsghdr *nfacct_list(char *buf, bool ctrzero) { struct nlmsghdr *nlh; struct nfgenmsg *nfh; + uint32_t msg_type = NFNL_MSG_ACCT_GET; + + if (ctrzero) + msg_type = NFNL_MSG_ACCT_GET_CTRZERO; nlh = mnl_nlmsg_put_header(buf); - nlh->nlmsg_type = (NFNL_SUBSYS_ACCT << 8) | NFNL_MSG_ACCT_GET; + nlh->nlmsg_type = (NFNL_SUBSYS_ACCT << 8) | msg_type; nlh->nlmsg_flags = NLM_F_REQUEST | NLM_F_DUMP; nlh->nlmsg_seq = time(NULL); -- cgit v1.2.3