From 80e346af7481ebbd0f337f9b909fa527a4602649 Mon Sep 17 00:00:00 2001 From: Yu Watanabe Date: Sat, 8 Aug 2026 02:59:26 +0900 Subject: [PATCH] test: add test cases for systemd-sysctl --save= and --revert= --- test/units/TEST-87-AUX-UTILS-VM.sysctl.sh | 131 ++++++++++++++++++++++ 1 file changed, 131 insertions(+) diff --git a/test/units/TEST-87-AUX-UTILS-VM.sysctl.sh b/test/units/TEST-87-AUX-UTILS-VM.sysctl.sh index fe1b5f1b33..f19a0ba774 100755 --- a/test/units/TEST-87-AUX-UTILS-VM.sysctl.sh +++ b/test/units/TEST-87-AUX-UTILS-VM.sysctl.sh @@ -92,3 +92,134 @@ EOF assert_eq "$(cat /proc/sys/net/ipv4/conf/hoge/drop_gratuitous_arp)" "1" assert_eq "$(cat /proc/sys/net/ipv4/conf/hoge/bootp_relay)" "1" assert_eq "$(cat /proc/sys/net/ipv4/conf/hoge/disable_policy)" "0" + +########################## +# --save= and --revert= +########################## +(! /usr/lib/systemd/systemd-sysctl --save=) +(! /usr/lib/systemd/systemd-sysctl --save=.) +(! /usr/lib/systemd/systemd-sysctl --save=.conf) +(! /usr/lib/systemd/systemd-sysctl --save=aaa/hoge.conf) +(! /usr/lib/systemd/systemd-sysctl --save=../hoge.conf) +(! /usr/lib/systemd/systemd-sysctl --revert=) +(! /usr/lib/systemd/systemd-sysctl --revert=.) +(! /usr/lib/systemd/systemd-sysctl --revert=.conf) +(! /usr/lib/systemd/systemd-sysctl --revert=aaa/hoge.conf) +(! /usr/lib/systemd/systemd-sysctl --revert=../hoge.conf) + +# --save= requires positional arguments +(! /usr/lib/systemd/systemd-sysctl --save=foo) + +# Do not create an empty conf file. +/usr/lib/systemd/systemd-sysctl \ + --prefix=/net/ipv4/conf/hoge --save=foo --inline "# comment only" +[[ ! -e /run/sysctl.d/foo.conf ]] + +echo 0 >/proc/sys/net/ipv4/conf/hoge/drop_gratuitous_arp +echo 0 >/proc/sys/net/ipv4/conf/hoge/bootp_relay +echo 0 >/proc/sys/net/ipv4/conf/hoge/disable_policy + +/usr/lib/systemd/systemd-sysctl \ + --prefix=/net/ipv4/conf/hoge --save=foo --inline -- \ + '# This argument should be ignored' \ + 'net.ipv4.conf.*.drop_gratuitous_arp=1' \ + 'net.ipv4.*.*.bootp_relay=1' \ + '-net.ipv4.conf.all.bootp_relay' \ + '-net.ipv4.aaa.*.disable_policy=1' \ + '# Arguments with unsafe characters should be ignored' \ + $'foo\nbar.hoge=1' \ + $'foo.bar=4\n2' + +assert_eq "$(cat /proc/sys/net/ipv4/conf/hoge/drop_gratuitous_arp)" "1" +assert_eq "$(cat /proc/sys/net/ipv4/conf/hoge/bootp_relay)" "1" +assert_eq "$(cat /proc/sys/net/ipv4/conf/hoge/disable_policy)" "0" + +diff /run/sysctl.d/foo.conf - </proc/sys/net/ipv4/conf/hoge/drop_gratuitous_arp +echo 0 >/proc/sys/net/ipv4/conf/hoge/bootp_relay +echo 0 >/proc/sys/net/ipv4/conf/hoge/disable_policy + +/usr/lib/systemd/systemd-sysctl --prefix=/net/ipv4/conf/hoge --save=foo - </proc/sys/net/ipv4/conf/hoge/drop_gratuitous_arp +echo 0 >/proc/sys/net/ipv4/conf/hoge/bootp_relay +echo 0 >/proc/sys/net/ipv4/conf/hoge/disable_policy + +# Verify that the saved .conf file is loaded. +/usr/lib/systemd/systemd-sysctl --prefix=/net/ipv4/conf/hoge +assert_eq "$(cat /proc/sys/net/ipv4/conf/hoge/drop_gratuitous_arp)" "1" +assert_eq "$(cat /proc/sys/net/ipv4/conf/hoge/bootp_relay)" "1" +assert_eq "$(cat /proc/sys/net/ipv4/conf/hoge/disable_policy)" "0" + +echo 0 >/proc/sys/net/ipv4/conf/hoge/drop_gratuitous_arp +echo 0 >/proc/sys/net/ipv4/conf/hoge/bootp_relay +echo 0 >/proc/sys/net/ipv4/conf/hoge/disable_policy + +# Check that the saved .conf file can be overridden. +/usr/lib/systemd/systemd-sysctl --prefix=/net/ipv4/conf/hoge --save=foo /run/sysctl.d/foo.conf - </proc/sys/net/ipv4/conf/hoge/drop_gratuitous_arp +echo 0 >/proc/sys/net/ipv4/conf/hoge/bootp_relay +echo 0 >/proc/sys/net/ipv4/conf/hoge/disable_policy + +/usr/lib/systemd/systemd-sysctl --revert=foo --prefix=/net/ipv4/conf/hoge +[[ ! -e /run/sysctl.d/foo.conf ]] + +# Assume that no saved sysctl .conf files modify these variables. +assert_eq "$(cat /proc/sys/net/ipv4/conf/hoge/drop_gratuitous_arp)" "0" +assert_eq "$(cat /proc/sys/net/ipv4/conf/hoge/bootp_relay)" "0" +assert_eq "$(cat /proc/sys/net/ipv4/conf/hoge/disable_policy)" "0" + +echo 0 >/proc/sys/net/ipv4/conf/hoge/drop_gratuitous_arp +echo 0 >/proc/sys/net/ipv4/conf/hoge/bootp_relay +echo 0 >/proc/sys/net/ipv4/conf/hoge/disable_policy + +# Try again to test when foo.conf does not exist +/usr/lib/systemd/systemd-sysctl --revert=foo --prefix=/net/ipv4/conf/hoge + +assert_eq "$(cat /proc/sys/net/ipv4/conf/hoge/drop_gratuitous_arp)" "0" +assert_eq "$(cat /proc/sys/net/ipv4/conf/hoge/bootp_relay)" "0" +assert_eq "$(cat /proc/sys/net/ipv4/conf/hoge/disable_policy)" "0"