summaryrefslogtreecommitdiffstats
path: root/input/sum/ulogd_inpflow_NFACCT.c
diff options
context:
space:
mode:
authorPablo Neira Ayuso <pablo@netfilter.org>2012-06-22 16:55:41 +0200
committerPablo Neira Ayuso <pablo@netfilter.org>2012-06-22 17:45:35 +0200
commit34b4af44bd931b7fa46804faf1f60b53dafa1b73 (patch)
tree27718abe93484963c7197138d9c57f135770fe31 /input/sum/ulogd_inpflow_NFACCT.c
parentdc3b9b75f608baddb602e6d55277ed6a55fe4d2f (diff)
output: XML: support for NFACCT input plugin
This patch extends XML plugin to support NFACCT. You can use the following line in ulogd.conf to test it: stack=acct1:NFACCT,xml1:XML Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
Diffstat (limited to 'input/sum/ulogd_inpflow_NFACCT.c')
-rw-r--r--input/sum/ulogd_inpflow_NFACCT.c13
1 files changed, 10 insertions, 3 deletions
diff --git a/input/sum/ulogd_inpflow_NFACCT.c b/input/sum/ulogd_inpflow_NFACCT.c
index 751c567..f3b936f 100644
--- a/input/sum/ulogd_inpflow_NFACCT.c
+++ b/input/sum/ulogd_inpflow_NFACCT.c
@@ -49,6 +49,7 @@ enum ulogd_nfacct_keys {
ULOGD_NFACCT_NAME,
ULOGD_NFACCT_PKTS,
ULOGD_NFACCT_BYTES,
+ ULOGD_NFACCT_RAW,
};
static struct ulogd_key nfacct_okeys[] = {
@@ -67,6 +68,11 @@ static struct ulogd_key nfacct_okeys[] = {
.flags = ULOGD_RETF_NONE,
.name = "sum.bytes",
},
+ [ULOGD_NFACCT_RAW] = {
+ .type = ULOGD_RET_RAW,
+ .flags = ULOGD_RETF_NONE,
+ .name = "sum",
+ },
};
static void
@@ -80,6 +86,7 @@ propagate_nfacct(struct ulogd_pluginstance *upi, struct nfacct *nfacct)
nfacct_attr_get_u64(nfacct, NFACCT_ATTR_PKTS));
okey_set_u64(&ret[ULOGD_NFACCT_BYTES],
nfacct_attr_get_u64(nfacct, NFACCT_ATTR_BYTES));
+ okey_set_ptr(&ret[ULOGD_NFACCT_RAW], nfacct);
ulogd_propagate_results(upi);
}
@@ -93,6 +100,8 @@ do_propagate_nfacct(struct ulogd_pluginstance *upi, struct nfacct *nfacct)
propagate_nfacct(npi, nfacct);
propagate_nfacct(upi, nfacct);
+
+ nfacct_free(nfacct);
}
static int nfacct_cb(const struct nlmsghdr *nlh, void *data)
@@ -108,13 +117,11 @@ static int nfacct_cb(const struct nlmsghdr *nlh, void *data)
if (nfacct_nlmsg_parse_payload(nlh, nfacct) < 0) {
ulogd_log(ULOGD_ERROR, "Error parsing nfacct message");
- goto err_free;
+ goto err;
}
do_propagate_nfacct(upi, nfacct);
-err_free:
- nfacct_free(nfacct);
err:
return MNL_CB_OK;
}