From 16762a68af7fe7fb6c8a606c25a8550dbf65ab5d Mon Sep 17 00:00:00 2001 From: Pablo Neira Ayuso Date: Fri, 2 Dec 2011 00:19:51 +0100 Subject: fix endianness in 64-bits packet and bytes counters In nfnetlink, the policy is that attributes are in network byte order. --- src/libnetfilter_acct.c | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) (limited to 'src') diff --git a/src/libnetfilter_acct.c b/src/libnetfilter_acct.c index 1b73b3e..f77fe1f 100644 --- a/src/libnetfilter_acct.c +++ b/src/libnetfilter_acct.c @@ -10,6 +10,7 @@ #include "internal.h" #include +#include #include #include #include @@ -32,8 +33,8 @@ struct nlmsghdr *nfacct_add(char *buf, struct nfacct *nfacct) nfh->res_id = 0; mnl_attr_put_strz(nlh, NFACCT_NAME, nfacct->name); - mnl_attr_put_u64(nlh, NFACCT_PKTS, nfacct->pkts); - mnl_attr_put_u64(nlh, NFACCT_PKTS, nfacct->bytes); + mnl_attr_put_u64(nlh, NFACCT_PKTS, htobe64(nfacct->pkts)); + mnl_attr_put_u64(nlh, NFACCT_PKTS, htobe64(nfacct->bytes)); return nlh; } @@ -103,8 +104,10 @@ int nfacct_list_cb(const struct nlmsghdr *nlh, void *data) if (full) { printf("%s = { pkts = %.12llu,\tbytes = %.12llu }; \n", mnl_attr_get_str(tb[NFACCT_NAME]), - mnl_attr_get_u64(tb[NFACCT_PKTS]), - mnl_attr_get_u64(tb[NFACCT_BYTES])); + (unsigned long long) + be64toh(mnl_attr_get_u64(tb[NFACCT_PKTS])), + (unsigned long long) + be64toh(mnl_attr_get_u64(tb[NFACCT_BYTES]))); } else { printf("%s\n", mnl_attr_get_str(tb[NFACCT_NAME])); } -- cgit v1.2.3