diff options
Diffstat (limited to 'contrib/netbsd-tests/net/icmp')
-rw-r--r-- | contrib/netbsd-tests/net/icmp/t_forward.c | 6 | ||||
-rwxr-xr-x | contrib/netbsd-tests/net/icmp/t_icmp6_redirect.sh | 152 | ||||
-rwxr-xr-x | contrib/netbsd-tests/net/icmp/t_icmp_redirect.sh | 285 | ||||
-rw-r--r-- | contrib/netbsd-tests/net/icmp/t_ping.c | 8 | ||||
-rwxr-xr-x | contrib/netbsd-tests/net/icmp/t_ping2.sh | 4 |
5 files changed, 446 insertions, 9 deletions
diff --git a/contrib/netbsd-tests/net/icmp/t_forward.c b/contrib/netbsd-tests/net/icmp/t_forward.c index d0c23cc..d418027 100644 --- a/contrib/netbsd-tests/net/icmp/t_forward.c +++ b/contrib/netbsd-tests/net/icmp/t_forward.c @@ -1,4 +1,4 @@ -/* $NetBSD: t_forward.c,v 1.8 2012/03/18 09:46:50 jruoho Exp $ */ +/* $NetBSD: t_forward.c,v 1.9 2015/02/26 13:03:21 martin Exp $ */ /*- * Copyright (c) 2010 The NetBSD Foundation, Inc. @@ -29,7 +29,7 @@ #include <sys/cdefs.h> #ifndef lint -__RCSID("$NetBSD: t_forward.c,v 1.8 2012/03/18 09:46:50 jruoho Exp $"); +__RCSID("$NetBSD: t_forward.c,v 1.9 2015/02/26 13:03:21 martin Exp $"); #endif /* not lint */ #include <sys/types.h> @@ -129,7 +129,7 @@ ATF_TC_HEAD(returndatabytes, tc) atf_tc_set_md_var(tc, "descr", "icmp.returndatabytes with certain " "packets can cause kernel panic (PR kern/43548)"); - atf_tc_set_md_var(tc, "timeout", "4"); /* just in case */ + atf_tc_set_md_var(tc, "timeout", "20"); /* just in case */ } ATF_TC_BODY(returndatabytes, tc) diff --git a/contrib/netbsd-tests/net/icmp/t_icmp6_redirect.sh b/contrib/netbsd-tests/net/icmp/t_icmp6_redirect.sh new file mode 100755 index 0000000..5dcdc9c --- /dev/null +++ b/contrib/netbsd-tests/net/icmp/t_icmp6_redirect.sh @@ -0,0 +1,152 @@ +# $NetBSD: t_icmp6_redirect.sh,v 1.7 2016/11/25 08:51:16 ozaki-r Exp $ +# +# Copyright (c) 2015 Internet Initiative Japan Inc. +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions +# are met: +# 1. Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# 2. Redistributions in binary form must reproduce the above copyright +# notice, this list of conditions and the following disclaimer in the +# documentation and/or other materials provided with the distribution. +# +# THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS +# ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED +# TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +# PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS +# BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +# CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +# POSSIBILITY OF SUCH DAMAGE. +# + +SOCK_LOCAL=unix://commsock1 +SOCK_PEER=unix://commsock2 +SOCK_GW1=unix://commsock3 +SOCK_GW2=unix://commsock4 + +BUS1=bus1 +BUS2=bus2 +IP6BUS1=fc00:1::/64 +IP6BUS2=fc00:2::/64 +IP6IF0_LOCAL=fc00:1::2 +IP6IF0_PEER=fc00:2::2 +IP6IF0_GW1=fc00:1::1 +IP6IF1_GW1=fc00:2::1 +IP6IF0_GW2=fc00:1::3 + +REDIRECT_TIMEOUT=5 + +DEBUG=${DEBUG:-true} + +atf_test_case icmp6_redirect_basic cleanup + +icmp6_redirect_basic_head() +{ + + atf_set "descr" "Test for the basically function of the ICMP6 redirect" + atf_set "require.progs" "rump_server rump.route rump.ping rump.ifconfig" +} + +icmp6_redirect_basic_body() +{ + local gw1_lladdr0= + local gw1_lladdr1= + local gw2_lladdr0= + + rump_server_start $SOCK_LOCAL netinet6 + rump_server_start $SOCK_PEER netinet6 + rump_server_start $SOCK_GW1 netinet6 + rump_server_start $SOCK_GW2 netinet6 + + # + # Setup + # + # Setup gateway #1 (real gateway) + export RUMP_SERVER=${SOCK_GW1} + rump_server_add_iface $SOCK_GW1 shmif0 $BUS1 + rump_server_add_iface $SOCK_GW1 shmif1 $BUS2 + + atf_check -s exit:0 rump.ifconfig shmif0 inet6 ${IP6IF0_GW1} + atf_check -s exit:0 rump.ifconfig shmif0 up + atf_check -s exit:0 rump.ifconfig shmif1 inet6 ${IP6IF1_GW1} + atf_check -s exit:0 rump.ifconfig shmif1 up + + atf_check -s exit:0 -o match:'0.->.1' rump.sysctl -w \ + net.inet6.ip6.forwarding=1 + unset RUMP_SERVER + + gw1_lladdr0=`get_linklocal_addr ${SOCK_GW1} shmif0` + gw1_lladdr1=`get_linklocal_addr ${SOCK_GW1} shmif1` + + # Setup a peer behind gateway #1 + export RUMP_SERVER=${SOCK_PEER} + rump_server_add_iface $SOCK_PEER shmif0 $BUS2 + atf_check -s exit:0 rump.ifconfig shmif0 inet6 ${IP6IF0_PEER} + atf_check -s exit:0 rump.ifconfig shmif0 up + atf_check -s exit:0 -o ignore rump.route add \ + -inet6 default ${gw1_lladdr1}%shmif0 + unset RUMP_SERVER + + # Setup gateway #2 (fake gateway) + export RUMP_SERVER=${SOCK_GW2} + rump_server_add_iface $SOCK_GW2 shmif0 $BUS1 + atf_check -s exit:0 rump.ifconfig shmif0 inet6 ${IP6IF0_GW2} + atf_check -s exit:0 rump.ifconfig shmif0 up + + atf_check -s exit:0 -o ignore rump.route add \ + -inet6 ${IP6BUS2} ${gw1_lladdr0}%shmif0 + atf_check -s exit:0 -o match:'0.->.1' rump.sysctl -w \ + net.inet6.ip6.forwarding=1 + unset RUMP_SERVER + + gw2_lladdr0=`get_linklocal_addr ${SOCK_GW2} shmif0` + + export RUMP_SERVER=${SOCK_LOCAL} + rump_server_add_iface $SOCK_LOCAL shmif0 $BUS1 + atf_check -s exit:0 rump.ifconfig shmif0 inet6 ${IP6IF0_LOCAL} + atf_check -s exit:0 rump.ifconfig shmif0 up + + # Teach the fake gateway as the default gateway + atf_check -s exit:0 -o ignore rump.route add \ + -inet6 default ${gw2_lladdr0}%shmif0 + $DEBUG && rump.route get -inet6 ${IP6IF0_PEER} + + atf_check -s exit:0 -o ignore rump.sysctl -w \ + net.inet6.icmp6.redirtimeout=$REDIRECT_TIMEOUT + + # + # Tests + # + atf_check -s exit:0 -o ignore rump.ping6 -c 1 -n ${IP6IF0_PEER} + $DEBUG && rump.route show -inet6 + # Check if a created route is correctly redirected to gateway #1 + atf_check -s exit:0 -o match:"gateway: ${gw1_lladdr0}" rump.route get \ + -inet6 ${IP6IF0_PEER} + + atf_check -s exit:0 sleep $((REDIRECT_TIMEOUT + 2)) + $DEBUG && rump.route show -inet6 + # Check if the created route is expired + atf_check -s exit:0 -o not-match:"gateway: ${gw1_lladdr0}" rump.route get \ + -inet6 ${IP6IF0_PEER} + + rump_server_destroy_ifaces +} + +icmp6_redirect_basic_cleanup() +{ + + $DEBUG && dump + cleanup +} + +atf_init_test_cases() +{ + + atf_add_test_case icmp6_redirect_basic +} diff --git a/contrib/netbsd-tests/net/icmp/t_icmp_redirect.sh b/contrib/netbsd-tests/net/icmp/t_icmp_redirect.sh new file mode 100755 index 0000000..6697216 --- /dev/null +++ b/contrib/netbsd-tests/net/icmp/t_icmp_redirect.sh @@ -0,0 +1,285 @@ +# $NetBSD: t_icmp_redirect.sh,v 1.6 2016/11/25 08:51:16 ozaki-r Exp $ +# +# Copyright (c) 2015 The NetBSD Foundation, Inc. +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions +# are met: +# 1. Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# 2. Redistributions in binary form must reproduce the above copyright +# notice, this list of conditions and the following disclaimer in the +# documentation and/or other materials provided with the distribution. +# +# THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS +# ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED +# TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +# PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS +# BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +# CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +# POSSIBILITY OF SUCH DAMAGE. +# + +# Most codes are derived from tests/net/route/t_flags.sh + +SOCK_LOCAL=unix://commsock1 +SOCK_PEER=unix://commsock2 +SOCK_GW=unix://commsock3 +BUS=bus1 +BUS2=bus2 +REDIRECT_TIMEOUT=5 + +DEBUG=${DEBUG:-false} + +atf_test_case icmp_redirect_timeout cleanup + +icmp_redirect_timeout_head() +{ + + atf_set "descr" "Tests for ICMP redirect timeout"; + atf_set "require.progs" "rump_server"; +} + +setup_local() +{ + + rump_server_start $SOCK_LOCAL + rump_server_add_iface $SOCK_LOCAL shmif0 $BUS + + export RUMP_SERVER=$SOCK_LOCAL + atf_check -s exit:0 -o ignore rump.ifconfig shmif0 10.0.0.2/24 + atf_check -s exit:0 -o ignore rump.ifconfig shmif0 up + + atf_check -s exit:0 -o ignore rump.sysctl -w \ + net.inet.icmp.redirtimeout=$REDIRECT_TIMEOUT + + $DEBUG && rump.ifconfig + $DEBUG && rump.netstat -rn -f inet +} + +setup_peer() +{ + + rump_server_start $SOCK_PEER + rump_server_add_iface $SOCK_PEER shmif0 $BUS + + export RUMP_SERVER=$SOCK_PEER + atf_check -s exit:0 -o ignore rump.ifconfig shmif0 10.0.0.1/24 + atf_check -s exit:0 -o ignore rump.ifconfig shmif0 up + + $DEBUG && rump.ifconfig + $DEBUG && rump.netstat -rn -f inet +} + +setup_gw() +{ + + rump_server_start $SOCK_GW + rump_server_add_iface $SOCK_GW shmif0 $BUS + rump_server_add_iface $SOCK_GW shmif1 $BUS2 + + export RUMP_SERVER=$SOCK_GW + atf_check -s exit:0 -o ignore rump.ifconfig shmif0 10.0.0.254/24 + atf_check -s exit:0 -o ignore rump.ifconfig shmif0 up + + atf_check -s exit:0 -o ignore rump.ifconfig shmif1 10.0.2.1/24 + atf_check -s exit:0 -o ignore rump.ifconfig shmif1 alias 10.0.2.2/24 + atf_check -s exit:0 -o ignore rump.ifconfig shmif1 up + + # Wait until DAD completes (10 sec at most) + atf_check -s exit:0 -o ignore rump.ifconfig -w 10 + atf_check -s not-exit:0 -x "rump.ifconfig shmif1 |grep -q tentative" + + $DEBUG && rump.ifconfig + $DEBUG && rump.netstat -rn -f inet +} + +icmp_redirect_timeout_body() +{ + + $DEBUG && ulimit -c unlimited + + setup_local + setup_peer + + ### Testing Dynamic flag ### + + # + # Setup a gateway 10.0.0.254. 10.0.2.1 is behind it. + # + setup_gw + + # + # Teach the peer that 10.0.2.* is behind 10.0.0.254 + # + export RUMP_SERVER=$SOCK_PEER + atf_check -s exit:0 -o ignore rump.route add -net 10.0.2.0/24 10.0.0.254 + # Up, Gateway, Static + check_route_flags 10.0.2/24 UGS + + # + # Setup the default gateway to the peer, 10.0.0.1 + # + export RUMP_SERVER=$SOCK_LOCAL + atf_check -s exit:0 -o ignore rump.route add default 10.0.0.1 + # Up, Gateway, Static + check_route_flags default UGS + + # Try ping 10.0.2.1 + atf_check -s exit:0 -o ignore rump.ping -n -w 1 -c 1 10.0.2.1 + $DEBUG && rump.netstat -rn -f inet + + # Up, Gateway, Host, Dynamic + check_route_flags 10.0.2.1 UGHD + check_route_gw 10.0.2.1 10.0.0.254 + + atf_check -s exit:0 sleep $((REDIRECT_TIMEOUT + 2)) + + # The dynamic entry should be expired and removed + check_route_no_entry 10.0.2.1 + + export RUMP_SERVER=$SOCK_PEER + $DEBUG && rump.netstat -rn -f inet + + rump_server_destroy_ifaces +} + +icmp_redirect_timeout_cleanup() +{ + + $DEBUG && dump + cleanup +} + +atf_test_case icmp_redirect cleanup + +icmp_redirect_head() +{ + + atf_set "descr" "Tests for icmp redirect"; + atf_set "require.progs" "rump_server"; +} + +setup_redirect() +{ + atf_check -s exit:0 -o ignore rump.sysctl -w \ + net.inet.ip.redirect=1 +} + +teardown_redirect() +{ + atf_check -s exit:0 -o ignore rump.sysctl -w \ + net.inet.ip.redirect=0 +} + +icmp_redirect_body() +{ + + $DEBUG && ulimit -c unlimited + + setup_local + setup_peer + + # + # Setup a gateway 10.0.0.254. 10.0.2.1 is behind it. + # + setup_gw + + # + # Teach the peer that 10.0.2.* is behind 10.0.0.254 + # + export RUMP_SERVER=$SOCK_PEER + atf_check -s exit:0 -o ignore rump.route add -net 10.0.2.0/24 10.0.0.254 + # Up, Gateway, Static + check_route_flags 10.0.2/24 UGS + + # + # Setup the default gateway to the peer, 10.0.0.1 + # + export RUMP_SERVER=$SOCK_LOCAL + atf_check -s exit:0 -o ignore rump.route add default 10.0.0.1 + # Up, Gateway, Static + check_route_flags default UGS + + + ### ICMP redirects are NOT sent by the peer ### + + # + # Disable net.inet.ip.redirect + # + export RUMP_SERVER=$SOCK_PEER + teardown_redirect + + # Try ping 10.0.2.1 + export RUMP_SERVER=$SOCK_LOCAL + atf_check -s exit:0 -o ignore rump.ping -n -w 1 -c 1 10.0.2.1 + $DEBUG && rump.netstat -rn -f inet + + # A direct route shouldn't be created + check_route_no_entry 10.0.2.1 + + + ### ICMP redirects are sent by the peer ### + + # + # Enable net.inet.ip.redirect + # + export RUMP_SERVER=$SOCK_PEER + setup_redirect + + # Try ping 10.0.2.1 + export RUMP_SERVER=$SOCK_LOCAL + atf_check -s exit:0 -o ignore rump.ping -n -w 1 -c 1 10.0.2.1 + $DEBUG && rump.netstat -rn -f inet + + # Up, Gateway, Host, Dynamic + check_route_flags 10.0.2.1 UGHD + check_route_gw 10.0.2.1 10.0.0.254 + + export RUMP_SERVER=$SOCK_PEER + $DEBUG && rump.netstat -rn -f inet + + + # cleanup + export RUMP_SERVER=$SOCK_LOCAL + atf_check -s exit:0 -o ignore rump.route delete 10.0.2.1 + check_route_no_entry 10.0.2.1 + + + ### ICMP redirects are NOT sent by the peer (again) ### + + # + # Disable net.inet.ip.redirect + # + export RUMP_SERVER=$SOCK_PEER + teardown_redirect + + # Try ping 10.0.2.1 + export RUMP_SERVER=$SOCK_LOCAL + atf_check -s exit:0 -o ignore rump.ping -n -w 1 -c 1 10.0.2.1 + $DEBUG && rump.netstat -rn -f inet + + # A direct route shouldn't be created + check_route_no_entry 10.0.2.1 + + rump_server_destroy_ifaces +} + +icmp_redirect_cleanup() +{ + + $DEBUG && dump + cleanup +} + +atf_init_test_cases() +{ + + atf_add_test_case icmp_redirect + atf_add_test_case icmp_redirect_timeout +} diff --git a/contrib/netbsd-tests/net/icmp/t_ping.c b/contrib/netbsd-tests/net/icmp/t_ping.c index fd8067c..68a00c7 100644 --- a/contrib/netbsd-tests/net/icmp/t_ping.c +++ b/contrib/netbsd-tests/net/icmp/t_ping.c @@ -1,4 +1,4 @@ -/* $NetBSD: t_ping.c,v 1.15 2012/09/04 22:31:58 alnsn Exp $ */ +/* $NetBSD: t_ping.c,v 1.16 2015/02/26 13:06:10 martin Exp $ */ /*- * Copyright (c) 2010 The NetBSD Foundation, Inc. @@ -29,7 +29,7 @@ #include <sys/cdefs.h> #ifndef lint -__RCSID("$NetBSD: t_ping.c,v 1.15 2012/09/04 22:31:58 alnsn Exp $"); +__RCSID("$NetBSD: t_ping.c,v 1.16 2015/02/26 13:06:10 martin Exp $"); #endif /* not lint */ #include <sys/types.h> @@ -60,7 +60,7 @@ ATF_TC_HEAD(simpleping, tc) { atf_tc_set_md_var(tc, "descr", "check that kernel responds to ping"); - atf_tc_set_md_var(tc, "timeout", "2"); + atf_tc_set_md_var(tc, "timeout", "20"); } ATF_TC_BODY(simpleping, tc) @@ -316,7 +316,7 @@ ATF_TC_HEAD(ping_of_death, tc) { atf_tc_set_md_var(tc, "descr", "send a \"ping of death\""); - atf_tc_set_md_var(tc, "timeout", "2"); + atf_tc_set_md_var(tc, "timeout", "20"); } ATF_TC_BODY(ping_of_death, tc) diff --git a/contrib/netbsd-tests/net/icmp/t_ping2.sh b/contrib/netbsd-tests/net/icmp/t_ping2.sh index 30ff73b..fc75196 100755 --- a/contrib/netbsd-tests/net/icmp/t_ping2.sh +++ b/contrib/netbsd-tests/net/icmp/t_ping2.sh @@ -1,4 +1,4 @@ -# $NetBSD: t_ping2.sh,v 1.4 2010/12/30 16:58:07 pooka Exp $ +# $NetBSD: t_ping2.sh,v 1.5 2016/08/10 22:17:44 kre Exp $ # # Copyright (c) 2010 The NetBSD Foundation, Inc. # All rights reserved. @@ -26,7 +26,7 @@ # netserver=\ -"rump_server -lrumpnet -lrumpnet_net -lrumpnet_netinet -lrumpnet_shmif" +"rump_server -lrumpnet -lrumpnet_net -lrumpnet_netinet -lrumpnet_shmif -lrumpdev" atf_test_case basic cleanup basic_head() |