Re: BUG: tools/testing/selftests/net/l2_tos_ttl_inherit.sh hangs when selftest restarted

From: Mirsad Goran Todorovac
Date: Sun Jan 08 2023 - 04:11:54 EST


On 07. 01. 2023. 13:44, Guillaume Nault wrote:
> [Cc: Matthias since he's the original author of the script]
>
> On Sat, Jan 07, 2023 at 02:17:07AM +0100, Mirsad Goran Todorovac wrote:
>> On 07. 01. 2023. 01:14, Guillaume Nault wrote:
>>> On Fri, Jan 06, 2023 at 02:44:11AM +0100, Mirsad Goran Todorovac wrote:
>>>> [root@pc-mtodorov linux_torvalds]# tools/testing/selftests/net/l2_tos_ttl_inherit.sh
>>>> ┌────────┬───────┬───────┬──────────────┬──────────────┬───────┬────────┐
>>>> ├────────┼───────┼───────┼──────────────┼──────────────┼───────┼────────┤
>>>> │ Type │ outer | inner │ tos │ ttl │ vlan │ result │
>>>> ├────────┼───────┼───────┼──────────────┼──────────────┼───────┼────────┤
>>>> │ gre │ 4 │ 4 │ inherit 0xc4 │ inherit 116 │ false │Cannot create namespace file "/var/run/netns/testing": File exists
>>>> RTNETLINK answers: File exists
>>>> RTNETLINK answers: File exists
>>>> RTNETLINK answers: File exists
>>>
>>> You probably have leftovers from a previous test case. In particular
>>> the "testing" network name space already exists, which prevents the
>>> script from creating it. You can delete it manually with
>>> "ip netns del testing". If this netns is there because of a previous
>>> incomplete run of l2_tos_ttl_inherit.sh, then you'll likely need to
>>> also remove the tunnel interface it created in your current netns
>>> ("ip link del tep0").
>>
>> Thanks, it worked :)
>
> Good to know.
>
>>> Ideally this script wouldn't touch the current netns and would clean up
>>> its environment in all cases upon exit. I have a patch almost ready
>>> that does just that.
>>
>> As these interfaces were not cleared by "make kselftest-clean",
>> this patch with a cleanup trap would be most welcome.
>
> Yes, I'll send a patch soon.
>
>> However, after the cleanup above, the ./l2_tos_ttl_inherit.sh
>> script hangs at the spot where it did in the first place (but
>> only on Lenovo desktop 10TX000VCR with BIOS M22KT49A from
>> 11/10/2022, AlmaLinux 8.7, and kernel 6.2-rc2; not on Lenovo
>> Ideapad3 with Ubuntu 22.10, where it worked like a charm with
>> the same kernel RC).
>>
>> The point of hang is this:
>>
>> [root@pc-mtodorov net]# ./l2_tos_ttl_inherit.sh
>> ┌────────┬───────┬───────┬──────────────┬──────────────┬───────┬────────┐
>> ├────────┼───────┼───────┼──────────────┼──────────────┼───────┼────────┤
>> │ Type │ outer | inner │ tos │ ttl │ vlan │ result │
>> ├────────┼───────┼───────┼──────────────┼──────────────┼───────┼────────┤
>> │ gre │ 4 │ 4 │ inherit 0xb8 │ inherit 102 │ false │ OK │
>> │ gre │ 4 │ 4 │ inherit 0x10 │ inherit 53 │ true │ OK │
>> │ gre │ 4 │ 4 │ fixed 0xa8 │ fixed 230 │ false │ OK │
>> │ gre │ 4 │ 4 │ fixed 0x0c │ fixed 96 │ true │ OK │
>> ├────────┼───────┼───────┼──────────────┼──────────────┼───────┼────────┤
>> │ gre │ 4 │ 6 │ inherit 0xbc │ inherit 159 │ false │ OK │
>> │ gre │ 4 │ 6 │ inherit 0x5c │ inherit 242 │ true │ OK │
>> │ gre │ 4 │ 6 │ fixed 0x38 │ fixed 113 │ false │ OK │
>> │ gre │ 4 │ 6 │ fixed 0x78 │ fixed 34 │ true │ OK │
>> ├────────┼───────┼───────┼──────────────┼──────────────┼───────┼────────┤
>> │ gre │ 4 │ other │ inherit 0xec │ inherit 69 │ false │ OK │
>> │ gre │ 4 │ other │ inherit 0xf0 │ inherit 201 │ true │ OK │
>> │ gre │ 4 │ other │ fixed 0xec │ fixed 14 │ false │ OK │
>> │ gre │ 4 │ other │ fixed 0xe4 │ fixed 15 │ true │ OK │
>> ├────────┼───────┼───────┼──────────────┼──────────────┼───────┼────────┤
>> │ Type │ outer | inner │ tos │ ttl │ vlan │ result │
>> ├────────┼───────┼───────┼──────────────┼──────────────┼───────┼────────┤
>> │ gre │ 6 │ 4 │ inherit 0xc4 │ inherit 21 │ false │ OK │
>> │ gre │ 6 │ 4 │ inherit 0xc8 │ inherit 230 │ true │ OK │
>> │ gre │ 6 │ 4 │ fixed 0x24 │ fixed 193 │ false │ OK │
>> │ gre │ 6 │ 4 │ fixed 0x1c │ fixed 200 │ true │ OK │
>> ├────────┼───────┼───────┼──────────────┼──────────────┼───────┼────────┤
>> │ gre │ 6 │ 6 │ inherit 0xe4 │ inherit 81 │ false │ OK │
>> │ gre │ 6 │ 6 │ inherit 0xa4 │ inherit 130 │ true │ OK │
>> │ gre │ 6 │ 6 │ fixed 0x18 │ fixed 140 │ false │ OK │
>> │ gre │ 6 │ 6 │ fixed 0xc8 │ fixed 175 │ true │ OK │
>> ├────────┼───────┼───────┼──────────────┼──────────────┼───────┼────────┤
>> │ gre │ 6 │ other │ inherit 0x74 │ inherit 142 │ false │ OK │
>> │ gre │ 6 │ other │ inherit 0x50 │ inherit 125 │ true │ OK │
>> │ gre │ 6 │ other │ fixed 0x90 │ fixed 84 │ false │ OK │
>> │ gre │ 6 │ other │ fixed 0xb8 │ fixed 240 │ true │ OK │
>> ├────────┼───────┼───────┼──────────────┼──────────────┼───────┼────────┤
>> │ Type │ outer | inner │ tos │ ttl │ vlan │ result │
>> ├────────┼───────┼───────┼──────────────┼──────────────┼───────┼────────┤
>> │ vxlan │ 4 │ 4 │ inherit 0xb4 │ inherit 93 │ false │
>>
>> Developers usually ask for bash -x output of the script that failed or hung
>> when reporting problems (too long for an email):
>>
>> https://domac.alu.unizg.hr/~mtodorov/linux/selftests/net-namespace-20230106/bash-l2_tos_ttl_inherit.html
>
> Tcpdump blocks until it captures an encapsulated ICMP Echo Request. But
> it seems that it doesn't see any. When the script is hanging, what's the
> result of "ip route get 198.19.0.2"?
>
> The output of following commands might also help debugging the problem (run
> them while the script is still hanging):
> ip link show
> ip address show
> ip route show
> tcpdump --immediate-mode -p -v -i veth0 -n # Kill it manually after a few seconds
> ping -c 3 198.19.0.2

OK, but is is copious:

[root@pc-mtodorov marvin]# ip link show
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
2: enp1s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP mode DEFAULT group default qlen 1000
link/ether f4:93:9f:f0:a5:f5 brd ff:ff:ff:ff:ff:ff
3: virbr0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN mode DEFAULT group default qlen 1000
link/ether 52:54:00:56:df:f2 brd ff:ff:ff:ff:ff:ff
51: gre0@NONE: <NOARP> mtu 1476 qdisc noop state DOWN mode DEFAULT group default qlen 1000
link/gre 0.0.0.0 brd 0.0.0.0
52: gretap0@NONE: <BROADCAST,MULTICAST> mtu 1462 qdisc noop state DOWN mode DEFAULT group default qlen 1000
link/ether 00:00:00:00:00:00 brd ff:ff:ff:ff:ff:ff
53: erspan0@NONE: <BROADCAST,MULTICAST> mtu 1450 qdisc noop state DOWN mode DEFAULT group default qlen 1000
link/ether 00:00:00:00:00:00 brd ff:ff:ff:ff:ff:ff
55: ip6tnl0@NONE: <NOARP> mtu 1452 qdisc noop state DOWN mode DEFAULT group default qlen 1000
link/tunnel6 :: brd :: permaddr bae0:176c:6eed::
56: ip6gre0@NONE: <NOARP> mtu 1448 qdisc noop state DOWN mode DEFAULT group default qlen 1000
link/gre6 :: brd :: permaddr ca5f:978e:c395::
67: veth-outside@if66: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP mode DEFAULT group default qlen 1000
link/ether 9e:d6:a5:cb:0a:2b brd ff:ff:ff:ff:ff:ff link-netns test-ns
78: tunl0@NONE: <NOARP> mtu 1480 qdisc noop state DOWN mode DEFAULT group default qlen 1000
link/ipip 0.0.0.0 brd 0.0.0.0
79: sit0@NONE: <NOARP> mtu 1480 qdisc noop state DOWN mode DEFAULT group default qlen 1000
link/sit 0.0.0.0 brd 0.0.0.0
80: ip6_vti0@NONE: <NOARP> mtu 1332 qdisc noop state DOWN mode DEFAULT group default qlen 1000
link/tunnel6 :: brd :: permaddr c2fe:1782:e33d::
81: ip_vti0@NONE: <NOARP> mtu 1480 qdisc noop state DOWN mode DEFAULT group default qlen 1000
link/ipip 0.0.0.0 brd 0.0.0.0
1110: veth0@if1111: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP mode DEFAULT group default qlen 1000
link/ether 6e:c5:68:82:23:e4 brd ff:ff:ff:ff:ff:ff link-netns testing
1112: tep0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UNKNOWN mode DEFAULT group default qlen 1000
link/ether da:73:bd:1b:a4:5f brd ff:ff:ff:ff:ff:ff
100: ifb0: <BROADCAST,NOARP> mtu 1500 qdisc noop state DOWN mode DEFAULT group default qlen 32
link/ether 36:3a:ca:87:f6:d7 brd ff:ff:ff:ff:ff:ff
101: ifb1: <BROADCAST,NOARP> mtu 1500 qdisc noop state DOWN mode DEFAULT group default qlen 32
link/ether ce:76:dd:e7:dd:fc brd ff:ff:ff:ff:ff:ff
[root@pc-mtodorov marvin]#

[root@pc-mtodorov marvin]# ip address show
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet 10.0.0.1/32 scope global lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: enp1s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
link/ether f4:93:9f:f0:a5:f5 brd ff:ff:ff:ff:ff:ff
inet 193.198.186.200/27 brd 193.198.186.223 scope global dynamic noprefixroute enp1s0
valid_lft 26499sec preferred_lft 26499sec
inet6 2001:b68:2:2a00::1098/128 scope global dynamic noprefixroute
valid_lft 2591173sec preferred_lft 603973sec
inet6 fe80::f693:9fff:fef0:a5f5/64 scope link noprefixroute
valid_lft forever preferred_lft forever
3: virbr0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN group default qlen 1000
link/ether 52:54:00:56:df:f2 brd ff:ff:ff:ff:ff:ff
inet 192.168.122.1/24 brd 192.168.122.255 scope global virbr0
valid_lft forever preferred_lft forever
51: gre0@NONE: <NOARP> mtu 1476 qdisc noop state DOWN group default qlen 1000
link/gre 0.0.0.0 brd 0.0.0.0
52: gretap0@NONE: <BROADCAST,MULTICAST> mtu 1462 qdisc noop state DOWN group default qlen 1000
link/ether 00:00:00:00:00:00 brd ff:ff:ff:ff:ff:ff
53: erspan0@NONE: <BROADCAST,MULTICAST> mtu 1450 qdisc noop state DOWN group default qlen 1000
link/ether 00:00:00:00:00:00 brd ff:ff:ff:ff:ff:ff
55: ip6tnl0@NONE: <NOARP> mtu 1452 qdisc noop state DOWN group default qlen 1000
link/tunnel6 :: brd :: permaddr bae0:176c:6eed::
56: ip6gre0@NONE: <NOARP> mtu 1448 qdisc noop state DOWN group default qlen 1000
link/gre6 :: brd :: permaddr ca5f:978e:c395::
67: veth-outside@if66: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000
link/ether 9e:d6:a5:cb:0a:2b brd ff:ff:ff:ff:ff:ff link-netns test-ns
inet6 fe80::9cd6:a5ff:fecb:a2b/64 scope link
valid_lft forever preferred_lft forever
78: tunl0@NONE: <NOARP> mtu 1480 qdisc noop state DOWN group default qlen 1000
link/ipip 0.0.0.0 brd 0.0.0.0
79: sit0@NONE: <NOARP> mtu 1480 qdisc noop state DOWN group default qlen 1000
link/sit 0.0.0.0 brd 0.0.0.0
80: ip6_vti0@NONE: <NOARP> mtu 1332 qdisc noop state DOWN group default qlen 1000
link/tunnel6 :: brd :: permaddr c2fe:1782:e33d::
81: ip_vti0@NONE: <NOARP> mtu 1480 qdisc noop state DOWN group default qlen 1000
link/ipip 0.0.0.0 brd 0.0.0.0
1110: veth0@if1111: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000
link/ether 6e:c5:68:82:23:e4 brd ff:ff:ff:ff:ff:ff link-netns testing
inet 198.18.0.1/24 scope global veth0
valid_lft forever preferred_lft forever
1112: tep0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UNKNOWN group default qlen 1000
link/ether da:73:bd:1b:a4:5f brd ff:ff:ff:ff:ff:ff
inet 198.19.0.1/24 brd 198.19.0.255 scope global tep0
valid_lft forever preferred_lft forever
100: ifb0: <BROADCAST,NOARP> mtu 1500 qdisc noop state DOWN group default qlen 32
link/ether 36:3a:ca:87:f6:d7 brd ff:ff:ff:ff:ff:ff
101: ifb1: <BROADCAST,NOARP> mtu 1500 qdisc noop state DOWN group default qlen 32
link/ether ce:76:dd:e7:dd:fc brd ff:ff:ff:ff:ff:ff
[root@pc-mtodorov marvin]#

[root@pc-mtodorov marvin]# ip route show
default via 193.198.186.193 dev enp1s0 proto dhcp src 193.198.186.200 metric 100
192.168.122.0/24 dev virbr0 proto kernel scope link src 192.168.122.1 linkdown
193.198.186.192/27 dev enp1s0 proto kernel scope link src 193.198.186.200 metric 100
198.18.0.0/24 dev veth0 proto kernel scope link src 198.18.0.1
198.19.0.0/24 dev tep0 proto kernel scope link src 198.19.0.1
[root@pc-mtodorov marvin]#

[root@pc-mtodorov marvin]# tcpdump --immediate-mode -p -v -i veth0 -n
dropped privs to tcpdump
tcpdump: listening on veth0, link-type EN10MB (Ethernet), capture size 262144 bytes
08:30:22.835825 IP (tos 0x0, ttl 64, id 2490, offset 0, flags [none], proto UDP (17), length 78)
198.18.0.1.35195 > 198.18.0.2.vxlan: VXLAN, flags [I] (0x08), vni 100
ARP, Ethernet (len 6), IPv4 (len 4), Request who-has 198.19.0.2 tell 198.19.0.1, length 28
08:30:22.835926 IP (tos 0x0, ttl 64, id 1388, offset 0, flags [none], proto UDP (17), length 78)
198.18.0.2.35195 > 198.18.0.1.vxlan: VXLAN, flags [I] (0x08), vni 100
ARP, Ethernet (len 6), IPv4 (len 4), Reply 198.19.0.2 is-at a6:45:d5:c4:93:1f, length 28
08:30:22.835976 IP (tos 0xc0, ttl 64, id 29533, offset 0, flags [none], proto ICMP (1), length 106)
198.18.0.1 > 198.18.0.2: ICMP host 198.18.0.1 unreachable - admin prohibited filter, length 86
IP (tos 0x0, ttl 64, id 1388, offset 0, flags [none], proto UDP (17), length 78)
198.18.0.2.35195 > 198.18.0.1.vxlan: VXLAN, flags [I] (0x08), vni 100
ARP, Ethernet (len 6), IPv4 (len 4), Reply 198.19.0.2 is-at a6:45:d5:c4:93:1f, length 28
08:30:23.859770 IP (tos 0x0, ttl 64, id 2585, offset 0, flags [none], proto UDP (17), length 78)
198.18.0.1.35195 > 198.18.0.2.vxlan: VXLAN, flags [I] (0x08), vni 100
ARP, Ethernet (len 6), IPv4 (len 4), Request who-has 198.19.0.2 tell 198.19.0.1, length 28
08:30:23.859803 IP (tos 0x0, ttl 64, id 1465, offset 0, flags [none], proto UDP (17), length 78)
198.18.0.2.35195 > 198.18.0.1.vxlan: VXLAN, flags [I] (0x08), vni 100
ARP, Ethernet (len 6), IPv4 (len 4), Reply 198.19.0.2 is-at a6:45:d5:c4:93:1f, length 28
08:30:23.859852 IP (tos 0xc0, ttl 64, id 29535, offset 0, flags [none], proto ICMP (1), length 106)
198.18.0.1 > 198.18.0.2: ICMP host 198.18.0.1 unreachable - admin prohibited filter, length 86
IP (tos 0x0, ttl 64, id 1465, offset 0, flags [none], proto UDP (17), length 78)
198.18.0.2.35195 > 198.18.0.1.vxlan: VXLAN, flags [I] (0x08), vni 100
ARP, Ethernet (len 6), IPv4 (len 4), Reply 198.19.0.2 is-at a6:45:d5:c4:93:1f, length 28
08:30:24.888024 IP (tos 0x0, ttl 64, id 2652, offset 0, flags [none], proto UDP (17), length 78)
198.18.0.1.35195 > 198.18.0.2.vxlan: VXLAN, flags [I] (0x08), vni 100
ARP, Ethernet (len 6), IPv4 (len 4), Request who-has 198.19.0.2 tell 198.19.0.1, length 28
08:30:24.888094 IP (tos 0x0, ttl 64, id 1630, offset 0, flags [none], proto UDP (17), length 78)
198.18.0.2.35195 > 198.18.0.1.vxlan: VXLAN, flags [I] (0x08), vni 100
ARP, Ethernet (len 6), IPv4 (len 4), Reply 198.19.0.2 is-at a6:45:d5:c4:93:1f, length 28
08:30:24.888131 IP (tos 0xc0, ttl 64, id 29607, offset 0, flags [none], proto ICMP (1), length 106)
198.18.0.1 > 198.18.0.2: ICMP host 198.18.0.1 unreachable - admin prohibited filter, length 86
IP (tos 0x0, ttl 64, id 1630, offset 0, flags [none], proto UDP (17), length 78)
198.18.0.2.35195 > 198.18.0.1.vxlan: VXLAN, flags [I] (0x08), vni 100
ARP, Ethernet (len 6), IPv4 (len 4), Reply 198.19.0.2 is-at a6:45:d5:c4:93:1f, length 28
08:30:25.911810 IP (tos 0x0, ttl 64, id 2658, offset 0, flags [none], proto UDP (17), length 78)
198.18.0.1.35195 > 198.18.0.2.vxlan: VXLAN, flags [I] (0x08), vni 100
ARP, Ethernet (len 6), IPv4 (len 4), Request who-has 198.19.0.2 tell 198.19.0.1, length 28
08:30:25.911876 IP (tos 0x0, ttl 64, id 1698, offset 0, flags [none], proto UDP (17), length 78)
198.18.0.2.35195 > 198.18.0.1.vxlan: VXLAN, flags [I] (0x08), vni 100
ARP, Ethernet (len 6), IPv4 (len 4), Reply 198.19.0.2 is-at a6:45:d5:c4:93:1f, length 28
08:30:25.911920 IP (tos 0xc0, ttl 64, id 29757, offset 0, flags [none], proto ICMP (1), length 106)
198.18.0.1 > 198.18.0.2: ICMP host 198.18.0.1 unreachable - admin prohibited filter, length 86
IP (tos 0x0, ttl 64, id 1698, offset 0, flags [none], proto UDP (17), length 78)
198.18.0.2.35195 > 198.18.0.1.vxlan: VXLAN, flags [I] (0x08), vni 100
ARP, Ethernet (len 6), IPv4 (len 4), Reply 198.19.0.2 is-at a6:45:d5:c4:93:1f, length 28
^C
12 packets captured
12 packets received by filter
0 packets dropped by kernel
[root@pc-mtodorov marvin]#

[root@pc-mtodorov marvin]# ping -c 3 198.19.0.2
PING 198.19.0.2 (198.19.0.2) 56(84) bytes of data.
>From 198.19.0.1 icmp_seq=1 Destination Host Unreachable
>From 198.19.0.1 icmp_seq=2 Destination Host Unreachable
>From 198.19.0.1 icmp_seq=3 Destination Host Unreachable

--- 198.19.0.2 ping statistics ---
3 packets transmitted, 0 received, +3 errors, 100% packet loss, time 2017ms
pipe 2
[root@pc-mtodorov marvin]#


> Also, can you please try the below patch?
>
> -------- >8 --------
>
> Isolate testing environment and ensure everything is cleaned up on
> exit.
>
> diff --git a/tools/testing/selftests/net/l2_tos_ttl_inherit.sh b/tools/testing/selftests/net/l2_tos_ttl_inherit.sh
> index dca1e6f777a8..f11756e7df2f 100755
> --- a/tools/testing/selftests/net/l2_tos_ttl_inherit.sh
> +++ b/tools/testing/selftests/net/l2_tos_ttl_inherit.sh
> @@ -12,19 +12,27 @@
> # In addition this script also checks if forcing a specific field in the
> # outer header is working.
>
> +# Return 4 by default (Kselftest SKIP code)
> +ERR=4
> +
> if [ "$(id -u)" != "0" ]; then
> echo "Please run as root."
> - exit 0
> + exit $ERR
> fi
> if ! which tcpdump > /dev/null 2>&1; then
> echo "No tcpdump found. Required for this test."
> - exit 0
> + exit $ERR
> fi
>
> expected_tos="0x00"
> expected_ttl="0"
> failed=false
>
> +readonly NS0=$(mktemp -u ns0-XXXXXXXX)
> +readonly NS1=$(mktemp -u ns1-XXXXXXXX)
> +
> +RUN_NS0="ip netns exec ${NS0}"
> +
> get_random_tos() {
> # Get a random hex tos value between 0x00 and 0xfc, a multiple of 4
> echo "0x$(tr -dc '0-9a-f' < /dev/urandom | head -c 1)\
> @@ -61,7 +69,6 @@ setup() {
> local vlan="$5"
> local test_tos="0x00"
> local test_ttl="0"
> - local ns="ip netns exec testing"
>
> # We don't want a test-tos of 0x00,
> # because this is the value that we get when no tos is set.
> @@ -94,14 +101,15 @@ setup() {
> printf "│%7s │%6s │%6s │%13s │%13s │%6s │" \
> "$type" "$outer" "$inner" "$tos" "$ttl" "$vlan"
>
> - # Create 'testing' netns, veth pair and connect main ns with testing ns
> - ip netns add testing
> - ip link add type veth
> - ip link set veth1 netns testing
> - ip link set veth0 up
> - $ns ip link set veth1 up
> - ip addr flush dev veth0
> - $ns ip addr flush dev veth1
> + # Create netns NS0 and NS1 and connect them with a veth pair
> + ip netns add "${NS0}"
> + ip netns add "${NS1}"
> + ip link add name veth0 netns "${NS0}" type veth \
> + peer name veth1 netns "${NS1}"
> + ip -netns "${NS0}" link set dev veth0 up
> + ip -netns "${NS1}" link set dev veth1 up
> + ip -netns "${NS0}" address flush dev veth0
> + ip -netns "${NS1}" address flush dev veth1
>
> local local_addr1=""
> local local_addr2=""
> @@ -127,51 +135,59 @@ setup() {
> if [ "$type" = "gre" ]; then
> type="gretap"
> fi
> - ip addr add 198.18.0.1/24 dev veth0
> - $ns ip addr add 198.18.0.2/24 dev veth1
> - ip link add name tep0 type $type $local_addr1 remote \
> - 198.18.0.2 tos $test_tos ttl $test_ttl $vxlan $geneve
> - $ns ip link add name tep1 type $type $local_addr2 remote \
> - 198.18.0.1 tos $test_tos ttl $test_ttl $vxlan $geneve
> + ip -netns "${NS0}" address add 198.18.0.1/24 dev veth0
> + ip -netns "${NS1}" address add 198.18.0.2/24 dev veth1
> + ip -netns "${NS0}" link add name tep0 type $type $local_addr1 \
> + remote 198.18.0.2 tos $test_tos ttl $test_ttl \
> + $vxlan $geneve
> + ip -netns "${NS1}" link add name tep1 type $type $local_addr2 \
> + remote 198.18.0.1 tos $test_tos ttl $test_ttl \
> + $vxlan $geneve
> elif [ "$outer" = "6" ]; then
> if [ "$type" = "gre" ]; then
> type="ip6gretap"
> fi
> - ip addr add fdd1:ced0:5d88:3fce::1/64 dev veth0
> - $ns ip addr add fdd1:ced0:5d88:3fce::2/64 dev veth1
> - ip link add name tep0 type $type $local_addr1 \
> - remote fdd1:ced0:5d88:3fce::2 tos $test_tos ttl $test_ttl \
> - $vxlan $geneve
> - $ns ip link add name tep1 type $type $local_addr2 \
> - remote fdd1:ced0:5d88:3fce::1 tos $test_tos ttl $test_ttl \
> - $vxlan $geneve
> + ip -netns "${NS0}" address add fdd1:ced0:5d88:3fce::1/64 \
> + dev veth0 nodad
> + ip -netns "${NS1}" address add fdd1:ced0:5d88:3fce::2/64 \
> + dev veth1 nodad
> + ip -netns "${NS0}" link add name tep0 type $type $local_addr1 \
> + remote fdd1:ced0:5d88:3fce::2 tos $test_tos \
> + ttl $test_ttl $vxlan $geneve
> + ip -netns "${NS1}" link add name tep1 type $type $local_addr2 \
> + remote fdd1:ced0:5d88:3fce::1 tos $test_tos \
> + ttl $test_ttl $vxlan $geneve
> fi
>
> # Bring L2-tunnel link up and create VLAN on top
> - ip link set tep0 up
> - $ns ip link set tep1 up
> - ip addr flush dev tep0
> - $ns ip addr flush dev tep1
> + ip -netns "${NS0}" link set tep0 up
> + ip -netns "${NS1}" link set tep1 up
> + ip -netns "${NS0}" address flush dev tep0
> + ip -netns "${NS1}" address flush dev tep1
> local parent
> if $vlan; then
> parent="vlan99-"
> - ip link add link tep0 name ${parent}0 type vlan id 99
> - $ns ip link add link tep1 name ${parent}1 type vlan id 99
> - ip link set ${parent}0 up
> - $ns ip link set ${parent}1 up
> - ip addr flush dev ${parent}0
> - $ns ip addr flush dev ${parent}1
> + ip -netns "${NS0}" link add link tep0 name ${parent}0 \
> + type vlan id 99
> + ip -netns "${NS1}" link add link tep1 name ${parent}1 \
> + type vlan id 99
> + ip -netns "${NS0}" link set dev ${parent}0 up
> + ip -netns "${NS1}" link set dev ${parent}1 up
> + ip -netns "${NS0}" address flush dev ${parent}0
> + ip -netns "${NS1}" address flush dev ${parent}1
> else
> parent="tep"
> fi
>
> # Assign inner IPv4/IPv6 addresses
> if [ "$inner" = "4" ] || [ "$inner" = "other" ]; then
> - ip addr add 198.19.0.1/24 brd + dev ${parent}0
> - $ns ip addr add 198.19.0.2/24 brd + dev ${parent}1
> + ip -netns "${NS0}" address add 198.19.0.1/24 brd + dev ${parent}0
> + ip -netns "${NS1}" address add 198.19.0.2/24 brd + dev ${parent}1
> elif [ "$inner" = "6" ]; then
> - ip addr add fdd4:96cf:4eae:443b::1/64 dev ${parent}0
> - $ns ip addr add fdd4:96cf:4eae:443b::2/64 dev ${parent}1
> + ip -netns "${NS0}" address add fdd4:96cf:4eae:443b::1/64 \
> + dev ${parent}0 nodad
> + ip -netns "${NS1}" address add fdd4:96cf:4eae:443b::2/64 \
> + dev ${parent}1 nodad
> fi
> }
>
> @@ -192,10 +208,10 @@ verify() {
> ping_dst="198.19.0.3" # Generates ARPs which are not IPv4/IPv6
> fi
> if [ "$tos_ttl" = "inherit" ]; then
> - ping -i 0.1 $ping_dst -Q "$expected_tos" -t "$expected_ttl" \
> - 2>/dev/null 1>&2 & ping_pid="$!"
> + ${RUN_NS0} ping -i 0.1 $ping_dst -Q "$expected_tos" \
> + -t "$expected_ttl" 2>/dev/null 1>&2 & ping_pid="$!"
> else
> - ping -i 0.1 $ping_dst 2>/dev/null 1>&2 & ping_pid="$!"
> + ${RUN_NS0} ping -i 0.1 $ping_dst 2>/dev/null 1>&2 & ping_pid="$!"
> fi
> local tunnel_type_offset tunnel_type_proto req_proto_offset req_offset
> if [ "$type" = "gre" ]; then
> @@ -216,10 +232,12 @@ verify() {
> req_proto_offset="$((req_proto_offset + 4))"
> req_offset="$((req_offset + 4))"
> fi
> - out="$(tcpdump --immediate-mode -p -c 1 -v -i veth0 -n \
> - ip[$tunnel_type_offset] = $tunnel_type_proto and \
> - ip[$req_proto_offset] = 0x01 and \
> - ip[$req_offset] = 0x08 2>/dev/null | head -n 1)"
> + out="$(${RUN_NS0} tcpdump --immediate-mode -p -c 1 -v \
> + -i veth0 -n \
> + ip[$tunnel_type_offset] = $tunnel_type_proto and \
> + ip[$req_proto_offset] = 0x01 and \
> + ip[$req_offset] = 0x08 2>/dev/null \
> + | head -n 1)"
> elif [ "$inner" = "6" ]; then
> req_proto_offset="44"
> req_offset="78"
> @@ -231,10 +249,12 @@ verify() {
> req_proto_offset="$((req_proto_offset + 4))"
> req_offset="$((req_offset + 4))"
> fi
> - out="$(tcpdump --immediate-mode -p -c 1 -v -i veth0 -n \
> - ip[$tunnel_type_offset] = $tunnel_type_proto and \
> - ip[$req_proto_offset] = 0x3a and \
> - ip[$req_offset] = 0x80 2>/dev/null | head -n 1)"
> + out="$(${RUN_NS0} tcpdump --immediate-mode -p -c 1 -v \
> + -i veth0 -n \
> + ip[$tunnel_type_offset] = $tunnel_type_proto and \
> + ip[$req_proto_offset] = 0x3a and \
> + ip[$req_offset] = 0x80 2>/dev/null \
> + | head -n 1)"
> elif [ "$inner" = "other" ]; then
> req_proto_offset="36"
> req_offset="45"
> @@ -250,11 +270,13 @@ verify() {
> expected_tos="0x00"
> expected_ttl="64"
> fi
> - out="$(tcpdump --immediate-mode -p -c 1 -v -i veth0 -n \
> - ip[$tunnel_type_offset] = $tunnel_type_proto and \
> - ip[$req_proto_offset] = 0x08 and \
> - ip[$((req_proto_offset + 1))] = 0x06 and \
> - ip[$req_offset] = 0x01 2>/dev/null | head -n 1)"
> + out="$(${RUN_NS0} tcpdump --immediate-mode -p -c 1 -v \
> + -i veth0 -n \
> + ip[$tunnel_type_offset] = $tunnel_type_proto and \
> + ip[$req_proto_offset] = 0x08 and \
> + ip[$((req_proto_offset + 1))] = 0x06 and \
> + ip[$req_offset] = 0x01 2>/dev/null \
> + | head -n 1)"
> fi
> elif [ "$outer" = "6" ]; then
> if [ "$type" = "gre" ]; then
> @@ -273,10 +295,12 @@ verify() {
> req_proto_offset="$((req_proto_offset + 4))"
> req_offset="$((req_offset + 4))"
> fi
> - out="$(tcpdump --immediate-mode -p -c 1 -v -i veth0 -n \
> - ip6[$tunnel_type_offset] = $tunnel_type_proto and \
> - ip6[$req_proto_offset] = 0x01 and \
> - ip6[$req_offset] = 0x08 2>/dev/null | head -n 1)"
> + out="$(${RUN_NS0} tcpdump --immediate-mode -p -c 1 -v \
> + -i veth0 -n \
> + ip6[$tunnel_type_offset] = $tunnel_type_proto and \
> + ip6[$req_proto_offset] = 0x01 and \
> + ip6[$req_offset] = 0x08 2>/dev/null \
> + | head -n 1)"
> elif [ "$inner" = "6" ]; then
> local req_proto_offset="72"
> local req_offset="106"
> @@ -288,10 +312,12 @@ verify() {
> req_proto_offset="$((req_proto_offset + 4))"
> req_offset="$((req_offset + 4))"
> fi
> - out="$(tcpdump --immediate-mode -p -c 1 -v -i veth0 -n \
> - ip6[$tunnel_type_offset] = $tunnel_type_proto and \
> - ip6[$req_proto_offset] = 0x3a and \
> - ip6[$req_offset] = 0x80 2>/dev/null | head -n 1)"
> + out="$(${RUN_NS0} tcpdump --immediate-mode -p -c 1 -v \
> + -i veth0 -n \
> + ip6[$tunnel_type_offset] = $tunnel_type_proto and \
> + ip6[$req_proto_offset] = 0x3a and \
> + ip6[$req_offset] = 0x80 2>/dev/null \
> + | head -n 1)"
> elif [ "$inner" = "other" ]; then
> local req_proto_offset="64"
> local req_offset="73"
> @@ -307,15 +333,17 @@ verify() {
> expected_tos="0x00"
> expected_ttl="64"
> fi
> - out="$(tcpdump --immediate-mode -p -c 1 -v -i veth0 -n \
> - ip6[$tunnel_type_offset] = $tunnel_type_proto and \
> - ip6[$req_proto_offset] = 0x08 and \
> - ip6[$((req_proto_offset + 1))] = 0x06 and \
> - ip6[$req_offset] = 0x01 2>/dev/null | head -n 1)"
> + out="$(${RUN_NS0} tcpdump --immediate-mode -p -c 1 -v \
> + -i veth0 -n \
> + ip6[$tunnel_type_offset] = $tunnel_type_proto and \
> + ip6[$req_proto_offset] = 0x08 and \
> + ip6[$((req_proto_offset + 1))] = 0x06 and \
> + ip6[$req_offset] = 0x01 2>/dev/null \
> + | head -n 1)"
> fi
> fi
> kill -9 $ping_pid
> - wait $ping_pid 2>/dev/null
> + wait $ping_pid 2>/dev/null || true
> result="FAIL"
> if [ "$outer" = "4" ]; then
> captured_ttl="$(get_field "ttl" "$out")"
> @@ -351,11 +379,35 @@ verify() {
> }
>
> cleanup() {
> - ip link del veth0 2>/dev/null
> - ip netns del testing 2>/dev/null
> - ip link del tep0 2>/dev/null
> + ip netns del "${NS0}" 2>/dev/null
> + ip netns del "${NS1}" 2>/dev/null
> }
>
> +exit_handler() {
> + # Don't exit immediately if one of the intermediate commands fails.
> + # We might be called at the end of the script, when the network
> + # namespaces have already been deleted. So cleanup() may fail, but we
> + # still need to run until 'exit $ERR' or the script won't return the
> + # correct error code.
> + set +e
> +
> + cleanup
> +
> + exit $ERR
> +}
> +
> +# Restore the default SIGINT handler (just in case) and exit.
> +# The exit handler will take care of cleaning everything up.
> +interrupted() {
> + trap - INT
> +
> + exit $ERR
> +}
> +
> +set -e
> +trap exit_handler EXIT
> +trap interrupted INT
> +
> printf "┌────────┬───────┬───────┬──────────────┬"
> printf "──────────────┬───────┬────────┐\n"
> for type in gre vxlan geneve; do
> @@ -385,6 +437,10 @@ done
> printf "└────────┴───────┴───────┴──────────────┴"
> printf "──────────────┴───────┴────────┘\n"
>
> +# All tests done.
> +# Set ERR appropriately: it will be returned by the exit handler.
> if $failed; then
> - exit 1
> + ERR=1
> +else
> + ERR=0
> fi

Wow, Guillaueme, this patch actually made things unstuck :)

[root@pc-mtodorov linux_torvalds]# git apply ../net-inherit-guilllaume1.patch
[root@pc-mtodorov linux_torvalds]# cd tools/testing/selftests/net
[root@pc-mtodorov net]# ./l2_tos_ttl_inherit.sh
┌────────┬───────┬───────┬──────────────┬──────────────┬───────┬────────┐
├────────┼───────┼───────┼──────────────┼──────────────┼───────┼────────┤
│ Type │ outer | inner │ tos │ ttl │ vlan │ result │
├────────┼───────┼───────┼──────────────┼──────────────┼───────┼────────┤
│ gre │ 4 │ 4 │ inherit 0x80 │ inherit 186 │ false │ OK │
│ gre │ 4 │ 4 │ inherit 0xd0 │ inherit 168 │ true │ OK │
│ gre │ 4 │ 4 │ fixed 0xcc │ fixed 234 │ false │ OK │
│ gre │ 4 │ 4 │ fixed 0xf4 │ fixed 144 │ true │ OK │
├────────┼───────┼───────┼──────────────┼──────────────┼───────┼────────┤
│ gre │ 4 │ 6 │ inherit 0x08 │ inherit 252 │ false │ OK │
│ gre │ 4 │ 6 │ inherit 0x10 │ inherit 171 │ true │ OK │
│ gre │ 4 │ 6 │ fixed 0x5c │ fixed 151 │ false │ OK │
│ gre │ 4 │ 6 │ fixed 0xc0 │ fixed 140 │ true │ OK │
├────────┼───────┼───────┼──────────────┼──────────────┼───────┼────────┤
│ gre │ 4 │ other │ inherit 0xf4 │ inherit 8 │ false │ OK │
│ gre │ 4 │ other │ inherit 0x44 │ inherit 231 │ true │ OK │
│ gre │ 4 │ other │ fixed 0x40 │ fixed 143 │ false │ OK │
│ gre │ 4 │ other │ fixed 0xa8 │ fixed 13 │ true │ OK │
├────────┼───────┼───────┼──────────────┼──────────────┼───────┼────────┤
│ Type │ outer | inner │ tos │ ttl │ vlan │ result │
├────────┼───────┼───────┼──────────────┼──────────────┼───────┼────────┤
│ gre │ 6 │ 4 │ inherit 0xe4 │ inherit 114 │ false │ OK │
│ gre │ 6 │ 4 │ inherit 0xd8 │ inherit 190 │ true │ OK │
│ gre │ 6 │ 4 │ fixed 0x60 │ fixed 255 │ false │ OK │
│ gre │ 6 │ 4 │ fixed 0x48 │ fixed 90 │ true │ OK │
├────────┼───────┼───────┼──────────────┼──────────────┼───────┼────────┤
│ gre │ 6 │ 6 │ inherit 0xb4 │ inherit 179 │ false │ OK │
│ gre │ 6 │ 6 │ inherit 0x68 │ inherit 95 │ true │ OK │
│ gre │ 6 │ 6 │ fixed 0x0c │ fixed 96 │ false │ OK │
│ gre │ 6 │ 6 │ fixed 0x38 │ fixed 98 │ true │ OK │
├────────┼───────┼───────┼──────────────┼──────────────┼───────┼────────┤
│ gre │ 6 │ other │ inherit 0x44 │ inherit 54 │ false │ OK │
│ gre │ 6 │ other │ inherit 0xec │ inherit 82 │ true │ OK │
│ gre │ 6 │ other │ fixed 0xf0 │ fixed 3 │ false │ OK │
│ gre │ 6 │ other │ fixed 0x90 │ fixed 183 │ true │ OK │
├────────┼───────┼───────┼──────────────┼──────────────┼───────┼────────┤
│ Type │ outer | inner │ tos │ ttl │ vlan │ result │
├────────┼───────┼───────┼──────────────┼──────────────┼───────┼────────┤
│ vxlan │ 4 │ 4 │ inherit 0xa8 │ inherit 157 │ false │ OK │
│ vxlan │ 4 │ 4 │ inherit 0x9c │ inherit 159 │ true │ OK │
│ vxlan │ 4 │ 4 │ fixed 0x88 │ fixed 21 │ false │ OK │
│ vxlan │ 4 │ 4 │ fixed 0x84 │ fixed 241 │ true │ OK │
├────────┼───────┼───────┼──────────────┼──────────────┼───────┼────────┤
│ vxlan │ 4 │ 6 │ inherit 0x78 │ inherit 115 │ false │ OK │
│ vxlan │ 4 │ 6 │ inherit 0x3c │ inherit 21 │ true │ OK │
│ vxlan │ 4 │ 6 │ fixed 0xf4 │ fixed 61 │ false │ OK │
│ vxlan │ 4 │ 6 │ fixed 0x0c │ fixed 24 │ true │ OK │
├────────┼───────┼───────┼──────────────┼──────────────┼───────┼────────┤
│ vxlan │ 4 │ other │ inherit 0xa0 │ inherit 112 │ false │ OK │
│ vxlan │ 4 │ other │ inherit 0x2c │ inherit 236 │ true │ OK │
│ vxlan │ 4 │ other │ fixed 0x20 │ fixed 166 │ false │ OK │
│ vxlan │ 4 │ other │ fixed 0x18 │ fixed 129 │ true │ OK │
├────────┼───────┼───────┼──────────────┼──────────────┼───────┼────────┤
│ Type │ outer | inner │ tos │ ttl │ vlan │ result │
├────────┼───────┼───────┼──────────────┼──────────────┼───────┼────────┤
│ vxlan │ 6 │ 4 │ inherit 0xa0 │ inherit 69 │ false │ OK │
│ vxlan │ 6 │ 4 │ inherit 0x4c │ inherit 100 │ true │ OK │
│ vxlan │ 6 │ 4 │ fixed 0x38 │ fixed 1 │ false │ OK │
│ vxlan │ 6 │ 4 │ fixed 0x34 │ fixed 109 │ true │ OK │
├────────┼───────┼───────┼──────────────┼──────────────┼───────┼────────┤
│ vxlan │ 6 │ 6 │ inherit 0x18 │ inherit 156 │ false │ OK │
│ vxlan │ 6 │ 6 │ inherit 0x88 │ inherit 104 │ true │ OK │
│ vxlan │ 6 │ 6 │ fixed 0x44 │ fixed 179 │ false │ OK │
│ vxlan │ 6 │ 6 │ fixed 0x84 │ fixed 107 │ true │ OK │
├────────┼───────┼───────┼──────────────┼──────────────┼───────┼────────┤
│ vxlan │ 6 │ other │ inherit 0x54 │ inherit 98 │ false │ OK │
│ vxlan │ 6 │ other │ inherit 0x5c │ inherit 121 │ true │ OK │
│ vxlan │ 6 │ other │ fixed 0x3c │ fixed 54 │ false │ OK │
│ vxlan │ 6 │ other │ fixed 0x58 │ fixed 239 │ true │ OK │
├────────┼───────┼───────┼──────────────┼──────────────┼───────┼────────┤
│ Type │ outer | inner │ tos │ ttl │ vlan │ result │
├────────┼───────┼───────┼──────────────┼──────────────┼───────┼────────┤
│ geneve │ 4 │ 4 │ inherit 0x58 │ inherit 33 │ false │ OK │
│ geneve │ 4 │ 4 │ inherit 0x28 │ inherit 98 │ true │ OK │
│ geneve │ 4 │ 4 │ fixed 0x98 │ fixed 60 │ false │ OK │
│ geneve │ 4 │ 4 │ fixed 0x78 │ fixed 152 │ true │ OK │
├────────┼───────┼───────┼──────────────┼──────────────┼───────┼────────┤
│ geneve │ 4 │ 6 │ inherit 0x14 │ inherit 124 │ false │ OK │
│ geneve │ 4 │ 6 │ inherit 0x24 │ inherit 147 │ true │ OK │
│ geneve │ 4 │ 6 │ fixed 0x38 │ fixed 178 │ false │ OK │
│ geneve │ 4 │ 6 │ fixed 0x78 │ fixed 38 │ true │ OK │
├────────┼───────┼───────┼──────────────┼──────────────┼───────┼────────┤
│ geneve │ 4 │ other │ inherit 0xc0 │ inherit 68 │ false │ OK │
│ geneve │ 4 │ other │ inherit 0x64 │ inherit 136 │ true │ OK │
│ geneve │ 4 │ other │ fixed 0x7c │ fixed 115 │ false │ OK │
│ geneve │ 4 │ other │ fixed 0x9c │ fixed 68 │ true │ OK │
├────────┼───────┼───────┼──────────────┼──────────────┼───────┼────────┤
│ Type │ outer | inner │ tos │ ttl │ vlan │ result │
├────────┼───────┼───────┼──────────────┼──────────────┼───────┼────────┤
│ geneve │ 6 │ 4 │ inherit 0xa0 │ inherit 89 │ false │ OK │
│ geneve │ 6 │ 4 │ inherit 0x5c │ inherit 123 │ true │ OK │
│ geneve │ 6 │ 4 │ fixed 0x4c │ fixed 54 │ false │ OK │
│ geneve │ 6 │ 4 │ fixed 0x70 │ fixed 12 │ true │ OK │
├────────┼───────┼───────┼──────────────┼──────────────┼───────┼────────┤
│ geneve │ 6 │ 6 │ inherit 0xc0 │ inherit 161 │ false │ OK │
│ geneve │ 6 │ 6 │ inherit 0x60 │ inherit 47 │ true │ OK │
│ geneve │ 6 │ 6 │ fixed 0xb4 │ fixed 135 │ false │ OK │
│ geneve │ 6 │ 6 │ fixed 0x48 │ fixed 35 │ true │ OK │
├────────┼───────┼───────┼──────────────┼──────────────┼───────┼────────┤
│ geneve │ 6 │ other │ inherit 0xd0 │ inherit 100 │ false │ OK │
│ geneve │ 6 │ other │ inherit 0x3c │ inherit 149 │ true │ OK │
│ geneve │ 6 │ other │ fixed 0x2c │ fixed 182 │ false │ OK │
│ geneve │ 6 │ other │ fixed 0x68 │ fixed 215 │ true │ OK │
└────────┴───────┴───────┴──────────────┴──────────────┴───────┴────────┘
[root@pc-mtodorov net]#

The entire tools/tests/selftests/net section now had a PASS w "OK", save for a couple of tests here:

not ok 1 selftests: nci: nci_dev # exit=1
not ok 12 selftests: net: nat6to4.o
not ok 13 selftests: net: run_netsocktests # exit=1
not ok 29 selftests: net: udpgro_bench.sh # exit=255
not ok 30 selftests: net: udpgro.sh # exit=255
not ok 37 selftests: net: fcnal-test.sh # TIMEOUT 1500 seconds
not ok 38 selftests: net: l2tp.sh # exit=2
not ok 46 selftests: net: icmp_redirect.sh # exit=1
not ok 55 selftests: net: vrf_route_leaking.sh # exit=1
not ok 59 selftests: net: udpgro_fwd.sh # exit=1
not ok 60 selftests: net: udpgro_frglist.sh # exit=255
not ok 61 selftests: net: veth.sh # exit=1
not ok 68 selftests: net: srv6_end_dt46_l3vpn_test.sh # exit=1
not ok 69 selftests: net: srv6_end_dt4_l3vpn_test.sh # exit=1
not ok 75 selftests: net: arp_ndisc_evict_nocarrier.sh # exit=255
not ok 83 selftests: net: test_ingress_egress_chaining.sh # exit=1
not ok 1 selftests: net/hsr: hsr_ping.sh # TIMEOUT 45 seconds
not ok 3 selftests: net/mptcp: mptcp_join.sh # exit=1

If you are interested in additional diagnostics, this is a very interesting part of the
Linux kernel testing ...

There was apparent hang in selftest/net/fcnal-test.sh as well.
I can help you with the diagnostics if you wish? Thanks.

If I could make them all work both on Ubuntu 22.10 kinetic kudu and AlmaLinux 8.7
stone smilodon (CentOS fork), this would be a milestone for me :)

Have a nice day!

Regards,
Mirsad

--
Mirsad Goran Todorovac
Sistem inženjer
Grafički fakultet | Akademija likovnih umjetnosti
Sveučilište u Zagrebu

System engineer
Faculty of Graphic Arts | Academy of Fine Arts
University of Zagreb, Republic of Croatia
The European Union