From c9f9e3f9a4825f63f76a9bcf952b73b55476df93 Mon Sep 17 00:00:00 2001 From: Victor Julien Date: Fri, 28 Jan 2011 13:14:25 +0100 Subject: [PATCH] Add configure check for signed or unsigned nfq_get_payload, adapt code. --- configure.in | 21 ++++++++++++++++++++- src/source-nfq.c | 4 ++++ 2 files changed, 24 insertions(+), 1 deletion(-) diff --git a/configure.in b/configure.in index d8cd41788d..06b3879ae1 100644 --- a/configure.in +++ b/configure.in @@ -415,7 +415,26 @@ case $host in AC_CHECK_LIB([netfilter_queue], [nfq_set_queue_maxlen],AC_DEFINE_UNQUOTED([HAVE_NFQ_MAXLEN],[1],[Found queue max length support in netfilter_queue]) ,,[-lnfnetlink]) AC_CHECK_LIB([netfilter_queue], [nfq_set_verdict2],AC_DEFINE_UNQUOTED([HAVE_NFQ_SET_VERDICT2],[1],[Found nfq_set_verdict2 function in netfilter_queue]) ,,[-lnfnetlink]) - + # check if the argument to nfq_get_payload is signed or unsigned + AC_MSG_CHECKING([for signed nfq_get_payload payload argument]) + STORECFLAGS="${CFLAGS}" + CFLAGS="${CFLAGS} -Werror" + AC_COMPILE_IFELSE( + [AC_LANG_PROGRAM( + [ + #include + ], + [ + char *pktdata; + nfq_get_payload(NULL, &pktdata); + ])], + [libnetfilter_queue_nfq_get_payload_signed="yes"], + [libnetfilter_queue_nfq_get_payload_signed="no"]) + AC_MSG_RESULT($libnetfilter_queue_nfq_get_payload_signed) + if test "x$libnetfilter_queue_nfq_get_payload_signed" = "xyes"; then + AC_DEFINE([NFQ_GET_PAYLOAD_SIGNED], [], [For signed version of nfq_get_payload]) + fi + CFLAGS="${STORECFLAGS}" ;; esac diff --git a/src/source-nfq.c b/src/source-nfq.c index 5656167719..ed959f62d0 100644 --- a/src/source-nfq.c +++ b/src/source-nfq.c @@ -260,7 +260,11 @@ int NFQSetupPkt (Packet *p, struct nfq_q_handle *qh, void *data) p->nfq_v.ifi = nfq_get_indev(tb); p->nfq_v.ifo = nfq_get_outdev(tb); +#ifdef NFQ_GET_PAYLOAD_SIGNED + ret = nfq_get_payload(tb, &pktdata); +#else ret = nfq_get_payload(tb, (unsigned char **) &pktdata); +#endif /* NFQ_GET_PAYLOAD_SIGNED */ if (ret > 0) { /* nfq_get_payload returns a pointer to a part of memory * that is not preserved over the lifetime of our packet.