]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
TEST-19-CGROUP: add test cases for IPAddressAllow=/IPAddressDeny= 34787/head
authorYu Watanabe <watanabe.yu+github@gmail.com>
Wed, 16 Oct 2024 05:31:16 +0000 (14:31 +0900)
committerYu Watanabe <watanabe.yu+github@gmail.com>
Wed, 16 Oct 2024 05:32:13 +0000 (14:32 +0900)
test/units/TEST-19-CGROUP.IPAddressAllow-Deny.sh [new file with mode: 0755]
test/units/util.sh

diff --git a/test/units/TEST-19-CGROUP.IPAddressAllow-Deny.sh b/test/units/TEST-19-CGROUP.IPAddressAllow-Deny.sh
new file mode 100755 (executable)
index 0000000..a5c47b7
--- /dev/null
@@ -0,0 +1,73 @@
+#!/usr/bin/env bash
+# SPDX-License-Identifier: LGPL-2.1-or-later
+set -ex
+set -o pipefail
+
+# shellcheck source=test/units/util.sh
+. "$(dirname "$0")"/util.sh
+
+if [[ "$(get_cgroup_hierarchy)" != unified ]]; then
+    echo "Skipping $0 as we're not running with the unified cgroup hierarchy."
+    exit 0
+fi
+
+if systemd-detect-virt --container --quiet; then
+    echo "Skipping $0 as we're running on container."
+    exit 0
+fi
+
+ip netns add test-ns
+ip link add test-veth-1 type veth peer test-veth-2
+ip link set test-veth-2 netns test-ns
+ip link set test-veth-1 up
+ip address add 192.0.2.1/24 dev test-veth-1
+ip address add 2001:db8::1/64 dev test-veth-1 nodad
+ip netns exec test-ns ip link set test-veth-2 up
+ip netns exec test-ns ip address add 192.0.2.2/24 dev test-veth-2
+ip netns exec test-ns ip address add 2001:db8::2/64 dev test-veth-2 nodad
+
+ping_ok_one() {
+    local interface="${1?}"
+    local target="${2?}"
+    shift 2
+
+    assert_ok systemd-run --wait --pipe "$@" ping -c 1 -W 1 -I "$interface" "$target"
+}
+
+ping_fail_one() {
+    local interface="${1?}"
+    local target="${2?}"
+    shift 2
+
+    assert_fail systemd-run --wait --pipe "$@" ping -c 1 -W 1 -I "$interface" "$target"
+}
+
+ping_ok() {
+    ping_ok_one lo 127.0.0.1 "$@"
+    ping_ok_one lo ::1 "$@"
+    ping_ok_one test-veth-1 192.0.2.2 "$@"
+    ping_ok_one test-veth-1 2001:db8::2 "$@"
+}
+
+ping_fail() {
+    ping_fail_one lo 127.0.0.1 "$@"
+    ping_fail_one lo ::1 "$@"
+    ping_fail_one test-veth-1 192.0.2.2 "$@"
+    ping_fail_one test-veth-1 2001:db8::2 "$@"
+}
+
+ping_ok
+ping_ok -p IPAddressDeny=any -p IPAddressDeny=
+ping_ok -p IPAddressDeny=any -p IPAddressDeny= -p IPAddressDeny=link-local
+ping_ok -p IPAddressDeny=any -p IPAddressAllow=localhost -p IPAddressAllow=192.0.2.0/24 -p IPAddressAllow=2001:db8::/64
+ping_ok -p IPAddressDeny=any -p IPAddressAllow=localhost -p IPAddressAllow=192.0.2.0/24 -p IPAddressAllow=2001:db8::/64 \
+        -p IPAddressAllow= -p IPAddressAllow=localhost -p IPAddressAllow=192.0.2.0/24 -p IPAddressAllow=2001:db8::/64
+
+ping_fail -p IPAddressDeny=any
+ping_fail -p IPAddressDeny=any -p IPAddressDeny= -p IPAddressDeny=localhost -p IPAddressDeny=192.0.2.0/24 -p IPAddressDeny=2001:db8::/64
+ping_fail -p IPAddressDeny=any -p IPAddressAllow=localhost -p IPAddressAllow=192.0.2.0/24 -p IPAddressAllow=2001:db8::/64 -p IPAddressAllow=
+ping_fail -p IPAddressDeny=any -p IPAddressAllow=localhost -p IPAddressAllow=192.0.2.0/24 -p IPAddressAllow=2001:db8::/64 -p IPAddressAllow= -p IPAddressAllow=link-local
+
+ip link del test-veth-1
+ip netns exec test-ns ip link del test-veth-2 || :
+ip netns del test-ns
index f5f6786d0f6fde2aee43463fc6f92600a15e7712..80ae8ffc5b5168d4e61e36c035463805dd95349f 100755 (executable)
@@ -6,19 +6,30 @@
 # shellcheck disable=SC2034
 [[ -e /var/tmp/.systemd_reboot_count ]] && REBOOT_COUNT="$(</var/tmp/.systemd_reboot_count)" || REBOOT_COUNT=0
 
-assert_true() {(
+assert_ok() {(
     set +ex
 
     local rc
 
     "$@"
     rc=$?
-    if [[ $rc -ne 0 ]]; then
+    if [[ "$rc" -ne 0 ]]; then
         echo "FAIL: command '$*' failed with exit code $rc" >&2
         exit 1
     fi
 )}
 
+assert_fail() {(
+    set +ex
+
+    local rc
+
+    if "$@"; then
+        echo "FAIL: command '$*' unexpectedly succeeded" >&2
+        exit 1
+    fi
+)}
+
 assert_eq() {(
     set +ex