summaryrefslogtreecommitdiffstats
path: root/output/ulogd_output_NACCT.c
diff options
context:
space:
mode:
authorUlrich Weber <uw@xyne.com>2013-10-09 12:00:01 +0200
committerEric Leblond <eric@regit.org>2013-10-10 02:31:47 +0200
commit7ecbef1eb3f49afc8349b3a75f22b253856e60db (patch)
tree8b13393b2a015b1d777a4658900a42da5146dae1 /output/ulogd_output_NACCT.c
parent471a5502bf16dab3a13c8c14469582897f43ee7e (diff)
nfct: make NFCT packet counter/length 64 bit
Kernel and libnetfilter_conntrack counters are 64bit, so use 64bit too in ulogd instead of 32bit. Worked fine on little endian systems but big endian systems had zero counter... Didn't test ipfix output, but RFC allows template with either 32 or 64 counters, so should be safe. Signed-off-by: Ulrich Weber <uw@xyne.com> Signed-off-by: Eric Leblond <eric@regit.org>
Diffstat (limited to 'output/ulogd_output_NACCT.c')
-rw-r--r--output/ulogd_output_NACCT.c16
1 files changed, 8 insertions, 8 deletions
diff --git a/output/ulogd_output_NACCT.c b/output/ulogd_output_NACCT.c
index 04c5ab1..e989f92 100644
--- a/output/ulogd_output_NACCT.c
+++ b/output/ulogd_output_NACCT.c
@@ -80,12 +80,12 @@ static struct ulogd_key nacct_inp[] = {
},
/* Assume we're interested more in download than upload */
[KEY_RAW_PKTLEN] = {
- .type = ULOGD_RET_UINT32,
+ .type = ULOGD_RET_UINT64,
.flags = ULOGD_RETF_NONE,
.name = "reply.raw.pktlen",
},
[KEY_RAW_PKTCNT] = {
- .type = ULOGD_RET_UINT32,
+ .type = ULOGD_RET_UINT64,
.flags = ULOGD_RETF_NONE,
.name = "reply.raw.pktcount",
},
@@ -127,26 +127,26 @@ nacct_interp(struct ulogd_pluginstance *pi)
'timestamp' value use 'flow.end.sec' */
if (ikey_get_u8(&inp[KEY_IP_PROTO]) == IPPROTO_ICMP) {
snprintf(buf, sizeof(buf),
- "%u\t%u\t%s\t%u\t%s\t%u\t%u\t%u",
+ "%u\t%u\t%s\t%u\t%s\t%u\t%llu\t%llu",
ikey_get_u32(&inp[KEY_FLOW_END]),
ikey_get_u8(&inp[KEY_IP_PROTO]),
(char *) ikey_get_ptr(&inp[KEY_IP_SADDR]),
ikey_get_u8(&inp[KEY_ICMP_TYPE]),
(char *) ikey_get_ptr(&inp[KEY_IP_DADDR]),
ikey_get_u8(&inp[KEY_ICMP_CODE]),
- ikey_get_u32(&inp[KEY_RAW_PKTCNT]),
- ikey_get_u32(&inp[KEY_RAW_PKTLEN]));
+ ikey_get_u64(&inp[KEY_RAW_PKTCNT]),
+ ikey_get_u64(&inp[KEY_RAW_PKTLEN]));
} else {
snprintf(buf, sizeof(buf),
- "%u\t%u\t%s\t%u\t%s\t%u\t%u\t%u",
+ "%u\t%u\t%s\t%u\t%s\t%u\t%llu\t%llu",
ikey_get_u32(&inp[KEY_FLOW_END]),
ikey_get_u8(&inp[KEY_IP_PROTO]),
(char *) ikey_get_ptr(&inp[KEY_IP_SADDR]),
ikey_get_u16(&inp[KEY_L4_SPORT]),
(char *) ikey_get_ptr(&inp[KEY_IP_DADDR]),
ikey_get_u16(&inp[KEY_L4_DPORT]),
- ikey_get_u32(&inp[KEY_RAW_PKTCNT]),
- ikey_get_u32(&inp[KEY_RAW_PKTLEN]));
+ ikey_get_u64(&inp[KEY_RAW_PKTCNT]),
+ ikey_get_u64(&inp[KEY_RAW_PKTLEN]));
}
fprintf(priv->of, "%s\n", buf);