1 1.1 roy # $NetBSD: t_vether.sh,v 1.1 2020/09/29 19:41:48 roy Exp $ 2 1.1 roy # 3 1.1 roy # Copyright (c) 2016 Internet Initiative Japan Inc. 4 1.1 roy # All rights reserved. 5 1.1 roy # 6 1.1 roy # Redistribution and use in source and binary forms, with or without 7 1.1 roy # modification, are permitted provided that the following conditions 8 1.1 roy # are met: 9 1.1 roy # 1. Redistributions of source code must retain the above copyright 10 1.1 roy # notice, this list of conditions and the following disclaimer. 11 1.1 roy # 2. Redistributions in binary form must reproduce the above copyright 12 1.1 roy # notice, this list of conditions and the following disclaimer in the 13 1.1 roy # documentation and/or other materials provided with the distribution. 14 1.1 roy # 15 1.1 roy # THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS 16 1.1 roy # ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED 17 1.1 roy # TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR 18 1.1 roy # PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS 19 1.1 roy # BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 20 1.1 roy # CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 21 1.1 roy # SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 22 1.1 roy # INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 23 1.1 roy # CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 24 1.1 roy # ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 25 1.1 roy # POSSIBILITY OF SUCH DAMAGE. 26 1.1 roy # 27 1.1 roy 28 1.1 roy SOCK_LOCAL=unix://commsock1 29 1.1 roy SOCK_REMOTE=unix://commsock2 30 1.1 roy BUS=bus1 31 1.1 roy IP4_LOCAL=10.0.0.1 32 1.1 roy IP4_VETHER=10.0.0.2 33 1.1 roy IP4_REMOTE=10.0.0.3 34 1.1 roy IP6_LOCAL=fc00::1 35 1.1 roy IP6_VETHER=fc00::2 36 1.1 roy IP6_REMOTE=fc00::3 37 1.1 roy 38 1.1 roy DEBUG=${DEBUG:-false} 39 1.1 roy TIMEOUT=1 40 1.1 roy 41 1.1 roy atf_test_case vether_create_destroy cleanup 42 1.1 roy vether_create_destroy_head() 43 1.1 roy { 44 1.1 roy 45 1.1 roy atf_set "descr" "tests of creation and deletion of vether interface" 46 1.1 roy atf_set "require.progs" "rump_server" 47 1.1 roy } 48 1.1 roy 49 1.1 roy vether_create_destroy_body() 50 1.1 roy { 51 1.1 roy 52 1.1 roy rump_server_fs_start $SOCK_LOCAL netinet6 vether 53 1.1 roy 54 1.1 roy test_create_destroy_common $SOCK_LOCAL vether0 true 55 1.1 roy } 56 1.1 roy 57 1.1 roy vether_create_destroy_cleanup() 58 1.1 roy { 59 1.1 roy 60 1.1 roy $DEBUG && dump 61 1.1 roy cleanup 62 1.1 roy } 63 1.1 roy 64 1.1 roy atf_test_case vether_stand_alone cleanup 65 1.1 roy vether_create_destroy_head() 66 1.1 roy { 67 1.1 roy 68 1.1 roy atf_set "descr" "tests of alone vether interface" 69 1.1 roy atf_set "require.progs" "rump_server" 70 1.1 roy } 71 1.1 roy 72 1.1 roy vether_stand_alone_body() 73 1.1 roy { 74 1.1 roy 75 1.1 roy rump_server_fs_start $SOCK_LOCAL netinet6 vether 76 1.1 roy rump_server_fs_start $SOCK_REMOTE netinet6 vether 77 1.1 roy 78 1.1 roy rump_server_add_iface $SOCK_LOCAL shmif0 $BUS 79 1.1 roy rump_server_add_iface $SOCK_REMOTE shmif0 $BUS 80 1.1 roy 81 1.1 roy export RUMP_SERVER=${SOCK_LOCAL} 82 1.1 roy atf_check -s exit:0 rump.ifconfig shmif0 $IP4_LOCAL 83 1.1 roy atf_check -s exit:0 rump.ifconfig shmif0 inet6 $IP6_LOCAL 84 1.1 roy atf_check -s exit:0 rump.ifconfig shmif0 up 85 1.1 roy atf_check -s exit:0 rump.ifconfig -w 10 86 1.1 roy 87 1.1 roy export RUMP_SERVER=${SOCK_REMOTE} 88 1.1 roy atf_check -s exit:0 rump.ifconfig shmif0 $IP4_REMOTE 89 1.1 roy atf_check -s exit:0 rump.ifconfig shmif0 inet6 $IP6_REMOTE 90 1.1 roy atf_check -s exit:0 rump.ifconfig shmif0 up 91 1.1 roy atf_check -s exit:0 rump.ifconfig -w 10 92 1.1 roy 93 1.1 roy atf_check -s exit:0 -o ignore rump.ping -n -w $TIMEOUT -c 1 $IP4_LOCAL 94 1.1 roy atf_check -s exit:0 -o ignore rump.ping6 -n -X $TIMEOUT -c 1 $IP6_LOCAL 95 1.1 roy 96 1.1 roy export RUMP_SERVER=${SOCK_LOCAL} 97 1.1 roy atf_check -s exit:0 rump.ifconfig shmif0 $IP4_LOCAL delete 98 1.1 roy atf_check -s exit:0 rump.ifconfig shmif0 inet6 $IP6_LOCAL delete 99 1.1 roy rump_server_add_iface $SOCK_LOCAL vether0 100 1.1 roy atf_check -s exit:0 rump.ifconfig vether0 $IP4_VETHER 101 1.1 roy atf_check -s exit:0 rump.ifconfig vether0 inet6 $IP6_VETHER 102 1.1 roy atf_check -s exit:0 rump.ifconfig vether0 up 103 1.1 roy atf_check -s exit:0 rump.ifconfig -w 10 104 1.1 roy 105 1.1 roy export RUMP_SERVER=${SOCK_REMOTE} 106 1.1 roy # Cannot reach to an alone vether 107 1.1 roy atf_check -s not-exit:0 -o ignore -e ignore \ 108 1.1 roy rump.ping6 -n -X $TIMEOUT -c 1 $IP6_VETHER 109 1.1 roy atf_check -s not-exit:0 -o ignore -e ignore \ 110 1.1 roy rump.ping -n -w $TIMEOUT -c 1 $IP4_VETHER 111 1.1 roy 112 1.1 roy rump_server_destroy_ifaces 113 1.1 roy } 114 1.1 roy 115 1.1 roy vether_stand_alone_cleanup() 116 1.1 roy { 117 1.1 roy 118 1.1 roy $DEBUG && dump 119 1.1 roy cleanup 120 1.1 roy } 121 1.1 roy 122 1.1 roy atf_test_case vether_bridged cleanup 123 1.1 roy vether_bridged_head() 124 1.1 roy { 125 1.1 roy 126 1.1 roy atf_set "descr" "tests of alone vether interface" 127 1.1 roy atf_set "require.progs" "rump_server" 128 1.1 roy } 129 1.1 roy 130 1.1 roy vether_bridged_body() 131 1.1 roy { 132 1.1 roy 133 1.1 roy rump_server_fs_start $SOCK_LOCAL netinet6 vether bridge 134 1.1 roy rump_server_fs_start $SOCK_REMOTE netinet6 vether 135 1.1 roy 136 1.1 roy rump_server_add_iface $SOCK_LOCAL shmif0 $BUS 137 1.1 roy rump_server_add_iface $SOCK_REMOTE shmif0 $BUS 138 1.1 roy 139 1.1 roy export RUMP_SERVER=${SOCK_LOCAL} 140 1.1 roy atf_check -s exit:0 rump.ifconfig shmif0 $IP4_LOCAL 141 1.1 roy atf_check -s exit:0 rump.ifconfig shmif0 inet6 $IP6_LOCAL 142 1.1 roy atf_check -s exit:0 rump.ifconfig shmif0 up 143 1.1 roy rump_server_add_iface $SOCK_LOCAL vether0 144 1.1 roy atf_check -s exit:0 rump.ifconfig vether0 $IP4_VETHER 145 1.1 roy atf_check -s exit:0 rump.ifconfig vether0 inet6 $IP6_VETHER 146 1.1 roy atf_check -s exit:0 rump.ifconfig vether0 up 147 1.1 roy 148 1.1 roy rump_server_add_iface $SOCK_LOCAL bridge0 149 1.1 roy atf_check -s exit:0 rump.ifconfig bridge0 up 150 1.1 roy export LD_PRELOAD=/usr/lib/librumphijack.so 151 1.1 roy atf_check -s exit:0 brconfig bridge0 add shmif0 152 1.1 roy atf_check -s exit:0 brconfig bridge0 add vether0 153 1.1 roy unset LD_PRELOAD 154 1.1 roy 155 1.1 roy atf_check -s exit:0 rump.ifconfig -w 10 156 1.1 roy 157 1.1 roy export RUMP_SERVER=${SOCK_REMOTE} 158 1.1 roy atf_check -s exit:0 rump.ifconfig shmif0 $IP4_REMOTE 159 1.1 roy atf_check -s exit:0 rump.ifconfig shmif0 inet6 $IP6_REMOTE 160 1.1 roy atf_check -s exit:0 rump.ifconfig shmif0 up 161 1.1 roy atf_check -s exit:0 rump.ifconfig -w 10 162 1.1 roy 163 1.1 roy atf_check -s exit:0 -o ignore rump.ping -n -w $TIMEOUT -c 1 $IP4_LOCAL 164 1.1 roy atf_check -s exit:0 -o ignore rump.ping -n -w $TIMEOUT -c 1 $IP4_VETHER 165 1.1 roy 166 1.1 roy atf_check -s exit:0 -o ignore rump.ping6 -n -X $TIMEOUT -c 1 $IP6_LOCAL 167 1.1 roy atf_check -s exit:0 -o ignore rump.ping6 -n -X $TIMEOUT -c 1 $IP6_VETHER 168 1.1 roy 169 1.1 roy rump_server_destroy_ifaces 170 1.1 roy } 171 1.1 roy 172 1.1 roy vether_bridged_cleanup() 173 1.1 roy { 174 1.1 roy 175 1.1 roy $DEBUG && dump 176 1.1 roy cleanup 177 1.1 roy } 178 1.1 roy 179 1.1 roy atf_init_test_cases() 180 1.1 roy { 181 1.1 roy 182 1.1 roy atf_add_test_case vether_create_destroy 183 1.1 roy atf_add_test_case vether_stand_alone 184 1.1 roy atf_add_test_case vether_bridged 185 1.1 roy } 186