From f8aa8da864bf74bf2484b31ed4e20b6be314da5a Mon Sep 17 00:00:00 2001 From: Emmanuel Roullit Date: Fri, 16 Dec 2011 18:36:47 +0100 Subject: [PATCH] Added BPF attach/detach support check. --- src/CMakeLists.txt | 1 + src/cmake/modules/CheckBPFAttach.cmake | 33 +++++++++++++++++++++++++++++++++ 2 files changed, 34 insertions(+) create mode 100644 src/cmake/modules/CheckBPFAttach.cmake diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 99e4f52f..a4dab8b4 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -8,6 +8,7 @@ SET(CONFIG_INSTALL_PATH /etc/netsniff-ng) SET(VERSION "0.5.6") +INCLUDE(CheckBPFAttach) INCLUDE(CheckPFPacket) INCLUDE(CheckStrictAlign) INCLUDE(CheckTxRing) diff --git a/src/cmake/modules/CheckBPFAttach.cmake b/src/cmake/modules/CheckBPFAttach.cmake new file mode 100644 index 00000000..f9b28dd3 --- /dev/null +++ b/src/cmake/modules/CheckBPFAttach.cmake @@ -0,0 +1,33 @@ + +INCLUDE(CheckCSourceRuns) + +CHECK_C_SOURCE_RUNS(" +#include +#include +#include +#include +#include + +int +main(int argc, char *argv[]) +{ + struct sock_fprog bpf; + int empty; + int sock = 0; + + memset(&bpf, 0, sizeof(bpf)); + + setsockopt(sock, SOL_SOCKET, SO_ATTACH_FILTER, &bpf, sizeof(bpf)); + setsockopt(sock, SOL_SOCKET, SO_DETACH_FILTER, &empty, sizeof(empty)); + exit(0); +} +" + BPFATTACH_RUN_RESULT) + +SET(HAVE_BPF_ATTACH NO) +IF(BPFATTACH_RUN_RESULT EQUAL 1) + SET(HAVE_BPF_ATTACH YES) + MESSAGE(STATUS "System has SO_ATTACH_FILTER/SO_DETACH_FILTER support") +ELSE(BPFATTACH_RUN_RESULT EQUAL 1) + MESSAGE(STATUS "System does not have SO_ATTACH_FILTER/SO_DETACH_FILTER support") +ENDIF(BPFATTACH_RUN_RESULT EQUAL 1) -- 2.11.4.GIT