1 1.1 knakahar # $NetBSD: t_pppoe_unnumbered.sh,v 1.1 2022/11/25 08:43:16 knakahara Exp $ 2 1.1 knakahar # 3 1.1 knakahar # Copyright (c) 2022 Internet Initiative Japan Inc. 4 1.1 knakahar # All rights reserved. 5 1.1 knakahar # 6 1.1 knakahar # Redistribution and use in source and binary forms, with or without 7 1.1 knakahar # modification, are permitted provided that the following conditions 8 1.1 knakahar # are met: 9 1.1 knakahar # 1. Redistributions of source code must retain the above copyright 10 1.1 knakahar # notice, this list of conditions and the following disclaimer. 11 1.1 knakahar # 2. Redistributions in binary form must reproduce the above copyright 12 1.1 knakahar # notice, this list of conditions and the following disclaimer in the 13 1.1 knakahar # documentation and/or other materials provided with the distribution. 14 1.1 knakahar # 15 1.1 knakahar # THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS 16 1.1 knakahar # ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED 17 1.1 knakahar # TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR 18 1.1 knakahar # PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS 19 1.1 knakahar # BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 20 1.1 knakahar # CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 21 1.1 knakahar # SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 22 1.1 knakahar # INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 23 1.1 knakahar # CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 24 1.1 knakahar # ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 25 1.1 knakahar # POSSIBILITY OF SUCH DAMAGE. 26 1.1 knakahar # 27 1.1 knakahar 28 1.1 knakahar SERVER=unix://pppoe_server 29 1.1 knakahar CLIENT=unix://pppoe_client 30 1.1 knakahar 31 1.1 knakahar SERVER_IP=10.0.0.1 32 1.1 knakahar CLIENT_IP=10.1.1.1 33 1.1 knakahar AUTHNAME=foobar@baz.com 34 1.1 knakahar SECRET=oink 35 1.1 knakahar BUS_G=bus_global 36 1.1 knakahar BUS_CLIENT_L=bus_client_local 37 1.1 knakahar TIMEOUT=3 38 1.1 knakahar WAITTIME=10 39 1.1 knakahar DEBUG=${DEBUG:-false} 40 1.1 knakahar 41 1.1 knakahar atf_ifconfig() 42 1.1 knakahar { 43 1.1 knakahar 44 1.1 knakahar atf_check -s exit:0 rump.ifconfig $* 45 1.1 knakahar } 46 1.1 knakahar 47 1.1 knakahar atf_pppoectl() 48 1.1 knakahar { 49 1.1 knakahar 50 1.1 knakahar atf_check -s exit:0 -x "$HIJACKING pppoectl $*" 51 1.1 knakahar } 52 1.1 knakahar 53 1.1 knakahar setup_ifaces() 54 1.1 knakahar { 55 1.1 knakahar 56 1.1 knakahar rump_server_add_iface $SERVER shmif0 $BUS_G 57 1.1 knakahar rump_server_add_iface $CLIENT shmif0 $BUS_G 58 1.1 knakahar rump_server_add_iface $CLIENT shmif1 $BUS_CLIENT_L 59 1.1 knakahar rump_server_add_iface $SERVER pppoe0 60 1.1 knakahar rump_server_add_iface $CLIENT pppoe0 61 1.1 knakahar 62 1.1 knakahar export RUMP_SERVER=$SERVER 63 1.1 knakahar 64 1.1 knakahar atf_ifconfig shmif0 up 65 1.1 knakahar $inet && atf_ifconfig pppoe0 \ 66 1.1 knakahar inet $SERVER_IP $CLIENT_IP down 67 1.1 knakahar atf_ifconfig pppoe0 link0 68 1.1 knakahar 69 1.1 knakahar $DEBUG && rump.ifconfig pppoe0 debug 70 1.1 knakahar $DEBUG && rump.ifconfig 71 1.1 knakahar $DEBUG && $HIJACKING pppoectl -d pppoe0 72 1.1 knakahar unset RUMP_SERVER 73 1.1 knakahar 74 1.1 knakahar export RUMP_SERVER=$CLIENT 75 1.1 knakahar atf_ifconfig shmif0 up 76 1.1 knakahar 77 1.1 knakahar $inet && atf_ifconfig pppoe0 \ 78 1.1 knakahar inet $CLIENT_IP/32 0.0.0.1 down 79 1.1 knakahar 80 1.1 knakahar $DEBUG && rump.ifconfig pppoe0 debug 81 1.1 knakahar $DEBUG && rump.ifconfig 82 1.1 knakahar $DEBUG && $HIJACKING pppoectl -d pppoe0 83 1.1 knakahar 84 1.1 knakahar atf_ifconfig shmif1 inet $CLIENT_IP/29 85 1.1 knakahar unset RUMP_SERVER 86 1.1 knakahar } 87 1.1 knakahar 88 1.1 knakahar setup() 89 1.1 knakahar { 90 1.1 knakahar inet=true 91 1.1 knakahar 92 1.1 knakahar if [ $# -ne 0 ]; then 93 1.1 knakahar eval $@ 94 1.1 knakahar fi 95 1.1 knakahar 96 1.1 knakahar rump_server_start $SERVER pppoe 97 1.1 knakahar rump_server_start $CLIENT pppoe 98 1.1 knakahar 99 1.1 knakahar setup_ifaces 100 1.1 knakahar 101 1.1 knakahar export RUMP_SERVER=$SERVER 102 1.1 knakahar atf_pppoectl -e shmif0 pppoe0 103 1.1 knakahar unset RUMP_SERVER 104 1.1 knakahar 105 1.1 knakahar export RUMP_SERVER=$CLIENT 106 1.1 knakahar atf_pppoectl -e shmif0 pppoe0 107 1.1 knakahar unset RUMP_SERVER 108 1.1 knakahar } 109 1.1 knakahar 110 1.1 knakahar wait_for_opened() 111 1.1 knakahar { 112 1.1 knakahar local cp=$1 113 1.1 knakahar local dontfail=$2 114 1.1 knakahar local n=$WAITTIME 115 1.1 knakahar 116 1.1 knakahar for i in $(seq $n); do 117 1.1 knakahar $HIJACKING pppoectl -dd pppoe0 | grep -q "$cp state: opened" 118 1.1 knakahar if [ $? = 0 ]; then 119 1.1 knakahar rump.ifconfig -w 10 120 1.1 knakahar return 121 1.1 knakahar fi 122 1.1 knakahar sleep 1 123 1.1 knakahar done 124 1.1 knakahar 125 1.1 knakahar if [ "$dontfail" != "dontfail" ]; then 126 1.1 knakahar atf_fail "Couldn't connect to the server for $n seconds." 127 1.1 knakahar fi 128 1.1 knakahar } 129 1.1 knakahar 130 1.1 knakahar wait_for_disconnected() 131 1.1 knakahar { 132 1.1 knakahar local dontfail=$1 133 1.1 knakahar local n=$WAITTIME 134 1.1 knakahar 135 1.1 knakahar for i in $(seq $n); do 136 1.1 knakahar # If PPPoE client is disconnected by PPPoE server, then 137 1.1 knakahar # the LCP state will of the client is in a starting to send PADI. 138 1.1 knakahar $HIJACKING pppoectl -dd pppoe0 | grep -q \ 139 1.1 knakahar -e "LCP state: initial" -e "LCP state: starting" 140 1.1 knakahar [ $? = 0 ] && return 141 1.1 knakahar 142 1.1 knakahar sleep 1 143 1.1 knakahar done 144 1.1 knakahar 145 1.1 knakahar if [ "$dontfail" != "dontfail" ]; then 146 1.1 knakahar atf_fail "Couldn't disconnect for $n seconds." 147 1.1 knakahar fi 148 1.1 knakahar } 149 1.1 knakahar 150 1.1 knakahar run_test_unnumbered() 151 1.1 knakahar { 152 1.1 knakahar local auth="chap" 153 1.1 knakahar local cp="IPCP" 154 1.1 knakahar setup 155 1.1 knakahar 156 1.1 knakahar # As pppoe client doesn't support rechallenge yet. 157 1.1 knakahar local server_optparam="" 158 1.1 knakahar if [ $auth = "chap" ]; then 159 1.1 knakahar server_optparam="norechallenge" 160 1.1 knakahar fi 161 1.1 knakahar 162 1.1 knakahar export RUMP_SERVER=$SERVER 163 1.1 knakahar atf_pppoectl pppoe0 "hisauthproto=$auth" \ 164 1.1 knakahar "hisauthname=$AUTHNAME" "hisauthsecret=$SECRET" \ 165 1.1 knakahar "myauthproto=none" $server_optparam 166 1.1 knakahar atf_ifconfig pppoe0 up 167 1.1 knakahar unset RUMP_SERVER 168 1.1 knakahar 169 1.1 knakahar export RUMP_SERVER=$CLIENT 170 1.1 knakahar atf_pppoectl pppoe0 \ 171 1.1 knakahar "myauthname=$AUTHNAME" "myauthsecret=$SECRET" \ 172 1.1 knakahar "myauthproto=$auth" "hisauthproto=none" 173 1.1 knakahar atf_ifconfig pppoe0 unnumbered 174 1.1 knakahar atf_ifconfig pppoe0 up 175 1.1 knakahar $DEBUG && rump.ifconfig 176 1.1 knakahar $DEBUG && rump.route -nL show 177 1.1 knakahar wait_for_opened $cp 178 1.1 knakahar atf_check -s exit:0 -o ignore \ 179 1.1 knakahar rump.route add -inet default -ifp pppoe0 $CLIENT_IP 180 1.1 knakahar atf_check -s exit:0 -o ignore \ 181 1.1 knakahar rump.ping -c 1 -w $TIMEOUT -I $CLIENT_IP $SERVER_IP 182 1.1 knakahar unset RUMP_SERVER 183 1.1 knakahar 184 1.1 knakahar # test for disconnection from client just in case 185 1.1 knakahar export RUMP_SERVER=$CLIENT 186 1.1 knakahar atf_ifconfig pppoe0 down 187 1.1 knakahar wait_for_disconnected 188 1.1 knakahar export RUMP_SERVER=$SERVER 189 1.1 knakahar wait_for_disconnected 190 1.1 knakahar $DEBUG && $HIJACKING pppoectl -d pppoe0 191 1.1 knakahar atf_check -s not-exit:0 -o ignore -e ignore \ 192 1.1 knakahar rump.ping -c 1 -w $TIMEOUT $CLIENT_IP 193 1.1 knakahar atf_check -s exit:0 -o match:'initial' -x "$HIJACKING pppoectl -d pppoe0" 194 1.1 knakahar unset RUMP_SERVER 195 1.1 knakahar } 196 1.1 knakahar 197 1.1 knakahar atf_test_case pppoe_unnumbered cleanup 198 1.1 knakahar 199 1.1 knakahar pppoe_unnumbered_head() 200 1.1 knakahar { 201 1.1 knakahar 202 1.1 knakahar atf_set "descr" "Does pppoe unnumbered tests" 203 1.1 knakahar atf_set "require.progs" "rump_server pppoectl" 204 1.1 knakahar } 205 1.1 knakahar 206 1.1 knakahar pppoe_unnumbered_body() 207 1.1 knakahar { 208 1.1 knakahar 209 1.1 knakahar run_test_unnumbered 210 1.1 knakahar } 211 1.1 knakahar 212 1.1 knakahar pppoe_unnumbered_cleanup() 213 1.1 knakahar { 214 1.1 knakahar 215 1.1 knakahar $DEBUG && dump 216 1.1 knakahar cleanup 217 1.1 knakahar } 218 1.1 knakahar 219 1.1 knakahar atf_init_test_cases() 220 1.1 knakahar { 221 1.1 knakahar 222 1.1 knakahar atf_add_test_case pppoe_unnumbered 223 1.1 knakahar } 224