aboutsummaryrefslogtreecommitdiff
path: root/tests/sys/net/if_ovpn/utils.subr
diff options
context:
space:
mode:
Diffstat (limited to 'tests/sys/net/if_ovpn/utils.subr')
-rw-r--r--tests/sys/net/if_ovpn/utils.subr92
1 files changed, 92 insertions, 0 deletions
diff --git a/tests/sys/net/if_ovpn/utils.subr b/tests/sys/net/if_ovpn/utils.subr
new file mode 100644
index 000000000000..fbe7dc98630a
--- /dev/null
+++ b/tests/sys/net/if_ovpn/utils.subr
@@ -0,0 +1,92 @@
+##
+# SPDX-License-Identifier: BSD-2-Clause
+#
+# Copyright (c) 2022 Rubicon Communications, LLC ("Netgate")
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions
+# are met:
+# 1. Redistributions of source code must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+# 2. Redistributions in binary form must reproduce the above copyright
+# notice, this list of conditions and the following disclaimer in the
+# documentation and/or other materials provided with the distribution.
+#
+# THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+# ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+# OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+# SUCH DAMAGE.
+
+. $(atf_get_srcdir)/../../common/vnet.subr
+
+ovpn_init()
+{
+ vnet_init
+
+ if ! kldstat -q -m if_ovpn; then
+ atf_skip "This test requires if_ovpn"
+ fi
+
+ has_dco=$(openvpn --version 2>&1 | grep '\[DCO\]')
+ if [ -z "$has_dco" ]; then
+ atf_skip "openvpn binary does not support DCO"
+ fi
+}
+
+ovpn_check_version()
+{
+ expected=$1
+
+ expected_minor=$(echo $expected |
+ awk '{ split($1, ver, "\."); print(ver[2]); }')
+ actual_minor=$(openvpn --version 2>&1 |
+ awk 'NR == 1 \
+ { \
+ split($2, ver, "\."); \
+ split(ver[2], minor, "_"); \
+ print(minor[1]); \
+ }')
+
+ if [ ${actual_minor} -lt ${expected_minor} ]; then
+ atf_skip "OpenVPN version < ${expected}"
+ fi
+}
+
+ovpn_cleanup()
+{
+ for jail in `cat ovpn_jails.lst | sort -u`
+ do
+ cat ovpn_${jail}.log| sed s/^/\[${jail}\]\ /
+ done
+
+ vnet_cleanup
+}
+
+ovpn_start()
+{
+ jail=$1
+ cfg=$2
+
+ echo ${jail} >> ovpn_jails.lst
+
+ dir=$(pwd)
+
+ echo "Start" >> ovpn_${jail}.log
+ echo "=====" >> ovpn_${jail}.log
+
+ echo "$cfg" > ovpn_${jail}.ovpn
+
+ echo "Jail $jail:"
+ echo "==========="
+ cat ovpn_${jail}.ovpn
+
+ jexec $jail sh -c "cd ${dir} &&
+ openvpn --config ovpn_${jail}.ovpn >> ovpn_${jail}.log &"
+}