On 12/9/24 15:01, Xiao Liang wrote: > - Add test for creating link in another netns when a link of the same > name and ifindex exists in current netns. > - Add test for link netns atomicity - create link directly in target > netns, and no notifications should be generated in current netns. > > Signed-off-by: Xiao Liang <shaw.leon@xxxxxxxxx> > --- > tools/testing/selftests/net/Makefile | 1 + > tools/testing/selftests/net/netns-name.sh | 10 ++++++ > tools/testing/selftests/net/netns_atomic.py | 39 +++++++++++++++++++++ > 3 files changed, 50 insertions(+) > create mode 100755 tools/testing/selftests/net/netns_atomic.py > > diff --git a/tools/testing/selftests/net/Makefile b/tools/testing/selftests/net/Makefile > index cb2fc601de66..f9f7a765d645 100644 > --- a/tools/testing/selftests/net/Makefile > +++ b/tools/testing/selftests/net/Makefile > @@ -34,6 +34,7 @@ TEST_PROGS += gre_gso.sh > TEST_PROGS += cmsg_so_mark.sh > TEST_PROGS += cmsg_time.sh cmsg_ipv6.sh > TEST_PROGS += netns-name.sh > +TEST_PROGS += netns_atomic.py > TEST_PROGS += nl_netdev.py > TEST_PROGS += srv6_end_dt46_l3vpn_test.sh > TEST_PROGS += srv6_end_dt4_l3vpn_test.sh > diff --git a/tools/testing/selftests/net/netns-name.sh b/tools/testing/selftests/net/netns-name.sh > index 6974474c26f3..0be1905d1f2f 100755 > --- a/tools/testing/selftests/net/netns-name.sh > +++ b/tools/testing/selftests/net/netns-name.sh > @@ -78,6 +78,16 @@ ip -netns $NS link show dev $ALT_NAME 2> /dev/null && > fail "Can still find alt-name after move" > ip -netns $test_ns link del $DEV || fail > > +# > +# Test no conflict of the same name/ifindex in different netns > +# > +ip -netns $NS link add name $DEV index 100 type dummy || fail > +ip -netns $NS link add netns $test_ns name $DEV index 100 type dummy || > + fail "Can create in netns without moving" > +ip -netns $test_ns link show dev $DEV >> /dev/null || fail "Device not found" > +ip -netns $NS link del $DEV || fail > +ip -netns $test_ns link del $DEV || fail > + > echo -ne "$(basename $0) \t\t\t\t" > if [ $RET_CODE -eq 0 ]; then > echo "[ OK ]" > diff --git a/tools/testing/selftests/net/netns_atomic.py b/tools/testing/selftests/net/netns_atomic.py > new file mode 100755 > index 000000000000..d350a3fc0a91 > --- /dev/null > +++ b/tools/testing/selftests/net/netns_atomic.py > @@ -0,0 +1,39 @@ > +#!/usr/bin/env python3 > +# SPDX-License-Identifier: GPL-2.0 > + > +import time > + > +from lib.py import ksft_run, ksft_exit, ksft_true > +from lib.py import ip > +from lib.py import NetNS, NetNSEnter > +from lib.py import RtnlFamily > + > + > +def test_event(ns1, ns2) -> None: > + with NetNSEnter(str(ns1)): > + rtnl = RtnlFamily() > + > + rtnl.ntf_subscribe("rtnlgrp-link") > + > + ip(f"netns set {ns1} 0", ns=str(ns2)) > + > + ip(f"link add netns {ns2} link-netnsid 0 dummy1 type dummy") > + ip(f"link add netns {ns2} dummy2 type dummy", ns=str(ns1)) > + > + ip("link del dummy1", ns=str(ns2)) > + ip("link del dummy2", ns=str(ns2)) > + > + time.sleep(1) > + rtnl.check_ntf() > + ksft_true(rtnl.async_msg_queue.empty(), > + "Received unexpected link notification") I think we need a much larger coverage here, possibly testing all the update drivers and more 'netns', 'link-netnsid', 'peer netns' permutations for the devices that allow them. Thanks, Paolo