Added BPF attach/detach support check.
[netsniff-ng.git] / src / cmake / modules / CheckBPFAttach.cmake
blobf9b28dd31f673fff5cae791ffcf9781e4017be5f
2 INCLUDE(CheckCSourceRuns)
3       
4 CHECK_C_SOURCE_RUNS("
5 #include <unistd.h>
6 #include <stdlib.h>
7 #include <string.h>
8 #include <sys/socket.h>
9 #include <linux/filter.h>
11 int
12 main(int argc, char *argv[])
14         struct sock_fprog bpf;
15         int empty;
16         int sock = 0;
18         memset(&bpf, 0, sizeof(bpf));
20         setsockopt(sock, SOL_SOCKET, SO_ATTACH_FILTER, &bpf, sizeof(bpf));
21         setsockopt(sock, SOL_SOCKET, SO_DETACH_FILTER, &empty, sizeof(empty));
22         exit(0);
25         BPFATTACH_RUN_RESULT)
27 SET(HAVE_BPF_ATTACH NO)
28 IF(BPFATTACH_RUN_RESULT EQUAL 1)
29     SET(HAVE_BPF_ATTACH YES)
30     MESSAGE(STATUS "System has SO_ATTACH_FILTER/SO_DETACH_FILTER support")
31 ELSE(BPFATTACH_RUN_RESULT EQUAL 1)
32     MESSAGE(STATUS "System does not have SO_ATTACH_FILTER/SO_DETACH_FILTER support")
33 ENDIF(BPFATTACH_RUN_RESULT EQUAL 1)