Commit baf37f21 authored by Hangbin Liu's avatar Hangbin Liu Committed by Paolo Abeni

selftests/net: convert traceroute.sh to run it in unique namespace

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: default avatarDavid Ahern <dsahern@kernel.org>
Signed-off-by: default avatarHangbin Liu <liuhangbin@gmail.com>
Signed-off-by: default avatarPaolo Abeni <pabeni@redhat.com>
parent 0d8b4887
...@@ -4,6 +4,7 @@ ...@@ -4,6 +4,7 @@
# Run traceroute/traceroute6 tests # Run traceroute/traceroute6 tests
# #
source lib.sh
VERBOSE=0 VERBOSE=0
PAUSE_ON_FAIL=no PAUSE_ON_FAIL=no
...@@ -69,9 +70,6 @@ create_ns() ...@@ -69,9 +70,6 @@ create_ns()
[ -z "${addr}" ] && addr="-" [ -z "${addr}" ] && addr="-"
[ -z "${addr6}" ] && addr6="-" [ -z "${addr6}" ] && addr6="-"
ip netns add ${ns}
ip netns exec ${ns} ip link set lo up
if [ "${addr}" != "-" ]; then if [ "${addr}" != "-" ]; then
ip netns exec ${ns} ip addr add dev lo ${addr} ip netns exec ${ns} ip addr add dev lo ${addr}
fi fi
...@@ -160,12 +158,7 @@ connect_ns() ...@@ -160,12 +158,7 @@ connect_ns()
cleanup_traceroute6() cleanup_traceroute6()
{ {
local ns cleanup_ns $h1 $h2 $r1 $r2
for ns in host-1 host-2 router-1 router-2
do
ip netns del ${ns} 2>/dev/null
done
} }
setup_traceroute6() setup_traceroute6()
...@@ -176,33 +169,34 @@ setup_traceroute6() ...@@ -176,33 +169,34 @@ setup_traceroute6()
cleanup_traceroute6 cleanup_traceroute6
set -e set -e
create_ns host-1 setup_ns h1 h2 r1 r2
create_ns host-2 create_ns $h1
create_ns router-1 create_ns $h2
create_ns router-2 create_ns $r1
create_ns $r2
# Setup N3 # Setup N3
connect_ns router-2 eth3 - 2000:103::2/64 host-2 eth3 - 2000:103::4/64 connect_ns $r2 eth3 - 2000:103::2/64 $h2 eth3 - 2000:103::4/64
ip netns exec host-2 ip route add default via 2000:103::2 ip netns exec $h2 ip route add default via 2000:103::2
# Setup N2 # Setup N2
connect_ns router-1 eth2 - 2000:102::1/64 router-2 eth2 - 2000:102::2/64 connect_ns $r1 eth2 - 2000:102::1/64 $r2 eth2 - 2000:102::2/64
ip netns exec router-1 ip route add default via 2000:102::2 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. # 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 $r1 ip link add name ${brdev} type bridge
ip netns exec router-1 ip link set ${brdev} up ip netns exec $r1 ip link set ${brdev} up
ip netns exec router-1 ip addr add 2000:101::1/64 dev ${brdev} 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 - - connect_ns $h1 eth0 - 2000:101::3/64 $r1 eth0 - -
ip netns exec router-1 ip link set dev eth0 master ${brdev} ip netns exec $r1 ip link set dev eth0 master ${brdev}
ip netns exec host-1 ip route add default via 2000:101::1 ip netns exec $h1 ip route add default via 2000:101::1
connect_ns router-2 eth1 - 2000:101::2/64 router-1 eth1 - - connect_ns $r2 eth1 - 2000:101::2/64 $r1 eth1 - -
ip netns exec router-1 ip link set dev eth1 master ${brdev} ip netns exec $r1 ip link set dev eth1 master ${brdev}
# Prime the network # 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 set +e
} }
...@@ -217,7 +211,7 @@ run_traceroute6() ...@@ -217,7 +211,7 @@ run_traceroute6()
setup_traceroute6 setup_traceroute6
# traceroute6 host-2 from host-1 (expects 2000:102::2) # 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" log_test $? 0 "IPV6 traceroute"
cleanup_traceroute6 cleanup_traceroute6
...@@ -240,12 +234,7 @@ run_traceroute6() ...@@ -240,12 +234,7 @@ run_traceroute6()
cleanup_traceroute() cleanup_traceroute()
{ {
local ns cleanup_ns $h1 $h2 $router
for ns in host-1 host-2 router
do
ip netns del ${ns} 2>/dev/null
done
} }
setup_traceroute() setup_traceroute()
...@@ -254,24 +243,25 @@ setup_traceroute() ...@@ -254,24 +243,25 @@ setup_traceroute()
cleanup_traceroute cleanup_traceroute
set -e set -e
create_ns host-1 setup_ns h1 h2 router
create_ns host-2 create_ns $h1
create_ns router create_ns $h2
create_ns $router
connect_ns host-1 eth0 1.0.1.3/24 - \ connect_ns $h1 eth0 1.0.1.3/24 - \
router eth1 1.0.3.1/24 - $router eth1 1.0.3.1/24 -
ip netns exec host-1 ip route add default via 1.0.1.1 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 ip addr add 1.0.1.1/24 dev eth1
ip netns exec router sysctl -qw \ ip netns exec $router sysctl -qw \
net.ipv4.icmp_errors_use_inbound_ifaddr=1 net.ipv4.icmp_errors_use_inbound_ifaddr=1
connect_ns host-2 eth0 1.0.2.4/24 - \ connect_ns $h2 eth0 1.0.2.4/24 - \
router eth2 1.0.2.1/24 - $router eth2 1.0.2.1/24 -
ip netns exec host-2 ip route add default via 1.0.2.1 ip netns exec $h2 ip route add default via 1.0.2.1
# Prime the network # 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 set +e
} }
...@@ -286,7 +276,7 @@ run_traceroute() ...@@ -286,7 +276,7 @@ run_traceroute()
setup_traceroute setup_traceroute
# traceroute host-2 from host-1 (expects 1.0.1.1). Takes a while. # 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" log_test $? 0 "IPV4 traceroute"
cleanup_traceroute cleanup_traceroute
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment