t_woptions.sh revision 1.1 1 1.1 jruoho # $NetBSD: t_woptions.sh,v 1.1 2020/06/27 05:07:08 jruoho Exp $
2 1.1 jruoho #
3 1.1 jruoho # Copyright (c) 2020 The NetBSD Foundation, Inc.
4 1.1 jruoho # All rights reserved.
5 1.1 jruoho #
6 1.1 jruoho # This code is derived from software contributed to The NetBSD Foundation
7 1.1 jruoho # by Jukka Ruohonen.
8 1.1 jruoho #
9 1.1 jruoho # Redistribution and use in source and binary forms, with or without
10 1.1 jruoho # modification, are permitted provided that the following conditions
11 1.1 jruoho # are met:
12 1.1 jruoho # 1. Redistributions of source code must retain the above copyright
13 1.1 jruoho # notice, this list of conditions and the following disclaimer.
14 1.1 jruoho # 2. Redistributions in binary form must reproduce the above copyright
15 1.1 jruoho # notice, this list of conditions and the following disclaimer in the
16 1.1 jruoho # documentation and/or other materials provided with the distribution.
17 1.1 jruoho #
18 1.1 jruoho # THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
19 1.1 jruoho # ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
20 1.1 jruoho # TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
21 1.1 jruoho # PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
22 1.1 jruoho # BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
23 1.1 jruoho # CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
24 1.1 jruoho # SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
25 1.1 jruoho # INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
26 1.1 jruoho # CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
27 1.1 jruoho # ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
28 1.1 jruoho # POSSIBILITY OF SUCH DAMAGE.
29 1.1 jruoho
30 1.1 jruoho atf_test_case chan
31 1.1 jruoho chan_head() {
32 1.1 jruoho atf_set "require.user" "root"
33 1.1 jruoho atf_set "descr" "Test with ifconfig(8) that setting " \
34 1.1 jruoho "802.11 channels does not panic (PR kern/55424)"
35 1.1 jruoho }
36 1.1 jruoho
37 1.1 jruoho chan_body() {
38 1.1 jruoho
39 1.1 jruoho # This sequence covers both valid and invalid channels.
40 1.1 jruoho # Different 802.11 modes are not taken into account, and
41 1.1 jruoho # all interfaces are tested, including non-802.11 ones.
42 1.1 jruoho #
43 1.1 jruoho chans=$(seq 1 500)
44 1.1 jruoho
45 1.1 jruoho pkill -9 hostapd
46 1.1 jruoho pkill -9 wpa_supplicant
47 1.1 jruoho
48 1.1 jruoho for i in $(ifconfig -l); do
49 1.1 jruoho
50 1.1 jruoho if [ ! -z "$(echo $i | grep urtwn)" ]; then
51 1.1 jruoho echo "Skipping $i (PR kern/55424)"
52 1.1 jruoho continue
53 1.1 jruoho fi
54 1.1 jruoho
55 1.1 jruoho state="up"
56 1.1 jruoho ifconfig -s $i
57 1.1 jruoho
58 1.1 jruoho if [ $? -eq 1 ]; then
59 1.1 jruoho state="down"
60 1.1 jruoho fi
61 1.1 jruoho
62 1.1 jruoho m=""
63 1.1 jruoho mm=$(ifconfig $i | grep "chan")
64 1.1 jruoho
65 1.1 jruoho if [ ! -z "$mm" ]; then
66 1.1 jruoho m=$(echo $mm | awk {'print $2'})
67 1.1 jruoho fi
68 1.1 jruoho
69 1.1 jruoho for j in $chans; do
70 1.1 jruoho echo "Request: $i -> 802.11 chan $j"
71 1.1 jruoho ifconfig $i chan $j >/dev/null 2>&1
72 1.1 jruoho echo "Request: $i -> 802.11 -chan $j"
73 1.1 jruoho ifconfig $i -chan $j >/dev/null 2>&1
74 1.1 jruoho done
75 1.1 jruoho
76 1.1 jruoho if [ ! -z $m ]; then
77 1.1 jruoho ifconfig $i chan $m >/dev/null 2>&1
78 1.1 jruoho echo "Restored the channel of $i to $m"
79 1.1 jruoho fi
80 1.1 jruoho
81 1.1 jruoho ifconfig $i $state
82 1.1 jruoho echo "Restored state of $i to $state"
83 1.1 jruoho sleep 1
84 1.1 jruoho done
85 1.1 jruoho
86 1.1 jruoho /bin/sh /etc/rc.d/hostapd restart >/dev/null 2>&1
87 1.1 jruoho /bin/sh /etc/rc.d/wpa_supplicant restart >/dev/null 2>&1
88 1.1 jruoho
89 1.1 jruoho atf_pass
90 1.1 jruoho }
91 1.1 jruoho
92 1.1 jruoho atf_test_case mediaopt
93 1.1 jruoho mediaopt_head() {
94 1.1 jruoho atf_set "require.user" "root"
95 1.1 jruoho atf_set "descr" "Test with ifconfig(8) that setting " \
96 1.1 jruoho "802.11 media options does not panic (PR kern/35045)"
97 1.1 jruoho }
98 1.1 jruoho
99 1.1 jruoho mediaopt_body() {
100 1.1 jruoho
101 1.1 jruoho # Again, also non-802.11 interfaces are tested.
102 1.1 jruoho #
103 1.1 jruoho opts="adhoc monitor hostap"
104 1.1 jruoho
105 1.1 jruoho pkill -9 hostapd
106 1.1 jruoho pkill -9 wpa_supplicant
107 1.1 jruoho
108 1.1 jruoho for i in $(ifconfig -l); do
109 1.1 jruoho
110 1.1 jruoho state="up"
111 1.1 jruoho ifconfig -s $i
112 1.1 jruoho
113 1.1 jruoho if [ $? -eq 1 ]; then
114 1.1 jruoho state="down"
115 1.1 jruoho fi
116 1.1 jruoho
117 1.1 jruoho m=""
118 1.1 jruoho mm=$(ifconfig $i | grep "media")
119 1.1 jruoho
120 1.1 jruoho for j in $opts; do
121 1.1 jruoho
122 1.1 jruoho match=$(echo $mm | grep $j)
123 1.1 jruoho
124 1.1 jruoho if [ ! -z "$match" ]; then
125 1.1 jruoho m=$j
126 1.1 jruoho break
127 1.1 jruoho fi
128 1.1 jruoho done
129 1.1 jruoho
130 1.1 jruoho for j in $opts; do
131 1.1 jruoho echo "Request: $i -> 802.11 mediaopt $j"
132 1.1 jruoho ifconfig $i mediaopt $j >/dev/null 2>&1
133 1.1 jruoho echo "Request: $i -> 802.11 -mediaopt $j"
134 1.1 jruoho ifconfig $i -mediaopt $j >/dev/null 2>&1
135 1.1 jruoho done
136 1.1 jruoho
137 1.1 jruoho if [ ! -z $m ]; then
138 1.1 jruoho ifconfig $i mode $m >/dev/null 2>&1
139 1.1 jruoho echo "Restored the mediaopt of $i to $m"
140 1.1 jruoho fi
141 1.1 jruoho
142 1.1 jruoho ifconfig $i $state
143 1.1 jruoho echo "Restored state of $i to $state"
144 1.1 jruoho sleep 1
145 1.1 jruoho done
146 1.1 jruoho
147 1.1 jruoho /bin/sh /etc/rc.d/hostapd restart >/dev/null 2>&1
148 1.1 jruoho /bin/sh /etc/rc.d/wpa_supplicant restart >/dev/null 2>&1
149 1.1 jruoho
150 1.1 jruoho atf_pass
151 1.1 jruoho }
152 1.1 jruoho
153 1.1 jruoho atf_test_case modes
154 1.1 jruoho modes_head() {
155 1.1 jruoho atf_set "require.user" "root"
156 1.1 jruoho atf_set "descr" "Test with ifconfig(8) that setting " \
157 1.1 jruoho "802.11 modes does not panic (PR kern/45745)"
158 1.1 jruoho }
159 1.1 jruoho
160 1.1 jruoho modes_body() {
161 1.1 jruoho
162 1.1 jruoho # Although 11n is not yet supported, the system
163 1.1 jruoho # should not panic from invalid input parameters.
164 1.1 jruoho # Therefore, the following will try to also set
165 1.1 jruoho # the four 802.11 modes for non-802.11 devices.
166 1.1 jruoho #
167 1.1 jruoho modes="11a 11b 11g 11n"
168 1.1 jruoho
169 1.1 jruoho pkill -9 hostapd
170 1.1 jruoho pkill -9 wpa_supplicant
171 1.1 jruoho
172 1.1 jruoho for i in $(ifconfig -l); do
173 1.1 jruoho
174 1.1 jruoho m=""
175 1.1 jruoho mm=$(ifconfig $i | grep "media")
176 1.1 jruoho
177 1.1 jruoho for j in $modes; do
178 1.1 jruoho
179 1.1 jruoho match=$(echo $mm | grep $j)
180 1.1 jruoho
181 1.1 jruoho if [ ! -z "$match" ]; then
182 1.1 jruoho m=$j
183 1.1 jruoho break
184 1.1 jruoho fi
185 1.1 jruoho done
186 1.1 jruoho
187 1.1 jruoho for j in $modes; do
188 1.1 jruoho echo "Request: $i -> 802.11 mode $j"
189 1.1 jruoho ifconfig $i mode $j >/dev/null 2>&1
190 1.1 jruoho done
191 1.1 jruoho
192 1.1 jruoho if [ ! -z $m ]; then
193 1.1 jruoho ifconfig $i mode $m >/dev/null 2>&1
194 1.1 jruoho echo "Restored the mode of $i to $m"
195 1.1 jruoho fi
196 1.1 jruoho done
197 1.1 jruoho
198 1.1 jruoho /bin/sh /etc/rc.d/hostapd restart >/dev/null 2>&1
199 1.1 jruoho /bin/sh /etc/rc.d/wpa_supplicant restart >/dev/null 2>&1
200 1.1 jruoho
201 1.1 jruoho atf_pass
202 1.1 jruoho }
203 1.1 jruoho
204 1.1 jruoho atf_init_test_cases() {
205 1.1 jruoho atf_add_test_case chan
206 1.1 jruoho atf_add_test_case mediaopt
207 1.1 jruoho atf_add_test_case modes
208 1.1 jruoho }
209