1*86fd57d8Sozaki-r# $NetBSD: t_broadcast_bind.sh,v 1.1 2022/11/17 08:42:56 ozaki-r Exp $ 2*86fd57d8Sozaki-r# 3*86fd57d8Sozaki-r# Copyright (c) 2022 Internet Initiative Japan Inc. 4*86fd57d8Sozaki-r# All rights reserved. 5*86fd57d8Sozaki-r# 6*86fd57d8Sozaki-r# Redistribution and use in source and binary forms, with or without 7*86fd57d8Sozaki-r# modification, are permitted provided that the following conditions 8*86fd57d8Sozaki-r# are met: 9*86fd57d8Sozaki-r# 1. Redistributions of source code must retain the above copyright 10*86fd57d8Sozaki-r# notice, this list of conditions and the following disclaimer. 11*86fd57d8Sozaki-r# 2. Redistributions in binary form must reproduce the above copyright 12*86fd57d8Sozaki-r# notice, this list of conditions and the following disclaimer in the 13*86fd57d8Sozaki-r# documentation and/or other materials provided with the distribution. 14*86fd57d8Sozaki-r# 15*86fd57d8Sozaki-r# THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS 16*86fd57d8Sozaki-r# ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED 17*86fd57d8Sozaki-r# TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR 18*86fd57d8Sozaki-r# PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS 19*86fd57d8Sozaki-r# BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 20*86fd57d8Sozaki-r# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 21*86fd57d8Sozaki-r# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 22*86fd57d8Sozaki-r# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 23*86fd57d8Sozaki-r# CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 24*86fd57d8Sozaki-r# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 25*86fd57d8Sozaki-r# POSSIBILITY OF SUCH DAMAGE. 26*86fd57d8Sozaki-r# 27*86fd57d8Sozaki-r 28*86fd57d8Sozaki-rSOCK=unix://broadcast_bind 29*86fd57d8Sozaki-rBUS=./bus 30*86fd57d8Sozaki-r 31*86fd57d8Sozaki-rDEBUG=${DEBUG:-false} 32*86fd57d8Sozaki-rNAME="broadcast_bind" 33*86fd57d8Sozaki-r 34*86fd57d8Sozaki-rtest_broadcast_bind_basic() 35*86fd57d8Sozaki-r{ 36*86fd57d8Sozaki-r #local insfx=$(jot -s '.' -r 2 0 255) 37*86fd57d8Sozaki-r local insfx="0.0" 38*86fd57d8Sozaki-r local inaddr="10.$insfx.10" 39*86fd57d8Sozaki-r local badaddr="10.$insfx.22" 40*86fd57d8Sozaki-r local bcaddr="10.$insfx.255" 41*86fd57d8Sozaki-r local prog="$(atf_get_srcdir)/broadcast_bind" 42*86fd57d8Sozaki-r 43*86fd57d8Sozaki-r rump_server_start $SOCK 44*86fd57d8Sozaki-r rump_server_add_iface $SOCK shmif0 $BUS 45*86fd57d8Sozaki-r 46*86fd57d8Sozaki-r export RUMP_SERVER=$SOCK 47*86fd57d8Sozaki-r atf_check -s exit:0 rump.ifconfig shmif0 $inaddr/24 48*86fd57d8Sozaki-r atf_check -s exit:0 $HIJACKING $prog $inaddr $badaddr $bcaddr 49*86fd57d8Sozaki-r} 50*86fd57d8Sozaki-r 51*86fd57d8Sozaki-radd_test() 52*86fd57d8Sozaki-r{ 53*86fd57d8Sozaki-r local name="${NAME}_$1" 54*86fd57d8Sozaki-r local desc="$2" 55*86fd57d8Sozaki-r 56*86fd57d8Sozaki-r atf_test_case "${name}" cleanup 57*86fd57d8Sozaki-r eval "${name}_head() { 58*86fd57d8Sozaki-r atf_set descr \"${desc}\" 59*86fd57d8Sozaki-r atf_set require.progs rump_server 60*86fd57d8Sozaki-r } 61*86fd57d8Sozaki-r ${name}_body() { 62*86fd57d8Sozaki-r test_${name} 63*86fd57d8Sozaki-r } 64*86fd57d8Sozaki-r ${name}_cleanup() { 65*86fd57d8Sozaki-r \$DEBUG && dump 66*86fd57d8Sozaki-r cleanup 67*86fd57d8Sozaki-r }" 68*86fd57d8Sozaki-r atf_add_test_case "${name}" 69*86fd57d8Sozaki-r} 70*86fd57d8Sozaki-r 71*86fd57d8Sozaki-ratf_init_test_cases() 72*86fd57d8Sozaki-r{ 73*86fd57d8Sozaki-r 74*86fd57d8Sozaki-r add_test basic "bind(2)ing with broadcast and inexistant addresses" 75*86fd57d8Sozaki-r} 76