Slightly moved around the NFQ define a bit.

remotes/origin/master-1.0.x
Victor Julien 16 years ago
parent e6400bf456
commit 175eaeca93

@ -21,15 +21,56 @@
#include "source-nfq-prototypes.h" #include "source-nfq-prototypes.h"
#include "action-globals.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 */ /* shared vars for all for nfq queues and threads */
static NFQGlobalVars nfq_g; static NFQGlobalVars nfq_g;
#ifdef NFQ
static NFQThreadVars nfq_t[NFQ_MAX_QUEUE]; static NFQThreadVars nfq_t[NFQ_MAX_QUEUE];
static u_int16_t receive_queue_num = 0; static u_int16_t receive_queue_num = 0;
static u_int16_t verdict_queue_num = 0; static u_int16_t verdict_queue_num = 0;
static pthread_mutex_t nfq_init_lock; static pthread_mutex_t nfq_init_lock;
#endif /* NFQ */
int ReceiveNFQ(ThreadVars *, Packet *, void *, PacketQueue *); int ReceiveNFQ(ThreadVars *, Packet *, void *, PacketQueue *);
int ReceiveNFQThreadInit(ThreadVars *, void *, void **); int ReceiveNFQThreadInit(ThreadVars *, void *, void **);
@ -41,9 +82,7 @@ void VerdictNFQThreadExitStats(ThreadVars *, void *);
int VerdictNFQThreadDeinit(ThreadVars *, void *); int VerdictNFQThreadDeinit(ThreadVars *, void *);
int DecodeNFQ(ThreadVars *, Packet *, void *, PacketQueue *); int DecodeNFQ(ThreadVars *, Packet *, void *, PacketQueue *);
int NoNFQSupportExit(ThreadVars *, void *, void **);
#ifdef NFQ
void TmModuleReceiveNFQRegister (void) { void TmModuleReceiveNFQRegister (void) {
/* XXX create a general NFQ setup function */ /* XXX create a general NFQ setup function */
memset(&nfq_g, 0, sizeof(nfq_g)); memset(&nfq_g, 0, sizeof(nfq_g));
@ -76,44 +115,6 @@ void TmModuleDecodeNFQRegister (void) {
tmm_modules[TMM_DECODENFQ].RegisterTests = NULL; 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) void NFQSetupPkt (Packet *p, void *data)
{ {
struct nfq_data *tb = (struct nfq_data *)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; return 0;
} }
#endif /* NFQ */ #endif /* NFQ */

@ -3,12 +3,11 @@
#ifndef __SOURCE_NFQ_H__ #ifndef __SOURCE_NFQ_H__
#define __SOURCE_NFQ_H__ #define __SOURCE_NFQ_H__
#include <pthread.h>
#ifdef NFQ #ifdef NFQ
#include <pthread.h>
#include <linux/netfilter.h> /* for NF_ACCEPT */ #include <linux/netfilter.h> /* for NF_ACCEPT */
#include <libnetfilter_queue/libnetfilter_queue.h> #include <libnetfilter_queue/libnetfilter_queue.h>
#endif /* NFQ */
#define NFQ_MAX_QUEUE 16 #define NFQ_MAX_QUEUE 16
@ -25,7 +24,6 @@ typedef struct NFQPacketVars_
u_int16_t hw_protocol; u_int16_t hw_protocol;
} NFQPacketVars; } NFQPacketVars;
#ifdef NFQ
typedef struct NFQThreadVars_ typedef struct NFQThreadVars_
{ {
struct nfq_handle *h; struct nfq_handle *h;
@ -49,12 +47,12 @@ typedef struct NFQThreadVars_
ThreadVars *tv; ThreadVars *tv;
} NFQThreadVars; } NFQThreadVars;
#endif /* NFQ */
typedef struct NFQGlobalVars_ typedef struct NFQGlobalVars_
{ {
char unbind; char unbind;
} NFQGlobalVars; } NFQGlobalVars;
#endif /* NFQ */
#endif /* __SOURCE_NFQ_H__ */ #endif /* __SOURCE_NFQ_H__ */

Loading…
Cancel
Save