diff options
Diffstat (limited to '.github')
-rw-r--r-- | .github/workflows/build-freebsd.yml | 39 | ||||
-rw-r--r-- | .github/workflows/build.yml | 63 | ||||
-rw-r--r-- | .github/workflows/sonarcloud.yml | 2 |
3 files changed, 78 insertions, 26 deletions
diff --git a/.github/workflows/build-freebsd.yml b/.github/workflows/build-freebsd.yml new file mode 100644 index 000000000..590d4156d --- /dev/null +++ b/.github/workflows/build-freebsd.yml @@ -0,0 +1,39 @@ +name: FreeBSD Build + +on: + schedule: + # At the end of every day + - cron: '0 0 * * *' + push: + branches: + - main + - tmp + pull_request: + branches: + - main + types: [opened, synchronize, reopened] + release: + types: [created] + +jobs: + test: + runs-on: ubuntu-latest + name: Build and Test + steps: + - uses: actions/checkout@v4 + - name: Test in FreeBSD + id: test + uses: vmactions/freebsd-vm@main + with: + usesh: true + prepare: | + pkg install -y bash autoconf automake cmake gmake libtool gettext pkgconf gcc \ + git wget unzip flock \ + json-c flex bison libpcap curl openssl dbus + run: | + echo "Working Directory: $(pwd)" + echo "User.............: $(whoami)" + echo "FreeBSD Version..: $(freebsd-version)" + # TODO: Make examples I/O event agnostic i.e. use nio + cmake -S . -B build -DBUILD_NDPI=ON -DBUILD_EXAMPLES=OFF #-DENABLE_CURL=ON -DENABLE_DBUS=ON + cmake --build build diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 3bf6b5c49..14feef895 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -33,6 +33,7 @@ jobs: os: "ubuntu-latest" ndpi_build: "-DBUILD_NDPI=ON" ndpid_examples: "-DBUILD_EXAMPLES=ON" + ndpid_rust_examples: "-DBUILD_RUST_EXAMPLES=ON" ndpid_gcrypt: "-DNDPI_WITH_GCRYPT=OFF" ndpid_zlib: "-DENABLE_ZLIB=ON" ndpid_extras: "" @@ -41,11 +42,12 @@ jobs: poll: "-DFORCE_POLL=OFF" upload: true upload_suffix: "" - ndpi_min_version: "4.14" + ndpi_min_version: "4.16" - compiler: "gcc" os: "ubuntu-latest" ndpi_build: "-DBUILD_NDPI=ON" ndpid_examples: "-DBUILD_EXAMPLES=ON" + ndpid_rust_examples: "" ndpid_gcrypt: "-DNDPI_WITH_GCRYPT=ON" ndpid_zlib: "-DENABLE_ZLIB=ON" ndpid_extras: "-DNDPI_WITH_MAXMINDDB=ON -DNDPI_WITH_PCRE=ON -DENABLE_MEMORY_PROFILING=ON" @@ -54,11 +56,12 @@ jobs: poll: "-DFORCE_POLL=OFF" upload: true upload_suffix: "-host-gcrypt" - ndpi_min_version: "4.14" + ndpi_min_version: "4.16" - compiler: "clang" os: "ubuntu-latest" ndpi_build: "-DBUILD_NDPI=ON" ndpid_examples: "-DBUILD_EXAMPLES=ON" + ndpid_rust_examples: "" ndpid_gcrypt: "-DNDPI_WITH_GCRYPT=OFF" ndpid_zlib: "-DENABLE_ZLIB=OFF" ndpid_extras: "" @@ -67,11 +70,12 @@ jobs: poll: "-DFORCE_POLL=OFF" upload: true upload_suffix: "-no-zlib" - ndpi_min_version: "4.14" + ndpi_min_version: "4.16" - compiler: "gcc" os: "ubuntu-latest" ndpi_build: "-DBUILD_NDPI=ON" ndpid_examples: "-DBUILD_EXAMPLES=ON" + ndpid_rust_examples: "" ndpid_gcrypt: "-DNDPI_WITH_GCRYPT=OFF" ndpid_zlib: "-DENABLE_ZLIB=ON" ndpid_extras: "" @@ -79,11 +83,12 @@ jobs: coverage: "-DENABLE_COVERAGE=ON" poll: "-DFORCE_POLL=ON" upload: false - ndpi_min_version: "4.14" + ndpi_min_version: "4.16" - compiler: "clang" os: "ubuntu-latest" ndpi_build: "-DBUILD_NDPI=ON" ndpid_examples: "-DBUILD_EXAMPLES=ON" + ndpid_rust_examples: "" ndpid_gcrypt: "-DNDPI_WITH_GCRYPT=OFF" ndpid_zlib: "-DENABLE_ZLIB=ON" ndpid_extras: "" @@ -91,11 +96,12 @@ jobs: coverage: "-DENABLE_COVERAGE=OFF" poll: "-DFORCE_POLL=OFF" upload: false - ndpi_min_version: "4.14" + ndpi_min_version: "4.16" - compiler: "clang-12" - os: "ubuntu-20.04" + os: "ubuntu-22.04" ndpi_build: "-DBUILD_NDPI=ON" ndpid_examples: "-DBUILD_EXAMPLES=ON" + ndpid_rust_examples: "" ndpid_gcrypt: "-DNDPI_WITH_GCRYPT=OFF" ndpid_zlib: "-DENABLE_ZLIB=ON" ndpid_extras: "" @@ -103,11 +109,12 @@ jobs: coverage: "-DENABLE_COVERAGE=OFF" poll: upload: false - ndpi_min_version: "4.14" + ndpi_min_version: "4.16" - compiler: "gcc-10" - os: "ubuntu-20.04" + os: "ubuntu-22.04" ndpi_build: "-DBUILD_NDPI=ON" ndpid_examples: "-DBUILD_EXAMPLES=ON" + ndpid_rust_examples: "" ndpid_gcrypt: "-DNDPI_WITH_GCRYPT=OFF" ndpid_zlib: "-DENABLE_ZLIB=OFF" ndpid_extras: "" @@ -115,11 +122,12 @@ jobs: coverage: "-DENABLE_COVERAGE=OFF" poll: "-DFORCE_POLL=ON" upload: false - ndpi_min_version: "4.14" - - compiler: "gcc-7" - os: "ubuntu-20.04" + ndpi_min_version: "4.16" + - compiler: "gcc-9" + os: "ubuntu-22.04" ndpi_build: "-DBUILD_NDPI=ON" ndpid_examples: "-DBUILD_EXAMPLES=ON" + ndpid_rust_examples: "" ndpid_gcrypt: "-DNDPI_WITH_GCRYPT=OFF" ndpid_zlib: "-DENABLE_ZLIB=ON" ndpid_extras: "" @@ -127,11 +135,12 @@ jobs: coverage: "-DENABLE_COVERAGE=OFF" poll: "-DFORCE_POLL=OFF" upload: false - ndpi_min_version: "4.14" + ndpi_min_version: "4.16" - compiler: "cc" os: "macOS-13" ndpi_build: "-DBUILD_NDPI=OFF" ndpid_examples: "-DBUILD_EXAMPLES=OFF" + ndpid_rust_examples: "" ndpid_gcrypt: "-DNDPI_WITH_GCRYPT=OFF" ndpid_zlib: "-DENABLE_ZLIB=ON" ndpid_extras: "" @@ -140,7 +149,7 @@ jobs: coverage: "-DENABLE_COVERAGE=OFF" poll: upload: false - ndpi_min_version: "4.14" + ndpi_min_version: "4.16" steps: - name: Print Matrix @@ -169,7 +178,7 @@ jobs: - name: Install MacOS Prerequisites if: startsWith(matrix.os, 'macOS') run: | - brew install coreutils flock automake make unzip cmake pkg-config git wget + brew install coreutils automake make unzip wget 'https://www.tcpdump.org/release/libpcap-1.10.4.tar.gz' tar -xzvf libpcap-1.10.4.tar.gz cd libpcap-1.10.4 @@ -191,6 +200,10 @@ jobs: sudo apt-get update sudo apt-get install autoconf automake cmake libtool pkg-config gettext libjson-c-dev flex bison libpcap-dev zlib1g-dev libcurl4-openssl-dev libdbus-1-dev sudo apt-get install ${{ matrix.compiler }} lcov iproute2 + - name: Install Ubuntu Prerequisites (Rust/Cargo) + if: startsWith(matrix.os, 'ubuntu') && startsWith(matrix.ndpid_rust_examples, '-DBUILD_RUST_EXAMPLES=ON') + run: | + sudo apt-get install cargo - name: Install Ubuntu Prerequisites (libgcrypt) if: startsWith(matrix.os, 'ubuntu') && startsWith(matrix.ndpid_gcrypt, '-DNDPI_WITH_GCRYPT=ON') run: | @@ -204,7 +217,7 @@ jobs: run: | sudo apt-get install libmaxminddb-dev libpcre2-dev - name: Install Ubuntu Prerequisites (libnl-genl-3-dev) - if: endsWith(matrix.compiler, 'gcc-7') == false && startsWith(matrix.ndpi_build, '-DBUILD_NDPI=ON') && startsWith(matrix.coverage, '-DENABLE_COVERAGE=OFF') && startsWith(matrix.sanitizer, '-DENABLE_SANITIZER=ON') && startsWith(matrix.ndpid_gcrypt, '-DNDPI_WITH_GCRYPT=OFF') && startsWith(matrix.ndpid_zlib, '-DENABLE_ZLIB=ON') + if: startsWith(matrix.ndpi_build, '-DBUILD_NDPI=ON') && startsWith(matrix.coverage, '-DENABLE_COVERAGE=OFF') && startsWith(matrix.sanitizer, '-DENABLE_SANITIZER=ON') && startsWith(matrix.ndpid_gcrypt, '-DNDPI_WITH_GCRYPT=OFF') && startsWith(matrix.ndpid_zlib, '-DENABLE_ZLIB=ON') run: | sudo apt-get install libnl-genl-3-dev - name: Checking Network Buffer Size @@ -217,7 +230,7 @@ jobs: cmake -S . -B build -DCMAKE_C_COMPILER="$CMAKE_C_COMPILER" -DCMAKE_C_FLAGS="$CMAKE_C_FLAGS" -DCMAKE_MODULE_LINKER_FLAGS="$CMAKE_MODULE_LINKER_FLAGS" -DCMAKE_C_EXE_LINKER_FLAGS="$CMAKE_C_EXE_LINKER_FLAGS" \ -DENABLE_DBUS=ON -DENABLE_CURL=ON -DENABLE_SYSTEMD=ON \ ${{ matrix.poll }} ${{ matrix.coverage }} ${{ matrix.sanitizer }} ${{ matrix.ndpi_build }} \ - ${{ matrix.ndpid_examples }} ${{ matrix.ndpid_zlib }} ${{ matrix.ndpid_gcrypt }} ${{ matrix.ndpid_extras }} + ${{ matrix.ndpid_examples }} ${{ matrix.ndpid_rust_examples }} ${{ matrix.ndpid_zlib }} ${{ matrix.ndpid_gcrypt }} ${{ matrix.ndpid_extras }} - name: Build nDPId run: | cmake --build build --verbose @@ -237,7 +250,7 @@ jobs: -I. -I./dependencies -I./dependencies/jsmn -I./dependencies/uthash/include \ -o /tmp/a.out - name: Build single nDPId/nDPIsrvd executables (invoke CC directly - static nDPI lib) - if: endsWith(matrix.compiler, 'gcc-7') == false && startsWith(matrix.ndpi_build, '-DBUILD_NDPI=ON') && startsWith(matrix.coverage, '-DENABLE_COVERAGE=OFF') && startsWith(matrix.sanitizer, '-DENABLE_SANITIZER=ON') && startsWith(matrix.ndpid_gcrypt, '-DNDPI_WITH_GCRYPT=OFF') && startsWith(matrix.ndpid_zlib, '-DENABLE_ZLIB=ON') + if: startsWith(matrix.ndpi_build, '-DBUILD_NDPI=ON') && startsWith(matrix.coverage, '-DENABLE_COVERAGE=OFF') && startsWith(matrix.sanitizer, '-DENABLE_SANITIZER=ON') && startsWith(matrix.ndpid_gcrypt, '-DNDPI_WITH_GCRYPT=OFF') && startsWith(matrix.ndpid_zlib, '-DENABLE_ZLIB=ON') run: | cc -Wall -Wextra -std=gnu99 ${{ matrix.poll }} -DENABLE_ZLIB=1 -DENABLE_MEMORY_PROFILING=1 \ -fsanitize=address -fsanitize=undefined -fno-sanitize=alignment -fsanitize=enum -fsanitize=leak \ @@ -276,7 +289,7 @@ jobs: cmake -S . -B ./build \ -DENABLE_DBUS=ON -DENABLE_CURL=ON -DENABLE_SYSTEMD=ON \ ${{ matrix.poll }} ${{ matrix.coverage }} ${{ matrix.sanitizer }} ${{ matrix.ndpi_build }} \ - ${{ matrix.ndpid_examples }} ${{ matrix.ndpid_zlib }} ${{ matrix.ndpid_gcrypt }} ${{ matrix.ndpid_extras }} + ${{ matrix.ndpid_examples }} ${{ matrix.ndpid_rust_examples }} ${{ matrix.ndpid_zlib }} ${{ matrix.ndpid_gcrypt }} ${{ matrix.ndpid_extras }} cd ../.. rm -rf "nDPId-dist-${RAND_ID}" - name: CPack DEB @@ -308,11 +321,11 @@ jobs: sudo systemctl stop ndpisrvd.service journalctl --no-tail --no-pager -u ndpisrvd.service -u ndpid@lo.service - name: Build PF_RING and nDPId (invoke CC directly - dynamic nDPI lib) - if: endsWith(matrix.compiler, 'gcc-7') == false && startsWith(matrix.ndpi_build, '-DBUILD_NDPI=ON') && startsWith(matrix.coverage, '-DENABLE_COVERAGE=OFF') && startsWith(matrix.sanitizer, '-DENABLE_SANITIZER=ON') && startsWith(matrix.ndpid_gcrypt, '-DNDPI_WITH_GCRYPT=OFF') && startsWith(matrix.ndpid_zlib, '-DENABLE_ZLIB=ON') + if: startsWith(matrix.ndpi_build, '-DBUILD_NDPI=ON') && startsWith(matrix.coverage, '-DENABLE_COVERAGE=OFF') && startsWith(matrix.sanitizer, '-DENABLE_SANITIZER=ON') && startsWith(matrix.ndpid_gcrypt, '-DNDPI_WITH_GCRYPT=OFF') && startsWith(matrix.ndpid_zlib, '-DENABLE_ZLIB=ON') run: | git clone --depth=1 https://github.com/ntop/PF_RING.git - cd PF_RING && make all && sudo make install prefix=/usr - cd .. + cd PF_RING/userland && ./configure && make && sudo make install prefix=/usr + cd ../.. cc -Wall -Wextra -std=gnu99 ${{ matrix.poll }} -DENABLE_PFRING=1 -DENABLE_ZLIB=1 -DENABLE_MEMORY_PROFILING=1 \ -fsanitize=address -fsanitize=undefined -fno-sanitize=alignment -fsanitize=enum -fsanitize=leak \ nDPId.c npfring.c nio.c utils.c \ @@ -320,7 +333,7 @@ jobs: -I./build/libnDPI/include/ndpi \ -I./PF_RING/userland/lib -I./PF_RING/kernel \ -o /tmp/a.out \ - -ldl ./PF_RING/userland/lib/libpfring.a -lpcap ./build/libnDPI/lib/libndpi.a -pthread -lm -lz + -ldl /usr/lib/libpfring.a -lpcap ./build/libnDPI/lib/libndpi.a -pthread -lm -lz - name: Build against libnDPI-${{ matrix.ndpi_min_version }} if: startsWith(matrix.os, 'ubuntu') run: | @@ -351,7 +364,7 @@ jobs: -DBUILD_NDPI=OFF -DBUILD_EXAMPLES=ON \ -DENABLE_DBUS=ON -DENABLE_CURL=ON -DENABLE_SYSTEMD=ON \ ${{ matrix.poll }} ${{ matrix.coverage }} \ - ${{ matrix.sanitizer }} ${{ matrix.ndpid_examples }}; } + ${{ matrix.sanitizer }} ${{ matrix.ndpid_examples }} ${{ matrix.ndpid_rust_examples }}; } test $WGET_RET -ne 0 || { echo "Running Make.. (pkgconfig)"; \ cmake --build ./build-local-pkgconfig --verbose; } test $WGET_RET -ne 0 || { echo "Testing Executable.. (pkgconfig)"; \ @@ -366,7 +379,7 @@ jobs: -DENABLE_DBUS=ON -DENABLE_CURL=ON -DENABLE_SYSTEMD=ON \ -DNDPI_NO_PKGCONFIG=ON -DSTATIC_LIBNDPI_INSTALLDIR=/usr \ ${{ matrix.poll }} ${{ matrix.coverage }} ${{ matrix.ndpid_gcrypt }} \ - ${{ matrix.sanitizer }} ${{ matrix.ndpid_examples }}; } + ${{ matrix.sanitizer }} ${{ matrix.ndpid_examples }} ${{ matrix.ndpid_rust_examples }}; } test $WGET_RET -ne 0 || { echo "Running Make.. (static)"; \ cmake --build ./build-local-static --verbose; } test $WGET_RET -ne 0 || { echo "Testing Executable.. (static)"; \ @@ -383,7 +396,7 @@ jobs: -DPFRING_LINK_STATIC=OFF \ -DPFRING_INSTALLDIR=/usr -DPFRING_KERNEL_INC="$(realpath ./PF_RING/kernel)" \ ${{ matrix.poll }} ${{ matrix.coverage }} ${{ matrix.ndpid_gcrypt }} \ - ${{ matrix.sanitizer }} ${{ matrix.ndpid_examples }}; } + ${{ matrix.sanitizer }} ${{ matrix.ndpid_examples }} ${{ matrix.ndpid_rust_examples }}; } test $WGET_RET -ne 0 || test ! -d ./PF_RING || { echo "Running Make.. (PF_RING)"; \ cmake --build ./build-local-pfring --verbose; } test $WGET_RET -ne 0 || test ! -d ./PF_RING || { echo "Testing Executable.. (PF_RING)"; \ diff --git a/.github/workflows/sonarcloud.yml b/.github/workflows/sonarcloud.yml index 1aba37213..5c92e73ff 100644 --- a/.github/workflows/sonarcloud.yml +++ b/.github/workflows/sonarcloud.yml @@ -24,7 +24,7 @@ jobs: run: | pip install gcovr==5.0 # 5.1 is not supported - name: Install sonar-scanner and build-wrapper - uses: SonarSource/sonarcloud-github-c-cpp@v3.1.0 + uses: SonarSource/sonarcloud-github-c-cpp@v3.2.0 - name: Install Prerequisites run: | sudo apt-get update |