The iputils ping command selects IPv6 with -6. Some distributions also install a ping6 compatibility link, but that link is optional and is not present on NixOS. Tests which invoke ping6 therefore fail before sending any traffic there.
Use the documented ping -6 interface. It is supported by the iputils versions shipped by the Linux distributions on which OVN is supported. This keeps the same behavior without depending on a compatibility link. The multinode tests run inside container images that still provide ping6, so changing them is not required for NixOS. Change them too for consistency with the system tests. Assisted-by: Codex gpt-5.6-sol high Signed-off-by: Ihar Hrachyshka <[email protected]> Acked-by: Han Zhou <[email protected]> --- tests/multinode.at | 16 +++++++-------- tests/system-ovn.at | 48 ++++++++++++++++++++++----------------------- 2 files changed, 32 insertions(+), 32 deletions(-) diff --git a/tests/multinode.at b/tests/multinode.at index 44faceb53..9dab187d4 100644 --- a/tests/multinode.at +++ b/tests/multinode.at @@ -173,7 +173,7 @@ M_NS_CHECK_EXEC([ovn-chassis-1], [sw0p1], [ip route add 10.0.0.0/24 dev sw0p1]) M_NS_CHECK_EXEC([ovn-chassis-1], [sw0p1], [ip route add default via 10.0.0.1 dev sw0p1]) m_as ovn-chassis-1 ip route change 170.168.0.0/16 mtu 1400 dev eth1 -M_NS_CHECK_EXEC([ovn-chassis-1], [sw0p1], [ping6 -c 5 -s 1450 -M do 2000::3 2>&1 | grep -q -i "message too long"]) +M_NS_CHECK_EXEC([ovn-chassis-1], [sw0p1], [ping -6 -c 5 -s 1450 -M do 2000::3 2>&1 | grep -q -i "message too long"]) M_NS_CHECK_EXEC([ovn-chassis-1], [sw0p1], [ping -q -c 3 -i 0.3 -w 2 172.20.1.2 | FORMAT_PING], \ [0], [dnl @@ -399,7 +399,7 @@ M_NS_CHECK_EXEC([ovn-chassis-1], [sw0p1], [ip route add 10.0.0.0/24 dev sw0p1]) M_NS_CHECK_EXEC([ovn-chassis-1], [sw0p1], [ip route add default via 10.0.0.1 dev sw0p1]) m_as ovn-chassis-1 ip route change 170.168.0.0/16 mtu 1400 dev eth1 -M_NS_CHECK_EXEC([ovn-chassis-1], [sw0p1], [ping6 -c 5 -s 1450 -M do 2000::3 2>&1 | grep -q -i "message too long"]) +M_NS_CHECK_EXEC([ovn-chassis-1], [sw0p1], [ping -6 -c 5 -s 1450 -M do 2000::3 2>&1 | grep -q -i "message too long"]) M_NS_CHECK_EXEC([ovn-chassis-1], [sw0p1], [ip route flush dev sw0p1]) M_NS_CHECK_EXEC([ovn-chassis-1], [sw0p1], [ip route add 10.0.0.0/24 dev sw0p1]) @@ -625,7 +625,7 @@ M_NS_CHECK_EXEC([ovn-chassis-1], [sw0p1], [ip route add 10.0.0.0/24 dev sw0p1]) M_NS_CHECK_EXEC([ovn-chassis-1], [sw0p1], [ip route add default via 10.0.0.1 dev sw0p1]) m_as ovn-chassis-1 ip route change 170.168.0.0/16 mtu 1400 dev eth1 -M_NS_CHECK_EXEC([ovn-chassis-1], [sw0p1], [ping6 -c 5 -s 1450 -M do 2000::3 2>&1 | grep -q -i "message too long"]) +M_NS_CHECK_EXEC([ovn-chassis-1], [sw0p1], [ping -6 -c 5 -s 1450 -M do 2000::3 2>&1 | grep -q -i "message too long"]) M_NS_CHECK_EXEC([ovn-chassis-1], [sw0p1], [ip route flush dev sw0p1]) M_NS_CHECK_EXEC([ovn-chassis-1], [sw0p1], [ip route add 10.0.0.0/24 dev sw0p1]) @@ -5009,13 +5009,13 @@ M_NS_CHECK_EXEC([ovn-chassis-1], [ls1p1], [ping -q -c 3 -i 0.3 -w 2 172.18.86.10 ]) m_wait_row_count mac_binding 1 ip="172.18.86.102" logical_port="lr1-pub" -M_NS_CHECK_EXEC([ovn-chassis-1], [ls1p1], [ping6 -q -c 3 -i 0.3 -w 2 6812:86::101 | FORMAT_PING], \ +M_NS_CHECK_EXEC([ovn-chassis-1], [ls1p1], [ping -6 -q -c 3 -i 0.3 -w 2 6812:86::101 | FORMAT_PING], \ [0], [dnl 3 packets transmitted, 3 received, 0% packet loss, time 0ms ]) m_wait_row_count mac_binding 1 ip="6812\:86\:\:101" logical_port="lr1-pub" -M_NS_CHECK_EXEC([ovn-chassis-1], [ls1p1], [ping6 -q -c 3 -i 0.3 -w 2 6812:86::102 | FORMAT_PING], \ +M_NS_CHECK_EXEC([ovn-chassis-1], [ls1p1], [ping -6 -q -c 3 -i 0.3 -w 2 6812:86::102 | FORMAT_PING], \ [0], [dnl 3 packets transmitted, 3 received, 0% packet loss, time 0ms ]) @@ -5040,13 +5040,13 @@ M_NS_CHECK_EXEC([ovn-chassis-2], [ovn-ext2], [ping -q -c 3 -i 0.3 -w 2 172.18.86 ]) m_wait_row_count mac_binding 1 ip="172.18.86.101" logical_port="lr1-pub" -M_NS_CHECK_EXEC([ovn-chassis-1], [ovn-ext1], [ping6 -q -c 3 -i 0.3 -w 2 6812:86::11 | FORMAT_PING], \ +M_NS_CHECK_EXEC([ovn-chassis-1], [ovn-ext1], [ping -6 -q -c 3 -i 0.3 -w 2 6812:86::11 | FORMAT_PING], \ [0], [dnl 3 packets transmitted, 3 received, 0% packet loss, time 0ms ]) m_wait_row_count mac_binding 1 ip="6812\:86\:\:101" logical_port="lr1-pub" -M_NS_CHECK_EXEC([ovn-chassis-2], [ovn-ext2], [ping6 -q -c 3 -i 0.3 -w 2 6812:86::11 | FORMAT_PING], \ +M_NS_CHECK_EXEC([ovn-chassis-2], [ovn-ext2], [ping -6 -q -c 3 -i 0.3 -w 2 6812:86::11 | FORMAT_PING], \ [0], [dnl 3 packets transmitted, 3 received, 0% packet loss, time 0ms ]) @@ -5056,7 +5056,7 @@ m_wait_row_count mac_binding 1 ip="6812\:86\:\:102" logical_port="lr1-pub" m_central_as ovn-sbctl --all destroy mac_binding M_NS_CHECK_EXEC([ovn-chassis-2], [ovn-ext2], [ip -6 neigh del 6812:86::11 dev ext2 lladdr 0a:0a:56:33:02:11]) -M_NS_CHECK_EXEC([ovn-chassis-2], [ovn-ext2], [ping6 -q -c 3 -i 0.3 -w 2 6812:86::11 | FORMAT_PING], \ +M_NS_CHECK_EXEC([ovn-chassis-2], [ovn-ext2], [ping -6 -q -c 3 -i 0.3 -w 2 6812:86::11 | FORMAT_PING], \ [0], [dnl 3 packets transmitted, 3 received, 0% packet loss, time 0ms ]) diff --git a/tests/system-ovn.at b/tests/system-ovn.at index fdb2c0a5d..ae9c52afd 100644 --- a/tests/system-ovn.at +++ b/tests/system-ovn.at @@ -275,13 +275,13 @@ check ovn-nbctl --wait=hv sync OVS_WAIT_UNTIL([ovs-ofctl dump-flows br-int | grep 'nat(src=fd30::1)']) # 'alice1' should be able to ping 'foo1' directly. -NS_CHECK_EXEC([alice1], [ping6 -q -c 3 -i 0.3 -w 2 fd11::2 | FORMAT_PING], \ +NS_CHECK_EXEC([alice1], [ping -6 -q -c 3 -i 0.3 -w 2 fd11::2 | FORMAT_PING], \ [0], [dnl 3 packets transmitted, 3 received, 0% packet loss, time 0ms ]) # North-South DNAT: 'alice1' should also be able to ping 'foo1' via fd30::2 -NS_CHECK_EXEC([alice1], [ping6 -q -c 3 -i 0.3 -w 2 fd30::2 | FORMAT_PING], \ +NS_CHECK_EXEC([alice1], [ping -6 -q -c 3 -i 0.3 -w 2 fd30::2 | FORMAT_PING], \ [0], [dnl 3 packets transmitted, 3 received, 0% packet loss, time 0ms ]) @@ -295,7 +295,7 @@ icmpv6,orig=(src=fd21::2,dst=fd30::2,id=<cleared>,type=128,code=0),reply=(src=fd # South-North SNAT: 'bar1' pings 'alice1'. But 'alice1' receives traffic # from fd30::1 -NS_CHECK_EXEC([bar1], [ping6 -q -c 3 -i 0.3 -w 2 fd21::2 | FORMAT_PING], \ +NS_CHECK_EXEC([bar1], [ping -6 -q -c 3 -i 0.3 -w 2 fd21::2 | FORMAT_PING], \ [0], [dnl 3 packets transmitted, 3 received, 0% packet loss, time 0ms ]) @@ -316,7 +316,7 @@ check ovn-nbctl --wait=hv sync AT_CHECK([ovs-appctl dpctl/flush-conntrack]) # East-west DNAT and SNAT: 'bar1' pings fd30::2. 'foo1' receives it. -NS_CHECK_EXEC([bar1], [ping6 -q -c 3 -i 0.3 -w 2 fd30::2 | FORMAT_PING], \ +NS_CHECK_EXEC([bar1], [ping -6 -q -c 3 -i 0.3 -w 2 fd30::2 | FORMAT_PING], \ [0], [dnl 3 packets transmitted, 3 received, 0% packet loss, time 0ms ]) @@ -918,7 +918,7 @@ check ovn-nbctl --wait=hv sync OVS_WAIT_UNTIL([ovs-ofctl dump-flows br-int | grep 'nat(src=fd40::4)']) # North-South DNAT: 'alice1' should be able to ping 'foo1' via fd30::2 -NS_CHECK_EXEC([alice1], [ping6 -q -c 3 -i 0.3 -w 2 fd40::2 | FORMAT_PING], \ +NS_CHECK_EXEC([alice1], [ping -6 -q -c 3 -i 0.3 -w 2 fd40::2 | FORMAT_PING], \ [0], [dnl 3 packets transmitted, 3 received, 0% packet loss, time 0ms ]) @@ -936,7 +936,7 @@ icmpv6,orig=(src=fd30::3,dst=fd11::2,id=<cleared>,type=128,code=0),reply=(src=fd ]) # North-South DNAT: 'bob1' should be able to ping 'foo1' via fd40::3 -NS_CHECK_EXEC([bob1], [ping6 -q -c 3 -i 0.3 -w 2 fd40::3 | FORMAT_PING], \ +NS_CHECK_EXEC([bob1], [ping -6 -q -c 3 -i 0.3 -w 2 fd40::3 | FORMAT_PING], \ [0], [dnl 3 packets transmitted, 3 received, 0% packet loss, time 0ms ]) @@ -955,7 +955,7 @@ icmpv6,orig=(src=fd30::4,dst=fd11::2,id=<cleared>,type=128,code=0),reply=(src=fd # South-North SNAT: 'bar1' pings 'bob1'. But 'bob1' receives traffic # from fd40::4 -NS_CHECK_EXEC([bar1], [ping6 -q -c 3 -i 0.3 -w 2 fd30::4 | FORMAT_PING], \ +NS_CHECK_EXEC([bar1], [ping -6 -q -c 3 -i 0.3 -w 2 fd30::4 | FORMAT_PING], \ [0], [dnl 3 packets transmitted, 3 received, 0% packet loss, time 0ms ]) @@ -968,7 +968,7 @@ icmpv6,orig=(src=fd12::2,dst=fd30::4,id=<cleared>,type=128,code=0),reply=(src=fd # South-North SNAT: 'foo1' pings 'alice1'. But 'alice1' receives traffic # from fd40::1 -NS_CHECK_EXEC([foo1], [ping6 -q -c 3 -i 0.3 -w 2 fd30::3 | FORMAT_PING], \ +NS_CHECK_EXEC([foo1], [ping -6 -q -c 3 -i 0.3 -w 2 fd30::3 | FORMAT_PING], \ [0], [dnl 3 packets transmitted, 3 received, 0% packet loss, time 0ms ]) @@ -1179,7 +1179,7 @@ NS_CHECK_EXEC([alice1], [ping -q -c 3 -i 0.3 -w 2 30.0.0.2 | FORMAT_PING], \ ]) # North-South DNAT: 'alice16' should be able to ping 'foo16' via fd30::2 -NS_CHECK_EXEC([alice16], [ping6 -q -c 3 -i 0.3 -w 2 fd40::2 | FORMAT_PING], \ +NS_CHECK_EXEC([alice16], [ping -6 -q -c 3 -i 0.3 -w 2 fd40::2 | FORMAT_PING], \ [0], [dnl 3 packets transmitted, 3 received, 0% packet loss, time 0ms ]) @@ -1212,7 +1212,7 @@ NS_CHECK_EXEC([bob1], [ping -q -c 3 -i 0.3 -w 2 30.0.0.3 | FORMAT_PING], \ ]) # North-South DNAT: 'bob16' should be able to ping 'foo16' via fd40::3 -NS_CHECK_EXEC([bob16], [ping6 -q -c 3 -i 0.3 -w 2 fd40::3 | FORMAT_PING], \ +NS_CHECK_EXEC([bob16], [ping -6 -q -c 3 -i 0.3 -w 2 fd40::3 | FORMAT_PING], \ [0], [dnl 3 packets transmitted, 3 received, 0% packet loss, time 0ms ]) @@ -1247,7 +1247,7 @@ NS_CHECK_EXEC([bar1], [ping -q -c 3 -i 0.3 -w 2 172.16.1.4 | FORMAT_PING], \ ]) # South-North SNAT: 'bar16' pings 'bob16'. But 'bob16' receives traffic # from fd40::4 -NS_CHECK_EXEC([bar16], [ping6 -q -c 3 -i 0.3 -w 2 fd30::4 | FORMAT_PING], \ +NS_CHECK_EXEC([bar16], [ping -6 -q -c 3 -i 0.3 -w 2 fd30::4 | FORMAT_PING], \ [0], [dnl 3 packets transmitted, 3 received, 0% packet loss, time 0ms ]) @@ -1271,7 +1271,7 @@ NS_CHECK_EXEC([foo1], [ping -q -c 3 -i 0.3 -w 2 172.16.1.3 | FORMAT_PING], \ # South-North SNAT: 'foo16' pings 'alice16'. But 'alice16' receives traffic # from fd40::1 -NS_CHECK_EXEC([foo16], [ping6 -q -c 3 -i 0.3 -w 2 fd30::3 | FORMAT_PING], \ +NS_CHECK_EXEC([foo16], [ping -6 -q -c 3 -i 0.3 -w 2 fd30::3 | FORMAT_PING], \ [0], [dnl 3 packets transmitted, 3 received, 0% packet loss, time 0ms ]) @@ -9174,7 +9174,7 @@ NS_CHECK_EXEC([ls1p1], [ping -q -c 3 -i 0.3 -w 2 172.16.1.1 | FORMAT_PING], \ 3 packets transmitted, 3 received, 0% packet loss, time 0ms ]) -NS_CHECK_EXEC([ls1p1], [ping6 -q -c 3 -i 0.3 -w 2 1711::1 | FORMAT_PING], \ +NS_CHECK_EXEC([ls1p1], [ping -6 -q -c 3 -i 0.3 -w 2 1711::1 | FORMAT_PING], \ [0], [dnl 3 packets transmitted, 3 received, 0% packet loss, time 0ms ]) @@ -11167,12 +11167,12 @@ check ovn-nbctl lsp-add bar bar1 \ check ovn-nbctl --wait=hv sync # Force ipv6 nd neighbour solicitation -NS_EXEC([foo1], [ping6 -c 1 fd12::2]) +NS_EXEC([foo1], [ping -6 -c 1 fd12::2]) NETNS_START_TCPDUMP([foo1], [-vvvv -ttt -nn -e -i foo1 'ether dst 0a:58:a9:fe:01:01 and icmp6'], [foo1-icmp6]) # 'foo1' should be able to ping 'bar1' -NS_CHECK_EXEC([foo1], [ping6 -q -c 3 -i 0.3 -w 2 fd12::2 | FORMAT_PING], \ +NS_CHECK_EXEC([foo1], [ping -6 -q -c 3 -i 0.3 -w 2 fd12::2 | FORMAT_PING], \ [0], [dnl 3 packets transmitted, 3 received, 0% packet loss, time 0ms ]) @@ -11182,12 +11182,12 @@ OVS_WAIT_UNTIL([ ]) # Force ipv6 nd neighbour solicitation -NS_EXEC([foo2], [ping6 -c 1 fd12::2]) +NS_EXEC([foo2], [ping -6 -c 1 fd12::2]) NETNS_START_TCPDUMP([foo2], [-vvvv -ttt -nn -e -i foo2 'ether dst 0a:58:a9:fe:01:01 and icmp6'], [foo2-icmp6]) # 'foo2' should be able to ping 'bar1' -NS_CHECK_EXEC([foo2], [ping6 -q -c 3 -i 0.3 -w 2 fd12::2 | FORMAT_PING], \ +NS_CHECK_EXEC([foo2], [ping -6 -q -c 3 -i 0.3 -w 2 fd12::2 | FORMAT_PING], \ [0], [dnl 3 packets transmitted, 3 received, 0% packet loss, time 0ms ]) @@ -11197,12 +11197,12 @@ OVS_WAIT_UNTIL([ ]) # Force ipv6 nd neighbour solicitation -NS_EXEC([foo3], [ping6 -c 1 fd12::2]) +NS_EXEC([foo3], [ping -6 -c 1 fd12::2]) NETNS_START_TCPDUMP([foo3], [-vvvv -ttt -nn -e -i foo3 'ether dst 0a:58:a9:fe:01:01 and icmp6'], [foo3-icmp6]) # 'foo3' should be able to ping 'bar1' -NS_CHECK_EXEC([foo3], [ping6 -q -c 3 -i 0.3 -w 2 fd12::2 | FORMAT_PING], \ +NS_CHECK_EXEC([foo3], [ping -6 -q -c 3 -i 0.3 -w 2 fd12::2 | FORMAT_PING], \ [0], [dnl 3 packets transmitted, 3 received, 0% packet loss, time 0ms ]) @@ -11635,7 +11635,7 @@ check ovn-nbctl --wait=hv lsp-attach-mirror bar1 mirror1 NETNS_START_TCPDUMP([mirror], [-c 3 -neei mirror proto GRE], [gre_mirror6]) -NS_CHECK_EXEC([foo1], [ping6 -q -c 3 -i 0.3 -w 2 2002::2 | FORMAT_PING], \ +NS_CHECK_EXEC([foo1], [ping -6 -q -c 3 -i 0.3 -w 2 2002::2 | FORMAT_PING], \ [0], [dnl 3 packets transmitted, 3 received, 0% packet loss, time 0ms ]) @@ -11666,7 +11666,7 @@ check ovn-nbctl --wait=hv lsp-attach-mirror bar1 mirror3 NETNS_START_TCPDUMP([mirror], [-c 3 -neei mirror ip6[[42:2]]=0x88be], [erspan_mirror6]) -NS_CHECK_EXEC([foo1], [ping6 -q -c 3 -i 0.3 -w 2 2002::2 | FORMAT_PING], \ +NS_CHECK_EXEC([foo1], [ping -6 -q -c 3 -i 0.3 -w 2 2002::2 | FORMAT_PING], \ [0], [dnl 3 packets transmitted, 3 received, 0% packet loss, time 0ms ]) @@ -11680,7 +11680,7 @@ check ovn-nbctl --wait=hv set mirror $uuid type=gre NETNS_START_TCPDUMP([mirror], [-c 3 -neei mirror proto GRE], [gre2_mirror6]) -NS_CHECK_EXEC([foo1], [ping6 -q -c 3 -i 0.3 -w 2 2002::2 | FORMAT_PING], \ +NS_CHECK_EXEC([foo1], [ping -6 -q -c 3 -i 0.3 -w 2 2002::2 | FORMAT_PING], \ [0], [dnl 3 packets transmitted, 3 received, 0% packet loss, time 0ms ]) @@ -15276,7 +15276,7 @@ check ovn-nbctl --wait=hv sync NETNS_DAEMONIZE([alice], [nc -6 -l -k 80], [alice.pid]) NETNS_DAEMONIZE([peter], [nc -6 -l -k 80], [peter.pid]) -NS_CHECK_EXEC([bob], [ping6 -q -c 3 -i 0.3 -w 2 fd11::2 | FORMAT_PING], \ +NS_CHECK_EXEC([bob], [ping -6 -q -c 3 -i 0.3 -w 2 fd11::2 | FORMAT_PING], \ [0], [dnl 3 packets transmitted, 3 received, 0% packet loss, time 0ms ]) @@ -22071,7 +22071,7 @@ wait_row_count nb:Logical_Switch_Port_Health_Check 1 status=online protocol=udp check ovn-nbctl lsp-hc-del lport -# IPv6 ICMP health check (ping6). +# IPv6 ICMP health check (ping -6). check ovn-nbctl lsp-hc-add lport icmp 2001:db8::ff 2001:db8::10 check ovn-nbctl --wait=hv sync check_row_count sb:Service_Monitor 1 -- 2.54.0 _______________________________________________ dev mailing list [email protected] https://mail.openvswitch.org/mailman/listinfo/ovs-dev
