diff options
author | Pablo Neira Ayuso <pablo@netfilter.org> | 2008-11-23 23:59:44 +0100 |
---|---|---|
committer | Eric Leblond <eric@inl.fr> | 2008-12-09 01:19:25 +0100 |
commit | d4cf078cb71a943af0dcaa51ed5f950df0fdeca3 (patch) | |
tree | 7a732b2f7526343f76ab71092bd6b7dccc233497 /output | |
parent | 8aa47fcd3c013913b5e553053e0098b6765e5544 (diff) |
add ukey_* function for key assignation
This patch cleans up the current key assignation by introducing a
set of functions ukey_* to set the key value as Eric Leblond and
we discussed during the latest Netfilter Workshop. This patch is
based on an idea from Holger Eitzenberger.
Signed-off-by: Eric Leblond <eric@inl.fr>
Diffstat (limited to 'output')
-rw-r--r-- | output/pcap/ulogd_output_PCAP.c | 11 | ||||
-rw-r--r-- | output/ulogd_output_NACCT.c | 34 |
2 files changed, 22 insertions, 23 deletions
diff --git a/output/pcap/ulogd_output_PCAP.c b/output/pcap/ulogd_output_PCAP.c index ce4393c..09120a1 100644 --- a/output/pcap/ulogd_output_PCAP.c +++ b/output/pcap/ulogd_output_PCAP.c @@ -126,7 +126,6 @@ static struct ulogd_key pcap_keys[INTR_IDS] = { { .name = "oob.time.usec" }, }; -#define GET_VALUE(res, x) (res[x].u.source->u.value) #define GET_FLAGS(res, x) (res[x].u.source->flags) static int interp_pcap(struct ulogd_pluginstance *upi) @@ -135,13 +134,13 @@ static int interp_pcap(struct ulogd_pluginstance *upi) struct ulogd_key *res = upi->input.keys; struct pcap_sf_pkthdr pchdr; - pchdr.caplen = GET_VALUE(res, 2).ui32; - pchdr.len = GET_VALUE(res, 2).ui32; + pchdr.caplen = ikey_get_u32(&res[2]); + pchdr.len = ikey_get_u32(&res[2]); if (GET_FLAGS(res, 3) & ULOGD_RETF_VALID && GET_FLAGS(res, 4) & ULOGD_RETF_VALID) { - pchdr.ts.tv_sec = GET_VALUE(res, 3).ui32; - pchdr.ts.tv_usec = GET_VALUE(res, 4).ui32; + pchdr.ts.tv_sec = ikey_get_u32(&res[3]); + pchdr.ts.tv_usec = ikey_get_u32(&res[4]); } else { /* use current system time */ struct timeval tv; @@ -156,7 +155,7 @@ static int interp_pcap(struct ulogd_pluginstance *upi) strerror(errno)); return ULOGD_IRET_ERR; } - if (fwrite(GET_VALUE(res, 0).ptr, pchdr.caplen, 1, pi->of) != 1) { + if (fwrite(ikey_get_ptr(&res[0]), pchdr.caplen, 1, pi->of) != 1) { ulogd_log(ULOGD_ERROR, "Error during write: %s\n", strerror(errno)); return ULOGD_IRET_ERR; diff --git a/output/ulogd_output_NACCT.c b/output/ulogd_output_NACCT.c index 0ab2be4..f5296e8 100644 --- a/output/ulogd_output_NACCT.c +++ b/output/ulogd_output_NACCT.c @@ -125,28 +125,28 @@ nacct_interp(struct ulogd_pluginstance *pi) /* try to be as close to nacct as possible. Instead of nacct's 'timestamp' value use 'flow.end.sec' */ - if (GET_VALUE(inp, KEY_IP_PROTO).ui8 == IPPROTO_ICMP) { + 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", - GET_VALUE(inp, KEY_FLOW_END).ui32, - GET_VALUE(inp, KEY_IP_PROTO).ui8, - (char *) GET_VALUE(inp, KEY_IP_SADDR).ptr, - GET_VALUE(inp, KEY_ICMP_TYPE).ui8, - (char *) GET_VALUE(inp, KEY_IP_DADDR).ptr, - GET_VALUE(inp, KEY_ICMP_CODE).ui8, - GET_VALUE(inp, KEY_RAW_PKTCNT).ui32, - GET_VALUE(inp, KEY_RAW_PKTLEN).ui32); + 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])); } else { snprintf(buf, sizeof(buf), "%u\t%u\t%s\t%u\t%s\t%u\t%u\t%u", - GET_VALUE(inp, KEY_FLOW_END).ui32, - GET_VALUE(inp, KEY_IP_PROTO).ui8, - (char *) GET_VALUE(inp, KEY_IP_SADDR).ptr, - GET_VALUE(inp, KEY_L4_SPORT).ui16, - (char *) GET_VALUE(inp, KEY_IP_DADDR).ptr, - GET_VALUE(inp, KEY_L4_DPORT).ui16, - GET_VALUE(inp, KEY_RAW_PKTCNT).ui32, - GET_VALUE(inp, KEY_RAW_PKTLEN).ui32); + 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])); } fprintf(priv->of, "%s\n", buf); |