@@ -1 +1,2 @@
CONFIG_MPTCP=y
+CONFIG_MPTCP_IPV6=y
@@ -124,47 +124,41 @@ ip link add ns2eth3 netns "$ns2" type veth peer name ns3eth2 netns "$ns3"
ip link add ns3eth4 netns "$ns3" type veth peer name ns4eth3 netns "$ns4"
ip -net "$ns1" addr add 10.0.1.1/24 dev ns1eth2
-if $ipv6 ; then
- ip -net "$ns1" addr add dead:beef:1::1/64 dev ns1eth2
- if [ $? -ne 0 ] ;then
- echo "SKIP: Can't add ipv6 address, skip ipv6 tests" 1>&2
- ipv6=false
- fi
-fi
+ip -net "$ns1" addr add dead:beef:1::1/64 dev ns1eth2
ip -net "$ns1" link set ns1eth2 up
ip -net "$ns1" route add default via 10.0.1.2
-$ipv6 && ip -net "$ns1" route add default via dead:beef:1::2
+ip -net "$ns1" route add default via dead:beef:1::2
ip -net "$ns2" addr add 10.0.1.2/24 dev ns2eth1
-$ipv6 && ip -net "$ns2" addr add dead:beef:1::2/64 dev ns2eth1
+ip -net "$ns2" addr add dead:beef:1::2/64 dev ns2eth1
ip -net "$ns2" link set ns2eth1 up
ip -net "$ns2" addr add 10.0.2.1/24 dev ns2eth3
-$ipv6 && ip -net "$ns2" addr add dead:beef:2::1/64 dev ns2eth3
+ip -net "$ns2" addr add dead:beef:2::1/64 dev ns2eth3
ip -net "$ns2" link set ns2eth3 up
ip -net "$ns2" route add default via 10.0.2.2
-$ipv6 && ip -net "$ns2" route add default via dead:beef:2::2
+ip -net "$ns2" route add default via dead:beef:2::2
ip netns exec "$ns2" sysctl -q net.ipv4.ip_forward=1
-$ipv6 && ip netns exec "$ns2" sysctl -q net.ipv6.conf.all.forwarding=1
+ip netns exec "$ns2" sysctl -q net.ipv6.conf.all.forwarding=1
ip -net "$ns3" addr add 10.0.2.2/24 dev ns3eth2
-$ipv6 && ip -net "$ns3" addr add dead:beef:2::2/64 dev ns3eth2
+ip -net "$ns3" addr add dead:beef:2::2/64 dev ns3eth2
ip -net "$ns3" link set ns3eth2 up
ip -net "$ns3" addr add 10.0.3.2/24 dev ns3eth4
-$ipv6 && ip -net "$ns3" addr add dead:beef:3::2/64 dev ns3eth4
+ip -net "$ns3" addr add dead:beef:3::2/64 dev ns3eth4
ip -net "$ns3" link set ns3eth4 up
ip -net "$ns3" route add default via 10.0.2.1
-$ipv6 && ip -net "$ns3" route add default via dead:beef:2::1
+ip -net "$ns3" route add default via dead:beef:2::1
ip netns exec "$ns3" sysctl -q net.ipv4.ip_forward=1
-$ipv6 && ip netns exec "$ns3" sysctl -q net.ipv6.conf.all.forwarding=1
+ip netns exec "$ns3" sysctl -q net.ipv6.conf.all.forwarding=1
ip -net "$ns4" addr add 10.0.3.1/24 dev ns4eth3
-$ipv6 && ip -net "$ns4" addr add dead:beef:3::1/64 dev ns4eth3
+ip -net "$ns4" addr add dead:beef:3::1/64 dev ns4eth3
ip -net "$ns4" link set ns4eth3 up
ip -net "$ns4" route add default via 10.0.3.2
-$ipv6 && ip -net "$ns4" route add default via dead:beef:3::2
+ip -net "$ns4" route add default via dead:beef:3::2
set_ethtool_flags() {
local ns="$1"
@@ -272,12 +266,22 @@ check_mptcp_ulp_setsockopt()
return $retval
}
+# $1: IP address
+is_v6()
+{
+ [ -z "${1##*:*}" ]
+}
+
do_ping()
{
local listener_ns="$1"
local connector_ns="$2"
local connect_addr="$3"
+ if ! $ipv6 && is_v6 "${connect_addr}"; then
+ return 0
+ fi
+
ip netns exec ${connector_ns} ping -q -c 1 $connect_addr >/dev/null
if [ $? -ne 0 ] ; then
echo "$listener_ns -> $connect_addr connectivity [ FAIL ]" 1>&2
@@ -420,8 +424,7 @@ run_tests_lo()
local listener_ns="$1"
local connector_ns="$2"
local connect_addr="$3"
- local local_addr="$4"
- local loopback="$5"
+ local loopback="$4"
local lret=0
# skip if test programs are running inside same netns for subsequent runs.
@@ -429,6 +432,18 @@ run_tests_lo()
return 0
fi
+ # skip if we don't want v6
+ if ! $ipv6 && is_v6 "${connect_addr}"; then
+ return 0
+ fi
+
+ local local_addr
+ if is_v6 "${connect_addr}"; then
+ local_addr="::"
+ else
+ local_addr="0.0.0.0"
+ fi
+
do_transfer ${listener_ns} ${connector_ns} MPTCP MPTCP ${connect_addr} ${local_addr}
lret=$?
if [ $lret -ne 0 ]; then
@@ -460,7 +475,7 @@ run_tests_lo()
run_tests()
{
- run_tests_lo $1 $2 $3 $4 0
+ run_tests_lo $1 $2 $3 0
}
make_file "$cin" "client"
@@ -479,36 +494,28 @@ show_all_ipv6()
}
# Allow DAD to finish
-if $ipv6; then
- for dad in $(seq 20); do
- show_all_ipv6 | grep -q -e tentative -e temporary || break
- sleep 0.1
- done
-fi
+for dad in $(seq 20); do
+ show_all_ipv6 | grep -q -e tentative -e temporary || break
+ sleep 0.1
+done
echo "INFO: validating network environment with pings"
for sender in "$ns1" "$ns2" "$ns3" "$ns4";do
do_ping "$ns1" $sender 10.0.1.1
- if $ipv6;then
- do_ping "$ns1" $sender dead:beef:1::1
- if [ $? -ne 0 ]; then
- echo "SKIP: IPv6 tests" 2>&1
- ipv6=false
- fi
- fi
+ do_ping "$ns1" $sender dead:beef:1::1
do_ping "$ns2" $sender 10.0.1.2
- $ipv6 && do_ping "$ns2" $sender dead:beef:1::2
+ do_ping "$ns2" $sender dead:beef:1::2
do_ping "$ns2" $sender 10.0.2.1
- $ipv6 && do_ping "$ns2" $sender dead:beef:2::1
+ do_ping "$ns2" $sender dead:beef:2::1
do_ping "$ns3" $sender 10.0.2.2
- $ipv6 && do_ping "$ns3" $sender dead:beef:2::2
+ do_ping "$ns3" $sender dead:beef:2::2
do_ping "$ns3" $sender 10.0.3.2
- $ipv6 && do_ping "$ns3" $sender dead:beef:3::2
+ do_ping "$ns3" $sender dead:beef:3::2
do_ping "$ns4" $sender 10.0.3.1
- $ipv6 && do_ping "$ns4" $sender dead:beef:3::1
+ do_ping "$ns4" $sender dead:beef:3::1
done
[ -n "$tc_loss" ] && tc -net "$ns2" qdisc add dev ns2eth3 root netem loss random $tc_loss
@@ -537,32 +544,29 @@ echo "on ns3eth4"
tc -net "$ns3" qdisc add dev ns3eth4 root netem delay ${tc_delay}ms $tc_reorder
for sender in $ns1 $ns2 $ns3 $ns4;do
- run_tests_lo "$ns1" "$sender" 10.0.1.1 0.0.0.0 1
+ run_tests_lo "$ns1" "$sender" 10.0.1.1 1
if [ $ret -ne 0 ] ;then
echo "FAIL: Could not even run loopback test" 1>&2
exit $ret
fi
- if $ipv6;then
- run_tests_lo "$ns1" $sender dead:beef:1::1 :: 1
- if [ $? -ne 0 ] ;then
- echo "SKIP: IPv6 tests" 2>&1
- ret=0
- ipv6=false
- fi
+ run_tests_lo "$ns1" $sender dead:beef:1::1 1
+ if [ $ret -ne 0 ] ;then
+ echo "FAIL: Could not even run loopback v6 test" 2>&1
+ exit $ret
fi
- run_tests "$ns2" $sender 10.0.1.2 0.0.0.0
- $ipv6 && run_tests "$ns2" $sender dead:beef:1::2 ::
- run_tests "$ns2" $sender 10.0.2.1 0.0.0.0
- $ipv6 && run_tests "$ns2" $sender dead:beef:2::1 ::
+ run_tests "$ns2" $sender 10.0.1.2
+ run_tests "$ns2" $sender dead:beef:1::2
+ run_tests "$ns2" $sender 10.0.2.1
+ run_tests "$ns2" $sender dead:beef:2::1
- run_tests "$ns3" $sender 10.0.2.2 0.0.0.0
- $ipv6 && run_tests "$ns3" $sender dead:beef:2::2 ::
- run_tests "$ns3" $sender 10.0.3.2 0.0.0.0
- $ipv6 && run_tests "$ns3" $sender dead:beef:3::2 ::
+ run_tests "$ns3" $sender 10.0.2.2
+ run_tests "$ns3" $sender dead:beef:2::2
+ run_tests "$ns3" $sender 10.0.3.2
+ run_tests "$ns3" $sender dead:beef:3::2
- run_tests "$ns4" $sender 10.0.3.1 0.0.0.0
- $ipv6 && run_tests "$ns4" $sender dead:beef:3::1 ::
+ run_tests "$ns4" $sender 10.0.3.1
+ run_tests "$ns4" $sender dead:beef:3::1
done
time_end=$(date +%s)
We want our stack to be tested with v6, better to force the kconfig accordingly then. Also if we are sure we have IPv6 support, we can simplify the script to always setup the IPv6 config but not launch IPv6 tests. We can then now have result in ~15/20 seconds with the "-4" option. Signed-off-by: Matthieu Baerts <matthieu.baerts@tessares.net> --- Notes: to be squashed in "mptcp: add basic kselftest for mptcp" tools/testing/selftests/net/mptcp/config | 1 + .../selftests/net/mptcp/mptcp_connect.sh | 118 +++++++++--------- 2 files changed, 62 insertions(+), 57 deletions(-)