2023-04-10 13:45:00 +03:00
#!/usr/bin/env bash
# SPDX-License-Identifier: LGPL-2.1-or-later
# shellcheck disable=SC2016
set -eux
set -o pipefail
# shellcheck source=test/units/util.sh
. " $( dirname " $0 " ) " /util.sh
at_exit( ) {
systemctl stop systemd-networkd
if [ [ -v NETWORK_NAME && -v NETDEV_NAME && -v LINK_NAME ] ] ; then
2023-11-17 17:08:28 +03:00
rm -fvr { /usr/lib,/etc,/run} /systemd/network/" $NETWORK_NAME " " /usr/lib/systemd/network/ $NETDEV_NAME " \
2023-04-10 13:45:00 +03:00
{ /usr/lib,/etc} /systemd/network/" $LINK_NAME " " /etc/systemd/network/ ${ NETWORK_NAME } .d " \
"new" "+4"
fi
2024-04-16 07:30:19 +03:00
rm -f /run/systemd/networkd.conf.d/10-hoge.conf
2023-04-10 13:45:00 +03:00
}
trap at_exit EXIT
2023-11-08 21:10:59 +03:00
export NETWORK_NAME = " 10-networkctl-test- $RANDOM .network "
export NETDEV_NAME = " 10-networkctl-test- $RANDOM .netdev "
export LINK_NAME = " 10-networkctl-test- $RANDOM .link "
2023-04-10 13:45:00 +03:00
cat >" /usr/lib/systemd/network/ $NETWORK_NAME " <<EOF
[ Match]
Name = test
EOF
# Test files
2023-12-19 10:38:32 +03:00
networkctl mask --runtime "donotexist.network"
assert_eq " $( readlink /run/systemd/network/donotexist.network) " "/dev/null"
networkctl unmask "donotexist.network" # unmask should work even without --runtime
[ [ ! -e /run/systemd/network/donotexist.network ] ]
touch /usr/lib/systemd/network/donotexist.network
( ! networkctl unmask "donotexist.network" )
rm /usr/lib/systemd/network/donotexist.network
2023-04-10 13:45:00 +03:00
networkctl cat " $NETWORK_NAME " | tail -n +2 | cmp - " /usr/lib/systemd/network/ $NETWORK_NAME "
cat >new <<EOF
[ Match]
Name = test2
EOF
2023-11-17 17:08:28 +03:00
EDITOR = 'mv new' script -ec 'networkctl edit --runtime "$NETWORK_NAME"' /dev/null
2023-12-19 10:38:32 +03:00
( ! networkctl mask --runtime " $NETWORK_NAME " )
2023-11-17 17:08:28 +03:00
printf '%s\n' '[Match]' 'Name=test2' | cmp - " /run/systemd/network/ $NETWORK_NAME "
2023-12-19 10:38:32 +03:00
networkctl mask " $NETWORK_NAME "
assert_eq " $( readlink " /etc/systemd/network/ $NETWORK_NAME " ) " "/dev/null"
( ! networkctl edit " $NETWORK_NAME " )
( ! networkctl edit --runtime " $NETWORK_NAME " )
( ! networkctl cat " $NETWORK_NAME " )
networkctl unmask " $NETWORK_NAME "
2023-11-17 17:08:28 +03:00
EDITOR = 'true' script -ec 'networkctl edit "$NETWORK_NAME"' /dev/null
2023-04-10 13:45:00 +03:00
printf '%s\n' '[Match]' 'Name=test2' | cmp - " /etc/systemd/network/ $NETWORK_NAME "
2023-12-19 10:38:32 +03:00
( ! networkctl mask " $NETWORK_NAME " )
2023-11-17 17:08:28 +03:00
( ! EDITOR = 'true' script -ec 'networkctl edit --runtime "$NETWORK_NAME"' /dev/null)
2023-04-10 13:45:00 +03:00
cat >"+4" <<EOF
[ Network]
2023-11-08 21:11:20 +03:00
IPv6AcceptRA = no
2023-04-10 13:45:00 +03:00
EOF
EDITOR = 'cp' script -ec 'networkctl edit "$NETWORK_NAME" --drop-in test' /dev/null
cmp "+4" " /etc/systemd/network/ ${ NETWORK_NAME } .d/test.conf "
networkctl cat " $NETWORK_NAME " | grep '^# ' |
cmp - <( printf '%s\n' " # /etc/systemd/network/ $NETWORK_NAME " " # /etc/systemd/network/ ${ NETWORK_NAME } .d/test.conf " )
cat >" /usr/lib/systemd/network/ $NETDEV_NAME " <<EOF
[ NetDev]
Name = test2
Kind = dummy
EOF
networkctl cat " $NETDEV_NAME "
cat >" /usr/lib/systemd/network/ $LINK_NAME " <<EOF
[ Match]
OriginalName = test2
[ Link]
Alias = test_alias
EOF
SYSTEMD_LOG_LEVEL = debug EDITOR = 'true' script -ec 'networkctl edit "$LINK_NAME"' /dev/null
cmp " /usr/lib/systemd/network/ $LINK_NAME " " /etc/systemd/network/ $LINK_NAME "
# Test links
systemctl unmask systemd-networkd
systemctl stop systemd-networkd
( ! networkctl cat @test2)
systemctl start systemd-networkd
2023-11-08 21:11:20 +03:00
SYSTEMD_LOG_LEVEL = debug /usr/lib/systemd/systemd-networkd-wait-online -i test2:carrier --timeout 20
2023-04-10 13:45:00 +03:00
networkctl cat @test2:network | cmp - <( networkctl cat " $NETWORK_NAME " )
EDITOR = 'cp' script -ec 'networkctl edit @test2 --drop-in test2.conf' /dev/null
cmp "+4" " /etc/systemd/network/ ${ NETWORK_NAME } .d/test2.conf "
2024-05-10 08:21:10 +03:00
SYSTEMD_LOG_LEVEL = debug /usr/lib/systemd/systemd-networkd-wait-online -i test2:carrier --timeout 20
2023-11-17 17:08:28 +03:00
( ! EDITOR = 'true' script -ec 'networkctl edit @test2 --runtime --drop-in test2.conf' /dev/null)
2023-04-10 13:45:00 +03:00
ip_link = " $( ip link show test2) "
if systemctl --quiet is-active systemd-udevd; then
assert_in 'alias test_alias' " $ip_link "
fi
2024-04-16 07:30:19 +03:00
mkdir -p /run/systemd/networkd.conf.d
cat >/run/systemd/networkd.conf.d/10-hoge.conf <<EOF
# TEST DROP-IN FILE
[ Network]
SpeedMeter = yes
EOF
assert_in '# TEST DROP-IN FILE' " $( networkctl cat) "