aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--.github/workflows/build.yaml183
-rwxr-xr-xtests/t_net.sh2
-rw-r--r--tests/unit_tests/openvpn/test_networking.c2
3 files changed, 185 insertions, 2 deletions
diff --git a/.github/workflows/build.yaml b/.github/workflows/build.yaml
new file mode 100644
index 0000000..410d6e1
--- /dev/null
+++ b/.github/workflows/build.yaml
@@ -0,0 +1,183 @@
+# The name of our workflow
+name: Build
+on: [push, pull_request]
+
+jobs:
+ mingw:
+ strategy:
+ matrix:
+ include:
+ - target: mingw64
+ chost: x86_64-w64-mingw32
+ - target: mingw
+ chost: i686-w64-mingw32
+
+ runs-on: ubuntu-20.04
+ env:
+ MAKEFLAGS: -j3
+ LZO_VERSION: "2.10"
+ PKCS11_HELPER_VERSION: "1.26"
+ OPENSSL_VERSION: "1.1.1j"
+ TAP_WINDOWS_VERSION: "9.23.3"
+ CHOST: ${{ matrix.chost }}
+ TARGET: ${{ matrix.target }}
+ steps:
+ - name: Install dependencies
+ run: sudo apt update && sudo apt install -y mingw-w64 libtool automake autoconf man2html unzip
+ - name: Checkout ovpn-dco-win
+ uses: actions/checkout@v2
+ with:
+ repository: OpenVPN/ovpn-dco-win
+ path: ovpn-dco-win
+ - name: Checkout OpenVPN
+ uses: actions/checkout@v2
+ with:
+ path: openvpn
+
+ - name: autoconf
+ run: autoreconf -fvi
+ working-directory: openvpn
+
+ - name: Cache dependencies
+ id: cache
+ uses: actions/cache@v2
+ with:
+ path: '~/mingw/'
+ key: ${{ matrix.target }}-mingw-${{ env.LZO_VERSION }}-${{ env.PKCS11_HELPER_VERSION }}-${{ env.TAP_WINDOWS_VERSION }}
+
+ # Repeating if: steps.cache.outputs.cache-hit != 'true'
+ # on every step for building dependencies is ugly but
+ # I haven't found a better solution so far.
+
+ - name: Download mingw depnendencies
+ if: steps.cache.outputs.cache-hit != 'true'
+ run: |
+ wget -c -P download-cache/ "https://build.openvpn.net/downloads/releases/tap-windows-${TAP_WINDOWS_VERSION}.zip"
+ wget -c -P download-cache/ "https://www.oberhumer.com/opensource/lzo/download/lzo-${LZO_VERSION}.tar.gz"
+ wget -c -P download-cache/ "https://github.com/OpenSC/pkcs11-helper/archive/pkcs11-helper-${PKCS11_HELPER_VERSION}.tar.gz"
+ wget -c -P download-cache/ "https://www.openssl.org/source/old/1.1.1/openssl-${OPENSSL_VERSION}.tar.gz"
+ tar zxf "download-cache/pkcs11-helper-${PKCS11_HELPER_VERSION}.tar.gz"
+ tar zxf "download-cache/openssl-${OPENSSL_VERSION}.tar.gz"
+ tar zxf "download-cache/lzo-${LZO_VERSION}.tar.gz"
+ unzip download-cache/tap-windows-${TAP_WINDOWS_VERSION}.zip
+
+ - name: Configure OpenSSL
+ if: steps.cache.outputs.cache-hit != 'true'
+ run: ./Configure --cross-compile-prefix=${CHOST}- shared ${{ matrix.target }} no-capieng --prefix="${HOME}/mingw/opt" --openssldir="${HOME}/mingw/opt" -static-libgcc
+ working-directory: "./openssl-1.1.1j"
+
+ - name: Build OpenSSL
+ if: steps.cache.outputs.cache-hit != 'true'
+ run: make
+ working-directory: "./openssl-1.1.1j/"
+
+ - name: Install OpenSSL
+ if: steps.cache.outputs.cache-hit != 'true'
+ run: make install
+ working-directory: "./openssl-1.1.1j/"
+
+ - name: autoreconf pkcs11-helper
+ if: steps.cache.outputs.cache-hit != 'true'
+ run: autoreconf -iv
+ working-directory: "./pkcs11-helper-pkcs11-helper-1.26"
+
+ - name: configure pkcs11-helper
+ if: steps.cache.outputs.cache-hit != 'true'
+ run: OPENSSL_LIBS="-L${HOME}/mingw/opt/lib -lssl -lcrypto" OPENSSL_CFLAGS=-I$HOME/mingw/opt/include PKG_CONFIG_PATH=${HOME}/mingw/opt/lib/pkgconfig ./configure --host=${CHOST} --program-prefix='' --libdir=${HOME}/mingw/opt/lib --prefix=${HOME}/mingw/opt --build=x86_64-pc-linux-gnu --disable-crypto-engine-gnutls --disable-crypto-engine-nss --disable-crypto-engine-polarssl --disable-crypto-engine-mbedtls
+ working-directory: "./pkcs11-helper-pkcs11-helper-1.26"
+
+ - name: build pkcs11-helper
+ if: steps.cache.outputs.cache-hit != 'true'
+ run: make all
+ working-directory: "./pkcs11-helper-pkcs11-helper-1.26"
+
+ - name: install pkcs11-helper
+ if: steps.cache.outputs.cache-hit != 'true'
+ run: make install
+ working-directory: "./pkcs11-helper-pkcs11-helper-1.26"
+
+ - name: Configure lzo
+ if: steps.cache.outputs.cache-hit != 'true'
+ run: ./configure --host=${CHOST} --program-prefix='' --libdir=${HOME}/mingw/opt/lib --prefix=${HOME}/mingw/opt --build=x86_64-pc-linux-gnu
+ working-directory: "./lzo-2.10"
+
+ - name: build lzo
+ if: steps.cache.outputs.cache-hit != 'true'
+ working-directory: "./lzo-2.10"
+ run: make
+
+ - name: install lzo
+ if: steps.cache.outputs.cache-hit != 'true'
+ working-directory: "./lzo-2.10"
+ run: make install
+
+ - name: copy tap-windows.h header
+ if: steps.cache.outputs.cache-hit != 'true'
+ run: cp ./tap-windows-9.23.3/include/tap-windows.h ${HOME}/mingw/opt/include/
+
+ - name: configure OpenVPN
+ run: PKG_CONFIG_PATH=${HOME}/mingw/opt/lib/pkgconfig DCO_SOURCEDIR=$(realpath ../ovpn-dco-win) LDFLAGS=-L$HOME/mingw/opt/lib CFLAGS=-I$HOME/mingw/opt/include OPENSSL_LIBS="-L${HOME}/opt/lib -lssl -lcrypto" OPENSSL_CFLAGS=-I$HOME/mingw/opt/include PREFIX=$HOME/mingw/opt LZO_CFLAGS=-I$HOME/mingw/opt/include LZO_LIBS="-L${HOME}/mingw/opt/lib -llzo2" ./configure --host=${CHOST} --disable-lz4 --enable-dco
+ working-directory: openvpn
+
+ - name: build OpenVPN
+ run: make -j3
+ working-directory: openvpn
+
+ ubuntu:
+ strategy:
+ matrix:
+ os: [ubuntu-16.04, ubuntu-18.04, ubuntu-20.04]
+ ssllib: [mbedtls, openssl]
+
+ runs-on: ${{matrix.os}}
+ steps:
+ - name: Install dependencies
+ run: sudo apt update && sudo apt install -y liblzo2-dev libpam0g-dev liblz4-dev linux-libc-dev man2html libcmocka-dev python3-docutils libtool automake autoconf libmbedtls-dev
+ - name: Checkout OpenVPN
+ uses: actions/checkout@v2
+ - name: autoconf
+ run: autoreconf -fvi
+ - name: configure --with-crypto-library=${{matrix.ssllib}}
+ run: ./configure
+ - name: make all
+ run: make -j3
+ - name: make check
+ run: make check
+
+ ubutun20-clang-asan:
+ strategy:
+ matrix:
+ os: [ubuntu-16.04, ubuntu-18.04]
+ ssllib: [mbedtls, openssl]
+
+ runs-on: ubuntu-20.04
+ steps:
+ - name: Install dependencies
+ run: sudo apt update && sudo apt install -y liblzo2-dev libpam0g-dev liblz4-dev linux-libc-dev man2html clang libcmocka-dev python3-docutils libtool automake autoconf libmbedtls-dev
+ - name: Checkout OpenVPN
+ uses: actions/checkout@v2
+ - name: autoconf
+ run: autoreconf -fvi
+ - name: configure
+ run: CFLAGS="-fsanitize=address -fno-omit-frame-pointer -O2" CC=clang ./configure --with-crypto-library=${{matrix.ssllib}}
+ - name: make all
+ run: make -j3
+ - name: make check
+ run: make check
+
+
+ macos:
+ runs-on: macos-latest
+ steps:
+ - name: Checkout OpenVPN
+ uses: actions/checkout@v2
+ - name: Install dependencies
+ run: brew install openssl lzo lz4 man2html cmocka libtool automake autoconf
+ - name: autoconf
+ run: autoreconf -fvi
+ - name: configure
+ run: OPENSSL_CFLAGS=-I/usr/local/opt/openssl@1.1/include OPENSSL_LIBS="-L/usr/local/opt/openssl@1.1/lib -lcrypto -lssl" ./configure
+ - name: make all
+ run: make -j4
+ - name: make check
+ run: make check
diff --git a/tests/t_net.sh b/tests/t_net.sh
index 246ee07..f9dba40 100755
--- a/tests/t_net.sh
+++ b/tests/t_net.sh
@@ -1,6 +1,6 @@
#!/usr/bin/env bash
-IFACE="dummy0"
+IFACE="ovpn-dummy0"
UNIT_TEST="./unit_tests/openvpn/networking_testdriver"
MAX_TEST=${1:-7}
diff --git a/tests/unit_tests/openvpn/test_networking.c b/tests/unit_tests/openvpn/test_networking.c
index e7c148f..9e9744f 100644
--- a/tests/unit_tests/openvpn/test_networking.c
+++ b/tests/unit_tests/openvpn/test_networking.c
@@ -3,7 +3,7 @@
#include "networking.h"
-static char *iface = "dummy0";
+static char *iface = "ovpn-dummy0";
static int
net__iface_up(bool up)