selftests: Add ipv4 tcp tests to fcnal-test
Add tcp tests to fcnal-test.sh. Covers the permutations of directly connected addresses, routed destinations, VRF and non-VRF, and expected failures for both clients and servers. Includes permutations with net.ipv4.tcp_l3mdev_accept set to 0 and 1. Signed-off-by: David Ahern <dsahern@gmail.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
c0644e71df
commit
bbd7c76408
|
@ -711,6 +711,317 @@ ipv4_ping()
|
||||||
ipv4_ping_vrf
|
ipv4_ping_vrf
|
||||||
}
|
}
|
||||||
|
|
||||||
|
################################################################################
|
||||||
|
# IPv4 TCP
|
||||||
|
|
||||||
|
ipv4_tcp_novrf()
|
||||||
|
{
|
||||||
|
local a
|
||||||
|
|
||||||
|
#
|
||||||
|
# server tests
|
||||||
|
#
|
||||||
|
for a in ${NSA_IP} ${NSA_LO_IP}
|
||||||
|
do
|
||||||
|
log_start
|
||||||
|
run_cmd nettest -s &
|
||||||
|
sleep 1
|
||||||
|
run_cmd_nsb nettest -r ${a}
|
||||||
|
log_test_addr ${a} $? 0 "Global server"
|
||||||
|
done
|
||||||
|
|
||||||
|
a=${NSA_IP}
|
||||||
|
log_start
|
||||||
|
run_cmd nettest -s -d ${NSA_DEV} &
|
||||||
|
sleep 1
|
||||||
|
run_cmd_nsb nettest -r ${a}
|
||||||
|
log_test_addr ${a} $? 0 "Device server"
|
||||||
|
|
||||||
|
# verify TCP reset sent and received
|
||||||
|
for a in ${NSA_IP} ${NSA_LO_IP}
|
||||||
|
do
|
||||||
|
log_start
|
||||||
|
show_hint "Should fail 'Connection refused' since there is no server"
|
||||||
|
run_cmd_nsb nettest -r ${a}
|
||||||
|
log_test_addr ${a} $? 1 "No server"
|
||||||
|
done
|
||||||
|
|
||||||
|
#
|
||||||
|
# client
|
||||||
|
#
|
||||||
|
for a in ${NSB_IP} ${NSB_LO_IP}
|
||||||
|
do
|
||||||
|
log_start
|
||||||
|
run_cmd_nsb nettest -s &
|
||||||
|
sleep 1
|
||||||
|
run_cmd nettest -r ${a} -0 ${NSA_IP}
|
||||||
|
log_test_addr ${a} $? 0 "Client"
|
||||||
|
|
||||||
|
log_start
|
||||||
|
run_cmd_nsb nettest -s &
|
||||||
|
sleep 1
|
||||||
|
run_cmd nettest -r ${a} -d ${NSA_DEV}
|
||||||
|
log_test_addr ${a} $? 0 "Client, device bind"
|
||||||
|
|
||||||
|
log_start
|
||||||
|
show_hint "Should fail 'Connection refused'"
|
||||||
|
run_cmd nettest -r ${a}
|
||||||
|
log_test_addr ${a} $? 1 "No server, unbound client"
|
||||||
|
|
||||||
|
log_start
|
||||||
|
show_hint "Should fail 'Connection refused'"
|
||||||
|
run_cmd nettest -r ${a} -d ${NSA_DEV}
|
||||||
|
log_test_addr ${a} $? 1 "No server, device client"
|
||||||
|
done
|
||||||
|
|
||||||
|
#
|
||||||
|
# local address tests
|
||||||
|
#
|
||||||
|
for a in ${NSA_IP} ${NSA_LO_IP} 127.0.0.1
|
||||||
|
do
|
||||||
|
log_start
|
||||||
|
run_cmd nettest -s &
|
||||||
|
sleep 1
|
||||||
|
run_cmd nettest -r ${a} -0 ${a} -1 ${a}
|
||||||
|
log_test_addr ${a} $? 0 "Global server, local connection"
|
||||||
|
done
|
||||||
|
|
||||||
|
a=${NSA_IP}
|
||||||
|
log_start
|
||||||
|
run_cmd nettest -s -d ${NSA_DEV} &
|
||||||
|
sleep 1
|
||||||
|
run_cmd nettest -r ${a} -0 ${a}
|
||||||
|
log_test_addr ${a} $? 0 "Device server, unbound client, local connection"
|
||||||
|
|
||||||
|
for a in ${NSA_LO_IP} 127.0.0.1
|
||||||
|
do
|
||||||
|
log_start
|
||||||
|
show_hint "Should fail 'Connection refused' since addresses on loopback are out of device scope"
|
||||||
|
run_cmd nettest -s -d ${NSA_DEV} &
|
||||||
|
sleep 1
|
||||||
|
run_cmd nettest -r ${a}
|
||||||
|
log_test_addr ${a} $? 1 "Device server, unbound client, local connection"
|
||||||
|
done
|
||||||
|
|
||||||
|
a=${NSA_IP}
|
||||||
|
log_start
|
||||||
|
run_cmd nettest -s &
|
||||||
|
sleep 1
|
||||||
|
run_cmd nettest -r ${a} -0 ${a} -d ${NSA_DEV}
|
||||||
|
log_test_addr ${a} $? 0 "Global server, device client, local connection"
|
||||||
|
|
||||||
|
for a in ${NSA_LO_IP} 127.0.0.1
|
||||||
|
do
|
||||||
|
log_start
|
||||||
|
show_hint "Should fail 'No route to host' since addresses on loopback are out of device scope"
|
||||||
|
run_cmd nettest -s &
|
||||||
|
sleep 1
|
||||||
|
run_cmd nettest -r ${a} -d ${NSA_DEV}
|
||||||
|
log_test_addr ${a} $? 1 "Global server, device client, local connection"
|
||||||
|
done
|
||||||
|
|
||||||
|
a=${NSA_IP}
|
||||||
|
log_start
|
||||||
|
run_cmd nettest -s -d ${NSA_DEV} -2 ${NSA_DEV} &
|
||||||
|
sleep 1
|
||||||
|
run_cmd nettest -d ${NSA_DEV} -r ${a} -0 ${a}
|
||||||
|
log_test_addr ${a} $? 0 "Device server, device client, local connection"
|
||||||
|
|
||||||
|
log_start
|
||||||
|
show_hint "Should fail 'Connection refused'"
|
||||||
|
run_cmd nettest -d ${NSA_DEV} -r ${a}
|
||||||
|
log_test_addr ${a} $? 1 "No server, device client, local conn"
|
||||||
|
}
|
||||||
|
|
||||||
|
ipv4_tcp_vrf()
|
||||||
|
{
|
||||||
|
local a
|
||||||
|
|
||||||
|
# disable global server
|
||||||
|
log_subsection "Global server disabled"
|
||||||
|
|
||||||
|
set_sysctl net.ipv4.tcp_l3mdev_accept=0
|
||||||
|
|
||||||
|
#
|
||||||
|
# server tests
|
||||||
|
#
|
||||||
|
for a in ${NSA_IP} ${VRF_IP}
|
||||||
|
do
|
||||||
|
log_start
|
||||||
|
show_hint "Should fail 'Connection refused' since global server with VRF is disabled"
|
||||||
|
run_cmd nettest -s &
|
||||||
|
sleep 1
|
||||||
|
run_cmd_nsb nettest -r ${a}
|
||||||
|
log_test_addr ${a} $? 1 "Global server"
|
||||||
|
|
||||||
|
log_start
|
||||||
|
run_cmd nettest -s -d ${VRF} -2 ${VRF} &
|
||||||
|
sleep 1
|
||||||
|
run_cmd_nsb nettest -r ${a}
|
||||||
|
log_test_addr ${a} $? 0 "VRF server"
|
||||||
|
|
||||||
|
log_start
|
||||||
|
run_cmd nettest -s -d ${NSA_DEV} -2 ${NSA_DEV} &
|
||||||
|
sleep 1
|
||||||
|
run_cmd_nsb nettest -r ${a}
|
||||||
|
log_test_addr ${a} $? 0 "Device server"
|
||||||
|
|
||||||
|
# verify TCP reset received
|
||||||
|
log_start
|
||||||
|
show_hint "Should fail 'Connection refused' since there is no server"
|
||||||
|
run_cmd_nsb nettest -r ${a}
|
||||||
|
log_test_addr ${a} $? 1 "No server"
|
||||||
|
done
|
||||||
|
|
||||||
|
# local address tests
|
||||||
|
# (${VRF_IP} and 127.0.0.1 both timeout)
|
||||||
|
a=${NSA_IP}
|
||||||
|
log_start
|
||||||
|
show_hint "Should fail 'Connection refused' since global server with VRF is disabled"
|
||||||
|
run_cmd nettest -s &
|
||||||
|
sleep 1
|
||||||
|
run_cmd nettest -r ${a} -d ${NSA_DEV}
|
||||||
|
log_test_addr ${a} $? 1 "Global server, local connection"
|
||||||
|
|
||||||
|
#
|
||||||
|
# enable VRF global server
|
||||||
|
#
|
||||||
|
log_subsection "VRF Global server enabled"
|
||||||
|
set_sysctl net.ipv4.tcp_l3mdev_accept=1
|
||||||
|
|
||||||
|
for a in ${NSA_IP} ${VRF_IP}
|
||||||
|
do
|
||||||
|
log_start
|
||||||
|
show_hint "client socket should be bound to VRF"
|
||||||
|
run_cmd nettest -s -2 ${VRF} &
|
||||||
|
sleep 1
|
||||||
|
run_cmd_nsb nettest -r ${a}
|
||||||
|
log_test_addr ${a} $? 0 "Global server"
|
||||||
|
|
||||||
|
log_start
|
||||||
|
show_hint "client socket should be bound to VRF"
|
||||||
|
run_cmd nettest -s -d ${VRF} -2 ${VRF} &
|
||||||
|
sleep 1
|
||||||
|
run_cmd_nsb nettest -r ${a}
|
||||||
|
log_test_addr ${a} $? 0 "VRF server"
|
||||||
|
|
||||||
|
# verify TCP reset received
|
||||||
|
log_start
|
||||||
|
show_hint "Should fail 'Connection refused'"
|
||||||
|
run_cmd_nsb nettest -r ${a}
|
||||||
|
log_test_addr ${a} $? 1 "No server"
|
||||||
|
done
|
||||||
|
|
||||||
|
a=${NSA_IP}
|
||||||
|
log_start
|
||||||
|
show_hint "client socket should be bound to device"
|
||||||
|
run_cmd nettest -s -d ${NSA_DEV} -2 ${NSA_DEV} &
|
||||||
|
sleep 1
|
||||||
|
run_cmd_nsb nettest -r ${a}
|
||||||
|
log_test_addr ${a} $? 0 "Device server"
|
||||||
|
|
||||||
|
# local address tests
|
||||||
|
for a in ${NSA_IP} ${VRF_IP}
|
||||||
|
do
|
||||||
|
log_start
|
||||||
|
show_hint "Should fail 'No route to host' since client is not bound to VRF"
|
||||||
|
run_cmd nettest -s -2 ${VRF} &
|
||||||
|
sleep 1
|
||||||
|
run_cmd nettest -r ${a}
|
||||||
|
log_test_addr ${a} $? 1 "Global server, local connection"
|
||||||
|
done
|
||||||
|
|
||||||
|
#
|
||||||
|
# client
|
||||||
|
#
|
||||||
|
for a in ${NSB_IP} ${NSB_LO_IP}
|
||||||
|
do
|
||||||
|
log_start
|
||||||
|
run_cmd_nsb nettest -s &
|
||||||
|
sleep 1
|
||||||
|
run_cmd nettest -r ${a} -d ${VRF}
|
||||||
|
log_test_addr ${a} $? 0 "Client, VRF bind"
|
||||||
|
|
||||||
|
log_start
|
||||||
|
run_cmd_nsb nettest -s &
|
||||||
|
sleep 1
|
||||||
|
run_cmd nettest -r ${a} -d ${NSA_DEV}
|
||||||
|
log_test_addr ${a} $? 0 "Client, device bind"
|
||||||
|
|
||||||
|
log_start
|
||||||
|
show_hint "Should fail 'Connection refused'"
|
||||||
|
run_cmd nettest -r ${a} -d ${VRF}
|
||||||
|
log_test_addr ${a} $? 1 "No server, VRF client"
|
||||||
|
|
||||||
|
log_start
|
||||||
|
show_hint "Should fail 'Connection refused'"
|
||||||
|
run_cmd nettest -r ${a} -d ${NSA_DEV}
|
||||||
|
log_test_addr ${a} $? 1 "No server, device client"
|
||||||
|
done
|
||||||
|
|
||||||
|
for a in ${NSA_IP} ${VRF_IP} 127.0.0.1
|
||||||
|
do
|
||||||
|
log_start
|
||||||
|
run_cmd nettest -s -d ${VRF} -2 ${VRF} &
|
||||||
|
sleep 1
|
||||||
|
run_cmd nettest -r ${a} -d ${VRF} -0 ${a}
|
||||||
|
log_test_addr ${a} $? 0 "VRF server, VRF client, local connection"
|
||||||
|
done
|
||||||
|
|
||||||
|
a=${NSA_IP}
|
||||||
|
log_start
|
||||||
|
run_cmd nettest -s -d ${VRF} -2 ${VRF} &
|
||||||
|
sleep 1
|
||||||
|
run_cmd nettest -r ${a} -d ${NSA_DEV} -0 ${a}
|
||||||
|
log_test_addr ${a} $? 0 "VRF server, device client, local connection"
|
||||||
|
|
||||||
|
log_start
|
||||||
|
show_hint "Should fail 'No route to host' since client is out of VRF scope"
|
||||||
|
run_cmd nettest -s -d ${VRF} &
|
||||||
|
sleep 1
|
||||||
|
run_cmd nettest -r ${a}
|
||||||
|
log_test_addr ${a} $? 1 "VRF server, unbound client, local connection"
|
||||||
|
|
||||||
|
log_start
|
||||||
|
run_cmd nettest -s -d ${NSA_DEV} -2 ${NSA_DEV} &
|
||||||
|
sleep 1
|
||||||
|
run_cmd nettest -r ${a} -d ${VRF} -0 ${a}
|
||||||
|
log_test_addr ${a} $? 0 "Device server, VRF client, local connection"
|
||||||
|
|
||||||
|
log_start
|
||||||
|
run_cmd nettest -s -d ${NSA_DEV} -2 ${NSA_DEV} &
|
||||||
|
sleep 1
|
||||||
|
run_cmd nettest -r ${a} -d ${NSA_DEV} -0 ${a}
|
||||||
|
log_test_addr ${a} $? 0 "Device server, device client, local connection"
|
||||||
|
}
|
||||||
|
|
||||||
|
ipv4_tcp()
|
||||||
|
{
|
||||||
|
log_section "IPv4/TCP"
|
||||||
|
|
||||||
|
which nettest >/dev/null
|
||||||
|
if [ $? -ne 0 ]; then
|
||||||
|
log_error "nettest not found; skipping tests"
|
||||||
|
return
|
||||||
|
fi
|
||||||
|
|
||||||
|
log_subsection "No VRF"
|
||||||
|
setup
|
||||||
|
|
||||||
|
# tcp_l3mdev_accept should have no affect without VRF;
|
||||||
|
# run tests with it enabled and disabled to verify
|
||||||
|
log_subsection "tcp_l3mdev_accept disabled"
|
||||||
|
set_sysctl net.ipv4.tcp_l3mdev_accept=0
|
||||||
|
ipv4_tcp_novrf
|
||||||
|
log_subsection "tcp_l3mdev_accept enabled"
|
||||||
|
set_sysctl net.ipv4.tcp_l3mdev_accept=1
|
||||||
|
ipv4_tcp_novrf
|
||||||
|
|
||||||
|
log_subsection "With VRF"
|
||||||
|
setup "yes"
|
||||||
|
ipv4_tcp_vrf
|
||||||
|
}
|
||||||
|
|
||||||
################################################################################
|
################################################################################
|
||||||
# IPv6
|
# IPv6
|
||||||
|
|
||||||
|
@ -1012,7 +1323,7 @@ EOF
|
||||||
################################################################################
|
################################################################################
|
||||||
# main
|
# main
|
||||||
|
|
||||||
TESTS_IPV4="ipv4_ping"
|
TESTS_IPV4="ipv4_ping ipv4_tcp"
|
||||||
TESTS_IPV6="ipv6_ping"
|
TESTS_IPV6="ipv6_ping"
|
||||||
PAUSE_ON_FAIL=no
|
PAUSE_ON_FAIL=no
|
||||||
PAUSE=no
|
PAUSE=no
|
||||||
|
@ -1052,6 +1363,8 @@ for t in $TESTS
|
||||||
do
|
do
|
||||||
case $t in
|
case $t in
|
||||||
ipv4_ping|ping) ipv4_ping;;
|
ipv4_ping|ping) ipv4_ping;;
|
||||||
|
ipv4_tcp|tcp) ipv4_tcp;;
|
||||||
|
|
||||||
ipv6_ping|ping6) ipv6_ping;;
|
ipv6_ping|ping6) ipv6_ping;;
|
||||||
|
|
||||||
# setup namespaces and config, but do not run any tests
|
# setup namespaces and config, but do not run any tests
|
||||||
|
|
Loading…
Reference in New Issue