t_pppoe_unnumbered.sh revision 1.1 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