linux-test-project / ltp

Linux Test Project (mailing list: https://lists.linux.it/listinfo/ltp)
https://linux-test-project.readthedocs.io/
GNU General Public License v2.0
2.27k stars 1k forks source link

netns_lib.sh: using ping -6 instead of ping6 to fix ipv6 netns test fails #1149

Closed chenxy1988 closed 3 months ago

chenxy1988 commented 3 months ago

Currently, on some distribution, the ping6 using GNU inetutils, it doesn't support "-I" option, that cause IPv6 netns related test case fails.

If building an iputils from source code, it doesn't generate ping6 by default, from its documents we can learn that it can use ping -6 to ping an IPv6 address.

chenxy1988 commented 3 months ago

Thanks for your fast response :)

Does it actually fails? We use tst_net.sh which checks for ping6 and use ping -6 if binary is missing:

https://github.com/linux-test-project/ltp/blob/f09c3b0db8213ff620891c491ea9cdf5b9cb7436/testcases/lib/tst_net.sh#L1172-L1179

This should work, but currently, the GNU inetutils-ping6 exists in /usr/bin, so those check successfully.

If it fails, could you post whole output?

The error point to ping6 doesn't support -I option


[   96.437258] LTP: starting netns_comm_ip_ipv6_netlink (netns_comm.sh -6)
incrementing stop
netns_comm 1 TINFO: Running: netns_comm.sh -6
netns_comm 1 TINFO: timeout per run is 0h 5m 0s
netns_comm 1 TINFO: testing netns over netlink with ip netns exec 
ping6: invalid option -- 'I'
Try 'ping6 --help' or 'ping6 --usage' for more information.
netns_comm 1 TFAIL: ip netns exec tst_net_ns0 ping6 -q -c2 -I veth0 fd00:23::4 failed unexpectedly
ping6: invalid option -- 'I'
Try 'ping6 --help' or 'ping6 --usage' for more information.
netns_comm 1 TFAIL: ip netns exec tst_net_ns1 ping6 -q -c2 -I veth1 fd00:23::2 failed unexpectedly
ping6: invalid option -- 'I'
Try 'ping6 --help' or 'ping6 --usage' for more information.
netns_comm 1 TFAIL: ip netns exec tst_net_ns0 ping6 -q -c2 -I lo ::1 failed unexpectedly

> Also, current inetutils-ping from Debian contains `ping6`:
> 
> ```
> # apt install inetutils-ping
> $ ping6 -V
> ping6 (GNU inetutils) 2.5
> Copyright (C) 2023 Free Software Foundation, Inc.
> License GPLv3+: GNU GPL version 3 or later <https://gnu.org/licenses/gpl.html>.
> This is free software: you are free to change and redistribute it.
> There is NO WARRANTY, to the extent permitted by law.
> 
> Written by Jeroen Dekkers.
> $ which ping6
> /usr/bin/ping6
> ```
> 
This is my ping6 information, seem the same as yours:

root@qemux86-64:/opt/ltp# ping6 -V ping6 (GNU inetutils) 2.5 Copyright (C) 2023 Free Software Foundation, Inc. License GPLv3+: GNU GPL version 3 or later https://gnu.org/licenses/gpl.html. This is free software: you are free to change and redistribute it. There is NO WARRANTY, to the extent permitted by law.

Written by Jeroen Dekkers. root@qemux86-64:/opt/ltp# ping6 -I ping6: invalid option -- 'I' Try 'ping6 --help' or 'ping6 --usage' for more information. root@qemux86-64:/opt/ltp#



> It also works for Debian 11 (bullseye) oldstable, thus it's nothing new, at least not for Debian/Ubuntu. What distro and which version do you use?
>
My system is Yocto(oe-core) and it was built by myself

> BTW I'm not sure if LTP is compatible with ping from inetutils, but there were fixes for ping from busybox, which is less capable than the other ping implementations, thus it could work.

Thanks for you import information, I'll check those fixes later :)
pevik commented 3 months ago

Here is a patchset which fixes the problem (TCONF when -I is needed and not supported + update docs: see https://github.com/pevik/ltp/tree/net/tst_ping-requires-I/testcases/network#dependencies):

https://patchwork.ozlabs.org/project/ltp/list/?series=401100&state=* (2 commits: https://patchwork.ozlabs.org/project/ltp/patch/20240330180818.246499-1-pvorel@suse.cz/, https://patchwork.ozlabs.org/project/ltp/patch/20240330180818.246499-2-pvorel@suse.cz/).

Feel free to test it.

I guess we can close this, because the original report - missing ping6 on inetutils was invalid, right?

chenxy1988 commented 3 months ago

Here is a patchset which fixes the problem (TCONF when -I is needed and not supported + update docs: see https://github.com/pevik/ltp/tree/net/tst_ping-requires-I/testcases/network#dependencies):

https://patchwork.ozlabs.org/project/ltp/list/?series=401100&state=* (2 commits: https://patchwork.ozlabs.org/project/ltp/patch/20240330180818.246499-1-pvorel@suse.cz/, https://patchwork.ozlabs.org/project/ltp/patch/20240330180818.246499-2-pvorel@suse.cz/).

Feel free to test it.

I guess we can close this, because the original report - missing ping6 on inetutils was invalid, right?

Thanks for your great help, this should output the message if target system doesn't use busybox-ping6 or iputils-ping6, we can close this issue thanks!