Compilation fix for OpenBSD and win32.

This patch fixes compilation on OpenBSD platform. It is running
fine on a pcap file. The patch should also fix compilation on
WIN32 platform but this is not tested.
remotes/origin/master-1.1.x
Eric Leblond 14 years ago committed by Victor Julien
parent a8db8b334b
commit 4e9231266a

@ -123,6 +123,11 @@ AC_INIT(configure.in)
CPPFLAGS="${CPPFLAGS} -I/usr/local/include -I/usr/local/include/libnet11" CPPFLAGS="${CPPFLAGS} -I/usr/local/include -I/usr/local/include/libnet11"
LDFLAGS="${LDFLAGS} -L/usr/local/lib -L/usr/local/lib/libnet11" LDFLAGS="${LDFLAGS} -L/usr/local/lib -L/usr/local/lib/libnet11"
;; ;;
*-*-openbsd*)
CFLAGS="${CFLAGS} -D__OpenBSD__"
CPPFLAGS="${CPPFLAGS} -I/usr/local/include -I/usr/local/include/libnet-1.1"
LDFLAGS="${LDFLAGS} -L/usr/local/lib -I/usr/local/lib/libnet-1.1"
;;
*darwin*|*Darwin*) *darwin*|*Darwin*)
CFLAGS="${CFLAGS} -DOS_DARWIN" CFLAGS="${CFLAGS} -DOS_DARWIN"
CPPFLAGS="${CPPFLAGS} -I/opt/local/include" CPPFLAGS="${CPPFLAGS} -I/opt/local/include"

@ -97,14 +97,14 @@
#include <sys/stat.h> #include <sys/stat.h>
#if HAVE_ARPA_INET_H
#include <arpa/inet.h>
#endif
#if HAVE_NETINET_IN_H #if HAVE_NETINET_IN_H
#include <netinet/in.h> #include <netinet/in.h>
#endif #endif
#if HAVE_ARPA_INET_H
#include <arpa/inet.h>
#endif
#if HAVE_NETDB_H #if HAVE_NETDB_H
#include <netdb.h> #include <netdb.h>
#endif #endif

@ -27,9 +27,11 @@
#ifndef __THREADS_H__ #ifndef __THREADS_H__
#define __THREADS_H__ #define __THREADS_H__
#ifdef OS_FREEBSD #if defined OS_FREEBSD || __OpenBSD__
#if ! defined __OpenBSD__
#include <sys/thr.h> #include <sys/thr.h>
#endif
enum { enum {
PRIO_LOW = 2, PRIO_LOW = 2,
PRIO_MEDIUM = 0, PRIO_MEDIUM = 0,
@ -99,6 +101,13 @@ enum {
u_long tid = (u_long)tmpthid; \ u_long tid = (u_long)tmpthid; \
tid; \ tid; \
}) })
#elif __OpenBSD__
#define SCGetThreadIdLong(...) ({ \
pid_t tpid; \
tpid = getpid(); \
u_long tid = (u_long)tpid; \
tid; \
})
#elif OS_WIN32 #elif OS_WIN32
#define SCGetThreadIdLong(...) ({ \ #define SCGetThreadIdLong(...) ({ \
u_long tid = (u_long)GetCurrentThreadId(); \ u_long tid = (u_long)GetCurrentThreadId(); \
@ -361,7 +370,7 @@ enum {
*/ */
#ifndef PR_SET_NAME /*PR_SET_NAME */ #ifndef PR_SET_NAME /*PR_SET_NAME */
#define SCSetThreadName(n) #define SCSetThreadName(n)
#elif OS_FREEBSD /* FreeBSD */ #elif defined OS_FREEBSD || __OpenBSD__ /* FreeBSD or OpenBSD */
/** \todo Add implementation for FreeBSD */ /** \todo Add implementation for FreeBSD */
#define SCSetThreadName(n) #define SCSetThreadName(n)
#elif OS_WIN32 /* Windows */ #elif OS_WIN32 /* Windows */

@ -664,13 +664,9 @@ void TmVarSlotSetFuncAppend(ThreadVars *tv, TmModule *tm, void *data) {
} }
} }
#ifdef OS_WIN32 #if !defined OS_WIN32 && !defined __OpenBSD__
static int SetCPUAffinitySet(uint32_t cs) {
return 0;
}
#else
static int SetCPUAffinitySet(cpu_set_t *cs) { static int SetCPUAffinitySet(cpu_set_t *cs) {
#ifdef OS_FREEBSD #if defined OS_FREEBSD
int r = cpuset_setaffinity(CPU_LEVEL_WHICH,CPU_WHICH_TID,SCGetThreadIdLong(),sizeof(cpu_set_t),cs); int r = cpuset_setaffinity(CPU_LEVEL_WHICH,CPU_WHICH_TID,SCGetThreadIdLong(),sizeof(cpu_set_t),cs);
#elif OS_DARWIN #elif OS_DARWIN
int r = thread_policy_set(mach_thread_self(), THREAD_AFFINITY_POLICY, (void*)cs, THREAD_AFFINITY_POLICY_COUNT); int r = thread_policy_set(mach_thread_self(), THREAD_AFFINITY_POLICY, (void*)cs, THREAD_AFFINITY_POLICY_COUNT);
@ -696,11 +692,14 @@ static int SetCPUAffinitySet(cpu_set_t *cs) {
* \retval 0 if all goes well; -1 if something is wrong * \retval 0 if all goes well; -1 if something is wrong
*/ */
static int SetCPUAffinity(uint16_t cpuid) { static int SetCPUAffinity(uint16_t cpuid) {
#if !defined __OpenBSD__
int cpu = (int)cpuid; int cpu = (int)cpuid;
#endif
#ifdef OS_WIN32 #ifdef OS_WIN32
DWORD cs = 1 << cpu; DWORD cs = 1 << cpu;
#elif defined __OpenBSD__
return 0;
#else #else
cpu_set_t cs; cpu_set_t cs;
@ -717,7 +716,7 @@ static int SetCPUAffinity(uint16_t cpuid) {
SCLogDebug("CPU Affinity for thread %lu set to CPU %" PRId32, SCGetThreadIdLong(), cpu); SCLogDebug("CPU Affinity for thread %lu set to CPU %" PRId32, SCGetThreadIdLong(), cpu);
return 0; return 0;
#else #elif !defined __OpenBSD__
return SetCPUAffinitySet(&cs); return SetCPUAffinitySet(&cs);
#endif /* OS_WIN32 */ #endif /* OS_WIN32 */
} }
@ -802,6 +801,7 @@ TmEcode TmThreadSetupOptions(ThreadVars *tv) {
SCLogInfo("Setting affinity for \"%s\" Module to cpu/core %"PRIu16", thread id %lu", tv->name, tv->cpu_affinity, SCGetThreadIdLong()); SCLogInfo("Setting affinity for \"%s\" Module to cpu/core %"PRIu16", thread id %lu", tv->name, tv->cpu_affinity, SCGetThreadIdLong());
SetCPUAffinity(tv->cpu_affinity); SetCPUAffinity(tv->cpu_affinity);
} }
#if !defined OS_WIN32 && !defined __OpenBSD__
if (tv->thread_setup_flags & THREAD_SET_PRIORITY) if (tv->thread_setup_flags & THREAD_SET_PRIORITY)
TmThreadSetPrio(tv); TmThreadSetPrio(tv);
if (tv->thread_setup_flags & THREAD_SET_AFFTYPE) { if (tv->thread_setup_flags & THREAD_SET_AFFTYPE) {
@ -827,6 +827,7 @@ TmEcode TmThreadSetupOptions(ThreadVars *tv) {
} }
TmThreadSetPrio(tv); TmThreadSetPrio(tv);
} }
#endif
return TM_ECODE_OK; return TM_ECODE_OK;
} }

@ -97,6 +97,7 @@ ThreadsAffinityType * GetAffinityTypeFromName(const char *name) {
return NULL; return NULL;
} }
#if !defined OS_WIN32 && !defined __OpenBSD__
static void AffinitySetupInit() static void AffinitySetupInit()
{ {
int i, j; int i, j;
@ -112,7 +113,6 @@ static void AffinitySetupInit()
} }
SCMutexInit(&thread_affinity[i].taf_mutex, NULL); SCMutexInit(&thread_affinity[i].taf_mutex, NULL);
} }
return; return;
} }
@ -168,6 +168,7 @@ static void build_cpuset(ConfNode *node, cpu_set_t *cpu)
break; break;
} }
} }
#endif /* OS_WIN32 and __OpenBSD__ */
/** /**
* \brief Extract cpu affinity configuration from current config file * \brief Extract cpu affinity configuration from current config file
@ -175,6 +176,7 @@ static void build_cpuset(ConfNode *node, cpu_set_t *cpu)
void AffinitySetupLoadFromConfig() void AffinitySetupLoadFromConfig()
{ {
#if !defined OS_WIN32 && !defined __OpenBSD__
ConfNode *root = ConfGetNode("threading.cpu_affinity"); ConfNode *root = ConfGetNode("threading.cpu_affinity");
ConfNode *affinity; ConfNode *affinity;
@ -269,6 +271,7 @@ void AffinitySetupLoadFromConfig()
} }
} }
} }
#endif /* OS_WIN32 and __OpenBSD__ */
} }
/** /**
@ -279,6 +282,7 @@ int AffinityGetNextCPU(ThreadsAffinityType *taf)
{ {
int ncpu = 0; int ncpu = 0;
#if !defined OS_WIN32 && !defined __OpenBSD__
SCMutexLock(&taf->taf_mutex); SCMutexLock(&taf->taf_mutex);
ncpu = taf->lcpu; ncpu = taf->lcpu;
while (!CPU_ISSET(ncpu, &taf->cpu_set)) { while (!CPU_ISSET(ncpu, &taf->cpu_set)) {
@ -291,5 +295,6 @@ int AffinityGetNextCPU(ThreadsAffinityType *taf)
taf->lcpu = 0; taf->lcpu = 0;
SCMutexUnlock(&taf->taf_mutex); SCMutexUnlock(&taf->taf_mutex);
SCLogInfo("Setting affinity on CPU %d", ncpu); SCLogInfo("Setting affinity on CPU %d", ncpu);
#endif /* OS_WIN32 and __OpenBSD__ */
return ncpu; return ncpu;
} }

@ -25,14 +25,18 @@
#define __UTIL_AFFINITY_H__ #define __UTIL_AFFINITY_H__
#include "suricata-common.h" #include "suricata-common.h"
#ifdef OS_FREEBSD #if defined OS_FREEBSD
#include <sched.h> #include <sched.h>
#include <sys/param.h> #include <sys/param.h>
#include <sys/resource.h> #include <sys/resource.h>
#include <sys/cpuset.h> #include <sys/cpuset.h>
#include <sys/thr.h> #include <sys/thr.h>
#define cpu_set_t cpuset_t #define cpu_set_t cpuset_t
#elif OS_DARWIN #elif defined __OpenBSD__
#include <sched.h>
#include <sys/param.h>
#include <sys/resource.h>
#elif defined OS_DARWIN
#include <mach/mach.h> #include <mach/mach.h>
#include <mach/mach_init.h> #include <mach/mach_init.h>
#include <mach/thread_policy.h> #include <mach/thread_policy.h>
@ -62,13 +66,17 @@ enum {
typedef struct ThreadsAffinityType_ { typedef struct ThreadsAffinityType_ {
char *name; char *name;
#if !defined OS_WIN32 && !defined __OpenBSD__
cpu_set_t cpu_set; cpu_set_t cpu_set;
#endif
uint8_t mode_flag; uint8_t mode_flag;
int prio; int prio;
int nb_threads; int nb_threads;
#if !defined OS_WIN32 && !defined __OpenBSD__
cpu_set_t lowprio_cpu; cpu_set_t lowprio_cpu;
cpu_set_t medprio_cpu; cpu_set_t medprio_cpu;
cpu_set_t hiprio_cpu; cpu_set_t hiprio_cpu;
#endif
SCMutex taf_mutex; SCMutex taf_mutex;
uint16_t lcpu; /* use by exclusive mode */ uint16_t lcpu; /* use by exclusive mode */
} ThreadsAffinityType; } ThreadsAffinityType;

@ -35,6 +35,11 @@
#define SCByteSwap16(x) bswap16(x) #define SCByteSwap16(x) bswap16(x)
#define SCByteSwap32(x) bswap32(x) #define SCByteSwap32(x) bswap32(x)
#define SCByteSwap64(x) bswap64(x) #define SCByteSwap64(x) bswap64(x)
#elif defined __OpenBSD__
#include <sys/types.h>
#define SCByteSwap16(x) swap16(x)
#define SCByteSwap32(x) swap32(x)
#define SCByteSwap64(x) swap64(x)
#elif OS_DARWIN #elif OS_DARWIN
#include <libkern/OSByteOrder.h> #include <libkern/OSByteOrder.h>
#define SCByteSwap16(x) OSSwapInt16(x) #define SCByteSwap16(x) OSSwapInt16(x)

@ -29,7 +29,11 @@
#include "util-error.h" #include "util-error.h"
#include "pcre.h" #include "pcre.h"
#include "util-debug-filters.h" #include "util-debug-filters.h"
#if defined __OpenBSD__
//#include <sys/syslog.h>
#else
#include "syslog.h" #include "syslog.h"
#endif
#ifndef __UTIL_DEBUG_H__ #ifndef __UTIL_DEBUG_H__
#define __UTIL_DEBUG_H__ #define __UTIL_DEBUG_H__

@ -33,6 +33,10 @@
#define USE_FMEM_WRAPPER 1 #define USE_FMEM_WRAPPER 1
#endif #endif
#ifdef __OpenBSD__
#define USE_FMEM_WRAPPER 1
#endif
#ifdef USE_FMEM_WRAPPER #ifdef USE_FMEM_WRAPPER
#ifdef OS_WIN32 #ifdef OS_WIN32

@ -37,6 +37,10 @@
#define USE_FMEM_WRAPPER 1 #define USE_FMEM_WRAPPER 1
#endif #endif
#ifdef __OpenBSD__
#define USE_FMEM_WRAPPER 1
#endif
#ifdef OS_WIN32 #ifdef OS_WIN32
#define USE_FMEM_WRAPPER 1 #define USE_FMEM_WRAPPER 1
#endif #endif

@ -30,7 +30,7 @@
#include "suricata-common.h" #include "suricata-common.h"
#include "suricata-common.h" #include "suricata-common.h"
#ifdef OS_FREEBSD #if defined OS_FREEBSD || defined __OpenBSD__
#include <netinet/in.h> #include <netinet/in.h>
#endif /* OS_FREEBSD */ #endif /* OS_FREEBSD */
#ifdef OS_DARWIN #ifdef OS_DARWIN

@ -24,9 +24,9 @@
* when constructing unittests * when constructing unittests
*/ */
#include "suricata-common.h"
#include <netinet/in.h> #include <netinet/in.h>
#include "suricata-common.h"
#include "decode.h" #include "decode.h"

Loading…
Cancel
Save