diff options
author | Pablo Neira Ayuso <pablo@netfilter.org> | 2011-12-02 00:19:51 +0100 |
---|---|---|
committer | Pablo Neira Ayuso <pablo@netfilter.org> | 2011-12-02 00:19:51 +0100 |
commit | 16762a68af7fe7fb6c8a606c25a8550dbf65ab5d (patch) | |
tree | f2e67b1e39d4491b22294755996e1957c1062de6 | |
parent | 23278bd3b31eff9e1bad5f13e4e8222f9c5602c4 (diff) |
fix endianness in 64-bits packet and bytes counters
In nfnetlink, the policy is that attributes are in network byte
order.
-rw-r--r-- | src/libnetfilter_acct.c | 11 |
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])); } |