1 1.3 ozaki # $NetBSD: t_cbq.sh,v 1.3 2021/07/16 02:33:32 ozaki-r Exp $ 2 1.1 ozaki # 3 1.1 ozaki # Copyright (c) 2021 Internet Initiative Japan 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 SOCK_LOCAL=unix://altq_local 29 1.1 ozaki SOCK_REMOTE=unix://altq_remote 30 1.1 ozaki BUS=bus_altq 31 1.1 ozaki TIMEOUT=3 32 1.1 ozaki 33 1.1 ozaki # rumphijack can't handle AF_LOCAL socket (/var/run/altq_quip) correctly, 34 1.1 ozaki # so use the socket via the host. 35 1.1 ozaki HIJACKING_ALTQ="$HIJACKING,blanket=/dev/altq/altq:/dev/altq/cbq:/etc/altq.conf:/var/run/altqd.pid" 36 1.1 ozaki 37 1.1 ozaki DEBUG=${DEBUG:-false} 38 1.1 ozaki 39 1.1 ozaki IP_LOCAL1=10.0.0.1 40 1.1 ozaki IP_LOCAL2=10.0.1.1 41 1.1 ozaki IP_REMOTE11=10.0.0.2 42 1.1 ozaki IP_REMOTE12=10.0.0.22 43 1.2 ozaki IP_REMOTE13=10.0.0.23 44 1.1 ozaki IP_REMOTE21=10.0.1.2 45 1.1 ozaki IP_REMOTE22=10.0.1.22 46 1.1 ozaki ALTQD_PIDFILE=./pid 47 1.1 ozaki 48 1.3 ozaki start_altqd() 49 1.3 ozaki { 50 1.3 ozaki 51 1.3 ozaki $HIJACKING_ALTQ altqd 52 1.3 ozaki 53 1.3 ozaki sleep 0.1 54 1.3 ozaki if $HIJACKING_ALTQ test ! -f /var/run/altqd.pid; then 55 1.3 ozaki sleep 1 56 1.3 ozaki fi 57 1.3 ozaki 58 1.3 ozaki $HIJACKING_ALTQ test -f /var/run/altqd.pid 59 1.3 ozaki if [ $? != 0 ]; then 60 1.3 ozaki atf_fail "starting altqd failed" 61 1.3 ozaki fi 62 1.3 ozaki 63 1.3 ozaki $HIJACKING_ALTQ cat /var/run/altqd.pid > $ALTQD_PIDFILE 64 1.3 ozaki } 65 1.1 ozaki 66 1.1 ozaki start_altqd_basic() 67 1.1 ozaki { 68 1.1 ozaki 69 1.1 ozaki export RUMP_SERVER=$SOCK_LOCAL 70 1.1 ozaki 71 1.1 ozaki $HIJACKING_ALTQ mkdir -p /rump/etc 72 1.1 ozaki $HIJACKING_ALTQ mkdir -p /rump/var/run 73 1.1 ozaki 74 1.1 ozaki cat > ./altq.conf <<-EOF 75 1.1 ozaki interface shmif0 cbq 76 1.1 ozaki class cbq shmif0 root_class NULL pbandwidth 100 77 1.1 ozaki class cbq shmif0 normal_class root_class pbandwidth 50 default 78 1.1 ozaki filter shmif0 normal_class $IP_REMOTE11 0 0 0 0 79 1.1 ozaki class cbq shmif0 drop_class root_class pbandwidth 0 80 1.1 ozaki filter shmif0 drop_class $IP_REMOTE12 0 0 0 0 81 1.1 ozaki EOF 82 1.1 ozaki $DEBUG && cat ./altq.conf 83 1.1 ozaki atf_check -s exit:0 $HIJACKING_ALTQ cp ./altq.conf /rump/etc/altq.conf 84 1.3 ozaki atf_check -s exit:0 $HIJACKING_ALTQ test -f /rump/etc/altq.conf 85 1.1 ozaki 86 1.3 ozaki start_altqd 87 1.1 ozaki 88 1.1 ozaki $DEBUG && $HIJACKING_ALTQ altqstat -s 89 1.1 ozaki $HIJACKING_ALTQ altqstat -c 1 >./out 90 1.1 ozaki $DEBUG && cat ./out 91 1.1 ozaki atf_check -s exit:0 \ 92 1.1 ozaki -o match:"altqstat: cbq on interface shmif0" \ 93 1.1 ozaki -o match:'Class 1 on Interface shmif0: root_class' \ 94 1.1 ozaki -o match:'Class 2 on Interface shmif0: normal_class' \ 95 1.1 ozaki -o match:'Class 3 on Interface shmif0: ctl_class' \ 96 1.1 ozaki -o match:'Class 4 on Interface shmif0: drop_class' \ 97 1.1 ozaki cat ./out 98 1.1 ozaki rm -f ./out 99 1.1 ozaki } 100 1.1 ozaki 101 1.1 ozaki shutdown_altqd() 102 1.1 ozaki { 103 1.1 ozaki local pid="$(cat $ALTQD_PIDFILE)" 104 1.1 ozaki 105 1.1 ozaki if [ -n "$pid" ]; then 106 1.1 ozaki pgrep -x altqd | grep -q $pid 107 1.1 ozaki if [ $? = 0 ]; then 108 1.1 ozaki kill $(cat $ALTQD_PIDFILE) 109 1.1 ozaki sleep 1 110 1.1 ozaki fi 111 1.1 ozaki $DEBUG && pgrep -x altqd 112 1.1 ozaki fi 113 1.1 ozaki } 114 1.1 ozaki 115 1.1 ozaki check_counter() 116 1.1 ozaki { 117 1.1 ozaki local file=$1 118 1.1 ozaki local name=$2 119 1.1 ozaki local match="$3" 120 1.1 ozaki 121 1.1 ozaki grep -A 8 ${name}_class $file > $file.$name 122 1.1 ozaki atf_check -s exit:0 -o match:"$match" cat $file.$name 123 1.1 ozaki rm -f $file.$name 124 1.1 ozaki } 125 1.1 ozaki 126 1.1 ozaki test_altq_cbq_basic_ipv4() 127 1.1 ozaki { 128 1.1 ozaki local ifconfig="atf_check -s exit:0 rump.ifconfig" 129 1.1 ozaki local ping="atf_check -s exit:0 -o ignore rump.ping" 130 1.1 ozaki local opts="-q -c 1 -w 1" 131 1.1 ozaki 132 1.1 ozaki rump_server_fs_start $SOCK_LOCAL local altq 133 1.1 ozaki rump_server_start $SOCK_REMOTE 134 1.1 ozaki 135 1.1 ozaki rump_server_add_iface $SOCK_LOCAL shmif0 $BUS 136 1.1 ozaki rump_server_add_iface $SOCK_REMOTE shmif0 $BUS 137 1.1 ozaki 138 1.1 ozaki export RUMP_SERVER=$SOCK_LOCAL 139 1.1 ozaki $ifconfig shmif0 inet $IP_LOCAL1/24 140 1.1 ozaki export RUMP_SERVER=$SOCK_REMOTE 141 1.1 ozaki $ifconfig shmif0 inet $IP_REMOTE11/24 142 1.1 ozaki $ifconfig shmif0 inet $IP_REMOTE12/24 alias 143 1.1 ozaki $ifconfig -w 10 144 1.1 ozaki 145 1.1 ozaki export RUMP_SERVER=$SOCK_LOCAL 146 1.1 ozaki # Invoke ARP 147 1.1 ozaki $ping $opts $IP_REMOTE11 148 1.1 ozaki $ping $opts $IP_REMOTE12 149 1.1 ozaki 150 1.1 ozaki start_altqd_basic 151 1.1 ozaki 152 1.1 ozaki export RUMP_SERVER=$SOCK_LOCAL 153 1.1 ozaki $ping $opts $IP_REMOTE11 154 1.1 ozaki 155 1.1 ozaki $HIJACKING_ALTQ altqstat -c 1 >./out 156 1.1 ozaki $DEBUG && cat ./out 157 1.1 ozaki 158 1.1 ozaki check_counter ./out normal 'pkts: 1' 159 1.1 ozaki check_counter ./out root 'pkts: 1' 160 1.1 ozaki check_counter ./out drop 'pkts: 0' 161 1.1 ozaki 162 1.1 ozaki export RUMP_SERVER=$SOCK_LOCAL 163 1.1 ozaki atf_check -s not-exit:0 -o ignore -e match:"No buffer space available" \ 164 1.1 ozaki rump.ping $opts $IP_REMOTE12 165 1.1 ozaki 166 1.1 ozaki $HIJACKING_ALTQ altqstat -c 1 >./out 167 1.1 ozaki $DEBUG && cat ./out 168 1.1 ozaki 169 1.1 ozaki check_counter ./out drop 'drops: 1' 170 1.1 ozaki check_counter ./out drop 'pkts: 0' 171 1.1 ozaki check_counter ./out normal 'pkts: 1' 172 1.1 ozaki check_counter ./out root 'pkts: 1' 173 1.1 ozaki 174 1.1 ozaki rm -f ./out 175 1.1 ozaki 176 1.1 ozaki shutdown_altqd 177 1.1 ozaki 178 1.1 ozaki rump_server_destroy_ifaces 179 1.1 ozaki } 180 1.1 ozaki 181 1.1 ozaki start_altqd_multi_ifaces() 182 1.1 ozaki { 183 1.1 ozaki 184 1.1 ozaki export RUMP_SERVER=$SOCK_LOCAL 185 1.1 ozaki 186 1.1 ozaki $HIJACKING_ALTQ mkdir -p /rump/etc 187 1.1 ozaki $HIJACKING_ALTQ mkdir -p /rump/var/run 188 1.1 ozaki 189 1.1 ozaki cat > ./altq.conf <<-EOF 190 1.1 ozaki interface shmif0 cbq 191 1.1 ozaki class cbq shmif0 root_class NULL pbandwidth 100 192 1.1 ozaki class cbq shmif0 normal_class root_class pbandwidth 50 default 193 1.1 ozaki filter shmif0 normal_class $IP_REMOTE11 0 0 0 0 194 1.1 ozaki class cbq shmif0 drop_class root_class pbandwidth 0 195 1.1 ozaki filter shmif0 drop_class $IP_REMOTE12 0 0 0 0 196 1.1 ozaki interface shmif1 cbq 197 1.1 ozaki class cbq shmif1 root_class NULL pbandwidth 100 198 1.1 ozaki class cbq shmif1 normal_class root_class pbandwidth 50 default 199 1.1 ozaki filter shmif1 normal_class $IP_REMOTE21 0 0 0 0 200 1.1 ozaki class cbq shmif1 drop_class root_class pbandwidth 0 201 1.1 ozaki filter shmif1 drop_class $IP_REMOTE22 0 0 0 0 202 1.1 ozaki EOF 203 1.1 ozaki $DEBUG && cat ./altq.conf 204 1.1 ozaki atf_check -s exit:0 $HIJACKING_ALTQ cp ./altq.conf /rump/etc/altq.conf 205 1.1 ozaki $HIJACKING_ALTQ test -f /rump/etc/altq.conf 206 1.1 ozaki 207 1.3 ozaki start_altqd 208 1.1 ozaki 209 1.1 ozaki $DEBUG && $HIJACKING_ALTQ altqstat -s 210 1.1 ozaki 211 1.1 ozaki $HIJACKING_ALTQ altqstat -c 1 -i shmif0 >./out 212 1.1 ozaki $DEBUG && cat ./out 213 1.1 ozaki atf_check -s exit:0 \ 214 1.1 ozaki -o match:"altqstat: cbq on interface shmif0" \ 215 1.1 ozaki -o match:'Class 1 on Interface shmif0: root_class' \ 216 1.1 ozaki -o match:'Class 2 on Interface shmif0: normal_class' \ 217 1.1 ozaki -o match:'Class 3 on Interface shmif0: ctl_class' \ 218 1.1 ozaki -o match:'Class 4 on Interface shmif0: drop_class' \ 219 1.1 ozaki cat ./out 220 1.1 ozaki 221 1.1 ozaki $HIJACKING_ALTQ altqstat -c 1 -i shmif1 >./out 222 1.1 ozaki $DEBUG && cat ./out 223 1.1 ozaki atf_check -s exit:0 \ 224 1.1 ozaki -o match:"altqstat: cbq on interface shmif1" \ 225 1.1 ozaki -o match:'Class 1 on Interface shmif1: root_class' \ 226 1.1 ozaki -o match:'Class 2 on Interface shmif1: normal_class' \ 227 1.1 ozaki -o match:'Class 3 on Interface shmif1: ctl_class' \ 228 1.1 ozaki -o match:'Class 4 on Interface shmif1: drop_class' \ 229 1.1 ozaki cat ./out 230 1.1 ozaki 231 1.1 ozaki rm -f ./out 232 1.1 ozaki } 233 1.1 ozaki 234 1.1 ozaki test_altq_cbq_multi_ifaces_ipv4() 235 1.1 ozaki { 236 1.1 ozaki local ifconfig="atf_check -s exit:0 rump.ifconfig" 237 1.1 ozaki local ping="atf_check -s exit:0 -o ignore rump.ping" 238 1.1 ozaki local opts="-q -c 1 -w 1" 239 1.1 ozaki 240 1.1 ozaki rump_server_fs_start $SOCK_LOCAL local altq 241 1.1 ozaki rump_server_start $SOCK_REMOTE 242 1.1 ozaki 243 1.1 ozaki rump_server_add_iface $SOCK_LOCAL shmif0 $BUS 244 1.1 ozaki rump_server_add_iface $SOCK_LOCAL shmif1 $BUS 245 1.1 ozaki rump_server_add_iface $SOCK_REMOTE shmif0 $BUS 246 1.1 ozaki 247 1.1 ozaki export RUMP_SERVER=$SOCK_LOCAL 248 1.1 ozaki $ifconfig shmif0 inet $IP_LOCAL1/24 249 1.1 ozaki $ifconfig shmif1 inet $IP_LOCAL2/24 250 1.1 ozaki export RUMP_SERVER=$SOCK_REMOTE 251 1.1 ozaki $ifconfig shmif0 inet $IP_REMOTE11/24 252 1.1 ozaki $ifconfig shmif0 inet $IP_REMOTE12/24 alias 253 1.1 ozaki $ifconfig shmif0 inet $IP_REMOTE21/24 alias 254 1.1 ozaki $ifconfig shmif0 inet $IP_REMOTE22/24 alias 255 1.1 ozaki $ifconfig -w 10 256 1.1 ozaki 257 1.1 ozaki export RUMP_SERVER=$SOCK_LOCAL 258 1.1 ozaki # Invoke ARP 259 1.1 ozaki $ping $opts $IP_REMOTE11 260 1.1 ozaki $ping $opts $IP_REMOTE12 261 1.1 ozaki $ping $opts $IP_REMOTE21 262 1.1 ozaki $ping $opts $IP_REMOTE22 263 1.1 ozaki 264 1.1 ozaki start_altqd_multi_ifaces 265 1.1 ozaki 266 1.1 ozaki export RUMP_SERVER=$SOCK_LOCAL 267 1.1 ozaki $ping $opts $IP_REMOTE11 268 1.1 ozaki 269 1.1 ozaki $HIJACKING_ALTQ altqstat -c 1 -i shmif0 >./out 270 1.1 ozaki $DEBUG && cat ./out 271 1.1 ozaki 272 1.1 ozaki check_counter ./out normal 'pkts: 1' 273 1.1 ozaki check_counter ./out root 'pkts: 1' 274 1.1 ozaki check_counter ./out drop 'pkts: 0' 275 1.1 ozaki 276 1.1 ozaki $ping $opts $IP_REMOTE21 277 1.1 ozaki 278 1.1 ozaki $HIJACKING_ALTQ altqstat -c 1 -i shmif1 >./out 279 1.1 ozaki $DEBUG && cat ./out 280 1.1 ozaki 281 1.1 ozaki check_counter ./out normal 'pkts: 1' 282 1.1 ozaki check_counter ./out root 'pkts: 1' 283 1.1 ozaki check_counter ./out drop 'pkts: 0' 284 1.1 ozaki 285 1.1 ozaki export RUMP_SERVER=$SOCK_LOCAL 286 1.1 ozaki atf_check -s not-exit:0 -o ignore -e match:"No buffer space available" \ 287 1.1 ozaki rump.ping $opts $IP_REMOTE12 288 1.1 ozaki 289 1.1 ozaki $HIJACKING_ALTQ altqstat -c 1 -i shmif0 >./out 290 1.1 ozaki $DEBUG && cat ./out 291 1.1 ozaki 292 1.1 ozaki check_counter ./out drop 'drops: 1' 293 1.1 ozaki check_counter ./out drop 'pkts: 0' 294 1.1 ozaki check_counter ./out normal 'pkts: 1' 295 1.1 ozaki check_counter ./out root 'pkts: 1' 296 1.1 ozaki 297 1.1 ozaki atf_check -s not-exit:0 -o ignore -e match:"No buffer space available" \ 298 1.1 ozaki rump.ping $opts $IP_REMOTE22 299 1.1 ozaki 300 1.1 ozaki $HIJACKING_ALTQ altqstat -c 1 -i shmif1 >./out 301 1.1 ozaki $DEBUG && cat ./out 302 1.1 ozaki 303 1.1 ozaki check_counter ./out drop 'drops: 1' 304 1.1 ozaki check_counter ./out drop 'pkts: 0' 305 1.1 ozaki check_counter ./out normal 'pkts: 1' 306 1.1 ozaki check_counter ./out root 'pkts: 1' 307 1.1 ozaki 308 1.1 ozaki rm -f ./out 309 1.1 ozaki 310 1.1 ozaki shutdown_altqd 311 1.1 ozaki 312 1.1 ozaki rump_server_destroy_ifaces 313 1.1 ozaki } 314 1.1 ozaki 315 1.2 ozaki start_altqd_options() 316 1.2 ozaki { 317 1.2 ozaki 318 1.2 ozaki export RUMP_SERVER=$SOCK_LOCAL 319 1.2 ozaki 320 1.2 ozaki $HIJACKING_ALTQ mkdir -p /rump/etc 321 1.2 ozaki $HIJACKING_ALTQ mkdir -p /rump/var/run 322 1.2 ozaki 323 1.2 ozaki # - no-tbr and no-control are specified 324 1.2 ozaki # - root_class is the default class 325 1.2 ozaki cat > ./altq.conf <<-EOF 326 1.2 ozaki interface shmif0 cbq no-tbr no-control 327 1.2 ozaki class cbq shmif0 root_class NULL pbandwidth 100 default 328 1.2 ozaki class cbq shmif0 normal_class root_class pbandwidth 50 329 1.2 ozaki filter shmif0 normal_class $IP_REMOTE11 0 0 0 0 330 1.2 ozaki class cbq shmif0 drop_class root_class pbandwidth 0 331 1.2 ozaki filter shmif0 drop_class $IP_REMOTE12 0 0 0 0 332 1.2 ozaki EOF 333 1.2 ozaki $DEBUG && cat ./altq.conf 334 1.2 ozaki atf_check -s exit:0 $HIJACKING_ALTQ cp ./altq.conf /rump/etc/altq.conf 335 1.2 ozaki $HIJACKING_ALTQ test -f /rump/etc/altq.conf 336 1.2 ozaki 337 1.3 ozaki start_altqd 338 1.2 ozaki 339 1.2 ozaki $DEBUG && $HIJACKING_ALTQ altqstat -s 340 1.2 ozaki $HIJACKING_ALTQ altqstat -c 1 >./out 341 1.2 ozaki $DEBUG && cat ./out 342 1.2 ozaki atf_check -s exit:0 \ 343 1.2 ozaki -o match:"altqstat: cbq on interface shmif0" \ 344 1.2 ozaki -o match:'Class 1 on Interface shmif0: root_class' \ 345 1.2 ozaki -o match:'Class 2 on Interface shmif0: normal_class' \ 346 1.2 ozaki -o match:'Class 3 on Interface shmif0: drop_class' \ 347 1.2 ozaki cat ./out 348 1.2 ozaki atf_check -s exit:0 -o not-match:'shmif0: ctl_class' cat ./out 349 1.2 ozaki 350 1.2 ozaki rm -f ./out 351 1.2 ozaki } 352 1.2 ozaki 353 1.2 ozaki test_altq_cbq_options_ipv4() 354 1.2 ozaki { 355 1.2 ozaki local ifconfig="atf_check -s exit:0 rump.ifconfig" 356 1.2 ozaki local ping="atf_check -s exit:0 -o ignore rump.ping" 357 1.2 ozaki local opts="-q -c 1 -w 1" 358 1.2 ozaki 359 1.2 ozaki rump_server_fs_start $SOCK_LOCAL local altq 360 1.2 ozaki rump_server_start $SOCK_REMOTE 361 1.2 ozaki 362 1.2 ozaki rump_server_add_iface $SOCK_LOCAL shmif0 $BUS 363 1.2 ozaki rump_server_add_iface $SOCK_REMOTE shmif0 $BUS 364 1.2 ozaki 365 1.2 ozaki export RUMP_SERVER=$SOCK_LOCAL 366 1.2 ozaki $ifconfig shmif0 inet $IP_LOCAL1/24 367 1.2 ozaki export RUMP_SERVER=$SOCK_REMOTE 368 1.2 ozaki $ifconfig shmif0 inet $IP_REMOTE11/24 369 1.2 ozaki $ifconfig shmif0 inet $IP_REMOTE12/24 alias 370 1.2 ozaki $ifconfig shmif0 inet $IP_REMOTE13/24 alias 371 1.2 ozaki $ifconfig -w 10 372 1.2 ozaki 373 1.2 ozaki export RUMP_SERVER=$SOCK_LOCAL 374 1.2 ozaki # Invoke ARP 375 1.2 ozaki $ping $opts $IP_REMOTE11 376 1.2 ozaki $ping $opts $IP_REMOTE12 377 1.2 ozaki $ping $opts $IP_REMOTE13 378 1.2 ozaki 379 1.2 ozaki start_altqd_options 380 1.2 ozaki 381 1.2 ozaki export RUMP_SERVER=$SOCK_LOCAL 382 1.2 ozaki $ping $opts $IP_REMOTE11 383 1.2 ozaki 384 1.2 ozaki $HIJACKING_ALTQ altqstat -c 1 >./out 385 1.2 ozaki $DEBUG && cat ./out 386 1.2 ozaki 387 1.2 ozaki check_counter ./out normal 'pkts: 1' 388 1.2 ozaki check_counter ./out root 'pkts: 1' 389 1.2 ozaki check_counter ./out drop 'pkts: 0' 390 1.2 ozaki 391 1.2 ozaki atf_check -s not-exit:0 -o ignore -e match:"No buffer space available" \ 392 1.2 ozaki rump.ping $opts $IP_REMOTE12 393 1.2 ozaki 394 1.2 ozaki $HIJACKING_ALTQ altqstat -c 1 >./out 395 1.2 ozaki $DEBUG && cat ./out 396 1.2 ozaki 397 1.2 ozaki check_counter ./out drop 'drops: 1' 398 1.2 ozaki check_counter ./out drop 'pkts: 0' 399 1.2 ozaki check_counter ./out normal 'pkts: 1' 400 1.2 ozaki check_counter ./out root 'pkts: 1' 401 1.2 ozaki 402 1.2 ozaki # The packet goes to the default class 403 1.2 ozaki $ping $opts $IP_REMOTE13 404 1.2 ozaki 405 1.2 ozaki $HIJACKING_ALTQ altqstat -c 1 >./out 406 1.2 ozaki $DEBUG && cat ./out 407 1.2 ozaki 408 1.2 ozaki check_counter ./out drop 'pkts: 0' 409 1.2 ozaki check_counter ./out normal 'pkts: 1' 410 1.2 ozaki check_counter ./out root 'pkts: 2' 411 1.2 ozaki 412 1.2 ozaki rm -f ./out 413 1.2 ozaki 414 1.2 ozaki shutdown_altqd 415 1.2 ozaki 416 1.2 ozaki rump_server_destroy_ifaces 417 1.2 ozaki } 418 1.2 ozaki 419 1.1 ozaki add_test_case() 420 1.1 ozaki { 421 1.1 ozaki local algo=$1 422 1.1 ozaki local type=$2 423 1.1 ozaki local ipproto=$3 424 1.1 ozaki 425 1.1 ozaki name="altq_${algo}_${type}_${ipproto}" 426 1.1 ozaki desc="Tests for ALTQ $algo (${type}) on ${ipproto}" 427 1.1 ozaki 428 1.1 ozaki atf_test_case ${name} cleanup 429 1.1 ozaki eval " 430 1.1 ozaki ${name}_head() { 431 1.1 ozaki atf_set descr \"$desc\" 432 1.1 ozaki atf_set require.progs rump_server altqd altqstat 433 1.1 ozaki } 434 1.1 ozaki ${name}_body() { 435 1.1 ozaki test_altq_${algo}_${type}_${ipproto} 436 1.1 ozaki } 437 1.1 ozaki ${name}_cleanup() { 438 1.1 ozaki shutdown_altqd 439 1.1 ozaki \$DEBUG && dump 440 1.1 ozaki cleanup 441 1.1 ozaki } 442 1.1 ozaki " 443 1.1 ozaki atf_add_test_case ${name} 444 1.1 ozaki } 445 1.1 ozaki 446 1.1 ozaki atf_init_test_cases() 447 1.1 ozaki { 448 1.1 ozaki 449 1.1 ozaki add_test_case cbq basic ipv4 450 1.1 ozaki add_test_case cbq multi_ifaces ipv4 451 1.2 ozaki add_test_case cbq options ipv4 452 1.1 ozaki } 453