diff options
Diffstat (limited to 'CMakeLists.txt')
-rw-r--r-- | CMakeLists.txt | 124 |
1 files changed, 103 insertions, 21 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt index 57d884314..9632acb79 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -87,7 +87,75 @@ if(BUILD_EXAMPLES) option(ENABLE_DBUS "Build DBus notification example." OFF) option(ENABLE_CURL "Build influxdb data write example." OFF) endif() +option(ENABLE_PFRING "Enable PF_RING support for nDPId (experimental)" OFF) option(BUILD_NDPI "Clone and build nDPI from github." OFF) + +if(ENABLE_PFRING) + option(PFRING_LINK_STATIC "Link against a static version of pfring." ON) + set(PFRING_KERNEL_INC "" CACHE STRING "Path to PFRING kernel module include directory.") + set(PFRING_DEFS "-DENABLE_PFRING=1") + + if(PFRING_KERNEL_INC STREQUAL "") + message(FATAL_ERROR "PFRING_KERNEL_INC needs to be set to the PFRING kernel module include directory.") + endif() + if(NOT EXISTS "${PFRING_KERNEL_INC}/linux/pf_ring.h") + message(FATAL_ERROR "Expected to find <linux/pf_ring.h> below ${PFRING_KERNEL_INC}, but none found.") + endif() + + set(PFRING_INSTALLDIR "/opt/PF_RING/usr" CACHE STRING "") + set(PFRING_INC "${PFRING_INSTALLDIR}/include") + + if(NOT EXISTS "${PFRING_INC}") + message(FATAL_ERROR "Include directory \"${PFRING_INC}\" does not exist!") + endif() + if(PFRING_LINK_STATIC) + if(CMAKE_SIZEOF_VOID_P EQUAL 8) + if(EXISTS "${PFRING_INSTALLDIR}/lib64") + set(STATIC_PFRING_LIB "${PFRING_INSTALLDIR}/lib64/libpfring.a") + else() + set(STATIC_PFRING_LIB "${PFRING_INSTALLDIR}/lib/libpfring.a") + endif() + else() + if(EXISTS "${PFRING_INSTALLDIR}/lib32") + set(STATIC_PFRING_LIB "${PFRING_INSTALLDIR}/lib32/libpfring.a") + else() + set(STATIC_PFRING_LIB "${PFRING_INSTALLDIR}/lib/libpfring.a") + endif() + endif() + + if(NOT EXISTS "${STATIC_PFRING_LIB}") + message(FATAL_ERROR "Static library \"${STATIC_PFRING_LIB}\" does not exist!") + endif() + else() + if(CMAKE_SIZEOF_VOID_P EQUAL 8) + if(EXISTS "${PFRING_INSTALLDIR}/lib64") + find_library(PF_RING_LIB pfring PATHS "${PFRING_INSTALLDIR}/lib64") + else() + find_library(PF_RING_LIB pfring PATHS "${PFRING_INSTALLDIR}/lib") + endif() + else() + if(EXISTS "${PFRING_INSTALLDIR}/lib32") + find_library(PF_RING_LIB pfring PATHS "${PFRING_INSTALLDIR}/lib32") + else() + find_library(PF_RING_LIB pfring PATHS "${PFRING_INSTALLDIR}/lib") + endif() + endif() + + if(NOT PF_RING_LIB) + message(FATAL_ERROR "libpfring.so not found below ${PFRING_INSTALLDIR}/{lib,lib32,lib64}") + endif() + endif() + + if(NOT EXISTS "${PFRING_INSTALLDIR}/include/pfring.h") + message(FATAL_ERROR "Expected to find <include/pfring.h> inside ${PFRING_INSTALLDIR}, but none found.") + endif() +else() + unset(PFRING_INSTALLDIR CACHE) + unset(PFRING_INC CACHE) + unset(STATIC_PFRING_LIB CACHE) + unset(PFRING_LINK_STATIC CACHE) +endif() + if(BUILD_NDPI) option(BUILD_NDPI_FORCE_GIT_UPDATE "Forcefully instruments nDPI build script to update the git submodule." OFF) unset(NDPI_NO_PKGCONFIG CACHE) @@ -121,9 +189,12 @@ if (ENABLE_MEMORY_PROFILING AND NOT ENABLE_MEMORY_STATUS) message(FATAL_ERROR "ENABLE_MEMORY_PROFILING requires ENABLE_MEMORY_STATUS to make it work!") endif() -add_executable(nDPId nDPId.c nio.c utils.c) +if(ENABLE_PFRING) + set(NDPID_PFRING_SRCS npfring.c) +endif() +add_executable(nDPId nDPId.c ${NDPID_PFRING_SRCS} nio.c utils.c) add_executable(nDPIsrvd nDPIsrvd.c nio.c utils.c) -add_executable(nDPId-test nDPId-test.c) +add_executable(nDPId-test nDPId-test.c ${NDPID_PFRING_SRCS}) add_custom_target(dist) add_custom_command( @@ -348,25 +419,24 @@ if(NOT pkgcfg_lib_PCAP_pcap) endif() target_compile_options(nDPId PRIVATE "-pthread") -target_compile_definitions(nDPId PRIVATE -D_GNU_SOURCE=1 -DPKG_VERSION=\"${PKG_VERSION}\" -DGIT_VERSION=\"${GIT_VERSION}\" ${NDPID_DEFS} ${EPOLL_DEFS} ${ZLIB_DEFS} ${MEMORY_STATUS_DEFS}) -target_include_directories(nDPId PRIVATE "${STATIC_LIBNDPI_INC}" "${DEFAULT_NDPI_INCLUDE}" ${NDPID_DEPS_INC}) -target_link_libraries(nDPId "${STATIC_LIBNDPI_LIB}" "${pkgcfg_lib_PCAP_pcap}" "${pkgcfg_lib_NDPI_ndpi}" +target_compile_definitions(nDPId PRIVATE -D_GNU_SOURCE=1 -DPKG_VERSION=\"${PKG_VERSION}\" -DGIT_VERSION=\"${GIT_VERSION}\" ${NDPID_DEFS} ${EPOLL_DEFS} ${ZLIB_DEFS} ${PFRING_DEFS} ${MEMORY_STATUS_DEFS}) +target_include_directories(nDPId PRIVATE "${STATIC_LIBNDPI_INC}" "${DEFAULT_NDPI_INCLUDE}" ${NDPID_DEPS_INC} ${PFRING_KERNEL_INC} ${PFRING_INC}) +target_link_libraries(nDPId "${STATIC_LIBNDPI_LIB}" "${STATIC_PFRING_LIB}" "${pkgcfg_lib_PCAP_pcap}" "${pkgcfg_lib_NDPI_ndpi}" "${pkgcfg_lib_PCRE_pcre2-8}" "${pkgcfg_lib_MAXMINDDB_maxminddb}" "${pkgcfg_lib_ZLIB_z}" - "${GCRYPT_LIBRARY}" "${GCRYPT_ERROR_LIBRARY}" "${PCAP_LIBRARY}" "${LIBM_LIB}" + "${GCRYPT_LIBRARY}" "${GCRYPT_ERROR_LIBRARY}" "${PCAP_LIBRARY}" "${LIBM_LIB}" "${PF_RING_LIB}" "-pthread") target_compile_definitions(nDPIsrvd PRIVATE -D_GNU_SOURCE=1 -DPKG_VERSION=\"${PKG_VERSION}\" -DGIT_VERSION=\"${GIT_VERSION}\" ${NDPID_DEFS} ${EPOLL_DEFS}) target_include_directories(nDPIsrvd PRIVATE ${NDPID_DEPS_INC}) -target_include_directories(nDPId-test PRIVATE ${NDPID_DEPS_INC}) target_compile_options(nDPId-test PRIVATE "-Wno-unused-function" "-pthread") target_compile_definitions(nDPId-test PRIVATE -D_GNU_SOURCE=1 -DNO_MAIN=1 -DPKG_VERSION=\"${PKG_VERSION}\" -DGIT_VERSION=\"${GIT_VERSION}\" - ${NDPID_DEFS} ${EPOLL_DEFS} ${ZLIB_DEFS} ${MEMORY_STATUS_DEFS} ${NDPID_TEST_MPROF_DEFS}) + ${NDPID_DEFS} ${EPOLL_DEFS} ${ZLIB_DEFS} ${PFRING_DEFS} ${MEMORY_STATUS_DEFS} ${NDPID_TEST_MPROF_DEFS}) target_include_directories(nDPId-test PRIVATE - "${STATIC_LIBNDPI_INC}" "${DEFAULT_NDPI_INCLUDE}" ${NDPID_DEPS_INC}) -target_link_libraries(nDPId-test "${STATIC_LIBNDPI_LIB}" "${pkgcfg_lib_PCAP_pcap}" "${pkgcfg_lib_NDPI_ndpi}" + "${STATIC_LIBNDPI_INC}" "${DEFAULT_NDPI_INCLUDE}" ${NDPID_DEPS_INC} ${PFRING_KERNEL_INC} ${PFRING_INC}) +target_link_libraries(nDPId-test "${STATIC_LIBNDPI_LIB}" "${STATIC_PFRING_LIB}" "${pkgcfg_lib_PCAP_pcap}" "${pkgcfg_lib_NDPI_ndpi}" "${pkgcfg_lib_PCRE_pcre2-8}" "${pkgcfg_lib_MAXMINDDB_maxminddb}" "${pkgcfg_lib_ZLIB_z}" - "${GCRYPT_LIBRARY}" "${GCRYPT_ERROR_LIBRARY}" "${PCAP_LIBRARY}" "${LIBM_LIB}" + "${GCRYPT_LIBRARY}" "${GCRYPT_ERROR_LIBRARY}" "${PCAP_LIBRARY}" "${LIBM_LIB}" "${PF_RING_LIB}" "-pthread") if(BUILD_EXAMPLES) @@ -484,15 +554,16 @@ message(STATUS "CMAKE_BUILD_TYPE.........: ${CMAKE_BUILD_TYPE}") message(STATUS "CMAKE_C_FLAGS............: ${CMAKE_C_FLAGS}") message(STATUS "NDPID_DEFS...............: ${NDPID_DEFS}") message(STATUS "FORCE_POLL...............: ${FORCE_POLL}") +message(STATUS "ENABLE_PFRING............: ${ENABLE_PFRING}") +if(ENABLE_PFRING) +message(STATUS "PFRING_LINK_STATIC.......: ${PFRING_LINK_STATIC}") +endif() message(STATUS "ENABLE_COVERAGE..........: ${ENABLE_COVERAGE}") message(STATUS "ENABLE_SANITIZER.........: ${ENABLE_SANITIZER}") message(STATUS "ENABLE_SANITIZER_THREAD..: ${ENABLE_SANITIZER_THREAD}") message(STATUS "ENABLE_MEMORY_STATUS.....: ${ENABLE_MEMORY_STATUS}") message(STATUS "ENABLE_MEMORY_PROFILING..: ${ENABLE_MEMORY_PROFILING}") message(STATUS "ENABLE_ZLIB..............: ${ENABLE_ZLIB}") -if(STATIC_LIBNDPI_INSTALLDIR) -message(STATUS "STATIC_LIBNDPI_INSTALLDIR: ${STATIC_LIBNDPI_INSTALLDIR}") -endif() message(STATUS "BUILD_NDPI...............: ${BUILD_NDPI}") message(STATUS "BUILD_EXAMPLES...........: ${BUILD_EXAMPLES}") if(BUILD_EXAMPLES) @@ -504,17 +575,28 @@ message(STATUS "NDPI_ADDITIONAL_ARGS.....: ${NDPI_ADDITIONAL_ARGS}") endif() message(STATUS "NDPI_NO_PKGCONFIG........: ${NDPI_NO_PKGCONFIG}") message(STATUS "--------------------------") +if(PFRING_INSTALLDIR) +message(STATUS "PFRING_INSTALLDIR........: ${PFRING_INSTALLDIR}") +message(STATUS "- PFRING_INC.............: ${PFRING_INC}") +message(STATUS "- PFRING_KERNEL_INC......: ${PFRING_KERNEL_INC}") +message(STATUS "- STATIC_PFRING_LIB......: ${STATIC_PFRING_LIB}") +message(STATUS "- SHARED_PFRING_LIB......: ${PF_RING_LIB}") +message(STATUS "--------------------------") +endif() +if(STATIC_LIBNDPI_INSTALLDIR) +message(STATUS "STATIC_LIBNDPI_INSTALLDIR: ${STATIC_LIBNDPI_INSTALLDIR}") +endif() if(STATIC_LIBNDPI_INSTALLDIR OR BUILD_NDPI OR NDPI_NO_PKGCONFIG) -message(STATUS "- STATIC_LIBNDPI_INC....: ${STATIC_LIBNDPI_INC}") -message(STATUS "- STATIC_LIBNDPI_LIB....: ${STATIC_LIBNDPI_LIB}") -message(STATUS "- NDPI_WITH_GCRYPT......: ${NDPI_WITH_GCRYPT}") -message(STATUS "- NDPI_WITH_PCRE........: ${NDPI_WITH_PCRE}") -message(STATUS "- NDPI_WITH_MAXMINDDB...: ${NDPI_WITH_MAXMINDDB}") +message(STATUS "- STATIC_LIBNDPI_INC.....: ${STATIC_LIBNDPI_INC}") +message(STATUS "- STATIC_LIBNDPI_LIB.....: ${STATIC_LIBNDPI_LIB}") +message(STATUS "- NDPI_WITH_GCRYPT.......: ${NDPI_WITH_GCRYPT}") +message(STATUS "- NDPI_WITH_PCRE.........: ${NDPI_WITH_PCRE}") +message(STATUS "- NDPI_WITH_MAXMINDDB....: ${NDPI_WITH_MAXMINDDB}") endif() if(NOT STATIC_LIBNDPI_INSTALLDIR AND NOT BUILD_NDPI) -message(STATUS "- DEFAULT_NDPI_INCLUDE..: ${DEFAULT_NDPI_INCLUDE}") +message(STATUS "- DEFAULT_NDPI_INCLUDE...: ${DEFAULT_NDPI_INCLUDE}") endif() if(NOT NDPI_NO_PKGCONFIG) -message(STATUS "- pkgcfg_lib_NDPI_ndpi..: ${pkgcfg_lib_NDPI_ndpi}") +message(STATUS "- pkgcfg_lib_NDPI_ndpi...: ${pkgcfg_lib_NDPI_ndpi}") endif() message(STATUS "--------------------------") |