summaryrefslogtreecommitdiffstats
path: root/src/libnetfilter_acct.c
diff options
context:
space:
mode:
authorPablo Neira Ayuso <pablo@netfilter.org>2011-12-02 00:19:51 +0100
committerPablo Neira Ayuso <pablo@netfilter.org>2011-12-02 00:19:51 +0100
commit16762a68af7fe7fb6c8a606c25a8550dbf65ab5d (patch)
treef2e67b1e39d4491b22294755996e1957c1062de6 /src/libnetfilter_acct.c
parent23278bd3b31eff9e1bad5f13e4e8222f9c5602c4 (diff)
fix endianness in 64-bits packet and bytes counters
In nfnetlink, the policy is that attributes are in network byte order.
Diffstat (limited to 'src/libnetfilter_acct.c')
-rw-r--r--src/libnetfilter_acct.c11
1 files changed, 7 insertions, 4 deletions
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 <time.h>
+#include <endian.h>
#include <libmnl/libmnl.h>
#include <linux/netfilter/nfnetlink.h>
#include <linux/netfilter/nfnetlink_acct.h>
@@ -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]));
}