summaryrefslogtreecommitdiffstats
path: root/test/units/TEST-17-UDEV.12.sh
blob: ccc91bfe460f151bbef684599767c9f92f4169d5 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
#!/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

create_link_file() {
    name=${1?}

    mkdir -p /run/systemd/network/
    cat >/run/systemd/network/10-test.link <<EOF
[Match]
Kind=dummy
MACAddress=00:50:56:c0:00:18

[Link]
Name=$name
AlternativeName=test1 test2 test3 test4
EOF
    udevadm control --reload
}

udevadm control --log-level=debug

create_link_file test1
ip link add address 00:50:56:c0:00:18 type dummy
udevadm wait --settle --timeout=30 /sys/class/net/test1
output=$(ip link show dev test1)
if ! [[ "$output" =~ altname ]]; then
    echo "alternative name for network interface not supported, skipping test."
    exit 0
fi
assert_not_in "altname test1" "$output"
assert_in "altname test2" "$output"
assert_in "altname test3" "$output"
assert_in "altname test4" "$output"

# By triggering add event, Name= and AlternativeNames= are re-applied
create_link_file test2
udevadm trigger --action add --settle /sys/class/net/test1
udevadm wait --settle --timeout=30 /sys/class/net/test2
output=$(ip link show dev test2)
assert_in "altname test1" "$output"
assert_not_in "altname test2" "$output"
assert_in "altname test3" "$output"
assert_in "altname test4" "$output"

# Name= and AlternativeNames= are not applied on move event
create_link_file test3
udevadm trigger --action move --settle /sys/class/net/test2
udevadm wait --settle --timeout=30 /sys/class/net/test2
output=$(ip link show dev test2)
assert_in "altname test1" "$output"
assert_not_in "altname test2" "$output"
assert_in "altname test3" "$output"
assert_in "altname test4" "$output"

# Test move event triggered by manual renaming
ip link set dev test2 name hoge
udevadm wait --settle --timeout=30 /sys/class/net/hoge
output=$(ip link show dev hoge)
assert_in "altname test1" "$output"
assert_not_in "altname test2" "$output"
assert_in "altname test3" "$output"
assert_in "altname test4" "$output"
assert_not_in "altname hoge" "$output"

# Re-test add event
udevadm trigger --action add --settle /sys/class/net/hoge
udevadm wait --settle --timeout=30 /sys/class/net/test3
output=$(ip link show dev test3)
assert_in "altname test1" "$output"
assert_in "altname test2" "$output"
assert_not_in "altname test3" "$output"
assert_in "altname test4" "$output"
assert_not_in "altname hoge" "$output"

# cleanup
ip link del dev test3

rm -f /run/systemd/network/10-test.link
udevadm control --reload --log-level=info

exit 0