diff options
author | Renato Botelho <renato@netgate.com> | 2017-02-23 06:28:41 -0300 |
---|---|---|
committer | Renato Botelho <renato@netgate.com> | 2017-02-23 06:28:41 -0300 |
commit | 82ceeb2ea625cd9bff60f2863b9a0830f55b7905 (patch) | |
tree | 263ca9347bf664a4489743f9302e699ce14de1df /contrib/netbsd-tests/net/if/t_ifconfig.sh | |
parent | 4a05f5440acda223e6a0ec5157bc32ecc0f09ff9 (diff) | |
parent | d20dd8b36e7a565be7bfbb22aade51c8ffd753e9 (diff) | |
download | FreeBSD-src-devel.zip FreeBSD-src-devel.tar.gz |
Merge remote-tracking branch 'origin/stable/10' into develdevel
Diffstat (limited to 'contrib/netbsd-tests/net/if/t_ifconfig.sh')
-rwxr-xr-x | contrib/netbsd-tests/net/if/t_ifconfig.sh | 333 |
1 files changed, 333 insertions, 0 deletions
diff --git a/contrib/netbsd-tests/net/if/t_ifconfig.sh b/contrib/netbsd-tests/net/if/t_ifconfig.sh new file mode 100755 index 0000000..a610017 --- /dev/null +++ b/contrib/netbsd-tests/net/if/t_ifconfig.sh @@ -0,0 +1,333 @@ +# $NetBSD: t_ifconfig.sh,v 1.14 2016/10/01 22:15:04 kre 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. +# + +RUMP_SERVER1=unix://./r1 +RUMP_SERVER2=unix://./r2 + +RUMP_FLAGS=\ +"-lrumpnet -lrumpnet_net -lrumpnet_netinet -lrumpnet_netinet6 -lrumpnet_shmif" +RUMP_FLAGS="${RUMP_FLAGS} -lrumpdev" + +TIMEOUT=3 + +anycast="[Aa][Nn][Yy][Cc][Aa][Ss][Tt]" +deprecated="[Dd][Ee][Pp][Rr][Ee][Cc][Aa][Tt][Ee][Dd]" + +atf_test_case ifconfig_create_destroy cleanup +ifconfig_create_destroy_head() +{ + + atf_set "descr" "tests of ifconfig create and destroy" + atf_set "require.progs" "rump_server" +} + +ifconfig_create_destroy_body() +{ + atf_check -s exit:0 rump_server ${RUMP_FLAGS} ${RUMP_SERVER1} + + export RUMP_SERVER=${RUMP_SERVER1} + + # Create and destroy (no address) + atf_check -s exit:0 rump.ifconfig shmif0 create + atf_check -s exit:0 rump.ifconfig shmif0 destroy + + # Create and destroy (with an IPv4 address) + atf_check -s exit:0 rump.ifconfig shmif0 create + atf_check -s exit:0 rump.ifconfig shmif0 linkstr shmbus + atf_check -s exit:0 rump.ifconfig shmif0 192.168.0.1/24 + atf_check -s exit:0 rump.ifconfig shmif0 up + atf_check -s exit:0 rump.ifconfig shmif0 destroy + + # Create and destroy (with an IPv6 address) + atf_check -s exit:0 rump.ifconfig shmif0 create + atf_check -s exit:0 rump.ifconfig shmif0 linkstr shmbus + atf_check -s exit:0 rump.ifconfig shmif0 inet6 fc00::1 + atf_check -s exit:0 rump.ifconfig shmif0 up + atf_check -s exit:0 rump.ifconfig shmif0 destroy + + unset RUMP_SERVER +} + +ifconfig_create_destroy_cleanup() +{ + + RUMP_SERVER=${RUMP_SERVER1} rump.halt +} + +atf_test_case ifconfig_options cleanup +ifconfig_options_head() +{ + + atf_set "descr" "tests of ifconfig options" + atf_set "require.progs" "rump_server" +} + +ifconfig_options_body() +{ + + export RUMP_SERVER=${RUMP_SERVER1} + atf_check -s exit:0 rump_server $RUMP_FLAGS $RUMP_SERVER1 + + atf_check -s exit:0 -o ignore rump.ifconfig shmif0 create + atf_check -s exit:0 -o ignore rump.ifconfig shmif0 linkstr bus1 + atf_check -s exit:0 -o ignore rump.ifconfig shmif0 inet 10.0.0.1/24 + atf_check -s exit:0 -o ignore rump.ifconfig shmif0 inet6 fc00::1/64 + atf_check -s exit:0 -o ignore rump.ifconfig shmif0 up + atf_check -s exit:0 -o ignore rump.ifconfig -w 10 + $DEBUG && rump.ifconfig shmif0 + + # ifconfig [-N] interface address_family + # -N resolves hostnames + atf_check -s exit:0 -o match:'inet 127.0.0.1' rump.ifconfig lo0 inet + atf_check -s exit:0 -o match:'inet localhost' rump.ifconfig -N lo0 inet + atf_check -s exit:0 -o match:'inet6 ::1' rump.ifconfig lo0 inet6 + atf_check -s exit:0 -o match:'inet6 localhost' rump.ifconfig -N lo0 inet6 + atf_check -s not-exit:0 -e match:'not supported' rump.ifconfig lo0 atalk + atf_check -s not-exit:0 -e match:'not supported' rump.ifconfig -N lo0 atalk + atf_check -s exit:0 -o ignore rump.ifconfig lo0 link + atf_check -s exit:0 -o ignore rump.ifconfig -N lo0 link + + # ifconfig [-hLmNvz] interface + # -h -v shows statistics in human readable format + atf_check -s exit:0 -o ignore rump.ifconfig -h -v lo0 + # -L shows IPv6 lifetime + atf_check -s exit:0 -o ignore rump.ifconfig shmif0 inet6 fc00::2 \ + pltime 100 + $DEBUG && rump.ifconfig -L shmif0 + atf_check -s exit:0 -o match:'pltime' rump.ifconfig -L shmif0 + atf_check -s exit:0 -o match:'vltime' rump.ifconfig -L shmif0 + # -m shows all of the supported media (not supported in shmif) + $DEBUG && rump.ifconfig -m shmif0 + atf_check -s exit:0 -o ignore rump.ifconfig -m shmif0 + atf_check -s exit:0 -o match:'localhost' rump.ifconfig -N lo0 + atf_check -s exit:0 -o match:'0 packets' rump.ifconfig -v lo0 + atf_check -s exit:0 -o ignore rump.ping -c 1 -w $TIMEOUT localhost + # -z clears and shows statistics at that point + atf_check -s exit:0 -o match:'2 packets' rump.ifconfig -z lo0 + atf_check -s exit:0 -o match:'0 packets' rump.ifconfig -v lo0 + + # ifconfig -a [-bdhLNmsuvz] + # -a shows all interfaces in the system + $DEBUG && rump.ifconfig -a + atf_check -s exit:0 -o match:'shmif0' -o match:'lo0' rump.ifconfig -a + # -a -b shows only broadcast interfaces + atf_check -s exit:0 -o match:'shmif0' -o not-match:'lo0' rump.ifconfig -a -b + # -a -d shows only down interfaces + atf_check -s exit:0 -o ignore rump.ifconfig shmif0 down + atf_check -s exit:0 -o match:'shmif0' rump.ifconfig -a -d + atf_check -s exit:0 -o ignore rump.ifconfig shmif0 up + atf_check -s exit:0 -o not-match:'shmif0' rump.ifconfig -a -d + atf_check -s exit:0 -o match:'pltime' rump.ifconfig -a -L + atf_check -s exit:0 -o match:'vltime' rump.ifconfig -a -L + atf_check -s exit:0 -o match:'localhost' rump.ifconfig -a -N + atf_check -s exit:0 -o ignore rump.ifconfig -a -m + # -a -s shows only interfaces connected to a network + # (shmif is always connected) + $DEBUG && rump.ifconfig -a -s + atf_check -s exit:0 -o ignore rump.ifconfig -a -s + # -a -u shows only up interfaces + atf_check -s exit:0 -o match:'shmif0' rump.ifconfig -a -u + atf_check -s exit:0 -o ignore rump.ifconfig shmif0 down + atf_check -s exit:0 -o not-match:'shmif0' rump.ifconfig -a -u + atf_check -s exit:0 -o ignore rump.ifconfig shmif0 up + atf_check -s exit:0 -o match:'0 packets' rump.ifconfig -a -v + atf_check -s exit:0 -o ignore rump.ping -c 1 -w $TIMEOUT localhost + atf_check -s exit:0 -o ignore rump.ifconfig shmif0 down + atf_check -s exit:0 -o match:'2 packets' rump.ifconfig -a -z + atf_check -s exit:0 -o not-match:'2 packets' rump.ifconfig -a -v + atf_check -s exit:0 -o match:'0 packets' rump.ifconfig -a -v + atf_check -s exit:0 -o ignore rump.ifconfig shmif0 up + + # ifconfig -l [-bdsu] + # -l shows only inteface names + atf_check -s exit:0 -o match:'lo0' rump.ifconfig -l + atf_check -s exit:0 -o match:'shmif0' rump.ifconfig -l + atf_check -s exit:0 -o match:'shmif0' rump.ifconfig -l -b + atf_check -s exit:0 -o not-match:'lo0' rump.ifconfig -l -b + atf_check -s exit:0 -o ignore rump.ifconfig -l -d + atf_check -s exit:0 -o match:'lo0' rump.ifconfig -l -s + atf_check -s exit:0 -o match:'shmif0' rump.ifconfig -l -s + atf_check -s exit:0 -o match:'lo0' rump.ifconfig -l -u + atf_check -s exit:0 -o match:'shmif0' rump.ifconfig -l -u + + # ifconfig -s interface + # -s interface exists with 0 / 1 if connected / disconnected + atf_check -s exit:0 -o empty rump.ifconfig -s lo0 + atf_check -s exit:0 -o empty rump.ifconfig -s shmif0 + + # ifconfig -C + # -C shows all of the interface cloners available on the system + atf_check -s exit:0 -o match:'shmif lo carp' rump.ifconfig -C + + unset RUMP_SERVER +} + +ifconfig_options_cleanup() +{ + + env RUMP_SERVER=${RUMP_SERVER1} rump.halt +} + + +atf_test_case ifconfig_parameters cleanup +ifconfig_parameters_head() +{ + atf_set "descr" "tests of interface parameters" + atf_set "require.progs" "rump_server" +} + +ifconfig_parameters_body() +{ + local interval= + + atf_check -s exit:0 rump_server ${RUMP_FLAGS} ${RUMP_SERVER1} + atf_check -s exit:0 rump_server ${RUMP_FLAGS} ${RUMP_SERVER2} + + export RUMP_SERVER=${RUMP_SERVER1} + atf_check -s exit:0 rump.ifconfig shmif0 create + atf_check -s exit:0 rump.ifconfig shmif0 linkstr shmbus + atf_check -s exit:0 rump.ifconfig shmif0 192.168.0.1/24 + atf_check -s exit:0 rump.ifconfig shmif0 up + unset RUMP_SERVER + + export RUMP_SERVER=${RUMP_SERVER2} + atf_check -s exit:0 rump.ifconfig shmif0 create + atf_check -s exit:0 rump.ifconfig shmif0 linkstr shmbus + atf_check -s exit:0 rump.ifconfig shmif0 192.168.0.2/24 + atf_check -s exit:0 rump.ifconfig shmif0 inet 192.168.0.3/24 alias + atf_check -s exit:0 rump.ifconfig shmif0 up + unset RUMP_SERVER + + export RUMP_SERVER=${RUMP_SERVER1} + + # active + atf_check -s exit:0 rump.ifconfig shmif0 link b2:a0:75:00:00:01 active + atf_check -s exit:0 -o match:'address:.b2:a0:75:00:00:01' \ + rump.ifconfig shmif0 + # down, up + atf_check -s exit:0 rump.ifconfig shmif0 down + atf_check -s not-exit:0 -o ignore -e ignore rump.ping -c 1 \ + -w $TIMEOUT -n 192.168.0.2 + atf_check -s exit:0 rump.ifconfig shmif0 up + atf_check -s exit:0 rump.ifconfig -w 10 + atf_check -s exit:0 -o ignore rump.ping -c 1 -w $TIMEOUT -n 192.168.0.2 + + # alias + atf_check -s exit:0 rump.ifconfig shmif0 inet 192.168.1.1/24 alias + atf_check -s exit:0 -o match:'192.168.1.1/24' rump.ifconfig shmif0 + atf_check -s exit:0 rump.ifconfig shmif0 inet 192.168.1.1/24 -alias + atf_check -s exit:0 -o not-match:'192.168.1.1/24' rump.ifconfig shmif0 + atf_check -s exit:0 rump.ifconfig shmif0 inet6 fc00::1 + atf_check -s exit:0 rump.ifconfig shmif0 inet6 fc00::2 + atf_check -s exit:0 -o match:'fc00::1' rump.ifconfig shmif0 inet6 + atf_check -s exit:0 -o match:'fc00::2' rump.ifconfig shmif0 inet6 + + # delete + atf_check -s exit:0 rump.ifconfig shmif0 inet 192.168.1.1 alias + atf_check -s exit:0 rump.ifconfig shmif0 inet 192.168.1.1 delete + atf_check -s exit:0 -o not-match:'192.168.1.1' rump.ifconfig shmif0 inet + atf_check -s exit:0 rump.ifconfig shmif0 inet 192.168.0.1 delete + atf_check -s exit:0 -o not-match:'192.168.0.1' rump.ifconfig shmif0 inet + atf_check -s exit:0 rump.ifconfig shmif0 inet6 fc00::1 delete + atf_check -s exit:0 rump.ifconfig shmif0 inet6 fc00::2 delete + atf_check -s exit:0 -o not-match:'fc00::1' rump.ifconfig shmif0 inet6 + atf_check -s exit:0 -o not-match:'fc00::2' rump.ifconfig shmif0 inet6 + # can delete inactive link + atf_check -s exit:0 rump.ifconfig shmif0 link b2:a0:75:00:00:02 + atf_check -s exit:0 rump.ifconfig shmif0 link b2:a0:75:00:00:02 delete + # cannot delete active link + atf_check -s not-exit:0 -e match:'SIOCDLIFADDR: Device busy' \ + rump.ifconfig shmif0 link b2:a0:75:00:00:01 delete + + atf_check -s exit:0 rump.ifconfig shmif0 inet 192.168.0.1/24 + + # arp + atf_check -s exit:0 rump.ifconfig shmif0 -arp + atf_check -s not-exit:0 -o ignore -e ignore \ + rump.ping -c 1 -w $TIMEOUT -n 192.168.0.3 + atf_check -s exit:0 -o not-match:'192.168.0.3' rump.arp -an + # The entry shouldn't appear in the routing table anymore + atf_check -s exit:0 -o not-match:'192.168.0.3' rump.netstat -nr + + # netmask + atf_check -s exit:0 rump.ifconfig shmif0 inet 172.16.0.1 netmask 255.255.255.0 alias + atf_check -s exit:0 -o match:'172.16.0/24' rump.netstat -rn -f inet + atf_check -s exit:0 rump.ifconfig shmif0 inet 172.16.0.1 delete + + # broadcast (does it not work?) + atf_check -s exit:0 rump.ifconfig shmif0 inet 172.16.0.1 \ + broadcast 255.255.255.255 alias + atf_check -s exit:0 -o match:'broadcast 255.255.255.255' \ + rump.ifconfig shmif0 inet + + # metric (external only) + atf_check -s exit:0 rump.ifconfig shmif0 metric 10 + atf_check -s exit:0 rump.ifconfig shmif0 metric 0 + + # prefixlen + atf_check -s exit:0 rump.ifconfig shmif0 inet6 fc00::1 prefixlen 70 + atf_check -s exit:0 -o match:'fc00::/70' rump.netstat -rn -f inet6 + + # anycast + atf_check -s exit:0 rump.ifconfig shmif0 inet6 fc00::2 anycast + atf_check -s exit:0 -o match:"fc00::2.+$anycast" rump.ifconfig shmif0 inet6 + + # deprecated + atf_check -s exit:0 rump.ifconfig shmif0 inet6 fc00::3 deprecated + # Not deprecated immediately. Need to wait nd6_timer that does it is scheduled. + interval=$(sysctl -n net.inet6.icmp6.nd6_prune) + atf_check -s exit:0 sleep $((interval + 1)) + atf_check -s exit:0 -o match:"fc00::3.+$deprecated" rump.ifconfig shmif0 inet6 + atf_check -s exit:0 rump.ifconfig shmif0 inet6 fc00::3 -deprecated + atf_check -s exit:0 -o not-match:"fc00::3.+$deprecated" rump.ifconfig shmif0 inet6 + + # pltime + atf_check -s exit:0 rump.ifconfig shmif0 inet6 fc00::3 pltime 3 + atf_check -s exit:0 -o not-match:"fc00::3.+$deprecated" rump.ifconfig shmif0 inet6 + atf_check -s exit:0 sleep 5 + atf_check -s exit:0 -o match:"fc00::3.+$deprecated" rump.ifconfig shmif0 inet6 + + # eui64 + atf_check -s exit:0 rump.ifconfig shmif0 inet6 fc00:1::0 eui64 + atf_check -s exit:0 -o match:'fc00:1::' rump.ifconfig shmif0 inet6 + + unset RUMP_SERVER +} + +ifconfig_parameters_cleanup() +{ + env RUMP_SERVER=${RUMP_SERVER1} rump.halt + env RUMP_SERVER=${RUMP_SERVER2} rump.halt +} + +atf_init_test_cases() +{ + + atf_add_test_case ifconfig_create_destroy + atf_add_test_case ifconfig_options + atf_add_test_case ifconfig_parameters +} |