1 1.22 andvar # $NetBSD: t_ifconfig.sh,v 1.22 2021/08/17 22:00:33 andvar Exp $ 2 1.1 ozaki # 3 1.1 ozaki # Copyright (c) 2015 The NetBSD Foundation, Inc. 4 1.1 ozaki # All rights reserved. 5 1.1 ozaki # 6 1.1 ozaki # Redistribution and use in source and binary forms, with or without 7 1.1 ozaki # modification, are permitted provided that the following conditions 8 1.1 ozaki # are met: 9 1.1 ozaki # 1. Redistributions of source code must retain the above copyright 10 1.1 ozaki # notice, this list of conditions and the following disclaimer. 11 1.1 ozaki # 2. Redistributions in binary form must reproduce the above copyright 12 1.1 ozaki # notice, this list of conditions and the following disclaimer in the 13 1.1 ozaki # documentation and/or other materials provided with the distribution. 14 1.1 ozaki # 15 1.1 ozaki # THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS 16 1.1 ozaki # ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED 17 1.1 ozaki # TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR 18 1.1 ozaki # PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS 19 1.1 ozaki # BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 20 1.1 ozaki # CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 21 1.1 ozaki # SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 22 1.1 ozaki # INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 23 1.1 ozaki # CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 24 1.1 ozaki # ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 25 1.1 ozaki # POSSIBILITY OF SUCH DAMAGE. 26 1.1 ozaki # 27 1.1 ozaki 28 1.1 ozaki RUMP_SERVER1=unix://./r1 29 1.4 ozaki RUMP_SERVER2=unix://./r2 30 1.1 ozaki 31 1.1 ozaki RUMP_FLAGS=\ 32 1.1 ozaki "-lrumpnet -lrumpnet_net -lrumpnet_netinet -lrumpnet_netinet6 -lrumpnet_shmif" 33 1.19 bad RUMP_FLAGS="${RUMP_FLAGS}" 34 1.1 ozaki 35 1.6 ozaki TIMEOUT=3 36 1.6 ozaki 37 1.12 christos anycast="[Aa][Nn][Yy][Cc][Aa][Ss][Tt]" 38 1.12 christos deprecated="[Dd][Ee][Pp][Rr][Ee][Cc][Aa][Tt][Ee][Dd]" 39 1.12 christos 40 1.10 ozaki atf_test_case ifconfig_create_destroy cleanup 41 1.10 ozaki ifconfig_create_destroy_head() 42 1.1 ozaki { 43 1.1 ozaki 44 1.1 ozaki atf_set "descr" "tests of ifconfig create and destroy" 45 1.1 ozaki atf_set "require.progs" "rump_server" 46 1.1 ozaki } 47 1.1 ozaki 48 1.10 ozaki ifconfig_create_destroy_body() 49 1.1 ozaki { 50 1.1 ozaki atf_check -s exit:0 rump_server ${RUMP_FLAGS} ${RUMP_SERVER1} 51 1.1 ozaki 52 1.1 ozaki export RUMP_SERVER=${RUMP_SERVER1} 53 1.1 ozaki 54 1.1 ozaki # Create and destroy (no address) 55 1.1 ozaki atf_check -s exit:0 rump.ifconfig shmif0 create 56 1.1 ozaki atf_check -s exit:0 rump.ifconfig shmif0 destroy 57 1.1 ozaki 58 1.1 ozaki # Create and destroy (with an IPv4 address) 59 1.1 ozaki atf_check -s exit:0 rump.ifconfig shmif0 create 60 1.1 ozaki atf_check -s exit:0 rump.ifconfig shmif0 linkstr shmbus 61 1.1 ozaki atf_check -s exit:0 rump.ifconfig shmif0 192.168.0.1/24 62 1.1 ozaki atf_check -s exit:0 rump.ifconfig shmif0 up 63 1.1 ozaki atf_check -s exit:0 rump.ifconfig shmif0 destroy 64 1.1 ozaki 65 1.1 ozaki # Create and destroy (with an IPv6 address) 66 1.1 ozaki atf_check -s exit:0 rump.ifconfig shmif0 create 67 1.1 ozaki atf_check -s exit:0 rump.ifconfig shmif0 linkstr shmbus 68 1.1 ozaki atf_check -s exit:0 rump.ifconfig shmif0 inet6 fc00::1 69 1.1 ozaki atf_check -s exit:0 rump.ifconfig shmif0 up 70 1.1 ozaki atf_check -s exit:0 rump.ifconfig shmif0 destroy 71 1.1 ozaki 72 1.21 ozaki # Check if ifconfig (ioctl) works after a failure of ifconfig destroy 73 1.21 ozaki atf_check -s exit:0 -o ignore rump.ifconfig lo0 74 1.21 ozaki atf_check -s not-exit:0 -e ignore rump.ifconfig lo0 destroy 75 1.21 ozaki atf_check -s exit:0 -o ignore rump.ifconfig lo0 76 1.21 ozaki 77 1.1 ozaki unset RUMP_SERVER 78 1.1 ozaki } 79 1.1 ozaki 80 1.10 ozaki ifconfig_create_destroy_cleanup() 81 1.1 ozaki { 82 1.1 ozaki 83 1.1 ozaki RUMP_SERVER=${RUMP_SERVER1} rump.halt 84 1.1 ozaki } 85 1.1 ozaki 86 1.10 ozaki atf_test_case ifconfig_options cleanup 87 1.10 ozaki ifconfig_options_head() 88 1.2 ozaki { 89 1.2 ozaki 90 1.2 ozaki atf_set "descr" "tests of ifconfig options" 91 1.2 ozaki atf_set "require.progs" "rump_server" 92 1.2 ozaki } 93 1.2 ozaki 94 1.10 ozaki ifconfig_options_body() 95 1.2 ozaki { 96 1.2 ozaki 97 1.2 ozaki export RUMP_SERVER=${RUMP_SERVER1} 98 1.2 ozaki atf_check -s exit:0 rump_server $RUMP_FLAGS $RUMP_SERVER1 99 1.2 ozaki 100 1.2 ozaki atf_check -s exit:0 -o ignore rump.ifconfig shmif0 create 101 1.2 ozaki atf_check -s exit:0 -o ignore rump.ifconfig shmif0 linkstr bus1 102 1.2 ozaki atf_check -s exit:0 -o ignore rump.ifconfig shmif0 inet 10.0.0.1/24 103 1.2 ozaki atf_check -s exit:0 -o ignore rump.ifconfig shmif0 inet6 fc00::1/64 104 1.2 ozaki atf_check -s exit:0 -o ignore rump.ifconfig shmif0 up 105 1.2 ozaki atf_check -s exit:0 -o ignore rump.ifconfig -w 10 106 1.2 ozaki $DEBUG && rump.ifconfig shmif0 107 1.2 ozaki 108 1.2 ozaki # ifconfig [-N] interface address_family 109 1.2 ozaki # -N resolves hostnames 110 1.2 ozaki atf_check -s exit:0 -o match:'inet 127.0.0.1' rump.ifconfig lo0 inet 111 1.2 ozaki atf_check -s exit:0 -o match:'inet localhost' rump.ifconfig -N lo0 inet 112 1.2 ozaki atf_check -s exit:0 -o match:'inet6 ::1' rump.ifconfig lo0 inet6 113 1.2 ozaki atf_check -s exit:0 -o match:'inet6 localhost' rump.ifconfig -N lo0 inet6 114 1.2 ozaki atf_check -s not-exit:0 -e match:'not supported' rump.ifconfig lo0 atalk 115 1.2 ozaki atf_check -s not-exit:0 -e match:'not supported' rump.ifconfig -N lo0 atalk 116 1.2 ozaki atf_check -s exit:0 -o ignore rump.ifconfig lo0 link 117 1.2 ozaki atf_check -s exit:0 -o ignore rump.ifconfig -N lo0 link 118 1.2 ozaki 119 1.2 ozaki # ifconfig [-hLmNvz] interface 120 1.2 ozaki # -h -v shows statistics in human readable format 121 1.2 ozaki atf_check -s exit:0 -o ignore rump.ifconfig -h -v lo0 122 1.2 ozaki # -L shows IPv6 lifetime 123 1.2 ozaki atf_check -s exit:0 -o ignore rump.ifconfig shmif0 inet6 fc00::2 \ 124 1.2 ozaki pltime 100 125 1.2 ozaki $DEBUG && rump.ifconfig -L shmif0 126 1.2 ozaki atf_check -s exit:0 -o match:'pltime' rump.ifconfig -L shmif0 127 1.2 ozaki atf_check -s exit:0 -o match:'vltime' rump.ifconfig -L shmif0 128 1.2 ozaki # -m shows all of the supported media (not supported in shmif) 129 1.2 ozaki $DEBUG && rump.ifconfig -m shmif0 130 1.2 ozaki atf_check -s exit:0 -o ignore rump.ifconfig -m shmif0 131 1.2 ozaki atf_check -s exit:0 -o match:'localhost' rump.ifconfig -N lo0 132 1.2 ozaki atf_check -s exit:0 -o match:'0 packets' rump.ifconfig -v lo0 133 1.6 ozaki atf_check -s exit:0 -o ignore rump.ping -c 1 -w $TIMEOUT localhost 134 1.2 ozaki # -z clears and shows statistics at that point 135 1.2 ozaki atf_check -s exit:0 -o match:'2 packets' rump.ifconfig -z lo0 136 1.2 ozaki atf_check -s exit:0 -o match:'0 packets' rump.ifconfig -v lo0 137 1.2 ozaki 138 1.2 ozaki # ifconfig -a [-bdhLNmsuvz] 139 1.2 ozaki # -a shows all interfaces in the system 140 1.2 ozaki $DEBUG && rump.ifconfig -a 141 1.2 ozaki atf_check -s exit:0 -o match:'shmif0' -o match:'lo0' rump.ifconfig -a 142 1.2 ozaki # -a -b shows only broadcast interfaces 143 1.2 ozaki atf_check -s exit:0 -o match:'shmif0' -o not-match:'lo0' rump.ifconfig -a -b 144 1.2 ozaki # -a -d shows only down interfaces 145 1.2 ozaki atf_check -s exit:0 -o ignore rump.ifconfig shmif0 down 146 1.2 ozaki atf_check -s exit:0 -o match:'shmif0' rump.ifconfig -a -d 147 1.2 ozaki atf_check -s exit:0 -o ignore rump.ifconfig shmif0 up 148 1.2 ozaki atf_check -s exit:0 -o not-match:'shmif0' rump.ifconfig -a -d 149 1.2 ozaki atf_check -s exit:0 -o match:'pltime' rump.ifconfig -a -L 150 1.2 ozaki atf_check -s exit:0 -o match:'vltime' rump.ifconfig -a -L 151 1.2 ozaki atf_check -s exit:0 -o match:'localhost' rump.ifconfig -a -N 152 1.2 ozaki atf_check -s exit:0 -o ignore rump.ifconfig -a -m 153 1.2 ozaki # -a -s shows only interfaces connected to a network 154 1.2 ozaki # (shmif is always connected) 155 1.2 ozaki $DEBUG && rump.ifconfig -a -s 156 1.2 ozaki atf_check -s exit:0 -o ignore rump.ifconfig -a -s 157 1.2 ozaki # -a -u shows only up interfaces 158 1.2 ozaki atf_check -s exit:0 -o match:'shmif0' rump.ifconfig -a -u 159 1.2 ozaki atf_check -s exit:0 -o ignore rump.ifconfig shmif0 down 160 1.2 ozaki atf_check -s exit:0 -o not-match:'shmif0' rump.ifconfig -a -u 161 1.2 ozaki atf_check -s exit:0 -o ignore rump.ifconfig shmif0 up 162 1.2 ozaki atf_check -s exit:0 -o match:'0 packets' rump.ifconfig -a -v 163 1.6 ozaki atf_check -s exit:0 -o ignore rump.ping -c 1 -w $TIMEOUT localhost 164 1.3 ozaki atf_check -s exit:0 -o ignore rump.ifconfig shmif0 down 165 1.2 ozaki atf_check -s exit:0 -o match:'2 packets' rump.ifconfig -a -z 166 1.2 ozaki atf_check -s exit:0 -o not-match:'2 packets' rump.ifconfig -a -v 167 1.3 ozaki atf_check -s exit:0 -o match:'0 packets' rump.ifconfig -a -v 168 1.3 ozaki atf_check -s exit:0 -o ignore rump.ifconfig shmif0 up 169 1.2 ozaki 170 1.2 ozaki # ifconfig -l [-bdsu] 171 1.22 andvar # -l shows only interface names 172 1.9 ozaki atf_check -s exit:0 -o match:'lo0' rump.ifconfig -l 173 1.9 ozaki atf_check -s exit:0 -o match:'shmif0' rump.ifconfig -l 174 1.2 ozaki atf_check -s exit:0 -o match:'shmif0' rump.ifconfig -l -b 175 1.9 ozaki atf_check -s exit:0 -o not-match:'lo0' rump.ifconfig -l -b 176 1.2 ozaki atf_check -s exit:0 -o ignore rump.ifconfig -l -d 177 1.9 ozaki atf_check -s exit:0 -o match:'lo0' rump.ifconfig -l -s 178 1.9 ozaki atf_check -s exit:0 -o match:'shmif0' rump.ifconfig -l -s 179 1.9 ozaki atf_check -s exit:0 -o match:'lo0' rump.ifconfig -l -u 180 1.9 ozaki atf_check -s exit:0 -o match:'shmif0' rump.ifconfig -l -u 181 1.2 ozaki 182 1.2 ozaki # ifconfig -s interface 183 1.2 ozaki # -s interface exists with 0 / 1 if connected / disconnected 184 1.2 ozaki atf_check -s exit:0 -o empty rump.ifconfig -s lo0 185 1.2 ozaki atf_check -s exit:0 -o empty rump.ifconfig -s shmif0 186 1.2 ozaki 187 1.2 ozaki # ifconfig -C 188 1.2 ozaki # -C shows all of the interface cloners available on the system 189 1.15 ozaki atf_check -s exit:0 -o match:'shmif carp lo' rump.ifconfig -C 190 1.2 ozaki 191 1.2 ozaki unset RUMP_SERVER 192 1.2 ozaki } 193 1.2 ozaki 194 1.10 ozaki ifconfig_options_cleanup() 195 1.2 ozaki { 196 1.2 ozaki 197 1.2 ozaki env RUMP_SERVER=${RUMP_SERVER1} rump.halt 198 1.2 ozaki } 199 1.2 ozaki 200 1.4 ozaki 201 1.10 ozaki atf_test_case ifconfig_parameters cleanup 202 1.10 ozaki ifconfig_parameters_head() 203 1.4 ozaki { 204 1.10 ozaki atf_set "descr" "tests of interface parameters" 205 1.4 ozaki atf_set "require.progs" "rump_server" 206 1.4 ozaki } 207 1.4 ozaki 208 1.10 ozaki ifconfig_parameters_body() 209 1.4 ozaki { 210 1.5 ozaki local interval= 211 1.5 ozaki 212 1.4 ozaki atf_check -s exit:0 rump_server ${RUMP_FLAGS} ${RUMP_SERVER1} 213 1.4 ozaki atf_check -s exit:0 rump_server ${RUMP_FLAGS} ${RUMP_SERVER2} 214 1.4 ozaki 215 1.4 ozaki export RUMP_SERVER=${RUMP_SERVER1} 216 1.4 ozaki atf_check -s exit:0 rump.ifconfig shmif0 create 217 1.4 ozaki atf_check -s exit:0 rump.ifconfig shmif0 linkstr shmbus 218 1.4 ozaki atf_check -s exit:0 rump.ifconfig shmif0 192.168.0.1/24 219 1.4 ozaki atf_check -s exit:0 rump.ifconfig shmif0 up 220 1.4 ozaki unset RUMP_SERVER 221 1.4 ozaki 222 1.4 ozaki export RUMP_SERVER=${RUMP_SERVER2} 223 1.4 ozaki atf_check -s exit:0 rump.ifconfig shmif0 create 224 1.4 ozaki atf_check -s exit:0 rump.ifconfig shmif0 linkstr shmbus 225 1.4 ozaki atf_check -s exit:0 rump.ifconfig shmif0 192.168.0.2/24 226 1.4 ozaki atf_check -s exit:0 rump.ifconfig shmif0 inet 192.168.0.3/24 alias 227 1.4 ozaki atf_check -s exit:0 rump.ifconfig shmif0 up 228 1.4 ozaki unset RUMP_SERVER 229 1.4 ozaki 230 1.4 ozaki export RUMP_SERVER=${RUMP_SERVER1} 231 1.4 ozaki 232 1.4 ozaki # active 233 1.4 ozaki atf_check -s exit:0 rump.ifconfig shmif0 link b2:a0:75:00:00:01 active 234 1.4 ozaki atf_check -s exit:0 -o match:'address:.b2:a0:75:00:00:01' \ 235 1.4 ozaki rump.ifconfig shmif0 236 1.4 ozaki # down, up 237 1.4 ozaki atf_check -s exit:0 rump.ifconfig shmif0 down 238 1.14 kre atf_check -s not-exit:0 -o ignore -e ignore rump.ping -c 1 \ 239 1.6 ozaki -w $TIMEOUT -n 192.168.0.2 240 1.4 ozaki atf_check -s exit:0 rump.ifconfig shmif0 up 241 1.13 roy atf_check -s exit:0 rump.ifconfig -w 10 242 1.6 ozaki atf_check -s exit:0 -o ignore rump.ping -c 1 -w $TIMEOUT -n 192.168.0.2 243 1.4 ozaki 244 1.4 ozaki # alias 245 1.4 ozaki atf_check -s exit:0 rump.ifconfig shmif0 inet 192.168.1.1/24 alias 246 1.13 roy atf_check -s exit:0 -o match:'192.168.1.1/24' rump.ifconfig shmif0 247 1.4 ozaki atf_check -s exit:0 rump.ifconfig shmif0 inet 192.168.1.1/24 -alias 248 1.13 roy atf_check -s exit:0 -o not-match:'192.168.1.1/24' rump.ifconfig shmif0 249 1.4 ozaki atf_check -s exit:0 rump.ifconfig shmif0 inet6 fc00::1 250 1.4 ozaki atf_check -s exit:0 rump.ifconfig shmif0 inet6 fc00::2 251 1.4 ozaki atf_check -s exit:0 -o match:'fc00::1' rump.ifconfig shmif0 inet6 252 1.4 ozaki atf_check -s exit:0 -o match:'fc00::2' rump.ifconfig shmif0 inet6 253 1.4 ozaki 254 1.4 ozaki # delete 255 1.4 ozaki atf_check -s exit:0 rump.ifconfig shmif0 inet 192.168.1.1 alias 256 1.4 ozaki atf_check -s exit:0 rump.ifconfig shmif0 inet 192.168.1.1 delete 257 1.4 ozaki atf_check -s exit:0 -o not-match:'192.168.1.1' rump.ifconfig shmif0 inet 258 1.4 ozaki atf_check -s exit:0 rump.ifconfig shmif0 inet 192.168.0.1 delete 259 1.4 ozaki atf_check -s exit:0 -o not-match:'192.168.0.1' rump.ifconfig shmif0 inet 260 1.4 ozaki atf_check -s exit:0 rump.ifconfig shmif0 inet6 fc00::1 delete 261 1.4 ozaki atf_check -s exit:0 rump.ifconfig shmif0 inet6 fc00::2 delete 262 1.4 ozaki atf_check -s exit:0 -o not-match:'fc00::1' rump.ifconfig shmif0 inet6 263 1.4 ozaki atf_check -s exit:0 -o not-match:'fc00::2' rump.ifconfig shmif0 inet6 264 1.7 ozaki # can delete inactive link 265 1.7 ozaki atf_check -s exit:0 rump.ifconfig shmif0 link b2:a0:75:00:00:02 266 1.7 ozaki atf_check -s exit:0 rump.ifconfig shmif0 link b2:a0:75:00:00:02 delete 267 1.7 ozaki # cannot delete active link 268 1.7 ozaki atf_check -s not-exit:0 -e match:'SIOCDLIFADDR: Device busy' \ 269 1.7 ozaki rump.ifconfig shmif0 link b2:a0:75:00:00:01 delete 270 1.4 ozaki 271 1.4 ozaki atf_check -s exit:0 rump.ifconfig shmif0 inet 192.168.0.1/24 272 1.4 ozaki 273 1.4 ozaki # arp 274 1.4 ozaki atf_check -s exit:0 rump.ifconfig shmif0 -arp 275 1.4 ozaki atf_check -s not-exit:0 -o ignore -e ignore \ 276 1.6 ozaki rump.ping -c 1 -w $TIMEOUT -n 192.168.0.3 277 1.4 ozaki atf_check -s exit:0 -o not-match:'192.168.0.3' rump.arp -an 278 1.8 ozaki # The entry shouldn't appear in the routing table anymore 279 1.8 ozaki atf_check -s exit:0 -o not-match:'192.168.0.3' rump.netstat -nr 280 1.4 ozaki 281 1.4 ozaki # netmask 282 1.4 ozaki atf_check -s exit:0 rump.ifconfig shmif0 inet 172.16.0.1 netmask 255.255.255.0 alias 283 1.4 ozaki atf_check -s exit:0 -o match:'172.16.0/24' rump.netstat -rn -f inet 284 1.4 ozaki atf_check -s exit:0 rump.ifconfig shmif0 inet 172.16.0.1 delete 285 1.4 ozaki 286 1.4 ozaki # broadcast (does it not work?) 287 1.4 ozaki atf_check -s exit:0 rump.ifconfig shmif0 inet 172.16.0.1 \ 288 1.4 ozaki broadcast 255.255.255.255 alias 289 1.4 ozaki atf_check -s exit:0 -o match:'broadcast 255.255.255.255' \ 290 1.4 ozaki rump.ifconfig shmif0 inet 291 1.4 ozaki 292 1.4 ozaki # metric (external only) 293 1.4 ozaki atf_check -s exit:0 rump.ifconfig shmif0 metric 10 294 1.4 ozaki atf_check -s exit:0 rump.ifconfig shmif0 metric 0 295 1.4 ozaki 296 1.4 ozaki # prefixlen 297 1.4 ozaki atf_check -s exit:0 rump.ifconfig shmif0 inet6 fc00::1 prefixlen 70 298 1.4 ozaki atf_check -s exit:0 -o match:'fc00::/70' rump.netstat -rn -f inet6 299 1.4 ozaki 300 1.4 ozaki # anycast 301 1.4 ozaki atf_check -s exit:0 rump.ifconfig shmif0 inet6 fc00::2 anycast 302 1.12 christos atf_check -s exit:0 -o match:"fc00::2.+$anycast" rump.ifconfig shmif0 inet6 303 1.4 ozaki 304 1.4 ozaki # deprecated 305 1.4 ozaki atf_check -s exit:0 rump.ifconfig shmif0 inet6 fc00::3 deprecated 306 1.5 ozaki # Not deprecated immediately. Need to wait nd6_timer that does it is scheduled. 307 1.5 ozaki interval=$(sysctl -n net.inet6.icmp6.nd6_prune) 308 1.5 ozaki atf_check -s exit:0 sleep $((interval + 1)) 309 1.12 christos atf_check -s exit:0 -o match:"fc00::3.+$deprecated" rump.ifconfig shmif0 inet6 310 1.4 ozaki atf_check -s exit:0 rump.ifconfig shmif0 inet6 fc00::3 -deprecated 311 1.12 christos atf_check -s exit:0 -o not-match:"fc00::3.+$deprecated" rump.ifconfig shmif0 inet6 312 1.4 ozaki 313 1.4 ozaki # pltime 314 1.4 ozaki atf_check -s exit:0 rump.ifconfig shmif0 inet6 fc00::3 pltime 3 315 1.12 christos atf_check -s exit:0 -o not-match:"fc00::3.+$deprecated" rump.ifconfig shmif0 inet6 316 1.4 ozaki atf_check -s exit:0 sleep 5 317 1.12 christos atf_check -s exit:0 -o match:"fc00::3.+$deprecated" rump.ifconfig shmif0 inet6 318 1.4 ozaki 319 1.4 ozaki # eui64 320 1.4 ozaki atf_check -s exit:0 rump.ifconfig shmif0 inet6 fc00:1::0 eui64 321 1.4 ozaki atf_check -s exit:0 -o match:'fc00:1::' rump.ifconfig shmif0 inet6 322 1.4 ozaki 323 1.4 ozaki unset RUMP_SERVER 324 1.4 ozaki } 325 1.4 ozaki 326 1.10 ozaki ifconfig_parameters_cleanup() 327 1.4 ozaki { 328 1.4 ozaki env RUMP_SERVER=${RUMP_SERVER1} rump.halt 329 1.4 ozaki env RUMP_SERVER=${RUMP_SERVER2} rump.halt 330 1.4 ozaki } 331 1.4 ozaki 332 1.16 ozaki ifconfig_up_down_common() 333 1.16 ozaki { 334 1.16 ozaki local family=$1 335 1.16 ozaki local ip=$2 336 1.16 ozaki 337 1.16 ozaki if [ $family = inet6 ]; then 338 1.16 ozaki rump_server_start $RUMP_SERVER1 netinet6 339 1.16 ozaki else 340 1.16 ozaki rump_server_start $RUMP_SERVER1 341 1.16 ozaki fi 342 1.16 ozaki rump_server_add_iface $RUMP_SERVER1 shmif0 bus1 343 1.16 ozaki 344 1.16 ozaki export RUMP_SERVER=$RUMP_SERVER1 345 1.16 ozaki rump.ifconfig shmif0 346 1.16 ozaki 347 1.16 ozaki # Set the same number of trials to make the following test 348 1.16 ozaki # work for both IPv4 and IPv6 349 1.16 ozaki if [ $family = inet6 ]; then 350 1.16 ozaki atf_check -s exit:0 -o ignore \ 351 1.17 ozaki rump.sysctl -w net.inet6.ip6.dad_count=5 352 1.16 ozaki else 353 1.16 ozaki atf_check -s exit:0 -o ignore \ 354 1.17 ozaki rump.sysctl -w net.inet.ip.dad_count=5 355 1.16 ozaki fi 356 1.16 ozaki 357 1.16 ozaki # 358 1.16 ozaki # Assign an address and up the interface at once 359 1.16 ozaki # 360 1.16 ozaki atf_check -s exit:0 rump.ifconfig shmif0 $family $ip/24 up 361 1.16 ozaki # UP 362 1.16 ozaki atf_check -s exit:0 \ 363 1.16 ozaki -o match:'shmif0.*UP.*RUNNING' rump.ifconfig shmif0 364 1.16 ozaki # The address is TENTATIVE 365 1.16 ozaki atf_check -s exit:0 \ 366 1.16 ozaki -o match:"$ip.*TENTATIVE" rump.ifconfig shmif0 367 1.16 ozaki # Waiting for DAD completion 368 1.16 ozaki atf_check -s exit:0 rump.ifconfig -w 10 369 1.16 ozaki # The address left TENTATIVE 370 1.16 ozaki atf_check -s exit:0 \ 371 1.16 ozaki -o not-match:"$ip.*TENTATIVE" rump.ifconfig shmif0 372 1.16 ozaki 373 1.16 ozaki # 374 1.16 ozaki # ifconfig down 375 1.16 ozaki # 376 1.16 ozaki atf_check -s exit:0 rump.ifconfig shmif0 down 377 1.16 ozaki atf_check -s exit:0 \ 378 1.16 ozaki -o not-match:'shmif0.*UP.*RUNNING' rump.ifconfig shmif0 379 1.16 ozaki # The address becomes DETATCHED 380 1.16 ozaki atf_check -s exit:0 \ 381 1.16 ozaki -o match:"$ip.*DETACHED" rump.ifconfig shmif0 382 1.16 ozaki # ifconfig up 383 1.16 ozaki atf_check -s exit:0 rump.ifconfig shmif0 up 384 1.16 ozaki # The address becomes TENTATIVE 385 1.16 ozaki atf_check -s exit:0 \ 386 1.16 ozaki -o match:"$ip.*TENTATIVE" rump.ifconfig shmif0 387 1.16 ozaki # Waiting for DAD completion 388 1.16 ozaki atf_check -s exit:0 rump.ifconfig -w 10 389 1.16 ozaki # The address left TENTATIVE 390 1.16 ozaki atf_check -s exit:0 \ 391 1.16 ozaki -o not-match:"$ip.*TENTATIVE" rump.ifconfig shmif0 392 1.16 ozaki 393 1.16 ozaki # Clean up 394 1.16 ozaki atf_check -s exit:0 rump.ifconfig shmif0 $family $ip delete 395 1.16 ozaki 396 1.16 ozaki # 397 1.16 ozaki # Assign an address 398 1.16 ozaki # 399 1.16 ozaki atf_check -s exit:0 rump.ifconfig shmif0 $family $ip/24 400 1.16 ozaki # UP automatically 401 1.16 ozaki atf_check -s exit:0 \ 402 1.16 ozaki -o match:'shmif0.*UP.*RUNNING' rump.ifconfig shmif0 403 1.16 ozaki # Need some delay 404 1.16 ozaki sleep 1 405 1.16 ozaki # The IP becomes TENTATIVE 406 1.16 ozaki atf_check -s exit:0 \ 407 1.16 ozaki -o match:"$ip.*TENTATIVE" rump.ifconfig shmif0 408 1.16 ozaki # Waiting for DAD completion 409 1.16 ozaki atf_check -s exit:0 rump.ifconfig -w 10 410 1.16 ozaki # The address left TENTATIVE 411 1.16 ozaki atf_check -s exit:0 \ 412 1.16 ozaki -o not-match:"$ip.*TENTATIVE" rump.ifconfig shmif0 413 1.16 ozaki 414 1.16 ozaki rump_server_destroy_ifaces 415 1.16 ozaki } 416 1.16 ozaki 417 1.16 ozaki atf_test_case ifconfig_up_down_ipv4 cleanup 418 1.16 ozaki ifconfig_up_down_ipv4_head() 419 1.16 ozaki { 420 1.16 ozaki atf_set "descr" "tests of interface up/down (IPv4)" 421 1.16 ozaki atf_set "require.progs" "rump_server" 422 1.16 ozaki } 423 1.16 ozaki 424 1.16 ozaki ifconfig_up_down_ipv4_body() 425 1.16 ozaki { 426 1.16 ozaki 427 1.16 ozaki ifconfig_up_down_common inet 10.0.0.1 428 1.16 ozaki } 429 1.16 ozaki 430 1.16 ozaki ifconfig_up_down_ipv4_cleanup() 431 1.16 ozaki { 432 1.16 ozaki 433 1.16 ozaki $DEBUG && dump 434 1.16 ozaki cleanup 435 1.16 ozaki } 436 1.16 ozaki 437 1.16 ozaki atf_test_case ifconfig_up_down_ipv6 cleanup 438 1.16 ozaki ifconfig_up_down_ipv6_head() 439 1.16 ozaki { 440 1.16 ozaki atf_set "descr" "tests of interface up/down (IPv6)" 441 1.16 ozaki atf_set "require.progs" "rump_server" 442 1.16 ozaki } 443 1.16 ozaki 444 1.16 ozaki ifconfig_up_down_ipv6_body() 445 1.16 ozaki { 446 1.16 ozaki 447 1.16 ozaki ifconfig_up_down_common inet6 fc00::1 448 1.16 ozaki } 449 1.16 ozaki 450 1.16 ozaki ifconfig_up_down_ipv6_cleanup() 451 1.16 ozaki { 452 1.16 ozaki 453 1.16 ozaki $DEBUG && dump 454 1.16 ozaki cleanup 455 1.16 ozaki } 456 1.16 ozaki 457 1.18 ozaki atf_test_case ifconfig_number cleanup 458 1.18 ozaki ifconfig_number_head() 459 1.18 ozaki { 460 1.18 ozaki atf_set "descr" "tests of passing a number (if_index) to ifconfig" 461 1.18 ozaki atf_set "require.progs" "rump_server" 462 1.18 ozaki } 463 1.18 ozaki 464 1.18 ozaki ifconfig_number_body() 465 1.18 ozaki { 466 1.18 ozaki 467 1.18 ozaki rump_server_start $RUMP_SERVER1 468 1.18 ozaki rump_server_add_iface $RUMP_SERVER1 shmif0 bus1 469 1.18 ozaki 470 1.18 ozaki export RUMP_SERVER=$RUMP_SERVER1 471 1.18 ozaki atf_check -s not-exit:0 -e match:'Device not configured' rump.ifconfig 0 472 1.18 ozaki atf_check -s exit:0 rump.ifconfig 1 # lo0 473 1.18 ozaki atf_check -s exit:0 rump.ifconfig 2 # shmif0 474 1.18 ozaki atf_check -s not-exit:0 -e match:'Device not configured' rump.ifconfig 3 475 1.18 ozaki 476 1.18 ozaki rump_server_destroy_ifaces 477 1.18 ozaki } 478 1.18 ozaki 479 1.18 ozaki ifconfig_number_cleanup() 480 1.18 ozaki { 481 1.18 ozaki 482 1.18 ozaki $DEBUG && dump 483 1.18 ozaki cleanup 484 1.18 ozaki } 485 1.18 ozaki 486 1.20 ozaki atf_test_case ifconfig_description cleanup 487 1.20 ozaki ifconfig_description_head() 488 1.20 ozaki { 489 1.20 ozaki atf_set "descr" "tests of setting and unsetting interface description" 490 1.20 ozaki atf_set "require.progs" "rump_server" 491 1.20 ozaki } 492 1.20 ozaki 493 1.20 ozaki ifconfig_description_body() 494 1.20 ozaki { 495 1.20 ozaki 496 1.20 ozaki rump_server_start $RUMP_SERVER1 497 1.20 ozaki 498 1.20 ozaki export RUMP_SERVER=$RUMP_SERVER1 499 1.20 ozaki for descr in description descr; do 500 1.20 ozaki atf_check -s exit:0 rump.ifconfig lo0 $descr DESCRIPTION-TEST 501 1.20 ozaki atf_check -s exit:0 -o match:"DESCRIPTION-TEST" rump.ifconfig lo0 502 1.20 ozaki atf_check -s exit:0 rump.ifconfig lo0 $descr DESCRIPTION-TEST-MODIFIED 503 1.20 ozaki atf_check -s exit:0 -o match:"DESCRIPTION-TEST-MODIFIED" rump.ifconfig lo0 504 1.20 ozaki atf_check -s exit:0 rump.ifconfig lo0 -$descr 505 1.20 ozaki atf_check -s exit:0 -o not-match:'DESCRIPTION-TEST-MODIFIED' rump.ifconfig lo0 506 1.20 ozaki 507 1.20 ozaki atf_check -s exit:0 rump.ifconfig lo0 $descr `printf "%063d" 0` 508 1.20 ozaki atf_check -s not-exit:0 -e match:"description too long" rump.ifconfig lo0 $descr `printf "%064d" 0` 509 1.20 ozaki atf_check -s exit:0 rump.ifconfig lo0 $descr "" 510 1.20 ozaki done 511 1.20 ozaki } 512 1.20 ozaki 513 1.20 ozaki ifconfig_description_cleanup() 514 1.20 ozaki { 515 1.20 ozaki 516 1.20 ozaki $DEBUG && dump 517 1.20 ozaki cleanup 518 1.20 ozaki } 519 1.20 ozaki 520 1.1 ozaki atf_init_test_cases() 521 1.1 ozaki { 522 1.1 ozaki 523 1.10 ozaki atf_add_test_case ifconfig_create_destroy 524 1.10 ozaki atf_add_test_case ifconfig_options 525 1.10 ozaki atf_add_test_case ifconfig_parameters 526 1.16 ozaki atf_add_test_case ifconfig_up_down_ipv4 527 1.16 ozaki atf_add_test_case ifconfig_up_down_ipv6 528 1.18 ozaki atf_add_test_case ifconfig_number 529 1.20 ozaki atf_add_test_case ifconfig_description 530 1.1 ozaki } 531