From 175eaeca93ed307dc3d2a2701a22c11d98295cc5 Mon Sep 17 00:00:00 2001 From: Victor Julien Date: Fri, 7 Aug 2009 00:48:36 +0200 Subject: [PATCH] Slightly moved around the NFQ define a bit. --- src/source-nfq.c | 87 +++++++++++++++++++++++++----------------------- src/source-nfq.h | 8 ++--- 2 files changed, 48 insertions(+), 47 deletions(-) diff --git a/src/source-nfq.c b/src/source-nfq.c index 236be6a014..57dd10d98f 100644 --- a/src/source-nfq.c +++ b/src/source-nfq.c @@ -21,15 +21,56 @@ #include "source-nfq-prototypes.h" #include "action-globals.h" +#ifndef NFQ +/** Handle the case where no NFQ support is compiled in. + * + */ + +int NoNFQSupportExit(ThreadVars *, void *, void **); + +void TmModuleReceiveNFQRegister (void) { + tmm_modules[TMM_RECEIVENFQ].name = "ReceiveNFQ"; + tmm_modules[TMM_RECEIVENFQ].Init = NoNFQSupportExit; + tmm_modules[TMM_RECEIVENFQ].Func = NULL; + tmm_modules[TMM_RECEIVENFQ].ExitPrintStats = NULL; + tmm_modules[TMM_RECEIVENFQ].Deinit = NULL; + tmm_modules[TMM_RECEIVENFQ].RegisterTests = NULL; +} + +void TmModuleVerdictNFQRegister (void) { + tmm_modules[TMM_VERDICTNFQ].name = "VerdictNFQ"; + tmm_modules[TMM_VERDICTNFQ].Init = NoNFQSupportExit; + tmm_modules[TMM_VERDICTNFQ].Func = NULL; + tmm_modules[TMM_VERDICTNFQ].ExitPrintStats = NULL; + tmm_modules[TMM_VERDICTNFQ].Deinit = NULL; + tmm_modules[TMM_VERDICTNFQ].RegisterTests = NULL; +} + +void TmModuleDecodeNFQRegister (void) { + tmm_modules[TMM_DECODENFQ].name = "DecodeNFQ"; + tmm_modules[TMM_DECODENFQ].Init = NoNFQSupportExit; + tmm_modules[TMM_DECODENFQ].Func = NULL; + tmm_modules[TMM_DECODENFQ].ExitPrintStats = NULL; + tmm_modules[TMM_DECODENFQ].Deinit = NULL; + tmm_modules[TMM_DECODENFQ].RegisterTests = NULL; +} + +int NoNFQSupportExit(ThreadVars *tv, void *initdata, void **data) +{ + printf("Error creating thread %s: you do not have support for nfqueue " + "enabled please recompile with --enable-nfqueue\n", tv->name); + exit(1); +} + +#else /* implied we do have NFQ support */ + /* shared vars for all for nfq queues and threads */ static NFQGlobalVars nfq_g; -#ifdef NFQ static NFQThreadVars nfq_t[NFQ_MAX_QUEUE]; static u_int16_t receive_queue_num = 0; static u_int16_t verdict_queue_num = 0; static pthread_mutex_t nfq_init_lock; -#endif /* NFQ */ int ReceiveNFQ(ThreadVars *, Packet *, void *, PacketQueue *); int ReceiveNFQThreadInit(ThreadVars *, void *, void **); @@ -41,9 +82,7 @@ void VerdictNFQThreadExitStats(ThreadVars *, void *); int VerdictNFQThreadDeinit(ThreadVars *, void *); int DecodeNFQ(ThreadVars *, Packet *, void *, PacketQueue *); -int NoNFQSupportExit(ThreadVars *, void *, void **); -#ifdef NFQ void TmModuleReceiveNFQRegister (void) { /* XXX create a general NFQ setup function */ memset(&nfq_g, 0, sizeof(nfq_g)); @@ -76,44 +115,6 @@ void TmModuleDecodeNFQRegister (void) { tmm_modules[TMM_DECODENFQ].RegisterTests = NULL; } -#else /* No NFQ support implied */ -void TmModuleReceiveNFQRegister (void) { - tmm_modules[TMM_RECEIVENFQ].name = "ReceiveNFQ"; - tmm_modules[TMM_RECEIVENFQ].Init = NoNFQSupportExit; - tmm_modules[TMM_RECEIVENFQ].Func = NULL; - tmm_modules[TMM_RECEIVENFQ].ExitPrintStats = NULL; - tmm_modules[TMM_RECEIVENFQ].Deinit = NULL; - tmm_modules[TMM_RECEIVENFQ].RegisterTests = NULL; -} - -void TmModuleVerdictNFQRegister (void) { - tmm_modules[TMM_VERDICTNFQ].name = "VerdictNFQ"; - tmm_modules[TMM_VERDICTNFQ].Init = NoNFQSupportExit; - tmm_modules[TMM_VERDICTNFQ].Func = NULL; - tmm_modules[TMM_VERDICTNFQ].ExitPrintStats = NULL; - tmm_modules[TMM_VERDICTNFQ].Deinit = NULL; - tmm_modules[TMM_VERDICTNFQ].RegisterTests = NULL; -} - -void TmModuleDecodeNFQRegister (void) { - tmm_modules[TMM_DECODENFQ].name = "DecodeNFQ"; - tmm_modules[TMM_DECODENFQ].Init = NoNFQSupportExit; - tmm_modules[TMM_DECODENFQ].Func = NULL; - tmm_modules[TMM_DECODENFQ].ExitPrintStats = NULL; - tmm_modules[TMM_DECODENFQ].Deinit = NULL; - tmm_modules[TMM_DECODENFQ].RegisterTests = NULL; -} -#endif /* NFQ */ - -int NoNFQSupportExit(ThreadVars *tv, void *initdata, void **data) -{ - printf("You do not have support for nfqueue enabled please recompile with --enable-nfqueue\n"); - exit(1); - - return 0; -} - -#ifdef NFQ void NFQSetupPkt (Packet *p, void *data) { struct nfq_data *tb = (struct nfq_data *)data; @@ -471,4 +472,6 @@ int DecodeNFQ(ThreadVars *t, Packet *p, void *data, PacketQueue *pq) return 0; } + #endif /* NFQ */ + diff --git a/src/source-nfq.h b/src/source-nfq.h index aef95a2834..2a08d25848 100644 --- a/src/source-nfq.h +++ b/src/source-nfq.h @@ -3,12 +3,11 @@ #ifndef __SOURCE_NFQ_H__ #define __SOURCE_NFQ_H__ -#include - #ifdef NFQ + +#include #include /* for NF_ACCEPT */ #include -#endif /* NFQ */ #define NFQ_MAX_QUEUE 16 @@ -25,7 +24,6 @@ typedef struct NFQPacketVars_ u_int16_t hw_protocol; } NFQPacketVars; -#ifdef NFQ typedef struct NFQThreadVars_ { struct nfq_handle *h; @@ -49,12 +47,12 @@ typedef struct NFQThreadVars_ ThreadVars *tv; } NFQThreadVars; -#endif /* NFQ */ typedef struct NFQGlobalVars_ { char unbind; } NFQGlobalVars; +#endif /* NFQ */ #endif /* __SOURCE_NFQ_H__ */