diff options
author | /C=DE/ST=Berlin/L=Berlin/O=Netfilter Project/OU=Development/CN=laforge/emailAddress=laforge@netfilter.org </C=DE/ST=Berlin/L=Berlin/O=Netfilter Project/OU=Development/CN=laforge/emailAddress=laforge@netfilter.org> | 2005-11-05 13:05:54 +0000 |
---|---|---|
committer | /C=DE/ST=Berlin/L=Berlin/O=Netfilter Project/OU=Development/CN=laforge/emailAddress=laforge@netfilter.org </C=DE/ST=Berlin/L=Berlin/O=Netfilter Project/OU=Development/CN=laforge/emailAddress=laforge@netfilter.org> | 2005-11-05 13:05:54 +0000 |
commit | f002a811e060ddb8c2d88f94c67c33cec7579028 (patch) | |
tree | a9f15f0cd61d9806cddac5bcd5a07e71a7ee41c6 /utils/nfulnl_test.c | |
parent | 61a5ea46c92ecc1533240e3fd1aa2f51b25dc81f (diff) |
implement accessor functions similar to libnetfilter_queue
Diffstat (limited to 'utils/nfulnl_test.c')
-rw-r--r-- | utils/nfulnl_test.c | 55 |
1 files changed, 22 insertions, 33 deletions
diff --git a/utils/nfulnl_test.c b/utils/nfulnl_test.c index 69245df..f9da4f3 100644 --- a/utils/nfulnl_test.c +++ b/utils/nfulnl_test.c @@ -6,53 +6,42 @@ #include <libnetfilter_log/libnetfilter_log.h> -static int print_pkt(struct nfattr *tb[]) +static int print_pkt(struct nflog_data *ldata) { - if (tb[NFULA_PACKET_HDR-1]) { - struct nfulnl_msg_packet_hdr *ph = - NFA_DATA(tb[NFULA_PACKET_HDR-1]); + struct nfulnl_msg_packet_hdr *ph = nflog_get_msg_packet_hdr(ldata); + u_int32_t mark = nflog_get_nfmark(ldata); + u_int32_t indev = nflog_get_indev(ldata); + u_int32_t outdev = nflog_get_outdev(ldata); + char *prefix = nflog_get_prefix(ldata); + void *payload; + int payload_len = nflog_get_payload(ldata, payload); + + if (ph) { printf("hw_protocol=0x%04x hook=%u ", ntohs(ph->hw_protocol), ph->hook); } - if (tb[NFULA_MARK-1]) { - u_int32_t mark = - ntohl(*(u_int32_t *)NFA_DATA(tb[NFULA_MARK-1])); - printf("mark=%u ", mark); - } + printf("mark=%u ", mark); - if (tb[NFULA_IFINDEX_INDEV-1]) { - u_int32_t ifi = ntohl(*(u_int32_t *)NFA_DATA(tb[NFULA_IFINDEX_INDEV-1])); - printf("indev=%u ", ifi); - } - if (tb[NFULA_IFINDEX_OUTDEV-1]) { - u_int32_t ifi = ntohl(*(u_int32_t *)NFA_DATA(tb[NFULA_IFINDEX_OUTDEV-1])); - printf("outdev=%u ", ifi); - } -#if 0 - if (tb[NFULA_IFINDEX_PHYSINDEV-1]) { - u_int32_t ifi = ntohl(*(u_int32_t *)NFA_DATA(tb[NFULA_IFINDEX_PHYSINDEV-1])); - printf("physindev=%u ", ifi); - } - if (tb[NFULA_IFINDEX_PHYSOUTDEV-1]) { - u_int32_t ifi = ntohl(*(u_int32_t *)NFA_DATA(tb[NFULA_IFINDEX_PHYSOUTDEV-1])); - printf("physoutdev=%u ", ifi); - } -#endif - if (tb[NFULA_PREFIX-1]) { - char *prefix = NFA_DATA(tb[NFULA_PREFIX-1]); + if (indev > 0) + printf("indev=%u ", indev); + + if (outdev > 0) + printf("outdev=%u ", outdev); + + + if (prefix) { printf("prefix=\"%s\" ", prefix); } - if (tb[NFULA_PAYLOAD-1]) { - printf("payload_len=%d ", NFA_PAYLOAD(tb[NFULA_PAYLOAD-1])); - } + if (payload_len >= 0) + printf("payload_len=%d ", payload_len); fputc('\n', stdout); return 0; } static int cb(struct nflog_g_handle *gh, struct nfgenmsg *nfmsg, - struct nfattr *nfa[], void *data) + struct nflog_data *nfa, void *data) { print_pkt(nfa); } |