]> git.itanic.dy.fi Git - linux-stable/commitdiff
selftests/net: convert traceroute.sh to run it in unique namespace
authorHangbin Liu <liuhangbin@gmail.com>
Sat, 2 Dec 2023 02:01:03 +0000 (10:01 +0800)
committerPaolo Abeni <pabeni@redhat.com>
Tue, 5 Dec 2023 12:00:56 +0000 (13:00 +0100)
Here is the test result after conversion.

]# ./traceroute.sh
TEST: IPV6 traceroute                                               [ OK ]
TEST: IPV4 traceroute                                               [ OK ]

Tests passed:   2
Tests failed:   0

Acked-by: David Ahern <dsahern@kernel.org>
Signed-off-by: Hangbin Liu <liuhangbin@gmail.com>
Signed-off-by: Paolo Abeni <pabeni@redhat.com>
tools/testing/selftests/net/traceroute.sh

index de9ca97abc3062d5bb582190f4de935ab4b6efeb..282f14760940dd7acd56513ae3686ca6c4bfa932 100755 (executable)
@@ -4,6 +4,7 @@
 # Run traceroute/traceroute6 tests
 #
 
+source lib.sh
 VERBOSE=0
 PAUSE_ON_FAIL=no
 
@@ -69,9 +70,6 @@ create_ns()
        [ -z "${addr}" ] && addr="-"
        [ -z "${addr6}" ] && addr6="-"
 
-       ip netns add ${ns}
-
-       ip netns exec ${ns} ip link set lo up
        if [ "${addr}" != "-" ]; then
                ip netns exec ${ns} ip addr add dev lo ${addr}
        fi
@@ -160,12 +158,7 @@ connect_ns()
 
 cleanup_traceroute6()
 {
-       local ns
-
-       for ns in host-1 host-2 router-1 router-2
-       do
-               ip netns del ${ns} 2>/dev/null
-       done
+       cleanup_ns $h1 $h2 $r1 $r2
 }
 
 setup_traceroute6()
@@ -176,33 +169,34 @@ setup_traceroute6()
        cleanup_traceroute6
 
        set -e
-       create_ns host-1
-       create_ns host-2
-       create_ns router-1
-       create_ns router-2
+       setup_ns h1 h2 r1 r2
+       create_ns $h1
+       create_ns $h2
+       create_ns $r1
+       create_ns $r2
 
        # Setup N3
-       connect_ns router-2 eth3 - 2000:103::2/64 host-2 eth3 - 2000:103::4/64
-       ip netns exec host-2 ip route add default via 2000:103::2
+       connect_ns $r2 eth3 - 2000:103::2/64 $h2 eth3 - 2000:103::4/64
+       ip netns exec $h2 ip route add default via 2000:103::2
 
        # Setup N2
-       connect_ns router-1 eth2 - 2000:102::1/64 router-2 eth2 - 2000:102::2/64
-       ip netns exec router-1 ip route add default via 2000:102::2
+       connect_ns $r1 eth2 - 2000:102::1/64 $r2 eth2 - 2000:102::2/64
+       ip netns exec $r1 ip route add default via 2000:102::2
 
        # Setup N1. host-1 and router-2 connect to a bridge in router-1.
-       ip netns exec router-1 ip link add name ${brdev} type bridge
-       ip netns exec router-1 ip link set ${brdev} up
-       ip netns exec router-1 ip addr add 2000:101::1/64 dev ${brdev}
+       ip netns exec $r1 ip link add name ${brdev} type bridge
+       ip netns exec $r1 ip link set ${brdev} up
+       ip netns exec $r1 ip addr add 2000:101::1/64 dev ${brdev}
 
-       connect_ns host-1 eth0 - 2000:101::3/64 router-1 eth0 - -
-       ip netns exec router-1 ip link set dev eth0 master ${brdev}
-       ip netns exec host-1 ip route add default via 2000:101::1
+       connect_ns $h1 eth0 - 2000:101::3/64 $r1 eth0 - -
+       ip netns exec $r1 ip link set dev eth0 master ${brdev}
+       ip netns exec $h1 ip route add default via 2000:101::1
 
-       connect_ns router-2 eth1 - 2000:101::2/64 router-1 eth1 - -
-       ip netns exec router-1 ip link set dev eth1 master ${brdev}
+       connect_ns $r2 eth1 - 2000:101::2/64 $r1 eth1 - -
+       ip netns exec $r1 ip link set dev eth1 master ${brdev}
 
        # Prime the network
-       ip netns exec host-1 ping6 -c5 2000:103::4 >/dev/null 2>&1
+       ip netns exec $h1 ping6 -c5 2000:103::4 >/dev/null 2>&1
 
        set +e
 }
@@ -217,7 +211,7 @@ run_traceroute6()
        setup_traceroute6
 
        # traceroute6 host-2 from host-1 (expects 2000:102::2)
-       run_cmd host-1 "traceroute6 2000:103::4 | grep -q 2000:102::2"
+       run_cmd $h1 "traceroute6 2000:103::4 | grep -q 2000:102::2"
        log_test $? 0 "IPV6 traceroute"
 
        cleanup_traceroute6
@@ -240,12 +234,7 @@ run_traceroute6()
 
 cleanup_traceroute()
 {
-       local ns
-
-       for ns in host-1 host-2 router
-       do
-               ip netns del ${ns} 2>/dev/null
-       done
+       cleanup_ns $h1 $h2 $router
 }
 
 setup_traceroute()
@@ -254,24 +243,25 @@ setup_traceroute()
        cleanup_traceroute
 
        set -e
-       create_ns host-1
-       create_ns host-2
-       create_ns router
+       setup_ns h1 h2 router
+       create_ns $h1
+       create_ns $h2
+       create_ns $router
 
-       connect_ns host-1 eth0 1.0.1.3/24 - \
-                  router eth1 1.0.3.1/24 -
-       ip netns exec host-1 ip route add default via 1.0.1.1
+       connect_ns $h1 eth0 1.0.1.3/24 - \
+                  $router eth1 1.0.3.1/24 -
+       ip netns exec $h1 ip route add default via 1.0.1.1
 
-       ip netns exec router ip addr add 1.0.1.1/24 dev eth1
-       ip netns exec router sysctl -qw \
+       ip netns exec $router ip addr add 1.0.1.1/24 dev eth1
+       ip netns exec $router sysctl -qw \
                                net.ipv4.icmp_errors_use_inbound_ifaddr=1
 
-       connect_ns host-2 eth0 1.0.2.4/24 - \
-                  router eth2 1.0.2.1/24 -
-       ip netns exec host-2 ip route add default via 1.0.2.1
+       connect_ns $h2 eth0 1.0.2.4/24 - \
+                  $router eth2 1.0.2.1/24 -
+       ip netns exec $h2 ip route add default via 1.0.2.1
 
        # Prime the network
-       ip netns exec host-1 ping -c5 1.0.2.4 >/dev/null 2>&1
+       ip netns exec $h1 ping -c5 1.0.2.4 >/dev/null 2>&1
 
        set +e
 }
@@ -286,7 +276,7 @@ run_traceroute()
        setup_traceroute
 
        # traceroute host-2 from host-1 (expects 1.0.1.1). Takes a while.
-       run_cmd host-1 "traceroute 1.0.2.4 | grep -q 1.0.1.1"
+       run_cmd $h1 "traceroute 1.0.2.4 | grep -q 1.0.1.1"
        log_test $? 0 "IPV4 traceroute"
 
        cleanup_traceroute