]>
git.ipfire.org Git - thirdparty/hostap.git/blob - tests/hwsim/test_wpas_ctrl.py
1 # wpa_supplicant control interface
2 # Copyright (c) 2014, Qualcomm Atheros, Inc.
4 # This software may be distributed under the terms of the BSD license.
5 # See README for more details.
7 from remotehost
import remote_compatible
9 logger
= logging
. getLogger ()
18 from hwsim
import HWSimRadio
19 from wpasupplicant
import WpaSupplicant
20 from utils
import alloc_fail
, fail_test
21 from test_wpas_ap
import wait_ap_ready
24 def test_wpas_ctrl_network ( dev
):
25 """wpa_supplicant ctrl_iface network set/get"""
26 id = dev
[ 0 ]. add_network ()
28 if "FAIL" not in dev
[ 0 ]. request ( "SET_NETWORK " + str ( id )):
29 raise Exception ( "Unexpected success for invalid SET_NETWORK" )
30 if "FAIL" not in dev
[ 0 ]. request ( "SET_NETWORK " + str ( id ) + " name" ):
31 raise Exception ( "Unexpected success for invalid SET_NETWORK" )
32 if "FAIL" not in dev
[ 0 ]. request ( "SET_NETWORK " + str ( id + 1 ) + " proto OPEN" ):
33 raise Exception ( "Unexpected success for invalid network id" )
34 if "FAIL" not in dev
[ 0 ]. request ( "GET_NETWORK " + str ( id )):
35 raise Exception ( "Unexpected success for invalid GET_NETWORK" )
36 if "FAIL" not in dev
[ 0 ]. request ( "GET_NETWORK " + str ( id + 1 ) + " proto" ):
37 raise Exception ( "Unexpected success for invalid network id" )
39 if "OK" not in dev
[ 0 ]. request ( "SET_NETWORK " + str ( id ) + " proto \t WPA2 " ):
40 raise Exception ( "Unexpected failure for SET_NETWORK proto" )
41 res
= dev
[ 0 ]. request ( "GET_NETWORK " + str ( id ) + " proto" )
43 raise Exception ( "Unexpected SET_NETWORK/GET_NETWORK conversion for proto: " + res
)
45 if "OK" not in dev
[ 0 ]. request ( "SET_NETWORK " + str ( id ) + " key_mgmt \t WPA-PSK " ):
46 raise Exception ( "Unexpected success for SET_NETWORK key_mgmt" )
47 res
= dev
[ 0 ]. request ( "GET_NETWORK " + str ( id ) + " key_mgmt" )
49 raise Exception ( "Unexpected SET_NETWORK/GET_NETWORK conversion for key_mgmt: " + res
)
51 if "OK" not in dev
[ 0 ]. request ( "SET_NETWORK " + str ( id ) + " auth_alg \t OPEN " ):
52 raise Exception ( "Unexpected failure for SET_NETWORK auth_alg" )
53 res
= dev
[ 0 ]. request ( "GET_NETWORK " + str ( id ) + " auth_alg" )
55 raise Exception ( "Unexpected SET_NETWORK/GET_NETWORK conversion for auth_alg: " + res
)
57 if "OK" not in dev
[ 0 ]. request ( "SET_NETWORK " + str ( id ) + " eap \t TLS " ):
58 raise Exception ( "Unexpected failure for SET_NETWORK eap" )
59 res
= dev
[ 0 ]. request ( "GET_NETWORK " + str ( id ) + " eap" )
61 raise Exception ( "Unexpected SET_NETWORK/GET_NETWORK conversion for eap: " + res
)
63 tests
= ( "bssid foo" , "key_mgmt foo" , "key_mgmt " , "group NONE" )
65 if "FAIL" not in dev
[ 0 ]. request ( "SET_NETWORK " + str ( id ) + " " + t
):
66 raise Exception ( "Unexpected success for invalid SET_NETWORK: " + t
)
68 tests
= [( "key_mgmt" , "WPA-PSK WPA-EAP IEEE8021X NONE WPA-NONE FT-PSK FT-EAP WPA-PSK-SHA256 WPA-EAP-SHA256" ),
69 ( "pairwise" , "CCMP-256 GCMP-256 CCMP GCMP TKIP" ),
70 ( "group" , "CCMP-256 GCMP-256 CCMP GCMP TKIP" ),
71 ( "auth_alg" , "OPEN SHARED LEAP" ),
72 ( "scan_freq" , "1 2 3 4 5 6 7 8 9 10 11 12 13 14 15" ),
73 ( "freq_list" , "2412 2417" ),
75 ( "bssid" , "00:11:22:33:44:55" ),
76 ( "proto" , "WPA RSN OSEN" ),
78 ( "go_p2p_dev_addr" , "22:33:44:55:66:aa" ),
79 ( "p2p_client_list" , "22:33:44:55:66:bb 02:11:22:33:44:55" )]
80 if "SAE" not in dev
[ 0 ]. get_capability ( "auth_alg" ):
81 tests
. append (( "key_mgmt" , "WPS OSEN" ))
83 tests
. append (( "key_mgmt" , "WPS SAE FT-SAE OSEN" ))
85 dev
[ 0 ]. set_network_quoted ( id , "ssid" , "test" )
86 for field
, value
in tests
:
87 dev
[ 0 ]. set_network ( id , field
, value
)
88 res
= dev
[ 0 ]. get_network ( id , field
)
90 raise Exception ( "Unexpected response for '" + field
+ "': '" + res
+ "'" )
93 value
= "WPA-EAP-SUITE-B WPA-EAP-SUITE-B-192"
94 dev
[ 0 ]. set_network ( id , "key_mgmt" , value
)
95 res
= dev
[ 0 ]. get_network ( id , "key_mgmt" )
97 raise Exception ( "Unexpected response for key_mgmt" )
98 except Exception as e
:
99 if str ( e
). startswith ( "Unexpected" ):
104 q_tests
= (( "identity" , "hello" ),
105 ( "anonymous_identity" , "foo@nowhere.com" ))
106 for field
, value
in q_tests
:
107 dev
[ 0 ]. set_network_quoted ( id , field
, value
)
108 res
= dev
[ 0 ]. get_network ( id , field
)
109 if res
!= '"' + value
+ '"' :
110 raise Exception ( "Unexpected quoted response for '" + field
+ "': '" + res
+ "'" )
112 get_tests
= (( "foo" , None ), ( "ssid" , '"test"' ))
113 for field
, value
in get_tests
:
114 res
= dev
[ 0 ]. get_network ( id , field
)
116 raise Exception ( "Unexpected response for '" + field
+ "': '" + res
+ "'" )
118 if dev
[ 0 ]. get_network ( id , "password" ):
119 raise Exception ( "Unexpected response for 'password'" )
120 dev
[ 0 ]. set_network_quoted ( id , "password" , "foo" )
121 if dev
[ 0 ]. get_network ( id , "password" ) != '*' :
122 raise Exception ( "Unexpected response for 'password' (expected *)" )
123 dev
[ 0 ]. set_network ( id , "password" , "hash:12345678901234567890123456789012" )
124 if dev
[ 0 ]. get_network ( id , "password" ) != '*' :
125 raise Exception ( "Unexpected response for 'password' (expected *)" )
126 dev
[ 0 ]. set_network ( id , "password" , "NULL" )
127 if dev
[ 0 ]. get_network ( id , "password" ):
128 raise Exception ( "Unexpected response for 'password'" )
129 if "FAIL" not in dev
[ 0 ]. request ( "SET_NETWORK " + str ( id ) + " password hash:12" ):
130 raise Exception ( "Unexpected success for invalid password hash" )
131 if "FAIL" not in dev
[ 0 ]. request ( "SET_NETWORK " + str ( id ) + " password hash:123456789012345678x0123456789012" ):
132 raise Exception ( "Unexpected success for invalid password hash" )
134 dev
[ 0 ]. set_network ( id , "identity" , "414243" )
135 if dev
[ 0 ]. get_network ( id , "identity" ) != '"ABC"' :
136 raise Exception ( "Unexpected identity hex->text response" )
138 dev
[ 0 ]. set_network ( id , "identity" , 'P"abc \n def"' )
139 if dev
[ 0 ]. get_network ( id , "identity" ) != "6162630a646566" :
140 raise Exception ( "Unexpected identity printf->hex response" )
142 if "FAIL" not in dev
[ 0 ]. request ( "SET_NETWORK " + str ( id ) + ' identity P"foo' ):
143 raise Exception ( "Unexpected success for invalid identity string" )
145 if "FAIL" not in dev
[ 0 ]. request ( "SET_NETWORK " + str ( id ) + ' identity 12x3' ):
146 raise Exception ( "Unexpected success for invalid identity string" )
148 for i
in range ( 0 , 4 ):
149 if "FAIL" in dev
[ 0 ]. request ( "SET_NETWORK " + str ( id ) + ' wep_key' + str ( i
) + ' aabbccddee' ):
150 raise Exception ( "Unexpected wep_key set failure" )
151 if dev
[ 0 ]. get_network ( id , "wep_key" + str ( i
)) != '*' :
152 raise Exception ( "Unexpected wep_key get failure" )
154 if "FAIL" in dev
[ 0 ]. request ( "SET_NETWORK " + str ( id ) + ' psk_list P2P-00:11:22:33:44:55-0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef' ):
155 raise Exception ( "Unexpected failure for psk_list string" )
157 if "FAIL" not in dev
[ 0 ]. request ( "SET_NETWORK " + str ( id ) + ' psk_list 00:11:x2:33:44:55-0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef' ):
158 raise Exception ( "Unexpected success for invalid psk_list string" )
160 if "FAIL" not in dev
[ 0 ]. request ( "SET_NETWORK " + str ( id ) + ' psk_list P2P-00:11:x2:33:44:55-0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef' ):
161 raise Exception ( "Unexpected success for invalid psk_list string" )
163 if "FAIL" not in dev
[ 0 ]. request ( "SET_NETWORK " + str ( id ) + ' psk_list P2P-00:11:22:33:44:55+0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef' ):
164 raise Exception ( "Unexpected success for invalid psk_list string" )
166 if "FAIL" not in dev
[ 0 ]. request ( "SET_NETWORK " + str ( id ) + ' psk_list P2P-00:11:22:33:44:55-0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcde' ):
167 raise Exception ( "Unexpected success for invalid psk_list string" )
169 if "FAIL" not in dev
[ 0 ]. request ( "SET_NETWORK " + str ( id ) + ' psk_list P2P-00:11:22:33:44:55-0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdex' ):
170 raise Exception ( "Unexpected success for invalid psk_list string" )
172 if dev
[ 0 ]. get_network ( id , "psk_list" ):
173 raise Exception ( "Unexpected psk_list get response" )
175 if dev
[ 0 ]. list_networks ()[ 0 ][ 'ssid' ] != "test" :
176 raise Exception ( "Unexpected ssid in LIST_NETWORKS" )
177 dev
[ 0 ]. set_network ( id , "ssid" , "NULL" )
178 if dev
[ 0 ]. list_networks ()[ 0 ][ 'ssid' ] != "" :
179 raise Exception ( "Unexpected ssid in LIST_NETWORKS after clearing it" )
181 if "FAIL" not in dev
[ 0 ]. request ( 'SET_NETWORK ' + str ( id ) + ' ssid "0123456789abcdef0123456789abcdef0"' ):
182 raise Exception ( "Too long SSID accepted" )
183 if "FAIL" not in dev
[ 0 ]. request ( 'SET_NETWORK ' + str ( id ) + ' scan_ssid qwerty' ):
184 raise Exception ( "Invalid integer accepted" )
185 if "FAIL" not in dev
[ 0 ]. request ( 'SET_NETWORK ' + str ( id ) + ' scan_ssid 2' ):
186 raise Exception ( "Too large integer accepted" )
187 if "FAIL" not in dev
[ 0 ]. request ( 'SET_NETWORK ' + str ( id ) + ' psk 12345678' ):
188 raise Exception ( "Invalid PSK accepted" )
189 if "FAIL" not in dev
[ 0 ]. request ( 'SET_NETWORK ' + str ( id ) + ' psk "1234567"' ):
190 raise Exception ( "Too short PSK accepted" )
191 if "FAIL" not in dev
[ 0 ]. request ( 'SET_NETWORK ' + str ( id ) + ' psk "1234567890123456789012345678901234567890123456789012345678901234"' ):
192 raise Exception ( "Too long PSK accepted" )
193 dev
[ 0 ]. set_network_quoted ( id , "psk" , "123456768" )
194 dev
[ 0 ]. set_network_quoted ( id , "psk" , "123456789012345678901234567890123456789012345678901234567890123" )
195 if dev
[ 0 ]. get_network ( id , "psk" ) != '*' :
196 raise Exception ( "Unexpected psk read result" )
198 if "FAIL" not in dev
[ 0 ]. request ( 'SET_NETWORK ' + str ( id ) + ' eap UNKNOWN' ):
199 raise Exception ( "Unknown EAP method accepted" )
201 if "FAIL" not in dev
[ 0 ]. request ( 'SET_NETWORK ' + str ( id ) + ' password "foo' ):
202 raise Exception ( "Invalid password accepted" )
204 if "FAIL" not in dev
[ 0 ]. request ( 'SET_NETWORK ' + str ( id ) + ' wep_key0 "foo' ):
205 raise Exception ( "Invalid WEP key accepted" )
206 if "FAIL" not in dev
[ 0 ]. request ( 'SET_NETWORK ' + str ( id ) + ' wep_key0 "12345678901234567"' ):
207 raise Exception ( "Too long WEP key accepted" )
208 # too short WEP key is ignored
209 dev
[ 0 ]. set_network_quoted ( id , "wep_key0" , "1234" )
210 dev
[ 0 ]. set_network_quoted ( id , "wep_key1" , "12345" )
211 dev
[ 0 ]. set_network_quoted ( id , "wep_key2" , "1234567890123" )
212 dev
[ 0 ]. set_network_quoted ( id , "wep_key3" , "1234567890123456" )
214 dev
[ 0 ]. set_network ( id , "go_p2p_dev_addr" , "any" )
215 if dev
[ 0 ]. get_network ( id , "go_p2p_dev_addr" ) is not None :
216 raise Exception ( "Unexpected go_p2p_dev_addr value" )
217 if "FAIL" not in dev
[ 0 ]. request ( 'SET_NETWORK ' + str ( id ) + ' go_p2p_dev_addr 00:11:22:33:44' ):
218 raise Exception ( "Invalid go_p2p_dev_addr accepted" )
219 if "FAIL" not in dev
[ 0 ]. request ( 'SET_NETWORK ' + str ( id ) + ' p2p_client_list 00:11:22:33:44' ):
220 raise Exception ( "Invalid p2p_client_list accepted" )
221 if "FAIL" in dev
[ 0 ]. request ( 'SET_NETWORK ' + str ( id ) + ' p2p_client_list 00:11:22:33:44:55 00:1' ):
222 raise Exception ( "p2p_client_list truncation workaround failed" )
223 if dev
[ 0 ]. get_network ( id , "p2p_client_list" ) != "00:11:22:33:44:55" :
224 raise Exception ( "p2p_client_list truncation workaround did not work" )
226 if "FAIL" not in dev
[ 0 ]. request ( 'SET_NETWORK ' + str ( id ) + ' auth_alg ' ):
227 raise Exception ( "Empty auth_alg accepted" )
228 if "FAIL" not in dev
[ 0 ]. request ( 'SET_NETWORK ' + str ( id ) + ' auth_alg FOO' ):
229 raise Exception ( "Invalid auth_alg accepted" )
231 if "FAIL" not in dev
[ 0 ]. request ( 'SET_NETWORK ' + str ( id ) + ' proto ' ):
232 raise Exception ( "Empty proto accepted" )
233 if "FAIL" not in dev
[ 0 ]. request ( 'SET_NETWORK ' + str ( id ) + ' proto FOO' ):
234 raise Exception ( "Invalid proto accepted" )
236 if "FAIL" not in dev
[ 0 ]. request ( 'SET_NETWORK ' + str ( id ) + ' pairwise ' ):
237 raise Exception ( "Empty pairwise accepted" )
238 if "FAIL" not in dev
[ 0 ]. request ( 'SET_NETWORK ' + str ( id ) + ' pairwise FOO' ):
239 raise Exception ( "Invalid pairwise accepted" )
240 if "FAIL" not in dev
[ 0 ]. request ( 'SET_NETWORK ' + str ( id ) + ' pairwise WEP40' ):
241 raise Exception ( "Invalid pairwise accepted" )
243 if "OK" not in dev
[ 0 ]. request ( 'BSSID ' + str ( id ) + ' 00:11:22:33:44:55' ):
244 raise Exception ( "Unexpected BSSID failure" )
245 if dev
[ 0 ]. request ( "GET_NETWORK 0 bssid" ) != '00:11:22:33:44:55' :
246 raise Exception ( "BSSID command did not set network bssid" )
247 if "OK" not in dev
[ 0 ]. request ( 'BSSID ' + str ( id ) + ' 00:00:00:00:00:00' ):
248 raise Exception ( "Unexpected BSSID failure" )
249 if "FAIL" not in dev
[ 0 ]. request ( "GET_NETWORK 0 bssid" ):
250 raise Exception ( "bssid claimed configured after clearing" )
251 if "FAIL" not in dev
[ 0 ]. request ( 'BSSID 123 00:11:22:33:44:55' ):
252 raise Exception ( "Unexpected BSSID success" )
253 if "FAIL" not in dev
[ 0 ]. request ( 'BSSID ' + str ( id ) + ' 00:11:22:33:44' ):
254 raise Exception ( "Unexpected BSSID success" )
255 if "FAIL" not in dev
[ 0 ]. request ( 'BSSID ' + str ( id )):
256 raise Exception ( "Unexpected BSSID success" )
258 tests
= [ "02:11:22:33:44:55" ,
259 "02:11:22:33:44:55 02:ae:be:ce:53:77" ,
260 "02:11:22:33:44:55/ff:00:ff:00:ff:00" ,
261 "02:11:22:33:44:55/ff:00:ff:00:ff:00 f2:99:88:77:66:55" ,
262 "f2:99:88:77:66:55 02:11:22:33:44:55/ff:00:ff:00:ff:00" ,
263 "f2:99:88:77:66:55 02:11:22:33:44:55/ff:00:ff:00:ff:00 12:34:56:78:90:ab" ,
264 "02:11:22:33:44:55/ff:ff:ff:00:00:00 02:ae:be:ce:53:77/00:00:00:00:00:ff" ]
266 dev
[ 0 ]. set_network ( id , "bssid_blacklist" , val
)
267 res
= dev
[ 0 ]. get_network ( id , "bssid_blacklist" )
269 raise Exception ( "Unexpected bssid_blacklist value: %s != %s " % ( res
, val
))
270 dev
[ 0 ]. set_network ( id , "bssid_whitelist" , val
)
271 res
= dev
[ 0 ]. get_network ( id , "bssid_whitelist" )
273 raise Exception ( "Unexpected bssid_whitelist value: %s != %s " % ( res
, val
))
277 "00:11:22:33:44:55q" ,
278 "00:11:22:33:44:55/" ,
279 "00:11:22:33:44:55/66:77:88:99:aa:b" ]
281 if "FAIL" not in dev
[ 0 ]. request ( "SET_NETWORK %d bssid_blacklist %s " % ( id , val
)):
282 raise Exception ( "Invalid bssid_blacklist value accepted" )
285 def test_wpas_ctrl_network_oom ( dev
):
286 """wpa_supplicant ctrl_iface network OOM in string parsing"""
287 id = dev
[ 0 ]. add_network ()
289 tests
= [( '"foo"' , 1 , 'dup_binstr;wpa_config_set' ),
290 ( 'P"foo"' , 1 , 'dup_binstr;wpa_config_set' ),
291 ( 'P"foo"' , 2 , 'wpa_config_set' ),
292 ( '112233' , 1 , 'wpa_config_set' )]
293 for val
, count
, func
in tests
:
294 with
alloc_fail ( dev
[ 0 ], count
, func
):
295 if "FAIL" not in dev
[ 0 ]. request ( "SET_NETWORK " + str ( id ) + ' ssid ' + val
):
296 raise Exception ( "Unexpected success for SET_NETWORK during OOM" )
299 def test_wpas_ctrl_many_networks ( dev
, apdev
):
300 """wpa_supplicant ctrl_iface LIST_NETWORKS with huge number of networks"""
301 for i
in range ( 1000 ):
302 id = dev
[ 0 ]. add_network ()
303 res
= dev
[ 0 ]. request ( "LIST_NETWORKS" )
305 raise Exception ( "Last added network was unexpectedly included" )
306 res
= dev
[ 0 ]. request ( "LIST_NETWORKS LAST_ID= %d " % ( id - 2 ))
307 if str ( id ) not in res
:
308 raise Exception ( "Last added network was not present when using LAST_ID" )
309 # This command can take a very long time under valgrind testing on a low
310 # power CPU, so increase the command timeout significantly to avoid issues
311 # with the test case failing and following reset operation timing out.
312 dev
[ 0 ]. request ( "REMOVE_NETWORK all" , timeout
= 60 )
315 def test_wpas_ctrl_dup_network ( dev
, apdev
):
316 """wpa_supplicant ctrl_iface DUP_NETWORK"""
318 passphrase
= 'qwertyuiop'
319 params
= hostapd
. wpa2_params ( ssid
= ssid
, passphrase
= passphrase
)
320 hostapd
. add_ap ( apdev
[ 0 ], params
)
322 src
= dev
[ 0 ]. connect ( "another" , psk
= passphrase
, scan_freq
= "2412" ,
323 only_add_network
= True )
324 id = dev
[ 0 ]. add_network ()
325 dev
[ 0 ]. set_network_quoted ( id , "ssid" , ssid
)
326 for f
in [ "key_mgmt" , "psk" , "scan_freq" ]:
327 res
= dev
[ 0 ]. request ( "DUP_NETWORK {} {} {}" . format ( src
, id , f
))
329 raise Exception ( "DUP_NETWORK failed" )
330 dev
[ 0 ]. connect_network ( id )
332 if "FAIL" not in dev
[ 0 ]. request ( "DUP_NETWORK " ):
333 raise Exception ( "Unexpected DUP_NETWORK success" )
334 if "FAIL" not in dev
[ 0 ]. request ( "DUP_NETWORK %d " % id ):
335 raise Exception ( "Unexpected DUP_NETWORK success" )
336 if "FAIL" not in dev
[ 0 ]. request ( "DUP_NETWORK %d %d " % ( id , id )):
337 raise Exception ( "Unexpected DUP_NETWORK success" )
338 if "FAIL" not in dev
[ 0 ]. request ( "DUP_NETWORK 123456 1234567 " ):
339 raise Exception ( "Unexpected DUP_NETWORK success" )
340 if "FAIL" not in dev
[ 0 ]. request ( "DUP_NETWORK %d 123456 " % id ):
341 raise Exception ( "Unexpected DUP_NETWORK success" )
342 if "FAIL" not in dev
[ 0 ]. request ( "DUP_NETWORK %d %d foo" % ( id , id )):
343 raise Exception ( "Unexpected DUP_NETWORK success" )
344 dev
[ 0 ]. request ( "DISCONNECT" )
345 if "OK" not in dev
[ 0 ]. request ( "DUP_NETWORK %d %d ssid" % ( id , id )):
346 raise Exception ( "Unexpected DUP_NETWORK failure" )
349 def test_wpas_ctrl_dup_network_global ( dev
, apdev
):
350 """wpa_supplicant ctrl_iface DUP_NETWORK (global)"""
352 passphrase
= 'qwertyuiop'
353 params
= hostapd
. wpa2_params ( ssid
= ssid
, passphrase
= passphrase
)
354 hostapd
. add_ap ( apdev
[ 0 ], params
)
356 src
= dev
[ 0 ]. connect ( "another" , psk
= passphrase
, scan_freq
= "2412" ,
357 only_add_network
= True )
358 id = dev
[ 0 ]. add_network ()
359 dev
[ 0 ]. set_network_quoted ( id , "ssid" , ssid
)
360 for f
in [ "key_mgmt" , "psk" , "scan_freq" ]:
361 res
= dev
[ 0 ]. global_request ( "DUP_NETWORK {} {} {} {} {}" . format ( dev
[ 0 ]. ifname
, dev
[ 0 ]. ifname
, src
, id , f
))
363 raise Exception ( "DUP_NETWORK failed" )
364 dev
[ 0 ]. connect_network ( id )
366 if "FAIL" not in dev
[ 0 ]. global_request ( "DUP_NETWORK " ):
367 raise Exception ( "Unexpected DUP_NETWORK success" )
368 if "FAIL" not in dev
[ 0 ]. global_request ( "DUP_NETWORK %s " % dev
[ 0 ]. ifname
):
369 raise Exception ( "Unexpected DUP_NETWORK success" )
370 if "FAIL" not in dev
[ 0 ]. global_request ( "DUP_NETWORK %s %s " % ( dev
[ 0 ]. ifname
, dev
[ 0 ]. ifname
)):
371 raise Exception ( "Unexpected DUP_NETWORK success" )
372 if "FAIL" not in dev
[ 0 ]. global_request ( "DUP_NETWORK %s %s %d " % ( dev
[ 0 ]. ifname
, dev
[ 0 ]. ifname
, id )):
373 raise Exception ( "Unexpected DUP_NETWORK success" )
374 if "FAIL" not in dev
[ 0 ]. global_request ( "DUP_NETWORK %s %s %d %d " % ( dev
[ 0 ]. ifname
, dev
[ 0 ]. ifname
, id , id )):
375 raise Exception ( "Unexpected DUP_NETWORK success" )
376 dev
[ 0 ]. request ( "DISCONNECT" )
377 if "OK" not in dev
[ 0 ]. global_request ( "DUP_NETWORK %s %s %d %d ssid" % ( dev
[ 0 ]. ifname
, dev
[ 0 ]. ifname
, id , id )):
378 raise Exception ( "Unexpected DUP_NETWORK failure" )
382 ev
= dev
. wait_event ([ "CRED-ADDED" ])
384 raise Exception ( "Missing CRED-ADDED event" )
385 if " " + str ( id ) not in ev
:
386 raise Exception ( "CRED-ADDED event without matching id" )
389 def set_cred ( dev
, id , field
, value
):
390 dev
. set_cred ( id , field
, value
)
391 ev
= dev
. wait_event ([ "CRED-MODIFIED" ])
393 raise Exception ( "Missing CRED-MODIFIED event" )
394 if " " + str ( id ) + " " not in ev
:
395 raise Exception ( "CRED-MODIFIED event without matching id" )
397 raise Exception ( "CRED-MODIFIED event without matching field" )
399 def set_cred_quoted ( dev
, id , field
, value
):
400 dev
. set_cred_quoted ( id , field
, value
)
401 ev
= dev
. wait_event ([ "CRED-MODIFIED" ])
403 raise Exception ( "Missing CRED-MODIFIED event" )
404 if " " + str ( id ) + " " not in ev
:
405 raise Exception ( "CRED-MODIFIED event without matching id" )
407 raise Exception ( "CRED-MODIFIED event without matching field" )
409 def remove_cred ( dev
, id ):
411 ev
= dev
. wait_event ([ "CRED-REMOVED" ])
413 raise Exception ( "Missing CRED-REMOVED event" )
414 if " " + str ( id ) not in ev
:
415 raise Exception ( "CRED-REMOVED event without matching id" )
418 def test_wpas_ctrl_cred ( dev
):
419 """wpa_supplicant ctrl_iface cred set"""
420 id1
= add_cred ( dev
[ 0 ])
421 if "FAIL" not in dev
[ 0 ]. request ( "SET_CRED " + str ( id1
+ 1 ) + " temporary 1" ):
422 raise Exception ( "SET_CRED succeeded unexpectedly on unknown cred id" )
423 if "FAIL" not in dev
[ 0 ]. request ( "SET_CRED " + str ( id1
)):
424 raise Exception ( "Invalid SET_CRED succeeded unexpectedly" )
425 if "FAIL" not in dev
[ 0 ]. request ( "SET_CRED " + str ( id1
) + " temporary" ):
426 raise Exception ( "Invalid SET_CRED succeeded unexpectedly" )
427 if "FAIL" not in dev
[ 0 ]. request ( "GET_CRED " + str ( id1
+ 1 ) + " temporary" ):
428 raise Exception ( "GET_CRED succeeded unexpectedly on unknown cred id" )
429 if "FAIL" not in dev
[ 0 ]. request ( "GET_CRED " + str ( id1
)):
430 raise Exception ( "Invalid GET_CRED succeeded unexpectedly" )
431 if "FAIL" not in dev
[ 0 ]. request ( "GET_CRED " + str ( id1
) + " foo" ):
432 raise Exception ( "Invalid GET_CRED succeeded unexpectedly" )
433 id = add_cred ( dev
[ 0 ])
434 id2
= add_cred ( dev
[ 0 ])
435 set_cred ( dev
[ 0 ], id , "temporary" , "1" )
436 set_cred ( dev
[ 0 ], id , "priority" , "1" )
437 set_cred ( dev
[ 0 ], id , "pcsc" , "1" )
438 set_cred ( dev
[ 0 ], id , "sim_num" , "0" )
439 set_cred_quoted ( dev
[ 0 ], id , "private_key_passwd" , "test" )
440 set_cred_quoted ( dev
[ 0 ], id , "domain_suffix_match" , "test" )
441 set_cred_quoted ( dev
[ 0 ], id , "phase1" , "test" )
442 set_cred_quoted ( dev
[ 0 ], id , "phase2" , "test" )
444 if "FAIL" not in dev
[ 0 ]. request ( "SET_CRED " + str ( id ) + " eap FOO" ):
445 raise Exception ( "Unexpected success on unknown EAP method" )
447 if "FAIL" not in dev
[ 0 ]. request ( "SET_CRED " + str ( id ) + " username 12xa" ):
448 raise Exception ( "Unexpected success on invalid string" )
450 for i
in ( "11" , "1122" , "112233445566778899aabbccddeeff00" ):
451 if "FAIL" not in dev
[ 0 ]. request ( "SET_CRED " + str ( id ) + " roaming_consortium " + i
):
452 raise Exception ( "Unexpected success on invalid roaming_consortium" )
454 dev
[ 0 ]. set_cred ( id , "excluded_ssid" , "00112233445566778899aabbccddeeff00112233445566778899aabbccddeeff" )
455 if "FAIL" not in dev
[ 0 ]. request ( "SET_CRED " + str ( id ) + " excluded_ssid 00112233445566778899aabbccddeeff00112233445566778899aabbccddeeff00" ):
456 raise Exception ( "Unexpected success on invalid excluded_ssid" )
458 if "FAIL" not in dev
[ 0 ]. request ( "SET_CRED " + str ( id ) + " foo 4142" ):
459 raise Exception ( "Unexpected success on unknown field" )
461 tests
= [ "sp_priority 256" ,
462 'roaming_partner "example.org"' ,
463 'roaming_partner "' + 200 * 'a' + '.example.org,"' ,
464 'roaming_partner "example.org,1"' ,
465 'roaming_partner "example.org,1,2"' ,
466 'roaming_partner "example.org,1,2,ABC"' ]
468 if "FAIL" not in dev
[ 0 ]. request ( "SET_CRED " + str ( id ) + " " + t
):
469 raise Exception ( "Unexpected success on invalid SET_CRED value: " + t
)
471 id3
= add_cred ( dev
[ 0 ])
472 id4
= add_cred ( dev
[ 0 ])
473 if len ( dev
[ 0 ]. request ( "LIST_CREDS" ). splitlines ()) != 6 :
474 raise Exception ( "Unexpected LIST_CREDS result(1)" )
476 remove_cred ( dev
[ 0 ], id1
)
477 remove_cred ( dev
[ 0 ], id3
)
478 remove_cred ( dev
[ 0 ], id4
)
479 remove_cred ( dev
[ 0 ], id2
)
480 remove_cred ( dev
[ 0 ], id )
481 if "FAIL" not in dev
[ 0 ]. request ( "REMOVE_CRED 1" ):
482 raise Exception ( "Unexpected success on invalid remove cred" )
483 if len ( dev
[ 0 ]. request ( "LIST_CREDS" ). splitlines ()) != 1 :
484 raise Exception ( "Unexpected LIST_CREDS result(2)" )
486 id = add_cred ( dev
[ 0 ])
487 values
= [( "temporary" , "1" , False ),
488 ( "temporary" , "0" , False ),
489 ( "pcsc" , "1" , False ),
490 ( "realm" , "example.com" , True ),
491 ( "username" , "user@example.com" , True ),
492 ( "password" , "foo" , True , "*" ),
493 ( "ca_cert" , "ca.pem" , True ),
494 ( "client_cert" , "user.pem" , True ),
495 ( "private_key" , "key.pem" , True ),
496 ( "private_key_passwd" , "foo" , True , "*" ),
497 ( "imsi" , "310026-000000000" , True ),
498 ( "milenage" , "foo" , True , "*" ),
499 ( "domain_suffix_match" , "example.com" , True ),
500 ( "domain" , "example.com" , True ),
501 ( "domain" , "example.org" , True , "example.com \n example.org" ),
502 ( "roaming_consortium" , "0123456789" , False ),
503 ( "required_roaming_consortium" , "456789" , False ),
504 ( "eap" , "TTLS" , False ),
505 ( "phase1" , "foo=bar1" , True ),
506 ( "phase2" , "foo=bar2" , True ),
507 ( "excluded_ssid" , "test" , True ),
508 ( "excluded_ssid" , "foo" , True , "test \n foo" ),
509 ( "roaming_partner" , "example.com,0,4,*" , True ),
510 ( "roaming_partner" , "example.org,1,2,US" , True ,
511 "example.com,0,4,* \n example.org,1,2,US" ),
512 ( "update_identifier" , "4" , False ),
513 ( "provisioning_sp" , "sp.example.com" , True ),
514 ( "sp_priority" , "7" , False ),
515 ( "min_dl_bandwidth_home" , "100" , False ),
516 ( "min_ul_bandwidth_home" , "101" , False ),
517 ( "min_dl_bandwidth_roaming" , "102" , False ),
518 ( "min_ul_bandwidth_roaming" , "103" , False ),
519 ( "max_bss_load" , "57" , False ),
520 ( "req_conn_capab" , "6:22,80,443" , False ),
521 ( "req_conn_capab" , "17:500" , False , "6:22,80,443 \n 17:500" ),
522 ( "req_conn_capab" , "50" , False , "6:22,80,443 \n 17:500 \n 50" ),
523 ( "ocsp" , "1" , False )]
526 set_cred_quoted ( dev
[ 0 ], id , v
[ 0 ], v
[ 1 ])
528 set_cred ( dev
[ 0 ], id , v
[ 0 ], v
[ 1 ])
529 val
= dev
[ 0 ]. get_cred ( id , v
[ 0 ])
535 raise Exception ( "Unexpected GET_CRED value for {}: {} != {}" . format ( v
[ 0 ], val
, expect
))
536 creds
= dev
[ 0 ]. request ( "LIST_CREDS" ). splitlines ()
538 raise Exception ( "Unexpected LIST_CREDS result(3)" )
539 if creds
[ 1 ] != "0 \t example.com \t user@example.com \t example.com \t 310026-000000000" :
540 raise Exception ( "Unexpected LIST_CREDS value" )
541 remove_cred ( dev
[ 0 ], id )
542 if len ( dev
[ 0 ]. request ( "LIST_CREDS" ). splitlines ()) != 1 :
543 raise Exception ( "Unexpected LIST_CREDS result(4)" )
545 id = add_cred ( dev
[ 0 ])
546 set_cred_quoted ( dev
[ 0 ], id , "domain" , "foo.example.com" )
547 id = add_cred ( dev
[ 0 ])
548 set_cred_quoted ( dev
[ 0 ], id , "domain" , "bar.example.com" )
549 id = add_cred ( dev
[ 0 ])
550 set_cred_quoted ( dev
[ 0 ], id , "domain" , "foo.example.com" )
551 if "OK" not in dev
[ 0 ]. request ( "REMOVE_CRED sp_fqdn=foo.example.com" ):
552 raise Exception ( "REMOVE_CRED failed" )
553 creds
= dev
[ 0 ]. request ( "LIST_CREDS" )
554 if "foo.example.com" in creds
:
555 raise Exception ( "REMOVE_CRED sp_fqdn did not remove cred" )
556 if "bar.example.com" not in creds
:
557 raise Exception ( "REMOVE_CRED sp_fqdn removed incorrect cred" )
558 dev
[ 0 ]. request ( "REMOVE_CRED all" )
560 id = add_cred ( dev
[ 0 ])
561 set_cred_quoted ( dev
[ 0 ], id , "domain" , "foo.example.com" )
562 set_cred_quoted ( dev
[ 0 ], id , "provisioning_sp" , "sp.foo.example.com" )
563 id = add_cred ( dev
[ 0 ])
564 set_cred_quoted ( dev
[ 0 ], id , "domain" , "bar.example.com" )
565 set_cred_quoted ( dev
[ 0 ], id , "provisioning_sp" , "sp.bar.example.com" )
566 id = add_cred ( dev
[ 0 ])
567 set_cred_quoted ( dev
[ 0 ], id , "domain" , "foo.example.com" )
568 set_cred_quoted ( dev
[ 0 ], id , "provisioning_sp" , "sp.foo.example.com" )
569 if "OK" not in dev
[ 0 ]. request ( "REMOVE_CRED provisioning_sp=sp.foo.example.com" ):
570 raise Exception ( "REMOVE_CRED failed" )
571 creds
= dev
[ 0 ]. request ( "LIST_CREDS" )
572 if "foo.example.com" in creds
:
573 raise Exception ( "REMOVE_CRED provisioning_sp did not remove cred" )
574 if "bar.example.com" not in creds
:
575 raise Exception ( "REMOVE_CRED provisioning_sp removed incorrect cred" )
576 dev
[ 0 ]. request ( "REMOVE_CRED all" )
578 # Test large number of creds and LIST_CREDS truncation
579 dev
[ 0 ]. dump_monitor ()
580 for i
in range ( 0 , 100 ):
581 id = add_cred ( dev
[ 0 ])
582 set_cred_quoted ( dev
[ 0 ], id , "realm" , "relatively.long.realm.test %d .example.com" % i
)
583 dev
[ 0 ]. dump_monitor ()
584 creds
= dev
[ 0 ]. request ( "LIST_CREDS" )
585 for i
in range ( 0 , 100 ):
586 dev
[ 0 ]. remove_cred ( i
)
587 dev
[ 0 ]. dump_monitor ()
588 if len ( creds
) < 3900 or len ( creds
) > 4100 :
589 raise Exception ( "Unexpected LIST_CREDS length: %d " % len ( creds
))
590 if "test10.example.com" not in creds
:
591 raise Exception ( "Missing credential" )
592 if len ( creds
. splitlines ()) > 95 :
593 raise Exception ( "Too many LIST_CREDS entries in the buffer" )
595 def test_wpas_ctrl_pno ( dev
):
596 """wpa_supplicant ctrl_iface pno"""
597 if "FAIL" not in dev
[ 0 ]. request ( "SET pno 1" ):
598 raise Exception ( "Unexpected success in enabling PNO without enabled network blocks" )
599 id = dev
[ 0 ]. add_network ()
600 dev
[ 0 ]. set_network_quoted ( id , "ssid" , "test" )
601 dev
[ 0 ]. set_network ( id , "key_mgmt" , "NONE" )
602 dev
[ 0 ]. request ( "ENABLE_NETWORK " + str ( id ) + " no-connect" )
603 #mac80211_hwsim does not yet support PNO, so this fails
604 if "FAIL" not in dev
[ 0 ]. request ( "SET pno 1" ):
605 raise Exception ( "Unexpected success in enabling PNO" )
606 if "FAIL" not in dev
[ 0 ]. request ( "SET pno 1 freq=2000-3000,5180" ):
607 raise Exception ( "Unexpected success in enabling PNO" )
608 if "FAIL" not in dev
[ 0 ]. request ( "SET pno 1 freq=0-6000" ):
609 raise Exception ( "Unexpected success in enabling PNO" )
610 if "FAIL" in dev
[ 0 ]. request ( "SET pno 0" ):
611 raise Exception ( "Unexpected failure in disabling PNO" )
614 def test_wpas_ctrl_get ( dev
):
615 """wpa_supplicant ctrl_iface get"""
616 if "FAIL" in dev
[ 0 ]. request ( "GET version" ):
617 raise Exception ( "Unexpected get failure for version" )
618 if "FAIL" in dev
[ 0 ]. request ( "GET wifi_display" ):
619 raise Exception ( "Unexpected get failure for wifi_display" )
620 if "FAIL" not in dev
[ 0 ]. request ( "GET foo" ):
621 raise Exception ( "Unexpected success on get command" )
623 dev
[ 0 ]. set ( "wifi_display" , "0" )
624 if dev
[ 0 ]. request ( "GET wifi_display" ) != '0' :
625 raise Exception ( "Unexpected wifi_display value" )
626 dev
[ 0 ]. set ( "wifi_display" , "1" )
627 if dev
[ 0 ]. request ( "GET wifi_display" ) != '1' :
628 raise Exception ( "Unexpected wifi_display value" )
629 dev
[ 0 ]. request ( "P2P_SET disabled 1" )
630 if dev
[ 0 ]. request ( "GET wifi_display" ) != '0' :
631 raise Exception ( "Unexpected wifi_display value (P2P disabled)" )
632 dev
[ 0 ]. request ( "P2P_SET disabled 0" )
633 if dev
[ 0 ]. request ( "GET wifi_display" ) != '1' :
634 raise Exception ( "Unexpected wifi_display value (P2P re-enabled)" )
635 dev
[ 0 ]. set ( "wifi_display" , "0" )
636 if dev
[ 0 ]. request ( "GET wifi_display" ) != '0' :
637 raise Exception ( "Unexpected wifi_display value" )
640 def test_wpas_ctrl_preauth ( dev
):
641 """wpa_supplicant ctrl_iface preauth"""
642 if "FAIL" not in dev
[ 0 ]. request ( "PREAUTH " ):
643 raise Exception ( "Unexpected success on invalid PREAUTH" )
644 if "FAIL" in dev
[ 0 ]. request ( "PREAUTH 00:11:22:33:44:55" ):
645 raise Exception ( "Unexpected failure on PREAUTH" )
648 def test_wpas_ctrl_tdls_discover ( dev
):
649 """wpa_supplicant ctrl_iface tdls_discover"""
650 if "FAIL" not in dev
[ 0 ]. request ( "TDLS_DISCOVER " ):
651 raise Exception ( "Unexpected success on invalid TDLS_DISCOVER" )
652 if "FAIL" not in dev
[ 0 ]. request ( "TDLS_DISCOVER 00:11:22:33:44:55" ):
653 raise Exception ( "Unexpected success on TDLS_DISCOVER" )
656 def test_wpas_ctrl_tdls_chan_switch ( dev
):
657 """wpa_supplicant ctrl_iface tdls_chan_switch error cases"""
658 for args
in [ '' , '00:11:22:33:44:55' ]:
659 if "FAIL" not in dev
[ 0 ]. request ( "TDLS_CANCEL_CHAN_SWITCH " + args
):
660 raise Exception ( "Unexpected success on invalid TDLS_CANCEL_CHAN_SWITCH: " + args
)
662 for args
in [ '' , 'foo ' , '00:11:22:33:44:55 ' , '00:11:22:33:44:55 q' ,
663 '00:11:22:33:44:55 81' , '00:11:22:33:44:55 81 1234' ,
664 '00:11:22:33:44:55 81 1234 center_freq1=234 center_freq2=345 bandwidth=456 sec_channel_offset=567 ht vht' ]:
665 if "FAIL" not in dev
[ 0 ]. request ( "TDLS_CHAN_SWITCH " + args
):
666 raise Exception ( "Unexpected success on invalid TDLS_CHAN_SWITCH: " + args
)
669 def test_wpas_ctrl_addr ( dev
):
670 """wpa_supplicant ctrl_iface invalid address"""
671 if "FAIL" not in dev
[ 0 ]. request ( "TDLS_SETUP " ):
672 raise Exception ( "Unexpected success on invalid TDLS_SETUP" )
673 if "FAIL" not in dev
[ 0 ]. request ( "TDLS_TEARDOWN " ):
674 raise Exception ( "Unexpected success on invalid TDLS_TEARDOWN" )
675 if "FAIL" not in dev
[ 0 ]. request ( "FT_DS " ):
676 raise Exception ( "Unexpected success on invalid FT_DS" )
677 if "FAIL" not in dev
[ 0 ]. request ( "WPS_PBC 00:11:22:33:44" ):
678 raise Exception ( "Unexpected success on invalid WPS_PBC" )
679 if "FAIL" not in dev
[ 0 ]. request ( "WPS_PIN 00:11:22:33:44" ):
680 raise Exception ( "Unexpected success on invalid WPS_PIN" )
681 if "FAIL" not in dev
[ 0 ]. request ( "WPS_NFC 00:11:22:33:44" ):
682 raise Exception ( "Unexpected success on invalid WPS_NFC" )
683 if "FAIL" not in dev
[ 0 ]. request ( "WPS_REG 00:11:22:33:44 12345670" ):
684 raise Exception ( "Unexpected success on invalid WPS_REG" )
685 if "FAIL" not in dev
[ 0 ]. request ( "IBSS_RSN 00:11:22:33:44" ):
686 raise Exception ( "Unexpected success on invalid IBSS_RSN" )
687 if "FAIL" not in dev
[ 0 ]. request ( "BLACKLIST 00:11:22:33:44" ):
688 raise Exception ( "Unexpected success on invalid BLACKLIST" )
691 def test_wpas_ctrl_wps_errors ( dev
):
692 """wpa_supplicant ctrl_iface WPS error cases"""
693 if "FAIL" not in dev
[ 0 ]. request ( "WPS_REG 00:11:22:33:44:55" ):
694 raise Exception ( "Unexpected success on invalid WPS_REG" )
695 if "FAIL" not in dev
[ 0 ]. request ( "WPS_REG 00:11:22:33:44:55 12345670 2233" ):
696 raise Exception ( "Unexpected success on invalid WPS_REG" )
697 if "FAIL" not in dev
[ 0 ]. request ( "WPS_REG 00:11:22:33:44:55 12345670 2233 OPEN" ):
698 raise Exception ( "Unexpected success on invalid WPS_REG" )
699 if "FAIL" not in dev
[ 0 ]. request ( "WPS_REG 00:11:22:33:44:55 12345670 2233 OPEN NONE" ):
700 raise Exception ( "Unexpected success on invalid WPS_REG" )
702 if "FAIL" not in dev
[ 0 ]. request ( "WPS_AP_PIN random" ):
703 raise Exception ( "Unexpected success on WPS_AP_PIN in non-AP mode" )
705 if "FAIL" not in dev
[ 0 ]. request ( "WPS_ER_PIN any" ):
706 raise Exception ( "Unexpected success on invalid WPS_ER_PIN" )
708 if "FAIL" not in dev
[ 0 ]. request ( "WPS_ER_LEARN 00:11:22:33:44:55" ):
709 raise Exception ( "Unexpected success on invalid WPS_ER_LEARN" )
711 if "FAIL" not in dev
[ 0 ]. request ( "WPS_ER_SET_CONFIG 00:11:22:33:44:55" ):
712 raise Exception ( "Unexpected success on invalid WPS_ER_SET_CONFIG" )
714 if "FAIL" not in dev
[ 0 ]. request ( "WPS_ER_CONFIG 00:11:22:33:44:55" ):
715 raise Exception ( "Unexpected success on invalid WPS_ER_CONFIG" )
716 if "FAIL" not in dev
[ 0 ]. request ( "WPS_ER_CONFIG 00:11:22:33:44:55 12345670" ):
717 raise Exception ( "Unexpected success on invalid WPS_ER_CONFIG" )
718 if "FAIL" not in dev
[ 0 ]. request ( "WPS_ER_CONFIG 00:11:22:33:44:55 12345670 2233" ):
719 raise Exception ( "Unexpected success on invalid WPS_ER_CONFIG" )
720 if "FAIL" not in dev
[ 0 ]. request ( "WPS_ER_CONFIG 00:11:22:33:44:55 12345670 2233 OPEN" ):
721 raise Exception ( "Unexpected success on invalid WPS_ER_CONFIG" )
722 if "FAIL" not in dev
[ 0 ]. request ( "WPS_ER_CONFIG 00:11:22:33:44:55 12345670 2233 OPEN NONE" ):
723 raise Exception ( "Unexpected success on invalid WPS_ER_CONFIG" )
725 if "FAIL" not in dev
[ 0 ]. request ( "WPS_ER_NFC_CONFIG_TOKEN WPS" ):
726 raise Exception ( "Unexpected success on invalid WPS_ER_NFC_CONFIG_TOKEN" )
727 if "FAIL" not in dev
[ 0 ]. request ( "WPS_ER_NFC_CONFIG_TOKEN FOO 00:11:22:33:44:55" ):
728 raise Exception ( "Unexpected success on invalid WPS_ER_NFC_CONFIG_TOKEN" )
729 if "FAIL" not in dev
[ 0 ]. request ( "WPS_ER_NFC_CONFIG_TOKEN NDEF 00:11:22:33:44:55" ):
730 raise Exception ( "Unexpected success on invalid WPS_ER_NFC_CONFIG_TOKEN" )
732 if "FAIL" not in dev
[ 0 ]. request ( "WPS_NFC_CONFIG_TOKEN FOO" ):
733 raise Exception ( "Unexpected success on invalid WPS_NFC_CONFIG_TOKEN" )
734 if "FAIL" not in dev
[ 0 ]. request ( "WPS_NFC_CONFIG_TOKEN WPS FOO" ):
735 raise Exception ( "Unexpected success on invalid WPS_NFC_CONFIG_TOKEN" )
736 if "FAIL" not in dev
[ 0 ]. request ( "WPS_NFC_TOKEN FOO" ):
737 raise Exception ( "Unexpected success on invalid WPS_NFC_TOKEN" )
740 def test_wpas_ctrl_config_parser ( dev
):
741 """wpa_supplicant ctrl_iface SET config parser"""
742 if "FAIL" not in dev
[ 0 ]. request ( "SET pbc_in_m1 qwerty" ):
743 raise Exception ( "Non-number accepted as integer" )
744 if "FAIL" not in dev
[ 0 ]. request ( "SET eapol_version 0" ):
745 raise Exception ( "Out-of-range value accepted" )
746 if "FAIL" not in dev
[ 0 ]. request ( "SET eapol_version 10" ):
747 raise Exception ( "Out-of-range value accepted" )
749 if "FAIL" not in dev
[ 0 ]. request ( "SET serial_number 0123456789abcdef0123456789abcdef0" ):
750 raise Exception ( "Too long string accepted" )
753 def test_wpas_ctrl_mib ( dev
):
754 """wpa_supplicant ctrl_iface MIB"""
755 mib
= dev
[ 0 ]. get_mib ()
756 if "dot11RSNAOptionImplemented" not in mib
:
757 raise Exception ( "Missing MIB entry" )
758 if mib
[ "dot11RSNAOptionImplemented" ] != "TRUE" :
759 raise Exception ( "Unexpected dot11RSNAOptionImplemented value" )
761 def test_wpas_ctrl_set_wps_params ( dev
):
762 """wpa_supplicant ctrl_iface SET config_methods"""
764 _test_wpas_ctrl_set_wps_params ( dev
)
766 dev
[ 2 ]. request ( "SET config_methods " )
768 def _test_wpas_ctrl_set_wps_params ( dev
):
769 ts
= [ "config_methods label virtual_display virtual_push_button keypad" ,
770 "device_type 1-0050F204-1" ,
771 "os_version 01020300" ,
772 "uuid 12345678-9abc-def0-1234-56789abcdef0" ]
774 if "OK" not in dev
[ 2 ]. request ( "SET " + t
):
775 raise Exception ( "SET failed for: " + t
)
777 ts
= [ "uuid 12345678+9abc-def0-1234-56789abcdef0" ,
778 "uuid 12345678-qabc-def0-1234-56789abcdef0" ,
779 "uuid 12345678-9abc+def0-1234-56789abcdef0" ,
780 "uuid 12345678-9abc-qef0-1234-56789abcdef0" ,
781 "uuid 12345678-9abc-def0+1234-56789abcdef0" ,
782 "uuid 12345678-9abc-def0-q234-56789abcdef0" ,
783 "uuid 12345678-9abc-def0-1234+56789abcdef0" ,
784 "uuid 12345678-9abc-def0-1234-q6789abcdef0" ,
787 if "FAIL" not in dev
[ 2 ]. request ( "SET " + t
):
788 raise Exception ( "SET succeeded for: " + t
)
790 def test_wpas_ctrl_level ( dev
):
791 """wpa_supplicant ctrl_iface LEVEL"""
793 if "FAIL" not in dev
[ 2 ]. request ( "LEVEL 3" ):
794 raise Exception ( "Unexpected LEVEL success" )
795 if "OK" not in dev
[ 2 ]. mon
. request ( "LEVEL 2" ):
796 raise Exception ( "Unexpected LEVEL failure" )
797 dev
[ 2 ]. request ( "SCAN freq=2412" )
798 ev
= dev
[ 2 ]. wait_event ([ "State:" ], timeout
= 5 )
800 raise Exception ( "No debug message received" )
801 dev
[ 2 ]. wait_event ([ "CTRL-EVENT-SCAN-RESULTS" ], timeout
= 5 )
803 dev
[ 2 ]. mon
. request ( "LEVEL 3" )
805 def test_wpas_ctrl_bssid_filter ( dev
, apdev
):
806 """wpa_supplicant bssid_filter"""
808 if "OK" not in dev
[ 2 ]. request ( "SET bssid_filter " + apdev
[ 0 ][ 'bssid' ]):
809 raise Exception ( "Failed to set bssid_filter" )
810 params
= { "ssid" : "test" }
811 hostapd
. add_ap ( apdev
[ 0 ], params
)
812 hostapd
. add_ap ( apdev
[ 1 ], params
)
813 dev
[ 2 ]. scan_for_bss ( apdev
[ 0 ][ 'bssid' ], freq
= "2412" )
814 dev
[ 2 ]. scan ( freq
= "2412" )
815 bss
= dev
[ 2 ]. get_bss ( apdev
[ 0 ][ 'bssid' ])
816 if bss
is None or len ( bss
) == 0 :
817 raise Exception ( "Missing BSS data" )
818 bss
= dev
[ 2 ]. get_bss ( apdev
[ 1 ][ 'bssid' ])
819 if bss
and len ( bss
) != 0 :
820 raise Exception ( "Unexpected BSS data" )
821 dev
[ 2 ]. request ( "SET bssid_filter " )
822 dev
[ 2 ]. scan ( freq
= "2412" )
823 bss
= dev
[ 2 ]. get_bss ( apdev
[ 0 ][ 'bssid' ])
824 if bss
is None or len ( bss
) == 0 :
825 raise Exception ( "Missing BSS data" )
826 bss
= dev
[ 2 ]. get_bss ( apdev
[ 1 ][ 'bssid' ])
827 if bss
is None or len ( bss
) == 0 :
828 raise Exception ( "Missing BSS data(2)" )
829 res
= dev
[ 2 ]. request ( "SCAN_RESULTS" ). splitlines ()
830 if "test" not in res
[ 1 ] or "test" not in res
[ 2 ]:
831 raise Exception ( "SSID missing from SCAN_RESULTS" )
832 if apdev
[ 0 ][ 'bssid' ] not in res
[ 1 ] and apdev
[ 1 ][ 'bssid' ] not in res
[ 1 ]:
833 raise Exception ( "BSS1 missing from SCAN_RESULTS" )
834 if apdev
[ 0 ][ 'bssid' ] not in res
[ 2 ] and apdev
[ 1 ][ 'bssid' ] not in res
[ 2 ]:
835 raise Exception ( "BSS1 missing from SCAN_RESULTS" )
837 if "FAIL" not in dev
[ 2 ]. request ( "SET bssid_filter 00:11:22:33:44:55 00:11:22:33:44" ):
838 raise Exception ( "Unexpected success for invalid SET bssid_filter" )
840 dev
[ 2 ]. request ( "SET bssid_filter " )
843 def test_wpas_ctrl_disallow_aps ( dev
, apdev
):
844 """wpa_supplicant ctrl_iface disallow_aps"""
845 params
= { "ssid" : "test" }
846 hostapd
. add_ap ( apdev
[ 0 ], params
)
848 if "FAIL" not in dev
[ 0 ]. request ( "SET disallow_aps bssid " ):
849 raise Exception ( "Unexpected success on invalid disallow_aps" )
850 if "FAIL" not in dev
[ 0 ]. request ( "SET disallow_aps bssid 00:11:22:33:44" ):
851 raise Exception ( "Unexpected success on invalid disallow_aps" )
852 if "FAIL" not in dev
[ 0 ]. request ( "SET disallow_aps ssid 0" ):
853 raise Exception ( "Unexpected success on invalid disallow_aps" )
854 if "FAIL" not in dev
[ 0 ]. request ( "SET disallow_aps ssid 4q" ):
855 raise Exception ( "Unexpected success on invalid disallow_aps" )
856 if "FAIL" not in dev
[ 0 ]. request ( "SET disallow_aps bssid 00:11:22:33:44:55 ssid 112233 ssid 123" ):
857 raise Exception ( "Unexpected success on invalid disallow_aps" )
858 if "FAIL" not in dev
[ 0 ]. request ( "SET disallow_aps ssid 000102030405060708090a0b0c0d0e0f000102030405060708090a0b0c0d0e0f00" ):
859 raise Exception ( "Unexpected success on invalid disallow_aps" )
860 if "FAIL" not in dev
[ 0 ]. request ( "SET disallow_aps foo 112233445566" ):
861 raise Exception ( "Unexpected success on invalid disallow_aps" )
863 dev
[ 0 ]. connect ( "test" , key_mgmt
= "NONE" , scan_freq
= "2412" )
864 hostapd
. add_ap ( apdev
[ 1 ], params
)
865 dev
[ 0 ]. scan_for_bss ( apdev
[ 1 ][ 'bssid' ], freq
= "2412" )
866 dev
[ 0 ]. dump_monitor ()
867 if "OK" not in dev
[ 0 ]. request ( "SET disallow_aps bssid 00:11:22:33:44:55 bssid 00:22:33:44:55:66" ):
868 raise Exception ( "Failed to set disallow_aps" )
869 if "OK" not in dev
[ 0 ]. request ( "SET disallow_aps bssid " + apdev
[ 0 ][ 'bssid' ]):
870 raise Exception ( "Failed to set disallow_aps" )
871 ev
= dev
[ 0 ]. wait_connected ( timeout
= 30 , error
= "Reassociation timed out" )
872 if apdev
[ 1 ][ 'bssid' ] not in ev
:
873 raise Exception ( "Unexpected BSSID" )
875 dev
[ 0 ]. dump_monitor ()
876 if "OK" not in dev
[ 0 ]. request ( "SET disallow_aps ssid " + binascii
. hexlify ( b
"test" ). decode ()):
877 raise Exception ( "Failed to set disallow_aps" )
878 dev
[ 0 ]. wait_disconnected ( timeout
= 5 , error
= "Disconnection not seen" )
879 ev
= dev
[ 0 ]. wait_event ([ "CTRL-EVENT-CONNECTED" ], timeout
= 1 )
881 raise Exception ( "Unexpected reassociation" )
883 dev
[ 0 ]. request ( "DISCONNECT" )
884 dev
[ 0 ]. p2p_start_go ( freq
= 2412 )
885 if "OK" not in dev
[ 0 ]. request ( "SET disallow_aps " ):
886 raise Exception ( "Failed to set disallow_aps" )
889 def test_wpas_ctrl_blob ( dev
):
890 """wpa_supplicant ctrl_iface SET blob"""
891 if "FAIL" not in dev
[ 0 ]. request ( "SET blob foo" ):
892 raise Exception ( "Unexpected SET success" )
893 if "FAIL" not in dev
[ 0 ]. request ( "SET blob foo 0" ):
894 raise Exception ( "Unexpected SET success" )
895 if "FAIL" not in dev
[ 0 ]. request ( "SET blob foo 0q" ):
896 raise Exception ( "Unexpected SET success" )
897 if "OK" not in dev
[ 0 ]. request ( "SET blob foo 00" ):
898 raise Exception ( "Unexpected SET failure" )
899 if "OK" not in dev
[ 0 ]. request ( "SET blob foo 0011" ):
900 raise Exception ( "Unexpected SET failure" )
903 def test_wpas_ctrl_set_uapsd ( dev
):
904 """wpa_supplicant ctrl_iface SET uapsd"""
905 if "FAIL" not in dev
[ 0 ]. request ( "SET uapsd foo" ):
906 raise Exception ( "Unexpected SET success" )
907 if "FAIL" not in dev
[ 0 ]. request ( "SET uapsd 0,0,0" ):
908 raise Exception ( "Unexpected SET success" )
909 if "FAIL" not in dev
[ 0 ]. request ( "SET uapsd 0,0" ):
910 raise Exception ( "Unexpected SET success" )
911 if "FAIL" not in dev
[ 0 ]. request ( "SET uapsd 0" ):
912 raise Exception ( "Unexpected SET success" )
913 if "OK" not in dev
[ 0 ]. request ( "SET uapsd 1,1,1,1;1" ):
914 raise Exception ( "Unexpected SET failure" )
915 if "OK" not in dev
[ 0 ]. request ( "SET uapsd 0,0,0,0;0" ):
916 raise Exception ( "Unexpected SET failure" )
917 if "OK" not in dev
[ 0 ]. request ( "SET uapsd disable" ):
918 raise Exception ( "Unexpected SET failure" )
920 def test_wpas_ctrl_set ( dev
):
921 """wpa_supplicant ctrl_iface SET"""
926 "dot11RSNAConfigPMKLifetime 0" ,
927 "dot11RSNAConfigPMKReauthThreshold 101" ,
928 "dot11RSNAConfigSATimeout 0" ,
929 "wps_version_number -1" ,
930 "wps_version_number 256" ,
934 if "FAIL" not in dev
[ 0 ]. request ( "SET " + val
):
935 raise Exception ( "Unexpected SET success for " + val
)
939 dev
[ 0 ]. request ( "SET " + val
)
941 vals
= [ "EAPOL::heldPeriod 60" ,
942 "EAPOL::authPeriod 30" ,
943 "EAPOL::startPeriod 30" ,
945 "dot11RSNAConfigSATimeout 60" ,
952 if "OK" not in dev
[ 0 ]. request ( "SET " + val
):
953 raise Exception ( "Unexpected SET failure for " + val
)
955 # This fails if wpa_supplicant is built with loadable EAP peer method
956 # support due to missing file and succeeds if no support for loadable
957 # methods is included, so don't check the return value for now.
958 dev
[ 0 ]. request ( "SET load_dynamic_eap /tmp/hwsim-eap-not-found.so" )
961 def test_wpas_ctrl_get_capability ( dev
):
962 """wpa_supplicant ctrl_iface GET_CAPABILITY"""
963 if "FAIL" not in dev
[ 0 ]. request ( "GET_CAPABILITY 1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890" ):
964 raise Exception ( "Unexpected success on invalid GET_CAPABILITY" )
965 if "FAIL" not in dev
[ 0 ]. request ( "GET_CAPABILITY eap foo" ):
966 raise Exception ( "Unexpected success on invalid GET_CAPABILITY" )
967 if "AP" not in dev
[ 0 ]. request ( "GET_CAPABILITY modes strict" ):
968 raise Exception ( "Unexpected GET_CAPABILITY response" )
969 res
= dev
[ 0 ]. get_capability ( "eap" )
970 if "TTLS" not in res
:
971 raise Exception ( "Unexpected GET_CAPABILITY eap response: " + str ( res
))
973 res
= dev
[ 0 ]. get_capability ( "pairwise" )
974 if "CCMP" not in res
:
975 raise Exception ( "Unexpected GET_CAPABILITY pairwise response: " + str ( res
))
977 res
= dev
[ 0 ]. get_capability ( "group" )
978 if "CCMP" not in res
:
979 raise Exception ( "Unexpected GET_CAPABILITY group response: " + str ( res
))
981 res
= dev
[ 0 ]. get_capability ( "key_mgmt" )
982 if "WPA-PSK" not in res
or "WPA-EAP" not in res
:
983 raise Exception ( "Unexpected GET_CAPABILITY key_mgmt response: " + str ( res
))
985 res
= dev
[ 0 ]. get_capability ( "proto" )
986 if "WPA" not in res
or "RSN" not in res
:
987 raise Exception ( "Unexpected GET_CAPABILITY proto response: " + str ( res
))
989 res
= dev
[ 0 ]. get_capability ( "auth_alg" )
990 if "OPEN" not in res
or "SHARED" not in res
:
991 raise Exception ( "Unexpected GET_CAPABILITY auth_alg response: " + str ( res
))
993 res
= dev
[ 0 ]. get_capability ( "modes" )
994 if "IBSS" not in res
or "AP" not in res
:
995 raise Exception ( "Unexpected GET_CAPABILITY modes response: " + str ( res
))
997 res
= dev
[ 0 ]. get_capability ( "channels" )
998 if "8" not in res
or "36" not in res
:
999 raise Exception ( "Unexpected GET_CAPABILITY channels response: " + str ( res
))
1001 res
= dev
[ 0 ]. get_capability ( "freq" )
1002 if "2457" not in res
or "5180" not in res
:
1003 raise Exception ( "Unexpected GET_CAPABILITY freq response: " + str ( res
))
1005 res
= dev
[ 0 ]. get_capability ( "tdls" )
1006 if "EXTERNAL" not in res
[ 0 ]:
1007 raise Exception ( "Unexpected GET_CAPABILITY tdls response: " + str ( res
))
1009 res
= dev
[ 0 ]. get_capability ( "erp" )
1010 if res
is None or "ERP" not in res
[ 0 ]:
1011 raise Exception ( "Unexpected GET_CAPABILITY erp response: " + str ( res
))
1013 if dev
[ 0 ]. get_capability ( "foo" ) is not None :
1014 raise Exception ( "Unexpected GET_CAPABILITY foo response: " + str ( res
))
1017 def test_wpas_ctrl_nfc_report_handover ( dev
):
1018 """wpa_supplicant ctrl_iface NFC_REPORT_HANDOVER"""
1023 "ROLE TYPE REQ SEL" ,
1029 if "FAIL" not in dev
[ 0 ]. request ( "NFC_REPORT_HANDOVER " + v
):
1030 raise Exception ( "Unexpected NFC_REPORT_HANDOVER success for " + v
)
1033 def test_wpas_ctrl_nfc_tag_read ( dev
):
1034 """wpa_supplicant ctrl_iface WPS_NFC_TAG_READ"""
1035 vals
= [ "FOO" , "0Q" , "00" , "000000" , "10000001" , "10000000" , "00000000" ,
1036 "100e0000" , "100e0001ff" , "100e000411110000" , "100e0004100e0001" ]
1038 if "FAIL" not in dev
[ 0 ]. request ( "WPS_NFC_TAG_READ " + v
):
1039 raise Exception ( "Unexpected WPS_NFC_TAG_READ success for " + v
)
1042 def test_wpas_ctrl_nfc_get_handover ( dev
):
1043 """wpa_supplicant ctrl_iface NFC_GET_HANDOVER"""
1044 vals
= [ "FOO" , "FOO BAR" , "WPS WPS" , "WPS WPS-CR" , "WPS FOO" , "NDEF P2P" ]
1046 if "FAIL" not in dev
[ 0 ]. request ( "NFC_GET_HANDOVER_REQ " + v
):
1047 raise Exception ( "Unexpected NFC_GET_HANDOVER_REQ success for " + v
)
1049 vals
= [ "NDEF WPS" , "NDEF P2P-CR" , "WPS P2P-CR" ]
1051 if "FAIL" in dev
[ 0 ]. request ( "NFC_GET_HANDOVER_REQ " + v
):
1052 raise Exception ( "Unexpected NFC_GET_HANDOVER_REQ failure for " + v
)
1054 vals
= [ "FOO" , "FOO BAR" , "WPS WPS" , "WPS WPS-CR" , "WPS FOO" , "NDEF P2P" ,
1055 "NDEF WPS" , "NDEF WPS uuid" ]
1057 if "FAIL" not in dev
[ 0 ]. request ( "NFC_GET_HANDOVER_SEL " + v
):
1058 raise Exception ( "Unexpected NFC_GET_HANDOVER_SEL success for " + v
)
1060 vals
= [ "NDEF P2P-CR" , "WPS P2P-CR" , "NDEF P2P-CR-TAG" ,
1063 if "FAIL" in dev
[ 0 ]. request ( "NFC_GET_HANDOVER_SEL " + v
):
1064 raise Exception ( "Unexpected NFC_GET_HANDOVER_SEL failure for " + v
)
1066 def get_blacklist ( dev
):
1067 return dev
. request ( "BLACKLIST" ). splitlines ()
1070 def test_wpas_ctrl_blacklist ( dev
):
1071 """wpa_supplicant ctrl_iface BLACKLIST"""
1072 if "OK" not in dev
[ 0 ]. request ( "BLACKLIST clear" ):
1073 raise Exception ( "BLACKLIST clear failed" )
1074 b
= get_blacklist ( dev
[ 0 ])
1076 raise Exception ( "Unexpected blacklist contents: " + str ( b
))
1077 if "OK" not in dev
[ 0 ]. request ( "BLACKLIST 00:11:22:33:44:55" ):
1078 raise Exception ( "BLACKLIST add failed" )
1079 b
= get_blacklist ( dev
[ 0 ])
1080 if "00:11:22:33:44:55" not in b
:
1081 raise Exception ( "Unexpected blacklist contents: " + str ( b
))
1082 if "OK" not in dev
[ 0 ]. request ( "BLACKLIST 00:11:22:33:44:56" ):
1083 raise Exception ( "BLACKLIST add failed" )
1084 b
= get_blacklist ( dev
[ 0 ])
1085 if "00:11:22:33:44:55" not in b
or "00:11:22:33:44:56" not in b
:
1086 raise Exception ( "Unexpected blacklist contents: " + str ( b
))
1087 if "OK" not in dev
[ 0 ]. request ( "BLACKLIST 00:11:22:33:44:56" ):
1088 raise Exception ( "BLACKLIST add failed" )
1089 b
= get_blacklist ( dev
[ 0 ])
1090 if "00:11:22:33:44:55" not in b
or "00:11:22:33:44:56" not in b
or len ( b
) != 2 :
1091 raise Exception ( "Unexpected blacklist contents: " + str ( b
))
1093 if "OK" not in dev
[ 0 ]. request ( "BLACKLIST clear" ):
1094 raise Exception ( "BLACKLIST clear failed" )
1095 if dev
[ 0 ]. request ( "BLACKLIST" ) != "" :
1096 raise Exception ( "Unexpected blacklist contents" )
1099 def test_wpas_ctrl_blacklist_oom ( dev
):
1100 """wpa_supplicant ctrl_iface BLACKLIST and out-of-memory"""
1101 with
alloc_fail ( dev
[ 0 ], 1 , "wpa_blacklist_add" ):
1102 if "FAIL" not in dev
[ 0 ]. request ( "BLACKLIST aa:bb:cc:dd:ee:ff" ):
1103 raise Exception ( "Unexpected success with allocation failure" )
1105 def test_wpas_ctrl_log_level ( dev
):
1106 """wpa_supplicant ctrl_iface LOG_LEVEL"""
1107 level
= dev
[ 2 ]. request ( "LOG_LEVEL" )
1108 if "Current level: MSGDUMP" not in level
:
1109 raise Exception ( "Unexpected debug level(1): " + level
)
1110 if "Timestamp: 1" not in level
:
1111 raise Exception ( "Unexpected timestamp(1): " + level
)
1113 if "OK" not in dev
[ 2 ]. request ( "LOG_LEVEL MSGDUMP 0" ):
1114 raise Exception ( "LOG_LEVEL failed" )
1115 level
= dev
[ 2 ]. request ( "LOG_LEVEL" )
1116 if "Current level: MSGDUMP" not in level
:
1117 raise Exception ( "Unexpected debug level(2): " + level
)
1118 if "Timestamp: 0" not in level
:
1119 raise Exception ( "Unexpected timestamp(2): " + level
)
1121 if "OK" not in dev
[ 2 ]. request ( "LOG_LEVEL MSGDUMP 1" ):
1122 raise Exception ( "LOG_LEVEL failed" )
1123 level
= dev
[ 2 ]. request ( "LOG_LEVEL" )
1124 if "Current level: MSGDUMP" not in level
:
1125 raise Exception ( "Unexpected debug level(3): " + level
)
1126 if "Timestamp: 1" not in level
:
1127 raise Exception ( "Unexpected timestamp(3): " + level
)
1129 if "FAIL" not in dev
[ 2 ]. request ( "LOG_LEVEL FOO" ):
1130 raise Exception ( "Invalid LOG_LEVEL accepted" )
1132 for lev
in [ "EXCESSIVE" , "MSGDUMP" , "DEBUG" , "INFO" , "WARNING" , "ERROR" ]:
1133 if "OK" not in dev
[ 2 ]. request ( "LOG_LEVEL " + lev
):
1134 raise Exception ( "LOG_LEVEL failed for " + lev
)
1135 level
= dev
[ 2 ]. request ( "LOG_LEVEL" )
1136 if "Current level: " + lev
not in level
:
1137 raise Exception ( "Unexpected debug level: " + level
)
1139 if "OK" not in dev
[ 2 ]. request ( "LOG_LEVEL MSGDUMP 1" ):
1140 raise Exception ( "LOG_LEVEL failed" )
1141 level
= dev
[ 2 ]. request ( "LOG_LEVEL" )
1142 if "Current level: MSGDUMP" not in level
:
1143 raise Exception ( "Unexpected debug level(3): " + level
)
1144 if "Timestamp: 1" not in level
:
1145 raise Exception ( "Unexpected timestamp(3): " + level
)
1148 def test_wpas_ctrl_enable_disable_network ( dev
, apdev
):
1149 """wpa_supplicant ctrl_iface ENABLE/DISABLE_NETWORK"""
1150 params
= { "ssid" : "test" }
1151 hostapd
. add_ap ( apdev
[ 0 ], params
)
1153 id = dev
[ 0 ]. connect ( "test" , key_mgmt
= "NONE" , scan_freq
= "2412" ,
1154 only_add_network
= True )
1155 if "OK" not in dev
[ 0 ]. request ( "DISABLE_NETWORK " + str ( id )):
1156 raise Exception ( "Failed to disable network" )
1157 if "OK" not in dev
[ 0 ]. request ( "ENABLE_NETWORK " + str ( id ) + " no-connect" ):
1158 raise Exception ( "Failed to enable network" )
1159 if "OK" not in dev
[ 0 ]. request ( "DISABLE_NETWORK all" ):
1160 raise Exception ( "Failed to disable networks" )
1161 if "OK" not in dev
[ 0 ]. request ( "ENABLE_NETWORK " + str ( id )):
1162 raise Exception ( "Failed to enable network" )
1163 dev
[ 0 ]. wait_connected ( timeout
= 10 )
1164 if "OK" not in dev
[ 0 ]. request ( "DISABLE_NETWORK " + str ( id )):
1165 raise Exception ( "Failed to disable network" )
1166 dev
[ 0 ]. wait_disconnected ( timeout
= 10 )
1169 if "OK" not in dev
[ 0 ]. request ( "ENABLE_NETWORK all" ):
1170 raise Exception ( "Failed to enable network" )
1171 dev
[ 0 ]. wait_connected ( timeout
= 10 )
1172 if "OK" not in dev
[ 0 ]. request ( "DISABLE_NETWORK all" ):
1173 raise Exception ( "Failed to disable network" )
1174 dev
[ 0 ]. wait_disconnected ( timeout
= 10 )
1176 def test_wpas_ctrl_country ( dev
, apdev
):
1177 """wpa_supplicant SET/GET country code"""
1179 # work around issues with possible pending regdom event from the end of
1180 # the previous test case
1182 dev
[ 0 ]. dump_monitor ()
1184 if "OK" not in dev
[ 0 ]. request ( "SET country FI" ):
1185 raise Exception ( "Failed to set country code" )
1186 if dev
[ 0 ]. request ( "GET country" ) != "FI" :
1187 raise Exception ( "Country code set failed" )
1188 ev
= dev
[ 0 ]. wait_global_event ([ "CTRL-EVENT-REGDOM-CHANGE" ], 10 )
1190 raise Exception ( "regdom change event not seen" )
1191 if "init=USER type=COUNTRY alpha2=FI" not in ev
:
1192 raise Exception ( "Unexpected event contents: " + ev
)
1193 dev
[ 0 ]. request ( "SET country 00" )
1194 if dev
[ 0 ]. request ( "GET country" ) != "00" :
1195 raise Exception ( "Country code set failed" )
1196 ev
= dev
[ 0 ]. wait_global_event ([ "CTRL-EVENT-REGDOM-CHANGE" ], 10 )
1198 raise Exception ( "regdom change event not seen" )
1199 # init=CORE was previously used due to invalid db.txt data for 00. For
1200 # now, allow both it and the new init=USER after fixed db.txt.
1201 if "init=CORE type=WORLD" not in ev
and "init=USER type=WORLD" not in ev
:
1202 raise Exception ( "Unexpected event contents: " + ev
)
1204 subprocess
. call ([ 'iw' , 'reg' , 'set' , '00' ])
1206 def test_wpas_ctrl_suspend_resume ( dev
):
1207 """wpa_supplicant SUSPEND/RESUME"""
1208 wpas
= WpaSupplicant ( global_iface
= '/tmp/wpas-wlan5' )
1209 wpas
. interface_add ( "wlan5" )
1210 if "OK" not in wpas
. global_request ( "SUSPEND" ):
1211 raise Exception ( "SUSPEND failed" )
1213 if "OK" not in wpas
. global_request ( "RESUME" ):
1214 raise Exception ( "RESUME failed" )
1215 if "OK" not in wpas
. request ( "SUSPEND" ):
1216 raise Exception ( "Per-interface SUSPEND failed" )
1217 if "OK" not in wpas
. request ( "RESUME" ):
1218 raise Exception ( "Per-interface RESUME failed" )
1219 ev
= wpas
. wait_event ([ "CTRL-EVENT-SCAN-RESULTS" ], timeout
= 10 )
1221 raise Exception ( "Scan not completed" )
1223 def test_wpas_ctrl_global ( dev
):
1224 """wpa_supplicant global control interface"""
1225 wpas
= WpaSupplicant ( global_iface
= '/tmp/wpas-wlan5' )
1226 wpas
. interface_add ( "wlan5" )
1228 if "PONG" not in wpas
. global_request ( "PING" ):
1229 raise Exception ( "PING failed" )
1230 if "wlan5" not in wpas
. global_request ( "INTERFACES" ):
1231 raise Exception ( "Interface not found" )
1232 if "UNKNOWN COMMAND" not in wpas
. global_request ( "FOO" ):
1233 raise Exception ( "Unexpected response to unknown command" )
1234 if "PONG" not in wpas
. global_request ( "IFNAME=wlan5 PING" ):
1235 raise Exception ( "Per-interface PING failed" )
1236 if "FAIL-NO-IFNAME-MATCH" not in wpas
. global_request ( "IFNAME=notfound PING" ):
1237 raise Exception ( "Unknown interface not reported correctly" )
1238 if "FAIL" not in wpas
. global_request ( "SAVE_CONFIG" ):
1239 raise Exception ( "SAVE_CONFIG succeeded unexpectedly" )
1240 if "OK" not in wpas
. global_request ( "SET wifi_display 0" ):
1241 raise Exception ( "SET failed" )
1242 if "wifi_display=0" not in wpas
. global_request ( "STATUS" ):
1243 raise Exception ( "wifi_display not disabled" )
1244 if "OK" not in wpas
. global_request ( "SET wifi_display 1" ):
1245 raise Exception ( "SET failed" )
1246 if "wifi_display=1" not in wpas
. global_request ( "STATUS" ):
1247 raise Exception ( "wifi_display not enabled" )
1248 if "FAIL" not in wpas
. global_request ( "SET foo 1" ):
1249 raise Exception ( "SET succeeded unexpectedly" )
1251 if "p2p_state=IDLE" not in wpas
. global_request ( "STATUS" ):
1252 raise Exception ( "P2P was disabled" )
1253 wpas
. global_request ( "P2P_SET disabled 1" )
1254 if "p2p_state=DISABLED" not in wpas
. global_request ( "STATUS" ):
1255 raise Exception ( "P2P was not disabled" )
1256 wpas
. global_request ( "P2P_SET disabled 0" )
1257 if "p2p_state=IDLE" not in wpas
. global_request ( "STATUS" ):
1258 raise Exception ( "P2P was not enabled" )
1260 # driver_nl80211.c does not support interface list, so do not fail because
1262 logger
. debug ( wpas
. global_request ( "INTERFACE_LIST" ))
1264 if "FAIL" not in wpas
. global_request ( "INTERFACE_ADD " ):
1265 raise Exception ( "INTERFACE_ADD succeeded unexpectedly" )
1266 if "FAIL" not in wpas
. global_request ( "INTERFACE_ADD FOO" ):
1267 raise Exception ( "INTERFACE_ADD succeeded unexpectedly" )
1268 if "FAIL" not in wpas
. global_request ( "INTERFACE_ADD FOO conf" ):
1269 raise Exception ( "INTERFACE_ADD succeeded unexpectedly" )
1270 if "FAIL" not in wpas
. global_request ( "INTERFACE_ADD FOO conf driver" ):
1271 raise Exception ( "INTERFACE_ADD succeeded unexpectedly" )
1272 if "FAIL" not in wpas
. global_request ( "INTERFACE_ADD FOO conf driver ctrliface" ):
1273 raise Exception ( "INTERFACE_ADD succeeded unexpectedly" )
1274 if "FAIL" not in wpas
. global_request ( "INTERFACE_ADD FOO conf driver ctrliface driverparam" ):
1275 raise Exception ( "INTERFACE_ADD succeeded unexpectedly" )
1276 if "FAIL" not in wpas
. global_request ( "INTERFACE_ADD FOO conf driver ctrliface driverparam bridge" ):
1277 raise Exception ( "INTERFACE_ADD succeeded unexpectedly" )
1278 if "FAIL" not in wpas
. global_request ( "INTERFACE_ADD FOO conf driver ctrliface driverparam bridge foo" ):
1279 raise Exception ( "INTERFACE_ADD succeeded unexpectedly" )
1280 if "FAIL" not in wpas
. global_request ( "INTERFACE_ADD FOO " ):
1281 raise Exception ( "INTERFACE_ADD succeeded unexpectedly" )
1282 if "FAIL" not in wpas
. global_request ( "INTERFACE_ADD FOO conf driver ctrliface driverparam bridge create abcd" ):
1283 raise Exception ( "INTERFACE_ADD succeeded unexpectedly" )
1286 def test_wpas_ctrl_roam ( dev
, apdev
):
1287 """wpa_supplicant ctrl_iface ROAM error cases"""
1288 if "FAIL" not in dev
[ 0 ]. request ( "ROAM 00:11:22:33:44" ):
1289 raise Exception ( "Unexpected success" )
1290 if "FAIL" not in dev
[ 0 ]. request ( "ROAM 00:11:22:33:44:55" ):
1291 raise Exception ( "Unexpected success" )
1292 params
= { "ssid" : "test" }
1293 hostapd
. add_ap ( apdev
[ 0 ], params
)
1294 id = dev
[ 0 ]. connect ( "test" , key_mgmt
= "NONE" , scan_freq
= "2412" )
1295 if "FAIL" not in dev
[ 0 ]. request ( "ROAM 00:11:22:33:44:55" ):
1296 raise Exception ( "Unexpected success" )
1299 def test_wpas_ctrl_ipaddr ( dev
, apdev
):
1300 """wpa_supplicant IP address in STATUS"""
1302 dev
[ 0 ]. cmd_execute ([ 'ip' , 'addr' , 'add' , '10.174.65.207/32' , 'dev' ,
1304 ipaddr
= dev
[ 0 ]. get_status_field ( 'ip_address' )
1305 if ipaddr
!= '10.174.65.207' :
1306 raise Exception ( "IP address not in STATUS output" )
1308 dev
[ 0 ]. cmd_execute ([ 'ip' , 'addr' , 'del' , '10.174.65.207/32' , 'dev' ,
1312 def test_wpas_ctrl_rsp ( dev
, apdev
):
1313 """wpa_supplicant ctrl_iface CTRL-RSP-"""
1314 if "FAIL" not in dev
[ 0 ]. request ( "CTRL-RSP-" ):
1315 raise Exception ( "Request succeeded unexpectedly" )
1316 if "FAIL" not in dev
[ 0 ]. request ( "CTRL-RSP-foo-" ):
1317 raise Exception ( "Request succeeded unexpectedly" )
1318 if "FAIL" not in dev
[ 0 ]. request ( "CTRL-RSP-foo-1234567" ):
1319 raise Exception ( "Request succeeded unexpectedly" )
1320 if "FAIL" not in dev
[ 0 ]. request ( "CTRL-RSP-foo-1234567:" ):
1321 raise Exception ( "Request succeeded unexpectedly" )
1322 id = dev
[ 0 ]. add_network ()
1323 if "FAIL" not in dev
[ 0 ]. request ( "CTRL-RSP-foo- %d :" % id ):
1324 raise Exception ( "Request succeeded unexpectedly" )
1325 for req
in [ "IDENTITY" , "PASSWORD" , "NEW_PASSWORD" , "PIN" , "OTP" ,
1326 "PASSPHRASE" , "SIM" ]:
1327 if "OK" not in dev
[ 0 ]. request ( "CTRL-RSP- %s-%d :" % ( req
, id )):
1328 raise Exception ( "Request failed unexpectedly" )
1329 if "OK" not in dev
[ 0 ]. request ( "CTRL-RSP- %s-%d :" % ( req
, id )):
1330 raise Exception ( "Request failed unexpectedly" )
1333 def test_wpas_ctrl_vendor ( dev
, apdev
):
1334 """wpa_supplicant ctrl_iface VENDOR"""
1341 if "FAIL" not in dev
[ 0 ]. request ( "VENDOR " + cmd
):
1342 raise Exception ( "Invalid VENDOR command accepted: " + cmd
)
1345 def test_wpas_ctrl_mgmt_tx ( dev
, apdev
):
1346 """wpa_supplicant ctrl_iface MGMT_TX"""
1348 "00:11:22:33:44:55 foo" ,
1349 "00:11:22:33:44:55 11:22:33:44:55:66" ,
1350 "00:11:22:33:44:55 11:22:33:44:55:66 freq=0 no_cck=0 wait_time=0 action=123" ,
1351 "00:11:22:33:44:55 11:22:33:44:55:66 action=12qq" ]
1353 if "FAIL" not in dev
[ 0 ]. request ( "MGMT_TX " + cmd
):
1354 raise Exception ( "Invalid MGMT_TX command accepted: " + cmd
)
1356 if "OK" not in dev
[ 0 ]. request ( "MGMT_TX_DONE" ):
1357 raise Exception ( "MGMT_TX_DONE failed" )
1360 def test_wpas_ctrl_driver_event ( dev
, apdev
):
1361 """wpa_supplicant ctrl_iface DRIVER_EVENT"""
1362 if "FAIL" not in dev
[ 0 ]. request ( "DRIVER_EVENT foo" ):
1363 raise Exception ( "Invalid DRIVER_EVENT accepted" )
1366 def test_wpas_ctrl_eapol_rx ( dev
, apdev
):
1367 """wpa_supplicant ctrl_iface EAPOL_RX"""
1369 "00:11:22:33:44:55 123" ,
1370 "00:11:22:33:44:55 12qq" ]
1372 if "FAIL" not in dev
[ 0 ]. request ( "EAPOL_RX " + cmd
):
1373 raise Exception ( "Invalid EAPOL_RX command accepted: " + cmd
)
1376 def test_wpas_ctrl_data_test ( dev
, apdev
):
1377 """wpa_supplicant ctrl_iface DATA_TEST"""
1378 dev
[ 0 ]. request ( "DATA_TEST_CONFIG 0" )
1379 if "FAIL" not in dev
[ 0 ]. request ( "DATA_TEST_TX 00:11:22:33:44:55 00:11:22:33:44:55 0" ):
1380 raise Exception ( "DATA_TEST_TX accepted when not in test mode" )
1383 if "OK" not in dev
[ 0 ]. request ( "DATA_TEST_CONFIG 1" ):
1384 raise Exception ( "DATA_TEST_CONFIG failed" )
1385 if "OK" not in dev
[ 0 ]. request ( "DATA_TEST_CONFIG 1" ):
1386 raise Exception ( "DATA_TEST_CONFIG failed" )
1388 "00:11:22:33:44:55 foo" ,
1389 "00:11:22:33:44:55 00:11:22:33:44:55 -1" ,
1390 "00:11:22:33:44:55 00:11:22:33:44:55 256" ]
1392 if "FAIL" not in dev
[ 0 ]. request ( "DATA_TEST_TX " + cmd
):
1393 raise Exception ( "Invalid DATA_TEST_TX command accepted: " + cmd
)
1394 if "OK" not in dev
[ 0 ]. request ( "DATA_TEST_TX 00:11:22:33:44:55 00:11:22:33:44:55 0" ):
1395 raise Exception ( "DATA_TEST_TX failed" )
1397 dev
[ 0 ]. request ( "DATA_TEST_CONFIG 0" )
1401 "00112233445566778899aabbccdde" ,
1402 "00112233445566778899aabbccdq" ]
1404 if "FAIL" not in dev
[ 0 ]. request ( "DATA_TEST_FRAME " + cmd
):
1405 raise Exception ( "Invalid DATA_TEST_FRAME command accepted: " + cmd
)
1407 if "OK" not in dev
[ 0 ]. request ( "DATA_TEST_FRAME 00112233445566778899aabbccddee" ):
1408 raise Exception ( "DATA_TEST_FRAME failed" )
1411 def test_wpas_ctrl_vendor_elem ( dev
, apdev
):
1412 """wpa_supplicant ctrl_iface VENDOR_ELEM"""
1413 if "OK" not in dev
[ 0 ]. request ( "VENDOR_ELEM_ADD 1 " ):
1414 raise Exception ( "VENDOR_ELEM_ADD failed" )
1421 if "FAIL" not in dev
[ 0 ]. request ( "VENDOR_ELEM_ADD " + cmd
):
1422 raise Exception ( "Invalid VENDOR_ELEM_ADD command accepted: " + cmd
)
1427 if "FAIL" not in dev
[ 0 ]. request ( "VENDOR_ELEM_GET " + cmd
):
1428 raise Exception ( "Invalid VENDOR_ELEM_GET command accepted: " + cmd
)
1430 dev
[ 0 ]. request ( "VENDOR_ELEM_REMOVE 1 *" )
1440 if "FAIL" not in dev
[ 0 ]. request ( "VENDOR_ELEM_REMOVE " + cmd
):
1441 raise Exception ( "Invalid VENDOR_ELEM_REMOVE command accepted: " + cmd
)
1443 dev
[ 0 ]. request ( "VENDOR_ELEM_ADD 1 000100" )
1444 if "OK" not in dev
[ 0 ]. request ( "VENDOR_ELEM_REMOVE 1 " ):
1445 raise Exception ( "VENDOR_ELEM_REMOVE failed" )
1454 if "FAIL" not in dev
[ 0 ]. request ( "VENDOR_ELEM_REMOVE " + cmd
):
1455 raise Exception ( "Invalid VENDOR_ELEM_REMOVE command accepted: " + cmd
)
1456 if "OK" not in dev
[ 0 ]. request ( "VENDOR_ELEM_REMOVE 1 000100" ):
1457 raise Exception ( "VENDOR_ELEM_REMOVE failed" )
1459 def test_wpas_ctrl_misc ( dev
, apdev
):
1460 """wpa_supplicant ctrl_iface and miscellaneous commands"""
1461 if "OK" not in dev
[ 0 ]. request ( "RELOG" ):
1462 raise Exception ( "RELOG failed" )
1463 if dev
[ 0 ]. request ( "IFNAME" ) != dev
[ 0 ]. ifname
:
1464 raise Exception ( "IFNAME returned unexpected response" )
1465 if "FAIL" not in dev
[ 0 ]. request ( "REATTACH" ):
1466 raise Exception ( "REATTACH accepted while disabled" )
1467 if "OK" not in dev
[ 2 ]. request ( "RECONFIGURE" ):
1468 raise Exception ( "RECONFIGURE failed" )
1469 if "FAIL" in dev
[ 0 ]. request ( "INTERFACE_LIST" ):
1470 raise Exception ( "INTERFACE_LIST failed" )
1471 if "UNKNOWN COMMAND" not in dev
[ 0 ]. request ( "FOO" ):
1472 raise Exception ( "Unknown command accepted" )
1474 if "FAIL" not in dev
[ 0 ]. global_request ( "INTERFACE_REMOVE foo" ):
1475 raise Exception ( "Invalid INTERFACE_REMOVE accepted" )
1476 if "FAIL" not in dev
[ 0 ]. global_request ( "SET foo" ):
1477 raise Exception ( "Invalid global SET accepted" )
1480 def test_wpas_ctrl_dump ( dev
, apdev
):
1481 """wpa_supplicant ctrl_iface and DUMP/GET global parameters"""
1482 vals
= dev
[ 0 ]. get_config ()
1483 logger
. info ( "Config values from DUMP: " + str ( vals
))
1485 res
= dev
[ 0 ]. request ( "GET " + field
)
1488 if res
!= vals
[ field
]:
1489 print ( "'{}' != '{}'" . format ( res
, vals
[ field
]))
1490 raise Exception ( "Mismatch in config field " + field
)
1491 if "beacon_int" not in vals
:
1492 raise Exception ( "Missing config field" )
1494 def test_wpas_ctrl_interface_add ( dev
, apdev
):
1495 """wpa_supplicant INTERFACE_ADD/REMOVE with vif creation/removal"""
1496 hapd
= hostapd
. add_ap ( apdev
[ 0 ], { "ssid" : "open" })
1497 dev
[ 0 ]. connect ( "open" , key_mgmt
= "NONE" , scan_freq
= "2412" )
1498 hwsim_utils
. test_connectivity ( dev
[ 0 ], hapd
)
1500 ifname
= "test-" + dev
[ 0 ]. ifname
1501 dev
[ 0 ]. interface_add ( ifname
, create
= True )
1502 wpas
= WpaSupplicant ( ifname
= ifname
)
1503 wpas
. connect ( "open" , key_mgmt
= "NONE" , scan_freq
= "2412" )
1504 hwsim_utils
. test_connectivity ( wpas
, hapd
)
1505 hwsim_utils
. test_connectivity ( dev
[ 0 ], hapd
)
1506 dev
[ 0 ]. global_request ( "INTERFACE_REMOVE " + ifname
)
1507 hwsim_utils
. test_connectivity ( dev
[ 0 ], hapd
)
1509 def test_wpas_ctrl_interface_add_sta ( dev
, apdev
):
1510 """wpa_supplicant INTERFACE_ADD/REMOVE with STA vif creation/removal"""
1511 hapd
= hostapd
. add_ap ( apdev
[ 0 ], { "ssid" : "open" })
1512 ifname
= "test-" + dev
[ 0 ]. ifname
1513 dev
[ 0 ]. interface_add ( ifname
, create
= True , if_type
= 'sta' )
1514 wpas
= WpaSupplicant ( ifname
= ifname
)
1515 wpas
. connect ( "open" , key_mgmt
= "NONE" , scan_freq
= "2412" )
1516 wpas
. request ( "DISCONNECT" )
1517 wpas
. wait_disconnected ()
1518 dev
[ 0 ]. global_request ( "INTERFACE_REMOVE " + ifname
)
1520 def test_wpas_ctrl_interface_add_ap ( dev
, apdev
):
1521 """wpa_supplicant INTERFACE_ADD/REMOVE AP interface"""
1522 with
HWSimRadio () as ( radio
, iface
):
1523 wpas0
= WpaSupplicant ( global_iface
= '/tmp/wpas-wlan5' )
1524 wpas0
. interface_add ( iface
)
1526 ifname
= "test-wpas-ap"
1527 wpas0
. interface_add ( ifname
, create
= True , if_type
= 'ap' )
1528 wpas
= WpaSupplicant ( ifname
= ifname
)
1530 id = wpas
. add_network ()
1531 wpas
. set_network ( id , "mode" , "2" )
1532 wpas
. set_network_quoted ( id , "ssid" , "wpas-ap-open" )
1533 wpas
. set_network ( id , "key_mgmt" , "NONE" )
1534 wpas
. set_network ( id , "frequency" , "2412" )
1535 wpas
. set_network ( id , "scan_freq" , "2412" )
1536 wpas
. select_network ( id )
1539 dev
[ 1 ]. connect ( "wpas-ap-open" , key_mgmt
= "NONE" , scan_freq
= "2412" )
1540 dev
[ 2 ]. connect ( "wpas-ap-open" , key_mgmt
= "NONE" , scan_freq
= "2412" )
1542 hwsim_utils
. test_connectivity ( wpas
, dev
[ 1 ])
1543 hwsim_utils
. test_connectivity ( dev
[ 1 ], dev
[ 2 ])
1545 dev
[ 1 ]. request ( "DISCONNECT" )
1546 dev
[ 2 ]. request ( "DISCONNECT" )
1547 dev
[ 1 ]. wait_disconnected ()
1548 dev
[ 2 ]. wait_disconnected ()
1549 wpas0
. global_request ( "INTERFACE_REMOVE " + ifname
)
1551 def test_wpas_ctrl_interface_add_many ( dev
, apdev
):
1552 """wpa_supplicant INTERFACE_ADD/REMOVE with vif creation/removal (many)"""
1554 _test_wpas_ctrl_interface_add_many ( dev
, apdev
)
1557 ifname
= "test %d- " % i
+ dev
[ 0 ]. ifname
1558 dev
[ 0 ]. global_request ( "INTERFACE_REMOVE " + ifname
)
1560 def _test_wpas_ctrl_interface_add_many ( dev
, apdev
):
1561 hapd
= hostapd
. add_ap ( apdev
[ 0 ], { "ssid" : "open" })
1562 dev
[ 0 ]. connect ( "open" , key_mgmt
= "NONE" , scan_freq
= "2412" )
1563 hwsim_utils
. test_connectivity ( dev
[ 0 ], hapd
)
1564 dev
[ 0 ]. dump_monitor ()
1568 ifname
= "test %d- " % i
+ dev
[ 0 ]. ifname
1569 dev
[ 0 ]. interface_add ( ifname
, create
= True )
1570 wpas
= WpaSupplicant ( ifname
= ifname
)
1571 wpas
. connect ( "open" , key_mgmt
= "NONE" , scan_freq
= "2412" )
1574 dev
[ 0 ]. dump_monitor ()
1577 hwsim_utils
. test_connectivity ( wpas
, hapd
)
1579 dev
[ 0 ]. dump_monitor ()
1581 def test_wpas_ctrl_interface_add2 ( dev
, apdev
):
1582 """wpa_supplicant INTERFACE_ADD/REMOVE with vif without creation/removal"""
1583 ifname
= "test-ext-" + dev
[ 0 ]. ifname
1585 _test_wpas_ctrl_interface_add2 ( dev
, apdev
, ifname
)
1587 subprocess
. call ([ 'iw' , 'dev' , ifname
, 'del' ])
1589 def _test_wpas_ctrl_interface_add2 ( dev
, apdev
, ifname
):
1590 hapd
= hostapd
. add_ap ( apdev
[ 0 ], { "ssid" : "open" })
1591 dev
[ 0 ]. connect ( "open" , key_mgmt
= "NONE" , scan_freq
= "2412" )
1592 hwsim_utils
. test_connectivity ( dev
[ 0 ], hapd
)
1594 subprocess
. call ([ 'iw' , 'dev' , dev
[ 0 ]. ifname
, 'interface' , 'add' , ifname
,
1596 subprocess
. call ([ 'ip' , 'link' , 'set' , 'dev' , ifname
, 'address' ,
1597 '02:01:00:00:02:01' ])
1598 dev
[ 0 ]. interface_add ( ifname
, set_ifname
= False , all_params
= True )
1599 wpas
= WpaSupplicant ( ifname
= ifname
)
1600 wpas
. connect ( "open" , key_mgmt
= "NONE" , scan_freq
= "2412" )
1601 hwsim_utils
. test_connectivity ( wpas
, hapd
)
1602 hwsim_utils
. test_connectivity ( dev
[ 0 ], hapd
)
1604 dev
[ 0 ]. global_request ( "INTERFACE_REMOVE " + ifname
)
1605 hwsim_utils
. test_connectivity ( dev
[ 0 ], hapd
)
1607 def test_wpas_ctrl_wait ( dev
, apdev
, test_params
):
1608 """wpa_supplicant control interface wait for client"""
1609 logfile
= os
. path
. join ( test_params
[ 'logdir' ], 'wpas_ctrl_wait.log-wpas' )
1610 pidfile
= os
. path
. join ( test_params
[ 'logdir' ], 'wpas_ctrl_wait.pid-wpas' )
1611 conffile
= os
. path
. join ( test_params
[ 'logdir' ], 'wpas_ctrl_wait.conf' )
1612 with
open ( conffile
, 'w' ) as f
:
1613 f
. write ( "ctrl_interface=DIR=/var/run/wpa_supplicant \n " )
1615 prg
= os
. path
. join ( test_params
[ 'logdir' ],
1616 'alt-wpa_supplicant/wpa_supplicant/wpa_supplicant' )
1617 if not os
. path
. exists ( prg
):
1618 prg
= '../../wpa_supplicant/wpa_supplicant'
1620 cmd
= subprocess
. Popen ( arg
, stdout
= subprocess
. PIPE
)
1621 out
= cmd
. communicate ()[ 0 ]. decode ()
1623 tracing
= "Linux tracing" in out
1625 with
HWSimRadio () as ( radio
, iface
):
1626 arg
= [ prg
, '-BdddW' , '-P' , pidfile
, '-f' , logfile
,
1627 '-Dnl80211' , '-c' , conffile
, '-i' , iface
]
1630 logger
. info ( "Start wpa_supplicant: " + str ( arg
))
1631 subprocess
. call ( arg
)
1632 wpas
= WpaSupplicant ( ifname
= iface
)
1633 if "PONG" not in wpas
. request ( "PING" ):
1634 raise Exception ( "Could not PING wpa_supplicant" )
1635 if not os
. path
. exists ( pidfile
):
1636 raise Exception ( "PID file not created" )
1637 if "OK" not in wpas
. request ( "TERMINATE" ):
1638 raise Exception ( "Could not TERMINATE" )
1639 ev
= wpas
. wait_event ([ "CTRL-EVENT-TERMINATING" ], timeout
= 2 )
1641 raise Exception ( "No termination event received" )
1643 if not os
. path
. exists ( pidfile
):
1646 if os
. path
. exists ( pidfile
):
1647 raise Exception ( "PID file not removed" )
1650 def test_wpas_ctrl_oom ( dev
):
1651 """Various wpa_supplicant ctrl_iface OOM cases"""
1653 _test_wpas_ctrl_oom ( dev
)
1655 dev
[ 0 ]. request ( "VENDOR_ELEM_REMOVE 1 *" )
1656 dev
[ 0 ]. request ( "VENDOR_ELEM_REMOVE 2 *" )
1657 dev
[ 0 ]. request ( "SET bssid_filter " )
1659 def _test_wpas_ctrl_oom ( dev
):
1660 dev
[ 0 ]. request ( 'VENDOR_ELEM_ADD 2 000100' )
1661 tests
= [( 'DRIVER_EVENT AVOID_FREQUENCIES 2412' , 'FAIL' ,
1662 1 , 'freq_range_list_parse' ),
1663 ( 'P2P_SET disallow_freq 2412' , 'FAIL' ,
1664 1 , 'freq_range_list_parse' ),
1665 ( 'SCAN freq=2412' , 'FAIL' ,
1666 1 , 'freq_range_list_parse' ),
1667 ( 'INTERWORKING_SELECT freq=2412' , 'FAIL' ,
1668 1 , 'freq_range_list_parse' ),
1669 ( 'SCAN ssid 112233' , 'FAIL' ,
1670 1 , 'wpas_ctrl_scan' ),
1671 ( 'MGMT_TX 00:00:00:00:00:00 00:00:00:00:00:00 action=00' , 'FAIL' ,
1672 1 , 'wpas_ctrl_iface_mgmt_tx' ),
1673 ( 'EAPOL_RX 00:00:00:00:00:00 00' , 'FAIL' ,
1674 1 , 'wpas_ctrl_iface_eapol_rx' ),
1675 ( 'DATA_TEST_FRAME 00112233445566778899aabbccddee' , 'FAIL' ,
1676 1 , 'wpas_ctrl_iface_data_test_frame' ),
1677 ( 'DATA_TEST_FRAME 00112233445566778899aabbccddee' , 'FAIL' ,
1678 1 , 'l2_packet_init;wpas_ctrl_iface_data_test_frame' ),
1679 ( 'VENDOR_ELEM_ADD 1 000100' , 'FAIL' ,
1680 1 , 'wpas_ctrl_vendor_elem_add' ),
1681 ( 'VENDOR_ELEM_ADD 2 000100' , 'FAIL' ,
1682 2 , 'wpas_ctrl_vendor_elem_add' ),
1683 ( 'VENDOR_ELEM_REMOVE 2 000100' , 'FAIL' ,
1684 1 , 'wpas_ctrl_vendor_elem_remove' ),
1685 ( 'SET bssid_filter 00:11:22:33:44:55' , 'FAIL' ,
1686 1 , 'set_bssid_filter' ),
1687 ( 'SET disallow_aps bssid 00:11:22:33:44:55' , 'FAIL' ,
1688 1 , 'set_disallow_aps' ),
1689 ( 'SET disallow_aps ssid 11' , 'FAIL' ,
1690 1 , 'set_disallow_aps' ),
1691 ( 'SET blob foo 0011' , 'FAIL' ,
1692 1 , 'wpas_ctrl_set_blob' ),
1693 ( 'SET blob foo 0011' , 'FAIL' ,
1694 2 , 'wpas_ctrl_set_blob' ),
1695 ( 'SET blob foo 0011' , 'FAIL' ,
1696 3 , 'wpas_ctrl_set_blob' ),
1697 ( 'WPS_NFC_TAG_READ 00' , 'FAIL' ,
1698 1 , 'wpa_supplicant_ctrl_iface_wps_nfc_tag_read' ),
1699 ( 'WPS_NFC_TOKEN NDEF' , 'FAIL' ,
1700 1 , 'wpa_supplicant_ctrl_iface_wps_nfc_token' ),
1701 ( 'WPS_NFC_TOKEN NDEF' , 'FAIL' ,
1702 2 , 'wpa_supplicant_ctrl_iface_wps_nfc_token' ),
1703 ( 'WPS_NFC_TOKEN NDEF' , 'FAIL' ,
1704 3 , 'wpa_supplicant_ctrl_iface_wps_nfc_token' ),
1705 ( 'WPS_NFC_TOKEN NDEF' , 'FAIL' ,
1706 4 , 'wpa_supplicant_ctrl_iface_wps_nfc_token' ),
1707 ( 'NFC_REPORT_HANDOVER ROLE TYPE 00 00' , 'FAIL' ,
1708 1 , 'wpas_ctrl_nfc_report_handover' ),
1709 ( 'NFC_REPORT_HANDOVER ROLE TYPE 00 00' , 'FAIL' ,
1710 2 , 'wpas_ctrl_nfc_report_handover' ),
1711 ( 'NFC_GET_HANDOVER_REQ NDEF WPS-CR' , 'FAIL' ,
1712 1 , 'wps_build_nfc_handover_req' ),
1713 ( 'NFC_GET_HANDOVER_REQ NDEF WPS-CR' , 'FAIL' ,
1714 1 , 'ndef_build_record' ),
1715 ( 'NFC_GET_HANDOVER_REQ NDEF P2P-CR' , None ,
1716 1 , 'wpas_p2p_nfc_handover' ),
1717 ( 'NFC_GET_HANDOVER_REQ NDEF P2P-CR' , None ,
1718 1 , 'wps_build_nfc_handover_req_p2p' ),
1719 ( 'NFC_GET_HANDOVER_REQ NDEF P2P-CR' , 'FAIL' ,
1720 1 , 'ndef_build_record' ),
1721 ( 'NFC_GET_HANDOVER_SEL NDEF P2P-CR-TAG' , None ,
1722 1 , 'wpas_ctrl_nfc_get_handover_sel_p2p' ),
1723 ( 'NFC_GET_HANDOVER_SEL NDEF P2P-CR' , None ,
1724 1 , 'wpas_ctrl_nfc_get_handover_sel_p2p' ),
1725 ( 'P2P_ASP_PROVISION_RESP 00:11:22:33:44:55 id=1' , 'FAIL' ,
1726 1 , 'p2p_parse_asp_provision_cmd' ),
1727 ( 'P2P_SERV_DISC_REQ 00:11:22:33:44:55 02000001' , 'FAIL' ,
1728 1 , 'p2p_ctrl_serv_disc_req' ),
1729 ( 'P2P_SERV_DISC_RESP 2412 00:11:22:33:44:55 1 00' , 'FAIL' ,
1730 1 , 'p2p_ctrl_serv_disc_resp' ),
1731 ( 'P2P_SERVICE_ADD bonjour 0b5f6166706f766572746370c00c000c01 074578616d706c65c027' ,
1733 1 , 'p2p_ctrl_service_add_bonjour' ),
1734 ( 'P2P_SERVICE_ADD bonjour 0b5f6166706f766572746370c00c000c01 074578616d706c65c027' ,
1736 2 , 'p2p_ctrl_service_add_bonjour' ),
1737 ( 'P2P_SERVICE_ADD bonjour 0b5f6166706f766572746370c00c000c01 074578616d706c65c027' ,
1739 3 , 'p2p_ctrl_service_add_bonjour' ),
1740 ( 'P2P_SERVICE_DEL bonjour 0b5f6166706f766572746370c00c000c01' ,
1742 1 , 'p2p_ctrl_service_del_bonjour' ),
1743 ( 'GAS_REQUEST 00:11:22:33:44:55 00' , 'FAIL' ,
1745 ( 'GAS_REQUEST 00:11:22:33:44:55 00 11' , 'FAIL' ,
1747 ( 'HS20_GET_NAI_HOME_REALM_LIST 00:11:22:33:44:55 realm=example.com' ,
1749 1 , 'hs20_nai_home_realm_list' ),
1750 ( 'HS20_GET_NAI_HOME_REALM_LIST 00:11:22:33:44:55 00' ,
1752 1 , 'hs20_get_nai_home_realm_list' ),
1753 ( 'WNM_SLEEP enter tfs_req=11' , 'FAIL' ,
1754 1 , 'wpas_ctrl_iface_wnm_sleep' ),
1755 ( 'WNM_SLEEP enter tfs_req=11' , 'FAIL' ,
1756 2 , 'wpas_ctrl_iface_wnm_sleep' ),
1757 ( 'WNM_SLEEP enter tfs_req=11' , 'FAIL' ,
1758 3 , 'wpas_ctrl_iface_wnm_sleep' ),
1759 ( 'WNM_SLEEP enter tfs_req=11' , 'FAIL' ,
1760 4 , 'wpas_ctrl_iface_wnm_sleep' ),
1761 ( 'WNM_SLEEP enter tfs_req=11' , 'FAIL' ,
1762 5 , 'wpas_ctrl_iface_wnm_sleep' ),
1763 ( 'WNM_SLEEP enter' , 'FAIL' ,
1764 3 , 'wpas_ctrl_iface_wnm_sleep' ),
1765 ( 'VENDOR 1 1 00' , 'FAIL' ,
1766 1 , 'wpa_supplicant_vendor_cmd' ),
1767 ( 'VENDOR 1 1 00' , 'FAIL' ,
1768 2 , 'wpa_supplicant_vendor_cmd' ),
1769 ( 'RADIO_WORK add test' , 'FAIL' ,
1770 1 , 'wpas_ctrl_radio_work_add' ),
1771 ( 'RADIO_WORK add test' , 'FAIL' ,
1772 2 , 'wpas_ctrl_radio_work_add' ),
1773 ( 'AUTOSCAN periodic:1' , 'FAIL' ,
1774 1 , 'wpa_supplicant_ctrl_iface_autoscan' ),
1776 1 , 'wpa_supplicant_ctrl_iface_process' )]
1777 tls
= dev
[ 0 ]. request ( "GET tls_library" )
1778 if not tls
. startswith ( "internal" ):
1779 tests
. append (( 'NFC_GET_HANDOVER_SEL NDEF P2P-CR-TAG' , 'FAIL' ,
1780 4 , 'wpas_ctrl_nfc_get_handover_sel_p2p' ))
1781 for cmd
, exp
, count
, func
in tests
:
1782 with
alloc_fail ( dev
[ 0 ], count
, func
):
1783 res
= dev
[ 0 ]. request ( cmd
)
1784 if exp
and exp
not in res
:
1785 raise Exception ( "Unexpected success for ' %s ' during OOM ( %d : %s )" % ( cmd
, count
, func
))
1787 tests
= [( 'FOO' , None ,
1788 1 , 'wpa_supplicant_global_ctrl_iface_process' ),
1789 ( 'IFNAME=notfound PING' , 'FAIL \n ' ,
1790 1 , 'wpas_global_ctrl_iface_ifname' )]
1791 for cmd
, exp
, count
, func
in tests
:
1792 with
alloc_fail ( dev
[ 0 ], count
, func
):
1793 res
= dev
[ 0 ]. global_request ( cmd
)
1794 if exp
and exp
not in res
:
1795 raise Exception ( "Unexpected success for ' %s ' during OOM" % cmd
)
1798 def test_wpas_ctrl_error ( dev
):
1799 """Various wpa_supplicant ctrl_iface error cases"""
1800 tests
= [( 'WPS_NFC_TOKEN NDEF' , 'FAIL' ,
1801 1 , 'wpa_supplicant_ctrl_iface_wps_nfc_token' ),
1802 ( 'WPS_NFC_TOKEN NDEF' , 'FAIL' ,
1803 2 , 'wpa_supplicant_ctrl_iface_wps_nfc_token' ),
1804 ( 'NFC_GET_HANDOVER_REQ NDEF P2P-CR' , None ,
1805 1 , 'wpas_p2p_nfc_handover' ),
1806 ( 'NFC_GET_HANDOVER_REQ NDEF P2P-CR' , None ,
1807 1 , 'wps_build_nfc_handover_req_p2p' )]
1808 for cmd
, exp
, count
, func
in tests
:
1809 with
fail_test ( dev
[ 0 ], count
, func
):
1810 res
= dev
[ 0 ]. request ( cmd
)
1811 if exp
and exp
not in res
:
1812 raise Exception ( "Unexpected success for ' %s ' during failure testing ( %d : %s )" % ( cmd
, count
, func
))
1814 def test_wpas_ctrl_socket_full ( dev
, apdev
, test_params
):
1815 """wpa_supplicant control socket and full send buffer"""
1816 if not dev
[ 0 ]. ping ():
1817 raise Exception ( "Could not ping wpa_supplicant at the beginning of the test" )
1822 s
= socket
. socket ( socket
. AF_UNIX
, socket
. SOCK_DGRAM
)
1823 local
= "/tmp/wpa_ctrl_test_ %d-%d " % ( os
. getpid (), counter
)
1826 s
. connect ( "/var/run/wpa_supplicant/wlan0" )
1828 logger
. debug ( "Command %d " % i
)
1831 except Exception as e
:
1832 logger
. info ( "Could not send command %d : %s " % ( i
, str ( e
)))
1834 # Close without receiving response
1837 if not dev
[ 0 ]. ping ():
1838 raise Exception ( "Could not ping wpa_supplicant in the middle of the test" )
1841 s2
= socket
. socket ( socket
. AF_UNIX
, socket
. SOCK_DGRAM
)
1842 local2
= "/tmp/wpa_ctrl_test_ %d-%d " % ( os
. getpid (), counter
)
1845 s2
. connect ( "/var/run/wpa_supplicant/wlan0" )
1847 logger
. debug ( "Command %d [2]" % i
)
1850 except Exception as e
:
1851 logger
. info ( "Could not send command %d [2]: %s " % ( i
, str ( e
)))
1853 # Close without receiving response
1860 logger
. debug ( "Command %d [3]" % i
)
1863 except Exception as e
:
1864 logger
. info ( "Could not send command %d [3]: %s " % ( i
, str ( e
)))
1866 # Close without receiving response
1872 if not dev
[ 0 ]. ping ():
1873 raise Exception ( "Could not ping wpa_supplicant in the middle of the test [2]" )
1876 s
= socket
. socket ( socket
. AF_UNIX
, socket
. SOCK_DGRAM
)
1877 local
= "/tmp/wpa_ctrl_test_ %d-%d " % ( os
. getpid (), counter
)
1880 s
. connect ( "/var/run/wpa_supplicant/wlan0" )
1882 res
= s
. recv ( 100 ). decode ()
1884 raise Exception ( "Could not attach a test socket" )
1887 dev
[ 0 ]. scan ( freq
= 2412 )
1893 dev
[ 0 ]. scan ( freq
= 2412 )
1895 if not dev
[ 0 ]. ping ():
1896 raise Exception ( "Could not ping wpa_supplicant at the end of the test" )
1899 def test_wpas_ctrl_event_burst ( dev
, apdev
):
1900 """wpa_supplicant control socket and event burst"""
1901 if "OK" not in dev
[ 0 ]. request ( "EVENT_TEST 1000" ):
1902 raise Exception ( "Could not request event messages" )
1906 for i
in range ( 100 ):
1907 ( i
, g
) = dev
[ 0 ]. dump_monitor ()
1910 logger
. info ( "Received i= %d g= %d " % ( i
, g
))
1911 if total_i
>= 1000 and total_g
>= 1000 :
1916 raise Exception ( "Some per-interface events not seen: %d " % total_i
)
1918 raise Exception ( "Some global events not seen: %d " % total_g
)
1920 if not dev
[ 0 ]. ping ():
1921 raise Exception ( "Could not ping wpa_supplicant at the end of the test" )
1924 def test_wpas_ctrl_sched_scan_plans ( dev
, apdev
):
1925 """wpa_supplicant sched_scan_plans parsing"""
1926 dev
[ 0 ]. request ( "SET sched_scan_plans foo" )
1927 dev
[ 0 ]. request ( "SET sched_scan_plans 10:100 20:200 30" )
1928 dev
[ 0 ]. request ( "SET sched_scan_plans 4294967295:0" )
1929 dev
[ 0 ]. request ( "SET sched_scan_plans 1 1" )
1930 dev
[ 0 ]. request ( "SET sched_scan_plans " )
1932 with
alloc_fail ( dev
[ 0 ], 1 , "wpas_sched_scan_plans_set" ):
1933 dev
[ 0 ]. request ( "SET sched_scan_plans 10:100" )
1935 dev
[ 0 ]. request ( "SET sched_scan_plans " )
1937 def test_wpas_ctrl_signal_monitor ( dev
, apdev
):
1938 """wpa_supplicant SIGNAL_MONITOR command"""
1939 hapd
= hostapd
. add_ap ( apdev
[ 0 ], { "ssid" : "open" })
1940 dev
[ 0 ]. connect ( "open" , key_mgmt
= "NONE" , scan_freq
= "2412" )
1941 dev
[ 1 ]. connect ( "open" , key_mgmt
= "NONE" , scan_freq
= "2412" ,
1942 bgscan
= "simple:1:-45:2" )
1943 dev
[ 2 ]. connect ( "open" , key_mgmt
= "NONE" , scan_freq
= "2412" )
1945 tests
= [ " THRESHOLD=-45" , " THRESHOLD=-44 HYSTERESIS=5" , "" ]
1947 if "FAIL" in dev
[ 2 ]. request ( "SIGNAL_MONITOR THRESHOLD=-1 HYSTERESIS=5" ):
1948 raise Exception ( "SIGNAL_MONITOR command failed" )
1950 if "OK" not in dev
[ 0 ]. request ( "SIGNAL_MONITOR" + t
):
1951 raise Exception ( "SIGNAL_MONITOR command failed: " + t
)
1952 if "FAIL" not in dev
[ 1 ]. request ( "SIGNAL_MONITOR THRESHOLD=-44 HYSTERESIS=5" ):
1953 raise Exception ( "SIGNAL_MONITOR command accepted while using bgscan" )
1954 ev
= dev
[ 2 ]. wait_event ([ "CTRL-EVENT-SIGNAL-CHANGE" ], timeout
= 10 )
1956 raise Exception ( "No signal change event seen" )
1957 if "above=0" not in ev
:
1958 raise Exception ( "Unexpected signal change event contents: " + ev
)
1960 dev
[ 0 ]. request ( "SIGNAL_MONITOR" )
1961 dev
[ 1 ]. request ( "SIGNAL_MONITOR" )
1962 dev
[ 2 ]. request ( "SIGNAL_MONITOR" )
1964 dev
[ 0 ]. request ( "REMOVE_NETWORK all" )
1965 dev
[ 1 ]. request ( "REMOVE_NETWORK all" )
1966 dev
[ 1 ]. wait_disconnected ()
1968 def test_wpas_ctrl_p2p_listen_offload ( dev
, apdev
):
1969 """wpa_supplicant P2P_LO_START and P2P_LO_STOP commands"""
1970 dev
[ 0 ]. request ( "P2P_LO_STOP" )
1971 dev
[ 0 ]. request ( "P2P_LO_START " )
1972 dev
[ 0 ]. request ( "P2P_LO_START 2412" )
1973 dev
[ 0 ]. request ( "P2P_LO_START 2412 100 200 3" )
1974 dev
[ 0 ]. request ( "P2P_LO_STOP" )
1976 def test_wpas_ctrl_driver_flags ( dev
, apdev
):
1977 """DRIVER_FLAGS command"""
1978 params
= hostapd
. wpa2_params ( ssid
= "test" , passphrase
= "12345678" )
1979 hapd
= hostapd
. add_ap ( apdev
[ 0 ], params
)
1980 hapd_flags
= hapd
. request ( "DRIVER_FLAGS" )
1981 wpas_flags
= dev
[ 0 ]. request ( "DRIVER_FLAGS" )
1982 if "FAIL" in hapd_flags
:
1983 raise Exception ( "DRIVER_FLAGS failed" )
1984 if hapd_flags
!= wpas_flags
:
1985 raise Exception ( "Unexpected difference in hostapd vs. wpa_supplicant DRIVER_FLAGS output" )
1986 logger
. info ( "DRIVER_FLAGS: " + hapd_flags
)
1987 flags
= hapd_flags
. split ( ' \n ' )
1988 if 'AP' not in flags
:
1989 raise Exception ( "AP flag missing from DRIVER_FLAGS" )
1991 def test_wpas_ctrl_bss_current ( dev
, apdev
):
1992 """wpa_supplicant BSS CURRENT command"""
1993 hapd
= hostapd
. add_ap ( apdev
[ 0 ], { "ssid" : "open" })
1994 bssid
= hapd
. own_addr ()
1995 res
= dev
[ 0 ]. request ( "BSS CURRENT" )
1997 raise Exception ( "Unexpected BSS CURRENT response in disconnected state" )
1998 dev
[ 0 ]. connect ( "open" , key_mgmt
= "NONE" , scan_freq
= "2412" )
1999 res
= dev
[ 0 ]. request ( "BSS CURRENT" )
2000 if bssid
not in res
:
2001 raise Exception ( "Unexpected BSS CURRENT response in connected state" )
2003 def test_wpas_ctrl_set_lci_errors ( dev
):
2004 """wpa_supplicant SET lci error cases"""
2005 if "FAIL" not in dev
[ 0 ]. request ( "SET lci q" ):
2006 raise Exception ( "Invalid LCI value accepted" )
2008 with
fail_test ( dev
[ 0 ], 1 , "os_get_reltime;wpas_ctrl_iface_set_lci" ):
2009 if "FAIL" not in dev
[ 0 ]. request ( "SET lci 00" ):
2010 raise Exception ( "SET lci accepted with failing os_get_reltime" )
2012 def test_wpas_ctrl_set_radio_disabled ( dev
):
2013 """wpa_supplicant SET radio_disabled"""
2014 # This is not currently supported with nl80211, but execute the commands
2015 # without checking the result for some additional code coverage.
2016 dev
[ 0 ]. request ( "SET radio_disabled 1" )
2017 dev
[ 0 ]. request ( "SET radio_disabled 0" )
2019 def test_wpas_ctrl_set_tdls_trigger_control ( dev
):
2020 """wpa_supplicant SET tdls_trigger_control"""
2021 # This is not supported with upstream nl80211, but execute the commands
2022 # without checking the result for some additional code coverage.
2023 dev
[ 0 ]. request ( "SET tdls_trigger_control 1" )
2024 dev
[ 0 ]. request ( "SET tdls_trigger_control 0" )
2026 def test_wpas_ctrl_set_sched_scan_relative_rssi ( dev
):
2027 """wpa_supplicant SET relative RSSI"""
2028 tests
= [ "relative_rssi -1" ,
2029 "relative_rssi 101" ,
2030 "relative_band_adjust 2G" ,
2031 "relative_band_adjust 2G:-101" ,
2032 "relative_band_adjust 2G:101" ,
2033 "relative_band_adjust 3G:1" ]
2035 if "FAIL" not in dev
[ 0 ]. request ( "SET " + t
):
2036 raise Exception ( "No failure reported for SET " + t
)
2038 tests
= [ "relative_rssi 0" ,
2040 "relative_rssi disable" ,
2041 "relative_band_adjust 2G:-1" ,
2042 "relative_band_adjust 2G:0" ,
2043 "relative_band_adjust 2G:1" ,
2044 "relative_band_adjust 5G:-1" ,
2045 "relative_band_adjust 5G:1" ,
2046 "relative_band_adjust 5G:0" ]
2048 if "OK" not in dev
[ 0 ]. request ( "SET " + t
):
2049 raise Exception ( "Failed to SET " + t
)
2051 def test_wpas_ctrl_get_pref_freq_list_override ( dev
):
2052 """wpa_supplicant get_pref_freq_list_override"""
2053 if dev
[ 0 ]. request ( "GET_PREF_FREQ_LIST " ). strip () != "FAIL" :
2054 raise Exception ( "Invalid GET_PREF_FREQ_LIST accepted" )
2056 dev
[ 0 ]. set ( "get_pref_freq_list_override" , "foo" )
2057 res
= dev
[ 0 ]. request ( "GET_PREF_FREQ_LIST STATION" ). strip ()
2059 raise Exception ( "Unexpected GET_PREF_FREQ_LIST response: " + res
)
2061 dev
[ 0 ]. set ( "get_pref_freq_list_override" , "1234:1,2,3 0" )
2062 res
= dev
[ 0 ]. request ( "GET_PREF_FREQ_LIST STATION" ). strip ()
2064 raise Exception ( "Unexpected GET_PREF_FREQ_LIST response: " + res
)
2066 dev
[ 0 ]. set ( "get_pref_freq_list_override" , "1234:1,2,3 0:" )
2067 res
= dev
[ 0 ]. request ( "GET_PREF_FREQ_LIST STATION" ). strip ()
2069 raise Exception ( "Unexpected GET_PREF_FREQ_LIST response: " + res
)
2071 dev
[ 0 ]. set ( "get_pref_freq_list_override" , "0:1,2" )
2072 res
= dev
[ 0 ]. request ( "GET_PREF_FREQ_LIST STATION" ). strip ()
2074 raise Exception ( "Unexpected GET_PREF_FREQ_LIST response: " + res
)
2076 dev
[ 0 ]. set ( "get_pref_freq_list_override" , "1:3,4 0:1,2 2:5,6" )
2077 res
= dev
[ 0 ]. request ( "GET_PREF_FREQ_LIST STATION" ). strip ()
2079 raise Exception ( "Unexpected GET_PREF_FREQ_LIST response: " + res
)
2081 dev
[ 0 ]. set ( "get_pref_freq_list_override" , "1:3,4 0:1 2:5,6" )
2082 res
= dev
[ 0 ]. request ( "GET_PREF_FREQ_LIST STATION" ). strip ()
2084 raise Exception ( "Unexpected GET_PREF_FREQ_LIST response: " + res
)
2086 dev
[ 0 ]. set ( "get_pref_freq_list_override" , "0:1000,1001 2:1002,1003 3:1004,1005 4:1006,1007 8:1010,1011 9:1008,1009" )
2087 res
= dev
[ 0 ]. request ( "GET_PREF_FREQ_LIST STATION" ). strip ()
2088 if res
!= "1000,1001" :
2089 raise Exception ( "Unexpected GET_PREF_FREQ_LIST response: " + res
)
2090 res
= dev
[ 0 ]. request ( "GET_PREF_FREQ_LIST AP" ). strip ()
2091 if res
!= "1002,1003" :
2092 raise Exception ( "Unexpected GET_PREF_FREQ_LIST response: " + res
)
2093 res
= dev
[ 0 ]. request ( "GET_PREF_FREQ_LIST P2P_GO" ). strip ()
2094 if res
!= "1004,1005" :
2095 raise Exception ( "Unexpected GET_PREF_FREQ_LIST response: " + res
)
2096 res
= dev
[ 0 ]. request ( "GET_PREF_FREQ_LIST P2P_CLIENT" ). strip ()
2097 if res
!= "1006,1007" :
2098 raise Exception ( "Unexpected GET_PREF_FREQ_LIST response: " + res
)
2099 res
= dev
[ 0 ]. request ( "GET_PREF_FREQ_LIST IBSS" ). strip ()
2100 if res
!= "1008,1009" :
2101 raise Exception ( "Unexpected GET_PREF_FREQ_LIST response: " + res
)
2102 res
= dev
[ 0 ]. request ( "GET_PREF_FREQ_LIST TDLS" ). strip ()
2103 if res
!= "1010,1011" :
2104 raise Exception ( "Unexpected GET_PREF_FREQ_LIST response: " + res
)
2106 dev
[ 0 ]. set ( "get_pref_freq_list_override" , "" )
2107 res
= dev
[ 0 ]. request ( "GET_PREF_FREQ_LIST STATION" ). strip ()
2108 logger
. info ( "STATION (without override): " + res
)