diff --git a/tests/gnrc_dhcpv6_client/dhcpv6_server.sh b/tests/gnrc_dhcpv6_client/dhcpv6_server.sh index 5a1e95691b..57b7f76e90 100755 --- a/tests/gnrc_dhcpv6_client/dhcpv6_server.sh +++ b/tests/gnrc_dhcpv6_client/dhcpv6_server.sh @@ -6,20 +6,55 @@ # Distributed under terms of the MIT license. # -if [ "$EUID" -ne 0 ]; then - echo -e "\033[31;1mRequire root since kea uses some PID and Lock files in /var\033[0m" >&2 - exit 1 -fi - if ! command -v kea-dhcp6; then echo -e "\033[31;1mCommand kea-dhcp6 required\033[0m" >&2 exit 1 fi +_sem_ver() { + major=$(echo "$1" | cut -d. -f1 | sed -e 's/^0\+//' -e 's/^$/0/') + minor=$(echo "$1" | cut -d. -f2 | sed -e 's/^0\+//' -e 's/^$/0/') + patch=$(echo "$1" | cut -d. -f3 | sed -e 's/^0\+//' -e 's/^$/0/') + echo "$(( major << 32 | minor << 8 | patch ))" +} + +_kea_version_lesser_1_7_10() { + test "$(_sem_ver "$(kea-dhcp6 -v)")" -lt "$(_sem_ver "1.7.10")" + return $? +} + _dhcpv6_server() { + TMPDIR="$(mktemp -u | xargs dirname)/${APPLICATION}_kea" + + # only used `mktemp` with dry-run above to get temp directory name, so we + # still need to create the directory + mkdir -p "${TMPDIR}" + if _kea_version_lesser_1_7_10; then + config=$2 + else + # Top-level "Logging" config is not supported by Kea >=1.7.10, so move + # that config to Dhcp6 map, see + # https://kea.readthedocs.io/en/kea-1.7.10/arm/config.html#json-syntax + config="${TMPDIR}/kea-dhcp6.config" + convert_json="$(cat <