Skip to content

Merge pull request #118 from danielinux/fix-stuck-forwarding-test #655

Merge pull request #118 from danielinux/fix-stuck-forwarding-test

Merge pull request #118 from danielinux/fix-stuck-forwarding-test #655

Workflow file for this run

name: Linux interop tests
on:
push:
branches: [ 'master', 'main', 'release/**' ]
pull_request:
branches: [ '*' ]
jobs:
linux_test:
runs-on: ubuntu-latest
timeout-minutes: 15
steps:
- uses: actions/checkout@v4
with:
submodules: true
- name: Install dependencies
run: |
sudo apt-get update
sudo apt-get install -y build-essential autoconf automake libtool pkg-config \
tftpd-hpa tftp-hpa
sudo modprobe tun
# The tftpd-hpa package installs a systemd unit that binds the
# standard TFTP port. The interop test starts its own in.tftpd
# bound to the test tap link, so stop the system instance to
# keep ports / file ownership predictable.
sudo systemctl stop tftpd-hpa || true
sudo systemctl disable tftpd-hpa || true
- name: Clone and build wolfSSL from nightly-snapshot
run: |
git clone --depth=1 https://github.com/wolfssl/wolfssl --branch nightly-snapshot /tmp/wolfssl
cd /tmp/wolfssl
./autogen.sh
./configure --enable-all --enable-md5
make -j$(nproc)
sudo make install
sudo ldconfig
- name: Build linux tests
run: |
mkdir -p build/port
make EXTRA_CFLAGS="-DWOLFIP_RAWSOCKETS=1 -DWOLFIP_PACKET_SOCKETS=1"
make EXTRA_CFLAGS="-DWOLFIP_RAWSOCKETS=1 -DWOLFIP_PACKET_SOCKETS=1" build/raw_ping build/packet_ping
- name: Run standalone "event loop" test
timeout-minutes: 5
run: |
set -euo pipefail
timeout --preserve-status 5m sudo ./build/test-evloop
sudo killall tcpdump || true
- name: Run standalone "event loop" TUN test
timeout-minutes: 5
run: |
set -euo pipefail
timeout --preserve-status 5m sudo ./build/test-evloop-tun
sudo killall tcpdump || true
- name: Run standalone "IPsec esp" test
timeout-minutes: 7
run: |
set -euo pipefail
sudo ./tools/ip-xfrm/delete_all || true
timeout --preserve-status 7m sudo ./tools/ip-xfrm/rfc4106 128
timeout --preserve-status 7m sudo ./build/test-esp -m 0
sudo killall tcpdump || true
sudo ./tools/ip-xfrm/delete_all || true
timeout --preserve-status 7m sudo ./tools/ip-xfrm/cbc_auth sha256 128
timeout --preserve-status 7m sudo ./build/test-esp -m 1
sudo killall tcpdump || true
sudo ./tools/ip-xfrm/delete_all || true
- name: Run standalone wolfssl test
timeout-minutes: 5
run: |
set -euo pipefail
timeout --preserve-status 5m sudo ./build/test-wolfssl
sudo killall tcpdump || true
- name: Run standalone forwarding test
timeout-minutes: 5
run: |
set -euo pipefail
timeout --preserve-status 5m sudo ./build/test-wolfssl-forwarding
- name: Run standalone TTL expired test
timeout-minutes: 5
run: |
set -euo pipefail
timeout --preserve-status 5m ./build/test-ttl-expired
- name: Testing ICMP socket by stealing system calls in ping
timeout-minutes: 2
run: |
set -euo pipefail
timeout --preserve-status 2m sudo LD_PRELOAD=$PWD/libwolfip.so ping -c 5 10.10.10.1
- name: Rebuild libwolfip.so with loopback enabled
run: |
set -euo pipefail
rm -f libwolfip.so build/pie/wolfip.o
make libwolfip.so EXTRA_CFLAGS="-DWOLFIP_ENABLE_LOOPBACK=1"
- name: Testing ICMP loopback smoke (no TUN/TAP)
timeout-minutes: 2
run: |
set -euo pipefail
timeout --preserve-status 2m sudo LD_PRELOAD=$PWD/libwolfip.so ping -4 -n -c 5 127.0.0.1
- name: Testing raw sockets with raw_ping
timeout-minutes: 2
run: |
set -euo pipefail
timeout --preserve-status 2m sudo ./build/raw_ping 10.10.10.1
- name: Testing packet sockets with packet_ping
timeout-minutes: 2
run: |
set -euo pipefail
timeout --preserve-status 2m sudo ./build/packet_ping wtcp0 10.10.10.1
- name: Install check
run: |
sudo apt-get install -y check
- name: Build unit tests
run: |
make unit
- name: Run unit tests
timeout-minutes: 5
run: |
set -euo pipefail
timeout --preserve-status 5m build/test/unit
- name: Build TFTP interop test
run: |
make build/test-tftp-interop
- name: Run TFTP interop test (wolfIP client vs tftpd-hpa, wolfIP server vs tftp-hpa)
timeout-minutes: 3
run: |
set -euo pipefail
timeout --preserve-status 3m sudo ./build/test-tftp-interop all
sudo killall tcpdump || true
- name: Upload TFTP interop diagnostics on failure
if: failure()
uses: actions/upload-artifact@v4
with:
name: tftp-interop-diagnostics
path: |
/tmp/wolfip-tftp.pcap
/tmp/wolfip-tftpd-hpa.log
/tmp/wolfip-tftp-client.log
if-no-files-found: ignore
- name: Build ESP unit tests
run: |
make unit-esp
- name: Run ESP unit tests
timeout-minutes: 5
run: |
set -euo pipefail
timeout --preserve-status 5m ./build/test/unit-esp
- name: Cleanup IPsec state
if: always()
run: |
sudo ./tools/ip-xfrm/delete_all || true
sudo killall tcpdump || true