]>
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.
8 logger
= logging
. getLogger ()
13 from wpasupplicant
import WpaSupplicant
15 def test_wpas_ctrl_network ( dev
):
16 """wpa_supplicant ctrl_iface network set/get"""
17 id = dev
[ 0 ]. add_network ()
19 if "FAIL" not in dev
[ 0 ]. request ( "SET_NETWORK " + str ( id )):
20 raise Exception ( "Unexpected success for invalid SET_NETWORK" )
21 if "FAIL" not in dev
[ 0 ]. request ( "SET_NETWORK " + str ( id ) + " name" ):
22 raise Exception ( "Unexpected success for invalid SET_NETWORK" )
23 if "FAIL" not in dev
[ 0 ]. request ( "SET_NETWORK " + str ( id + 1 ) + " proto OPEN" ):
24 raise Exception ( "Unexpected success for invalid network id" )
25 if "FAIL" not in dev
[ 0 ]. request ( "GET_NETWORK " + str ( id )):
26 raise Exception ( "Unexpected success for invalid GET_NETWORK" )
27 if "FAIL" not in dev
[ 0 ]. request ( "GET_NETWORK " + str ( id + 1 ) + " proto" ):
28 raise Exception ( "Unexpected success for invalid network id" )
30 tests
= (( "key_mgmt" , "WPA-PSK WPA-EAP IEEE8021X NONE WPA-NONE FT-PSK FT-EAP WPA-PSK-SHA256 WPA-EAP-SHA256" ),
31 ( "pairwise" , "CCMP-256 GCMP-256 CCMP GCMP TKIP" ),
32 ( "group" , "CCMP-256 GCMP-256 CCMP GCMP TKIP WEP104 WEP40" ),
33 ( "auth_alg" , "OPEN SHARED LEAP" ),
34 ( "scan_freq" , "1 2 3 4 5 6 7 8 9 10 11 12 13 14 15" ),
35 ( "freq_list" , "2412 2417" ),
37 ( "bssid" , "00:11:22:33:44:55" ),
38 ( "proto" , "WPA RSN OSEN" ),
40 ( "go_p2p_dev_addr" , "22:33:44:55:66:aa" ),
41 ( "p2p_client_list" , "22:33:44:55:66:bb 02:11:22:33:44:55" ))
43 dev
[ 0 ]. set_network_quoted ( id , "ssid" , "test" )
44 for field
, value
in tests
:
45 dev
[ 0 ]. set_network ( id , field
, value
)
46 res
= dev
[ 0 ]. get_network ( id , field
)
48 raise Exception ( "Unexpected response for '" + field
+ "': '" + res
+ "'" )
50 q_tests
= (( "identity" , "hello" ),
51 ( "anonymous_identity" , "foo@nowhere.com" ))
52 for field
, value
in q_tests
:
53 dev
[ 0 ]. set_network_quoted ( id , field
, value
)
54 res
= dev
[ 0 ]. get_network ( id , field
)
55 if res
!= '"' + value
+ '"' :
56 raise Exception ( "Unexpected quoted response for '" + field
+ "': '" + res
+ "'" )
58 get_tests
= (( "foo" , None ), ( "ssid" , '"test"' ))
59 for field
, value
in get_tests
:
60 res
= dev
[ 0 ]. get_network ( id , field
)
62 raise Exception ( "Unexpected response for '" + field
+ "': '" + res
+ "'" )
64 if dev
[ 0 ]. get_network ( id , "password" ):
65 raise Exception ( "Unexpected response for 'password'" )
66 dev
[ 0 ]. set_network_quoted ( id , "password" , "foo" )
67 if dev
[ 0 ]. get_network ( id , "password" ) != '*' :
68 raise Exception ( "Unexpected response for 'password' (expected *)" )
69 dev
[ 0 ]. set_network ( id , "password" , "hash:12345678901234567890123456789012" )
70 if dev
[ 0 ]. get_network ( id , "password" ) != '*' :
71 raise Exception ( "Unexpected response for 'password' (expected *)" )
72 dev
[ 0 ]. set_network ( id , "password" , "NULL" )
73 if dev
[ 0 ]. get_network ( id , "password" ):
74 raise Exception ( "Unexpected response for 'password'" )
75 if "FAIL" not in dev
[ 0 ]. request ( "SET_NETWORK " + str ( id ) + " password hash:12" ):
76 raise Exception ( "Unexpected success for invalid password hash" )
77 if "FAIL" not in dev
[ 0 ]. request ( "SET_NETWORK " + str ( id ) + " password hash:123456789012345678x0123456789012" ):
78 raise Exception ( "Unexpected success for invalid password hash" )
80 dev
[ 0 ]. set_network ( id , "identity" , "414243" )
81 if dev
[ 0 ]. get_network ( id , "identity" ) != '"ABC"' :
82 raise Exception ( "Unexpected identity hex->text response" )
84 dev
[ 0 ]. set_network ( id , "identity" , 'P"abc \n def"' )
85 if dev
[ 0 ]. get_network ( id , "identity" ) != "6162630a646566" :
86 raise Exception ( "Unexpected identity printf->hex response" )
88 if "FAIL" not in dev
[ 0 ]. request ( "SET_NETWORK " + str ( id ) + ' identity P"foo' ):
89 raise Exception ( "Unexpected success for invalid identity string" )
91 if "FAIL" not in dev
[ 0 ]. request ( "SET_NETWORK " + str ( id ) + ' identity 12x3' ):
92 raise Exception ( "Unexpected success for invalid identity string" )
95 if "FAIL" in dev
[ 0 ]. request ( "SET_NETWORK " + str ( id ) + ' wep_key' + str ( i
) + ' aabbccddee' ):
96 raise Exception ( "Unexpected wep_key set failure" )
97 if dev
[ 0 ]. get_network ( id , "wep_key" + str ( i
)) != '*' :
98 raise Exception ( "Unexpected wep_key get failure" )
100 if "FAIL" in dev
[ 0 ]. request ( "SET_NETWORK " + str ( id ) + ' psk_list P2P-00:11:22:33:44:55-0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef' ):
101 raise Exception ( "Unexpected failure for psk_list string" )
103 if "FAIL" not in dev
[ 0 ]. request ( "SET_NETWORK " + str ( id ) + ' psk_list 00:11:x2:33:44:55-0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef' ):
104 raise Exception ( "Unexpected success for invalid psk_list string" )
106 if "FAIL" not in dev
[ 0 ]. request ( "SET_NETWORK " + str ( id ) + ' psk_list P2P-00:11:x2:33:44:55-0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef' ):
107 raise Exception ( "Unexpected success for invalid psk_list string" )
109 if "FAIL" not in dev
[ 0 ]. request ( "SET_NETWORK " + str ( id ) + ' psk_list P2P-00:11:22:33:44:55+0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef' ):
110 raise Exception ( "Unexpected success for invalid psk_list string" )
112 if "FAIL" not in dev
[ 0 ]. request ( "SET_NETWORK " + str ( id ) + ' psk_list P2P-00:11:22:33:44:55-0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcde' ):
113 raise Exception ( "Unexpected success for invalid psk_list string" )
115 if "FAIL" not in dev
[ 0 ]. request ( "SET_NETWORK " + str ( id ) + ' psk_list P2P-00:11:22:33:44:55-0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdex' ):
116 raise Exception ( "Unexpected success for invalid psk_list string" )
118 if dev
[ 0 ]. get_network ( id , "psk_list" ):
119 raise Exception ( "Unexpected psk_list get response" )
121 if dev
[ 0 ]. list_networks ()[ 0 ][ 'ssid' ] != "test" :
122 raise Exception ( "Unexpected ssid in LIST_NETWORKS" )
123 dev
[ 0 ]. set_network ( id , "ssid" , "NULL" )
124 if dev
[ 0 ]. list_networks ()[ 0 ][ 'ssid' ] != "" :
125 raise Exception ( "Unexpected ssid in LIST_NETWORKS after clearing it" )
127 if "FAIL" not in dev
[ 0 ]. request ( 'SET_NETWORK ' + str ( id ) + ' ssid "0123456789abcdef0123456789abcdef0"' ):
128 raise Exception ( "Too long SSID accepted" )
129 if "FAIL" not in dev
[ 0 ]. request ( 'SET_NETWORK ' + str ( id ) + ' scan_ssid qwerty' ):
130 raise Exception ( "Invalid integer accepted" )
131 if "FAIL" not in dev
[ 0 ]. request ( 'SET_NETWORK ' + str ( id ) + ' scan_ssid 2' ):
132 raise Exception ( "Too large integer accepted" )
133 if "FAIL" not in dev
[ 0 ]. request ( 'SET_NETWORK ' + str ( id ) + ' psk 12345678' ):
134 raise Exception ( "Invalid PSK accepted" )
135 if "FAIL" not in dev
[ 0 ]. request ( 'SET_NETWORK ' + str ( id ) + ' psk "1234567"' ):
136 raise Exception ( "Too short PSK accepted" )
137 if "FAIL" not in dev
[ 0 ]. request ( 'SET_NETWORK ' + str ( id ) + ' psk "1234567890123456789012345678901234567890123456789012345678901234"' ):
138 raise Exception ( "Too long PSK accepted" )
139 dev
[ 0 ]. set_network_quoted ( id , "psk" , "123456768" );
140 dev
[ 0 ]. set_network_quoted ( id , "psk" , "123456789012345678901234567890123456789012345678901234567890123" );
141 if dev
[ 0 ]. get_network ( id , "psk" ) != '*' :
142 raise Exception ( "Unexpected psk read result" );
144 if "FAIL" not in dev
[ 0 ]. request ( 'SET_NETWORK ' + str ( id ) + ' eap UNKNOWN' ):
145 raise Exception ( "Unknown EAP method accepted" )
147 if "FAIL" not in dev
[ 0 ]. request ( 'SET_NETWORK ' + str ( id ) + ' password "foo' ):
148 raise Exception ( "Invalid password accepted" )
150 if "FAIL" not in dev
[ 0 ]. request ( 'SET_NETWORK ' + str ( id ) + ' wep_key0 "foo' ):
151 raise Exception ( "Invalid WEP key accepted" )
152 if "FAIL" not in dev
[ 0 ]. request ( 'SET_NETWORK ' + str ( id ) + ' wep_key0 "12345678901234567"' ):
153 raise Exception ( "Too long WEP key accepted" )
154 # too short WEP key is ignored
155 dev
[ 0 ]. set_network_quoted ( id , "wep_key0" , "1234" )
156 dev
[ 0 ]. set_network_quoted ( id , "wep_key1" , "12345" )
157 dev
[ 0 ]. set_network_quoted ( id , "wep_key2" , "1234567890123" )
158 dev
[ 0 ]. set_network_quoted ( id , "wep_key3" , "1234567890123456" )
160 dev
[ 0 ]. set_network ( id , "go_p2p_dev_addr" , "any" )
161 if dev
[ 0 ]. get_network ( id , "go_p2p_dev_addr" ) is not None :
162 raise Exception ( "Unexpected go_p2p_dev_addr value" )
163 if "FAIL" not in dev
[ 0 ]. request ( 'SET_NETWORK ' + str ( id ) + ' go_p2p_dev_addr 00:11:22:33:44' ):
164 raise Exception ( "Invalid go_p2p_dev_addr accepted" )
165 if "FAIL" not in dev
[ 0 ]. request ( 'SET_NETWORK ' + str ( id ) + ' p2p_client_list 00:11:22:33:44' ):
166 raise Exception ( "Invalid p2p_client_list accepted" )
167 if "FAIL" in dev
[ 0 ]. request ( 'SET_NETWORK ' + str ( id ) + ' p2p_client_list 00:11:22:33:44:55 00:1' ):
168 raise Exception ( "p2p_client_list truncation workaround failed" )
169 if dev
[ 0 ]. get_network ( id , "p2p_client_list" ) != "00:11:22:33:44:55" :
170 raise Exception ( "p2p_client_list truncation workaround did not work" )
172 if "FAIL" not in dev
[ 0 ]. request ( 'SET_NETWORK ' + str ( id ) + ' auth_alg ' ):
173 raise Exception ( "Empty auth_alg accepted" )
174 if "FAIL" not in dev
[ 0 ]. request ( 'SET_NETWORK ' + str ( id ) + ' auth_alg FOO' ):
175 raise Exception ( "Invalid auth_alg accepted" )
177 if "FAIL" not in dev
[ 0 ]. request ( 'SET_NETWORK ' + str ( id ) + ' proto ' ):
178 raise Exception ( "Empty proto accepted" )
179 if "FAIL" not in dev
[ 0 ]. request ( 'SET_NETWORK ' + str ( id ) + ' proto FOO' ):
180 raise Exception ( "Invalid proto accepted" )
182 if "FAIL" not in dev
[ 0 ]. request ( 'SET_NETWORK ' + str ( id ) + ' pairwise ' ):
183 raise Exception ( "Empty pairwise accepted" )
184 if "FAIL" not in dev
[ 0 ]. request ( 'SET_NETWORK ' + str ( id ) + ' pairwise FOO' ):
185 raise Exception ( "Invalid pairwise accepted" )
186 if "FAIL" not in dev
[ 0 ]. request ( 'SET_NETWORK ' + str ( id ) + ' pairwise WEP40' ):
187 raise Exception ( "Invalid pairwise accepted" )
189 if "OK" not in dev
[ 0 ]. request ( 'BSSID ' + str ( id ) + ' 00:11:22:33:44:55' ):
190 raise Exception ( "Unexpected BSSID failure" )
191 if dev
[ 0 ]. request ( "GET_NETWORK 0 bssid" ) != '00:11:22:33:44:55' :
192 raise Exception ( "BSSID command did not set network bssid" )
193 if "OK" not in dev
[ 0 ]. request ( 'BSSID ' + str ( id ) + ' 00:00:00:00:00:00' ):
194 raise Exception ( "Unexpected BSSID failure" )
195 if "FAIL" not in dev
[ 0 ]. request ( "GET_NETWORK 0 bssid" ):
196 raise Exception ( "bssid claimed configured after clearing" )
197 if "FAIL" not in dev
[ 0 ]. request ( 'BSSID 123 00:11:22:33:44:55' ):
198 raise Exception ( "Unexpected BSSID success" )
199 if "FAIL" not in dev
[ 0 ]. request ( 'BSSID ' + str ( id ) + ' 00:11:22:33:44' ):
200 raise Exception ( "Unexpected BSSID success" )
201 if "FAIL" not in dev
[ 0 ]. request ( 'BSSID ' + str ( id )):
202 raise Exception ( "Unexpected BSSID success" )
204 def test_wpas_ctrl_many_networks ( dev
, apdev
):
205 """wpa_supplicant ctrl_iface LIST_NETWORKS with huge number of networks"""
206 for i
in range ( 1000 ):
207 id = dev
[ 0 ]. add_network ()
208 res
= dev
[ 0 ]. request ( "LIST_NETWORKS" )
210 raise Exception ( "Last added network was unexpectedly included" )
211 res
= dev
[ 0 ]. request ( "LIST_NETWORKS LAST_ID= %d " % ( id - 2 ))
212 if str ( id ) not in res
:
213 raise Exception ( "Last added network was not present when using LAST_ID" )
215 def test_wpas_ctrl_dup_network ( dev
, apdev
):
216 """wpa_supplicant ctrl_iface DUP_NETWORK"""
218 passphrase
= 'qwertyuiop'
219 params
= hostapd
. wpa2_params ( ssid
= ssid
, passphrase
= passphrase
)
220 hostapd
. add_ap ( apdev
[ 0 ][ 'ifname' ], params
)
222 src
= dev
[ 0 ]. connect ( "another" , psk
= passphrase
, scan_freq
= "2412" ,
223 only_add_network
= True )
224 id = dev
[ 0 ]. add_network ()
225 dev
[ 0 ]. set_network_quoted ( id , "ssid" , ssid
)
226 for f
in [ "key_mgmt" , "psk" , "scan_freq" ]:
227 res
= dev
[ 0 ]. request ( "DUP_NETWORK {} {} {}" . format ( src
, id , f
))
229 raise Exception ( "DUP_NETWORK failed" )
230 dev
[ 0 ]. connect_network ( id )
232 if "FAIL" not in dev
[ 0 ]. request ( "DUP_NETWORK " ):
233 raise Exception ( "Unexpected DUP_NETWORK success" )
234 if "FAIL" not in dev
[ 0 ]. request ( "DUP_NETWORK %d " % id ):
235 raise Exception ( "Unexpected DUP_NETWORK success" )
236 if "FAIL" not in dev
[ 0 ]. request ( "DUP_NETWORK %d %d " % ( id , id )):
237 raise Exception ( "Unexpected DUP_NETWORK success" )
238 if "FAIL" not in dev
[ 0 ]. request ( "DUP_NETWORK 123456 1234567 " ):
239 raise Exception ( "Unexpected DUP_NETWORK success" )
240 if "FAIL" not in dev
[ 0 ]. request ( "DUP_NETWORK %d 123456 " % id ):
241 raise Exception ( "Unexpected DUP_NETWORK success" )
242 if "FAIL" not in dev
[ 0 ]. request ( "DUP_NETWORK %d %d foo" % ( id , id )):
243 raise Exception ( "Unexpected DUP_NETWORK success" )
244 dev
[ 0 ]. request ( "DISCONNECT" )
245 if "OK" not in dev
[ 0 ]. request ( "DUP_NETWORK %d %d ssid" % ( id , id )):
246 raise Exception ( "Unexpected DUP_NETWORK failure" )
250 ev
= dev
. wait_event ([ "CRED-ADDED" ])
252 raise Exception ( "Missing CRED-ADDED event" )
253 if " " + str ( id ) not in ev
:
254 raise Exception ( "CRED-ADDED event without matching id" )
257 def set_cred ( dev
, id , field
, value
):
258 dev
. set_cred ( id , field
, value
)
259 ev
= dev
. wait_event ([ "CRED-MODIFIED" ])
261 raise Exception ( "Missing CRED-MODIFIED event" )
262 if " " + str ( id ) + " " not in ev
:
263 raise Exception ( "CRED-MODIFIED event without matching id" )
265 raise Exception ( "CRED-MODIFIED event without matching field" )
267 def set_cred_quoted ( dev
, id , field
, value
):
268 dev
. set_cred_quoted ( id , field
, value
)
269 ev
= dev
. wait_event ([ "CRED-MODIFIED" ])
271 raise Exception ( "Missing CRED-MODIFIED event" )
272 if " " + str ( id ) + " " not in ev
:
273 raise Exception ( "CRED-MODIFIED event without matching id" )
275 raise Exception ( "CRED-MODIFIED event without matching field" )
277 def remove_cred ( dev
, id ):
279 ev
= dev
. wait_event ([ "CRED-REMOVED" ])
281 raise Exception ( "Missing CRED-REMOVED event" )
282 if " " + str ( id ) not in ev
:
283 raise Exception ( "CRED-REMOVED event without matching id" )
285 def test_wpas_ctrl_cred ( dev
):
286 """wpa_supplicant ctrl_iface cred set"""
287 id1
= add_cred ( dev
[ 0 ])
288 if "FAIL" not in dev
[ 0 ]. request ( "SET_CRED " + str ( id1
+ 1 ) + " temporary 1" ):
289 raise Exception ( "SET_CRED succeeded unexpectedly on unknown cred id" )
290 if "FAIL" not in dev
[ 0 ]. request ( "SET_CRED " + str ( id1
)):
291 raise Exception ( "Invalid SET_CRED succeeded unexpectedly" )
292 if "FAIL" not in dev
[ 0 ]. request ( "SET_CRED " + str ( id1
) + " temporary" ):
293 raise Exception ( "Invalid SET_CRED succeeded unexpectedly" )
294 if "FAIL" not in dev
[ 0 ]. request ( "GET_CRED " + str ( id1
+ 1 ) + " temporary" ):
295 raise Exception ( "GET_CRED succeeded unexpectedly on unknown cred id" )
296 if "FAIL" not in dev
[ 0 ]. request ( "GET_CRED " + str ( id1
)):
297 raise Exception ( "Invalid GET_CRED succeeded unexpectedly" )
298 if "FAIL" not in dev
[ 0 ]. request ( "GET_CRED " + str ( id1
) + " foo" ):
299 raise Exception ( "Invalid GET_CRED succeeded unexpectedly" )
300 id = add_cred ( dev
[ 0 ])
301 id2
= add_cred ( dev
[ 0 ])
302 set_cred ( dev
[ 0 ], id , "temporary" , "1" )
303 set_cred ( dev
[ 0 ], id , "priority" , "1" )
304 set_cred ( dev
[ 0 ], id , "pcsc" , "1" )
305 set_cred_quoted ( dev
[ 0 ], id , "private_key_passwd" , "test" )
306 set_cred_quoted ( dev
[ 0 ], id , "domain_suffix_match" , "test" )
307 set_cred_quoted ( dev
[ 0 ], id , "phase1" , "test" )
308 set_cred_quoted ( dev
[ 0 ], id , "phase2" , "test" )
310 if "FAIL" not in dev
[ 0 ]. request ( "SET_CRED " + str ( id ) + " eap FOO" ):
311 raise Exception ( "Unexpected success on unknown EAP method" )
313 if "FAIL" not in dev
[ 0 ]. request ( "SET_CRED " + str ( id ) + " username 12xa" ):
314 raise Exception ( "Unexpected success on invalid string" )
316 for i
in ( "11" , "1122" , "112233445566778899aabbccddeeff00" ):
317 if "FAIL" not in dev
[ 0 ]. request ( "SET_CRED " + str ( id ) + " roaming_consortium " + i
):
318 raise Exception ( "Unexpected success on invalid roaming_consortium" )
320 dev
[ 0 ]. set_cred ( id , "excluded_ssid" , "00112233445566778899aabbccddeeff00112233445566778899aabbccddeeff" )
321 if "FAIL" not in dev
[ 0 ]. request ( "SET_CRED " + str ( id ) + " excluded_ssid 00112233445566778899aabbccddeeff00112233445566778899aabbccddeeff00" ):
322 raise Exception ( "Unexpected success on invalid excluded_ssid" )
324 if "FAIL" not in dev
[ 0 ]. request ( "SET_CRED " + str ( id ) + " foo 4142" ):
325 raise Exception ( "Unexpected success on unknown field" )
327 id3
= add_cred ( dev
[ 0 ])
328 id4
= add_cred ( dev
[ 0 ])
329 if len ( dev
[ 0 ]. request ( "LIST_CREDS" ). splitlines ()) != 6 :
330 raise Exception ( "Unexpected LIST_CREDS result(1)" )
332 remove_cred ( dev
[ 0 ], id1
)
333 remove_cred ( dev
[ 0 ], id3
)
334 remove_cred ( dev
[ 0 ], id4
)
335 remove_cred ( dev
[ 0 ], id2
)
336 remove_cred ( dev
[ 0 ], id )
337 if "FAIL" not in dev
[ 0 ]. request ( "REMOVE_CRED 1" ):
338 raise Exception ( "Unexpected success on invalid remove cred" )
339 if len ( dev
[ 0 ]. request ( "LIST_CREDS" ). splitlines ()) != 1 :
340 raise Exception ( "Unexpected LIST_CREDS result(2)" )
342 id = add_cred ( dev
[ 0 ])
343 values
= [ ( "temporary" , "1" , False ),
344 ( "temporary" , "0" , False ),
345 ( "pcsc" , "1" , False ),
346 ( "realm" , "example.com" , True ),
347 ( "username" , "user@example.com" , True ),
348 ( "password" , "foo" , True , "*" ),
349 ( "ca_cert" , "ca.pem" , True ),
350 ( "client_cert" , "user.pem" , True ),
351 ( "private_key" , "key.pem" , True ),
352 ( "private_key_passwd" , "foo" , True , "*" ),
353 ( "imsi" , "310026-000000000" , True ),
354 ( "milenage" , "foo" , True , "*" ),
355 ( "domain_suffix_match" , "example.com" , True ),
356 ( "domain" , "example.com" , True ),
357 ( "domain" , "example.org" , True , "example.com \n example.org" ),
358 ( "roaming_consortium" , "0123456789" , False ),
359 ( "required_roaming_consortium" , "456789" , False ),
360 ( "eap" , "TTLS" , False ),
361 ( "phase1" , "foo=bar1" , True ),
362 ( "phase2" , "foo=bar2" , True ),
363 ( "excluded_ssid" , "test" , True ),
364 ( "excluded_ssid" , "foo" , True , "test \n foo" ),
365 ( "roaming_partner" , "example.com,0,4,*" , True ),
366 ( "roaming_partner" , "example.org,1,2,US" , True ,
367 "example.com,0,4,* \n example.org,1,2,US" ),
368 ( "update_identifier" , "4" , False ),
369 ( "provisioning_sp" , "sp.example.com" , True ),
370 ( "sp_priority" , "7" , False ),
371 ( "min_dl_bandwidth_home" , "100" , False ),
372 ( "min_ul_bandwidth_home" , "101" , False ),
373 ( "min_dl_bandwidth_roaming" , "102" , False ),
374 ( "min_ul_bandwidth_roaming" , "103" , False ),
375 ( "max_bss_load" , "57" , False ),
376 ( "req_conn_capab" , "6:22,80,443" , False ),
377 ( "req_conn_capab" , "17:500" , False , "6:22,80,443 \n 17:500" ),
378 ( "req_conn_capab" , "50" , False , "6:22,80,443 \n 17:500 \n 50" ),
379 ( "ocsp" , "1" , False ) ]
382 set_cred_quoted ( dev
[ 0 ], id , v
[ 0 ], v
[ 1 ])
384 set_cred ( dev
[ 0 ], id , v
[ 0 ], v
[ 1 ])
385 val
= dev
[ 0 ]. get_cred ( id , v
[ 0 ])
391 raise Exception ( "Unexpected GET_CRED value for {}: {} != {}" . format ( v
[ 0 ], val
, expect
))
392 creds
= dev
[ 0 ]. request ( "LIST_CREDS" ). splitlines ()
394 raise Exception ( "Unexpected LIST_CREDS result(3)" )
395 if creds
[ 1 ] != "0 \t example.com \t user@example.com \t example.com \t 310026-000000000" :
396 raise Exception ( "Unexpected LIST_CREDS value" )
397 remove_cred ( dev
[ 0 ], id )
398 if len ( dev
[ 0 ]. request ( "LIST_CREDS" ). splitlines ()) != 1 :
399 raise Exception ( "Unexpected LIST_CREDS result(4)" )
401 id = add_cred ( dev
[ 0 ])
402 set_cred_quoted ( dev
[ 0 ], id , "domain" , "foo.example.com" )
403 id = add_cred ( dev
[ 0 ])
404 set_cred_quoted ( dev
[ 0 ], id , "domain" , "bar.example.com" )
405 id = add_cred ( dev
[ 0 ])
406 set_cred_quoted ( dev
[ 0 ], id , "domain" , "foo.example.com" )
407 if "OK" not in dev
[ 0 ]. request ( "REMOVE_CRED sp_fqdn=foo.example.com" ):
408 raise Exception ( "REMOVE_CRED failed" )
409 creds
= dev
[ 0 ]. request ( "LIST_CREDS" )
410 if "foo.example.com" in creds
:
411 raise Exception ( "REMOVE_CRED sp_fqdn did not remove cred" )
412 if "bar.example.com" not in creds
:
413 raise Exception ( "REMOVE_CRED sp_fqdn removed incorrect cred" )
414 dev
[ 0 ]. request ( "REMOVE_CRED all" )
416 id = add_cred ( dev
[ 0 ])
417 set_cred_quoted ( dev
[ 0 ], id , "domain" , "foo.example.com" )
418 set_cred_quoted ( dev
[ 0 ], id , "provisioning_sp" , "sp.foo.example.com" )
419 id = add_cred ( dev
[ 0 ])
420 set_cred_quoted ( dev
[ 0 ], id , "domain" , "bar.example.com" )
421 set_cred_quoted ( dev
[ 0 ], id , "provisioning_sp" , "sp.bar.example.com" )
422 id = add_cred ( dev
[ 0 ])
423 set_cred_quoted ( dev
[ 0 ], id , "domain" , "foo.example.com" )
424 set_cred_quoted ( dev
[ 0 ], id , "provisioning_sp" , "sp.foo.example.com" )
425 if "OK" not in dev
[ 0 ]. request ( "REMOVE_CRED provisioning_sp=sp.foo.example.com" ):
426 raise Exception ( "REMOVE_CRED failed" )
427 creds
= dev
[ 0 ]. request ( "LIST_CREDS" )
428 if "foo.example.com" in creds
:
429 raise Exception ( "REMOVE_CRED provisioning_sp did not remove cred" )
430 if "bar.example.com" not in creds
:
431 raise Exception ( "REMOVE_CRED provisioning_sp removed incorrect cred" )
432 dev
[ 0 ]. request ( "REMOVE_CRED all" )
434 # Test large number of creds and LIST_CREDS truncation
435 dev
[ 0 ]. dump_monitor ()
436 for i
in range ( 0 , 100 ):
437 id = add_cred ( dev
[ 0 ])
438 set_cred_quoted ( dev
[ 0 ], id , "realm" , "relatively.long.realm.test %d .example.com" % i
)
439 dev
[ 0 ]. dump_monitor ()
440 creds
= dev
[ 0 ]. request ( "LIST_CREDS" )
441 for i
in range ( 0 , 100 ):
442 dev
[ 0 ]. remove_cred ( i
)
443 dev
[ 0 ]. dump_monitor ()
444 if len ( creds
) < 3900 or len ( creds
) > 4100 :
445 raise Exception ( "Unexpected LIST_CREDS length: %d " % len ( creds
))
446 if "test10.example.com" not in creds
:
447 raise Exception ( "Missing credential" )
448 if len ( creds
. splitlines ()) > 95 :
449 raise Exception ( "Too many LIST_CREDS entries in the buffer" )
451 def test_wpas_ctrl_pno ( dev
):
452 """wpa_supplicant ctrl_iface pno"""
453 if "FAIL" not in dev
[ 0 ]. request ( "SET pno 1" ):
454 raise Exception ( "Unexpected success in enabling PNO without enabled network blocks" )
455 id = dev
[ 0 ]. add_network ()
456 dev
[ 0 ]. set_network_quoted ( id , "ssid" , "test" )
457 dev
[ 0 ]. set_network ( id , "key_mgmt" , "NONE" )
458 dev
[ 0 ]. request ( "ENABLE_NETWORK " + str ( id ) + " no-connect" )
459 #mac80211_hwsim does not yet support PNO, so this fails
460 if "FAIL" not in dev
[ 0 ]. request ( "SET pno 1" ):
461 raise Exception ( "Unexpected success in enabling PNO" )
462 if "FAIL" not in dev
[ 0 ]. request ( "SET pno 1 freq=2000-3000,5180" ):
463 raise Exception ( "Unexpected success in enabling PNO" )
464 if "FAIL" not in dev
[ 0 ]. request ( "SET pno 1 freq=0-6000" ):
465 raise Exception ( "Unexpected success in enabling PNO" )
466 if "FAIL" in dev
[ 0 ]. request ( "SET pno 0" ):
467 raise Exception ( "Unexpected failure in disabling PNO" )
469 def test_wpas_ctrl_get ( dev
):
470 """wpa_supplicant ctrl_iface get"""
471 if "FAIL" in dev
[ 0 ]. request ( "GET version" ):
472 raise Exception ( "Unexpected get failure for version" )
473 if "FAIL" in dev
[ 0 ]. request ( "GET wifi_display" ):
474 raise Exception ( "Unexpected get failure for wifi_display" )
475 if "FAIL" not in dev
[ 0 ]. request ( "GET foo" ):
476 raise Exception ( "Unexpected success on get command" )
478 def test_wpas_ctrl_preauth ( dev
):
479 """wpa_supplicant ctrl_iface preauth"""
480 if "FAIL" not in dev
[ 0 ]. request ( "PREAUTH " ):
481 raise Exception ( "Unexpected success on invalid PREAUTH" )
482 if "FAIL" in dev
[ 0 ]. request ( "PREAUTH 00:11:22:33:44:55" ):
483 raise Exception ( "Unexpected failure on PREAUTH" )
485 def test_wpas_ctrl_stkstart ( dev
):
486 """wpa_supplicant ctrl_iface strkstart"""
487 if "FAIL" not in dev
[ 0 ]. request ( "STKSTART " ):
488 raise Exception ( "Unexpected success on invalid STKSTART" )
489 if "FAIL" not in dev
[ 0 ]. request ( "STKSTART 00:11:22:33:44:55" ):
490 raise Exception ( "Unexpected success on STKSTART" )
492 def test_wpas_ctrl_tdls_discover ( dev
):
493 """wpa_supplicant ctrl_iface tdls_discover"""
494 if "FAIL" not in dev
[ 0 ]. request ( "TDLS_DISCOVER " ):
495 raise Exception ( "Unexpected success on invalid TDLS_DISCOVER" )
496 if "FAIL" not in dev
[ 0 ]. request ( "TDLS_DISCOVER 00:11:22:33:44:55" ):
497 raise Exception ( "Unexpected success on TDLS_DISCOVER" )
499 def test_wpas_ctrl_addr ( dev
):
500 """wpa_supplicant ctrl_iface invalid address"""
501 if "FAIL" not in dev
[ 0 ]. request ( "TDLS_SETUP " ):
502 raise Exception ( "Unexpected success on invalid TDLS_SETUP" )
503 if "FAIL" not in dev
[ 0 ]. request ( "TDLS_TEARDOWN " ):
504 raise Exception ( "Unexpected success on invalid TDLS_TEARDOWN" )
505 if "FAIL" not in dev
[ 0 ]. request ( "FT_DS " ):
506 raise Exception ( "Unexpected success on invalid FT_DS" )
507 if "FAIL" not in dev
[ 0 ]. request ( "WPS_PBC 00:11:22:33:44" ):
508 raise Exception ( "Unexpected success on invalid WPS_PBC" )
509 if "FAIL" not in dev
[ 0 ]. request ( "WPS_PIN 00:11:22:33:44" ):
510 raise Exception ( "Unexpected success on invalid WPS_PIN" )
511 if "FAIL" not in dev
[ 0 ]. request ( "WPS_NFC 00:11:22:33:44" ):
512 raise Exception ( "Unexpected success on invalid WPS_NFC" )
513 if "FAIL" not in dev
[ 0 ]. request ( "WPS_REG 00:11:22:33:44 12345670" ):
514 raise Exception ( "Unexpected success on invalid WPS_REG" )
515 if "FAIL" not in dev
[ 0 ]. request ( "IBSS_RSN 00:11:22:33:44" ):
516 raise Exception ( "Unexpected success on invalid IBSS_RSN" )
517 if "FAIL" not in dev
[ 0 ]. request ( "BLACKLIST 00:11:22:33:44" ):
518 raise Exception ( "Unexpected success on invalid BLACKLIST" )
520 def test_wpas_ctrl_wps_errors ( dev
):
521 """wpa_supplicant ctrl_iface WPS error cases"""
522 if "FAIL" not in dev
[ 0 ]. request ( "WPS_REG 00:11:22:33:44:55" ):
523 raise Exception ( "Unexpected success on invalid WPS_REG" )
524 if "FAIL" not in dev
[ 0 ]. request ( "WPS_REG 00:11:22:33:44:55 12345670 2233" ):
525 raise Exception ( "Unexpected success on invalid WPS_REG" )
526 if "FAIL" not in dev
[ 0 ]. request ( "WPS_REG 00:11:22:33:44:55 12345670 2233 OPEN" ):
527 raise Exception ( "Unexpected success on invalid WPS_REG" )
528 if "FAIL" not in dev
[ 0 ]. request ( "WPS_REG 00:11:22:33:44:55 12345670 2233 OPEN NONE" ):
529 raise Exception ( "Unexpected success on invalid WPS_REG" )
531 if "FAIL" not in dev
[ 0 ]. request ( "WPS_AP_PIN random" ):
532 raise Exception ( "Unexpected success on WPS_AP_PIN in non-AP mode" )
534 if "FAIL" not in dev
[ 0 ]. request ( "WPS_ER_PIN any" ):
535 raise Exception ( "Unexpected success on invalid WPS_ER_PIN" )
537 if "FAIL" not in dev
[ 0 ]. request ( "WPS_ER_LEARN 00:11:22:33:44:55" ):
538 raise Exception ( "Unexpected success on invalid WPS_ER_LEARN" )
540 if "FAIL" not in dev
[ 0 ]. request ( "WPS_ER_SET_CONFIG 00:11:22:33:44:55" ):
541 raise Exception ( "Unexpected success on invalid WPS_ER_SET_CONFIG" )
543 if "FAIL" not in dev
[ 0 ]. request ( "WPS_ER_CONFIG 00:11:22:33:44:55" ):
544 raise Exception ( "Unexpected success on invalid WPS_ER_CONFIG" )
545 if "FAIL" not in dev
[ 0 ]. request ( "WPS_ER_CONFIG 00:11:22:33:44:55 12345670" ):
546 raise Exception ( "Unexpected success on invalid WPS_ER_CONFIG" )
547 if "FAIL" not in dev
[ 0 ]. request ( "WPS_ER_CONFIG 00:11:22:33:44:55 12345670 2233" ):
548 raise Exception ( "Unexpected success on invalid WPS_ER_CONFIG" )
549 if "FAIL" not in dev
[ 0 ]. request ( "WPS_ER_CONFIG 00:11:22:33:44:55 12345670 2233 OPEN" ):
550 raise Exception ( "Unexpected success on invalid WPS_ER_CONFIG" )
551 if "FAIL" not in dev
[ 0 ]. request ( "WPS_ER_CONFIG 00:11:22:33:44:55 12345670 2233 OPEN NONE" ):
552 raise Exception ( "Unexpected success on invalid WPS_ER_CONFIG" )
554 if "FAIL" not in dev
[ 0 ]. request ( "WPS_ER_NFC_CONFIG_TOKEN WPS" ):
555 raise Exception ( "Unexpected success on invalid WPS_ER_NFC_CONFIG_TOKEN" )
556 if "FAIL" not in dev
[ 0 ]. request ( "WPS_ER_NFC_CONFIG_TOKEN FOO 00:11:22:33:44:55" ):
557 raise Exception ( "Unexpected success on invalid WPS_ER_NFC_CONFIG_TOKEN" )
558 if "FAIL" not in dev
[ 0 ]. request ( "WPS_ER_NFC_CONFIG_TOKEN NDEF 00:11:22:33:44:55" ):
559 raise Exception ( "Unexpected success on invalid WPS_ER_NFC_CONFIG_TOKEN" )
561 if "FAIL" not in dev
[ 0 ]. request ( "WPS_NFC_CONFIG_TOKEN FOO" ):
562 raise Exception ( "Unexpected success on invalid WPS_NFC_CONFIG_TOKEN" )
563 if "FAIL" not in dev
[ 0 ]. request ( "WPS_NFC_CONFIG_TOKEN WPS FOO" ):
564 raise Exception ( "Unexpected success on invalid WPS_NFC_CONFIG_TOKEN" )
565 if "FAIL" not in dev
[ 0 ]. request ( "WPS_NFC_TOKEN FOO" ):
566 raise Exception ( "Unexpected success on invalid WPS_NFC_TOKEN" )
568 def test_wpas_ctrl_config_parser ( dev
):
569 """wpa_supplicant ctrl_iface SET config parser"""
570 if "FAIL" not in dev
[ 0 ]. request ( "SET pbc_in_m1 qwerty" ):
571 raise Exception ( "Non-number accepted as integer" )
572 if "FAIL" not in dev
[ 0 ]. request ( "SET eapol_version 0" ):
573 raise Exception ( "Out-of-range value accepted" )
574 if "FAIL" not in dev
[ 0 ]. request ( "SET eapol_version 10" ):
575 raise Exception ( "Out-of-range value accepted" )
577 if "FAIL" not in dev
[ 0 ]. request ( "SET serial_number 0123456789abcdef0123456789abcdef0" ):
578 raise Exception ( "Too long string accepted" )
580 def test_wpas_ctrl_mib ( dev
):
581 """wpa_supplicant ctrl_iface MIB"""
582 mib
= dev
[ 0 ]. get_mib ()
583 if "dot11RSNAOptionImplemented" not in mib
:
584 raise Exception ( "Missing MIB entry" )
585 if mib
[ "dot11RSNAOptionImplemented" ] != "TRUE" :
586 raise Exception ( "Unexpected dot11RSNAOptionImplemented value" )
588 def test_wpas_ctrl_set_wps_params ( dev
):
589 """wpa_supplicant ctrl_iface SET config_methods"""
590 ts
= [ "config_methods label virtual_display virtual_push_button keypad" ,
591 "device_type 1-0050F204-1" ,
592 "os_version 01020300" ,
593 "uuid 12345678-9abc-def0-1234-56789abcdef0" ]
595 if "OK" not in dev
[ 2 ]. request ( "SET " + t
):
596 raise Exception ( "SET failed for: " + t
)
598 def test_wpas_ctrl_level ( dev
):
599 """wpa_supplicant ctrl_iface LEVEL"""
601 if "FAIL" not in dev
[ 2 ]. request ( "LEVEL 3" ):
602 raise Exception ( "Unexpected LEVEL success" )
603 if "OK" not in dev
[ 2 ]. mon
. request ( "LEVEL 2" ):
604 raise Exception ( "Unexpected LEVEL failure" )
605 dev
[ 2 ]. request ( "SCAN freq=2412" )
606 ev
= dev
[ 2 ]. wait_event ([ "State:" ], timeout
= 5 )
608 raise Exception ( "No debug message received" )
609 dev
[ 2 ]. wait_event ([ "CTRL-EVENT-SCAN-RESULTS" ], timeout
= 5 )
611 dev
[ 2 ]. mon
. request ( "LEVEL 3" )
613 def test_wpas_ctrl_bssid_filter ( dev
, apdev
):
614 """wpa_supplicant bssid_filter"""
616 if "OK" not in dev
[ 2 ]. request ( "SET bssid_filter " + apdev
[ 0 ][ 'bssid' ]):
617 raise Exception ( "Failed to set bssid_filter" )
618 params
= { "ssid" : "test" }
619 hostapd
. add_ap ( apdev
[ 0 ][ 'ifname' ], params
)
620 hostapd
. add_ap ( apdev
[ 1 ][ 'ifname' ], params
)
621 dev
[ 2 ]. scan_for_bss ( apdev
[ 0 ][ 'bssid' ], freq
= "2412" )
622 dev
[ 2 ]. scan ( freq
= "2412" )
623 bss
= dev
[ 2 ]. get_bss ( apdev
[ 0 ][ 'bssid' ])
624 if bss
is None or len ( bss
) == 0 :
625 raise Exception ( "Missing BSS data" )
626 bss
= dev
[ 2 ]. get_bss ( apdev
[ 1 ][ 'bssid' ])
627 if bss
and len ( bss
) != 0 :
628 raise Exception ( "Unexpected BSS data" )
629 dev
[ 2 ]. request ( "SET bssid_filter " )
630 dev
[ 2 ]. scan ( freq
= "2412" )
631 bss
= dev
[ 2 ]. get_bss ( apdev
[ 0 ][ 'bssid' ])
632 if bss
is None or len ( bss
) == 0 :
633 raise Exception ( "Missing BSS data" )
634 bss
= dev
[ 2 ]. get_bss ( apdev
[ 1 ][ 'bssid' ])
635 if bss
is None or len ( bss
) == 0 :
636 raise Exception ( "Missing BSS data(2)" )
637 res
= dev
[ 2 ]. request ( "SCAN_RESULTS" ). splitlines ()
638 if "test" not in res
[ 1 ] or "test" not in res
[ 2 ]:
639 raise Exception ( "SSID missing from SCAN_RESULTS" )
640 if apdev
[ 0 ][ 'bssid' ] not in res
[ 1 ] and apdev
[ 1 ][ 'bssid' ] not in res
[ 1 ]:
641 raise Exception ( "BSS1 missing from SCAN_RESULTS" )
642 if apdev
[ 0 ][ 'bssid' ] not in res
[ 2 ] and apdev
[ 1 ][ 'bssid' ] not in res
[ 2 ]:
643 raise Exception ( "BSS1 missing from SCAN_RESULTS" )
645 if "FAIL" not in dev
[ 2 ]. request ( "SET bssid_filter 00:11:22:33:44:55 00:11:22:33:44" ):
646 raise Exception ( "Unexpected success for invalid SET bssid_filter" )
648 dev
[ 2 ]. request ( "SET bssid_filter " )
650 def test_wpas_ctrl_disallow_aps ( dev
, apdev
):
651 """wpa_supplicant ctrl_iface disallow_aps"""
652 params
= { "ssid" : "test" }
653 hostapd
. add_ap ( apdev
[ 0 ][ 'ifname' ], params
)
655 if "FAIL" not in dev
[ 0 ]. request ( "SET disallow_aps bssid " ):
656 raise Exception ( "Unexpected success on invalid disallow_aps" )
657 if "FAIL" not in dev
[ 0 ]. request ( "SET disallow_aps bssid 00:11:22:33:44" ):
658 raise Exception ( "Unexpected success on invalid disallow_aps" )
659 if "FAIL" not in dev
[ 0 ]. request ( "SET disallow_aps ssid 0" ):
660 raise Exception ( "Unexpected success on invalid disallow_aps" )
661 if "FAIL" not in dev
[ 0 ]. request ( "SET disallow_aps ssid 4q" ):
662 raise Exception ( "Unexpected success on invalid disallow_aps" )
663 if "FAIL" not in dev
[ 0 ]. request ( "SET disallow_aps bssid 00:11:22:33:44:55 ssid 112233 ssid 123" ):
664 raise Exception ( "Unexpected success on invalid disallow_aps" )
665 if "FAIL" not in dev
[ 0 ]. request ( "SET disallow_aps ssid 000102030405060708090a0b0c0d0e0f000102030405060708090a0b0c0d0e0f00" ):
666 raise Exception ( "Unexpected success on invalid disallow_aps" )
667 if "FAIL" not in dev
[ 0 ]. request ( "SET disallow_aps foo 112233445566" ):
668 raise Exception ( "Unexpected success on invalid disallow_aps" )
670 dev
[ 0 ]. connect ( "test" , key_mgmt
= "NONE" , scan_freq
= "2412" )
671 hostapd
. add_ap ( apdev
[ 1 ][ 'ifname' ], params
)
672 dev
[ 0 ]. dump_monitor ()
673 if "OK" not in dev
[ 0 ]. request ( "SET disallow_aps bssid 00:11:22:33:44:55 bssid 00:22:33:44:55:66" ):
674 raise Exception ( "Failed to set disallow_aps" )
675 if "OK" not in dev
[ 0 ]. request ( "SET disallow_aps bssid " + apdev
[ 0 ][ 'bssid' ]):
676 raise Exception ( "Failed to set disallow_aps" )
677 ev
= dev
[ 0 ]. wait_event ([ "CTRL-EVENT-CONNECTED" ], timeout
= 15 )
679 raise Exception ( "Reassociation timed out" )
680 if apdev
[ 1 ][ 'bssid' ] not in ev
:
681 raise Exception ( "Unexpected BSSID" )
683 dev
[ 0 ]. dump_monitor ()
684 if "OK" not in dev
[ 0 ]. request ( "SET disallow_aps ssid " + "test" . encode ( "hex" )):
685 raise Exception ( "Failed to set disallow_aps" )
686 ev
= dev
[ 0 ]. wait_event ([ "CTRL-EVENT-DISCONNECTED" ], timeout
= 5 )
688 raise Exception ( "Disconnection not seen" )
689 ev
= dev
[ 0 ]. wait_event ([ "CTRL-EVENT-CONNECTED" ], timeout
= 1 )
691 raise Exception ( "Unexpected reassociation" )
693 dev
[ 0 ]. request ( "DISCONNECT" )
694 dev
[ 0 ]. p2p_start_go ( freq
= 2412 )
695 if "OK" not in dev
[ 0 ]. request ( "SET disallow_aps " ):
696 raise Exception ( "Failed to set disallow_aps" )
698 def test_wpas_ctrl_blob ( dev
):
699 """wpa_supplicant ctrl_iface SET blob"""
700 if "FAIL" not in dev
[ 0 ]. request ( "SET blob foo" ):
701 raise Exception ( "Unexpected SET success" )
702 if "FAIL" not in dev
[ 0 ]. request ( "SET blob foo 0" ):
703 raise Exception ( "Unexpected SET success" )
704 if "FAIL" not in dev
[ 0 ]. request ( "SET blob foo 0q" ):
705 raise Exception ( "Unexpected SET success" )
706 if "OK" not in dev
[ 0 ]. request ( "SET blob foo 00" ):
707 raise Exception ( "Unexpected SET failure" )
708 if "OK" not in dev
[ 0 ]. request ( "SET blob foo 0011" ):
709 raise Exception ( "Unexpected SET failure" )
711 def test_wpas_ctrl_set_uapsd ( dev
):
712 """wpa_supplicant ctrl_iface SET uapsd"""
713 if "FAIL" not in dev
[ 0 ]. request ( "SET uapsd foo" ):
714 raise Exception ( "Unexpected SET success" )
715 if "FAIL" not in dev
[ 0 ]. request ( "SET uapsd 0,0,0" ):
716 raise Exception ( "Unexpected SET success" )
717 if "FAIL" not in dev
[ 0 ]. request ( "SET uapsd 0,0" ):
718 raise Exception ( "Unexpected SET success" )
719 if "FAIL" not in dev
[ 0 ]. request ( "SET uapsd 0" ):
720 raise Exception ( "Unexpected SET success" )
721 if "OK" not in dev
[ 0 ]. request ( "SET uapsd 1,1,1,1;1" ):
722 raise Exception ( "Unexpected SET failure" )
723 if "OK" not in dev
[ 0 ]. request ( "SET uapsd 0,0,0,0;0" ):
724 raise Exception ( "Unexpected SET failure" )
725 if "OK" not in dev
[ 0 ]. request ( "SET uapsd disable" ):
726 raise Exception ( "Unexpected SET failure" )
728 def test_wpas_ctrl_set ( dev
):
729 """wpa_supplicant ctrl_iface SET"""
735 "dot11RSNAConfigPMKLifetime 0" ,
736 "dot11RSNAConfigPMKReauthThreshold 101" ,
737 "dot11RSNAConfigSATimeout 0" ,
738 "wps_version_number -1" ,
739 "wps_version_number 256" ]
741 if "FAIL" not in dev
[ 0 ]. request ( "SET " + val
):
742 raise Exception ( "Unexpected SET success for " + val
)
744 vals
= [ "EAPOL::heldPeriod 60" ,
745 "EAPOL::authPeriod 30" ,
746 "EAPOL::startPeriod 30" ,
748 "dot11RSNAConfigSATimeout 60" ,
755 if "OK" not in dev
[ 0 ]. request ( "SET " + val
):
756 raise Exception ( "Unexpected SET failure for " + val
)
758 def test_wpas_ctrl_get_capability ( dev
):
759 """wpa_supplicant ctrl_iface GET_CAPABILITY"""
760 if "FAIL" not in dev
[ 0 ]. request ( "GET_CAPABILITY 1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890" ):
761 raise Exception ( "Unexpected success on invalid GET_CAPABILITY" )
762 if "FAIL" not in dev
[ 0 ]. request ( "GET_CAPABILITY eap foo" ):
763 raise Exception ( "Unexpected success on invalid GET_CAPABILITY" )
764 if "AP" not in dev
[ 0 ]. request ( "GET_CAPABILITY modes strict" ):
765 raise Exception ( "Unexpected GET_CAPABILITY response" )
766 res
= dev
[ 0 ]. get_capability ( "eap" )
767 if "TTLS" not in res
:
768 raise Exception ( "Unexpected GET_CAPABILITY eap response: " + str ( res
))
770 res
= dev
[ 0 ]. get_capability ( "pairwise" )
771 if "CCMP" not in res
:
772 raise Exception ( "Unexpected GET_CAPABILITY pairwise response: " + str ( res
))
774 res
= dev
[ 0 ]. get_capability ( "group" )
775 if "CCMP" not in res
:
776 raise Exception ( "Unexpected GET_CAPABILITY group response: " + str ( res
))
778 res
= dev
[ 0 ]. get_capability ( "key_mgmt" )
779 if "WPA-PSK" not in res
or "WPA-EAP" not in res
:
780 raise Exception ( "Unexpected GET_CAPABILITY key_mgmt response: " + str ( res
))
782 res
= dev
[ 0 ]. get_capability ( "proto" )
783 if "WPA" not in res
or "RSN" not in res
:
784 raise Exception ( "Unexpected GET_CAPABILITY proto response: " + str ( res
))
786 res
= dev
[ 0 ]. get_capability ( "auth_alg" )
787 if "OPEN" not in res
or "SHARED" not in res
:
788 raise Exception ( "Unexpected GET_CAPABILITY auth_alg response: " + str ( res
))
790 res
= dev
[ 0 ]. get_capability ( "modes" )
791 if "IBSS" not in res
or "AP" not in res
:
792 raise Exception ( "Unexpected GET_CAPABILITY modes response: " + str ( res
))
794 res
= dev
[ 0 ]. get_capability ( "channels" )
795 if "8" not in res
or "36" not in res
:
796 raise Exception ( "Unexpected GET_CAPABILITY channels response: " + str ( res
))
798 res
= dev
[ 0 ]. get_capability ( "freq" )
799 if "2457" not in res
or "5180" not in res
:
800 raise Exception ( "Unexpected GET_CAPABILITY freq response: " + str ( res
))
802 res
= dev
[ 0 ]. get_capability ( "tdls" )
803 if "EXTERNAL" not in res
[ 0 ]:
804 raise Exception ( "Unexpected GET_CAPABILITY tdls response: " + str ( res
))
806 res
= dev
[ 0 ]. get_capability ( "erp" )
807 if "ERP" not in res
[ 0 ]:
808 raise Exception ( "Unexpected GET_CAPABILITY erp response: " + str ( res
))
810 if dev
[ 0 ]. get_capability ( "foo" ) is not None :
811 raise Exception ( "Unexpected GET_CAPABILITY foo response: " + str ( res
))
813 def test_wpas_ctrl_nfc_report_handover ( dev
):
814 """wpa_supplicant ctrl_iface NFC_REPORT_HANDOVER"""
825 if "FAIL" not in dev
[ 0 ]. request ( "NFC_REPORT_HANDOVER " + v
):
826 raise Exception ( "Unexpected NFC_REPORT_HANDOVER success for " + v
)
828 def test_wpas_ctrl_nfc_tag_read ( dev
):
829 """wpa_supplicant ctrl_iface WPS_NFC_TAG_READ"""
830 vals
= [ "FOO" , "0Q" , "00" , "000000" , "10000001" , "10000000" , "00000000" ,
831 "100e0000" , "100e0001ff" , "100e000411110000" , "100e0004100e0001" ]
833 if "FAIL" not in dev
[ 0 ]. request ( "WPS_NFC_TAG_READ " + v
):
834 raise Exception ( "Unexpected WPS_NFC_TAG_READ success for " + v
)
836 def test_wpas_ctrl_nfc_get_handover ( dev
):
837 """wpa_supplicant ctrl_iface NFC_GET_HANDOVER"""
838 vals
= [ "FOO" , "FOO BAR" , "WPS WPS" , "WPS WPS-CR" , "WPS FOO" , "NDEF P2P" ]
840 if "FAIL" not in dev
[ 0 ]. request ( "NFC_GET_HANDOVER_REQ " + v
):
841 raise Exception ( "Unexpected NFC_GET_HANDOVER_REQ success for " + v
)
843 vals
= [ "NDEF WPS" , "NDEF P2P-CR" , "WPS P2P-CR" ]
845 if "FAIL" in dev
[ 0 ]. request ( "NFC_GET_HANDOVER_REQ " + v
):
846 raise Exception ( "Unexpected NFC_GET_HANDOVER_REQ failure for " + v
)
848 vals
= [ "FOO" , "FOO BAR" , "WPS WPS" , "WPS WPS-CR" , "WPS FOO" , "NDEF P2P" ,
849 "NDEF WPS" , "NDEF WPS uuid" ]
851 if "FAIL" not in dev
[ 0 ]. request ( "NFC_GET_HANDOVER_SEL " + v
):
852 raise Exception ( "Unexpected NFC_GET_HANDOVER_SEL success for " + v
)
854 vals
= [ "NDEF P2P-CR" , "WPS P2P-CR" , "NDEF P2P-CR-TAG" ,
857 if "FAIL" in dev
[ 0 ]. request ( "NFC_GET_HANDOVER_SEL " + v
):
858 raise Exception ( "Unexpected NFC_GET_HANDOVER_SEL failure for " + v
)
860 def get_blacklist ( dev
):
861 return dev
. request ( "BLACKLIST" ). splitlines ()
863 def test_wpas_ctrl_blacklist ( dev
):
864 """wpa_supplicant ctrl_iface BLACKLIST"""
865 if "OK" not in dev
[ 0 ]. request ( "BLACKLIST clear" ):
866 raise Exception ( "BLACKLIST clear failed" )
867 b
= get_blacklist ( dev
[ 0 ])
869 raise Exception ( "Unexpected blacklist contents: " + str ( b
))
870 if "OK" not in dev
[ 0 ]. request ( "BLACKLIST 00:11:22:33:44:55" ):
871 raise Exception ( "BLACKLIST add failed" )
872 b
= get_blacklist ( dev
[ 0 ])
873 if "00:11:22:33:44:55" not in b
:
874 raise Exception ( "Unexpected blacklist contents: " + str ( b
))
875 if "OK" not in dev
[ 0 ]. request ( "BLACKLIST 00:11:22:33:44:56" ):
876 raise Exception ( "BLACKLIST add failed" )
877 b
= get_blacklist ( dev
[ 0 ])
878 if "00:11:22:33:44:55" not in b
or "00:11:22:33:44:56" not in b
:
879 raise Exception ( "Unexpected blacklist contents: " + str ( b
))
880 if "OK" not in dev
[ 0 ]. request ( "BLACKLIST 00:11:22:33:44:56" ):
881 raise Exception ( "BLACKLIST add failed" )
882 b
= get_blacklist ( dev
[ 0 ])
883 if "00:11:22:33:44:55" not in b
or "00:11:22:33:44:56" not in b
or len ( b
) != 2 :
884 raise Exception ( "Unexpected blacklist contents: " + str ( b
))
886 if "OK" not in dev
[ 0 ]. request ( "BLACKLIST clear" ):
887 raise Exception ( "BLACKLIST clear failed" )
888 if dev
[ 0 ]. request ( "BLACKLIST" ) != "" :
889 raise Exception ( "Unexpected blacklist contents" )
891 def test_wpas_ctrl_log_level ( dev
):
892 """wpa_supplicant ctrl_iface LOG_LEVEL"""
893 level
= dev
[ 2 ]. request ( "LOG_LEVEL" )
894 if "Current level: MSGDUMP" not in level
:
895 raise Exception ( "Unexpected debug level(1): " + level
)
896 if "Timestamp: 1" not in level
:
897 raise Exception ( "Unexpected timestamp(1): " + level
)
899 if "OK" not in dev
[ 2 ]. request ( "LOG_LEVEL MSGDUMP 0" ):
900 raise Exception ( "LOG_LEVEL failed" )
901 level
= dev
[ 2 ]. request ( "LOG_LEVEL" )
902 if "Current level: MSGDUMP" not in level
:
903 raise Exception ( "Unexpected debug level(2): " + level
)
904 if "Timestamp: 0" not in level
:
905 raise Exception ( "Unexpected timestamp(2): " + level
)
907 if "OK" not in dev
[ 2 ]. request ( "LOG_LEVEL MSGDUMP 1" ):
908 raise Exception ( "LOG_LEVEL failed" )
909 level
= dev
[ 2 ]. request ( "LOG_LEVEL" )
910 if "Current level: MSGDUMP" not in level
:
911 raise Exception ( "Unexpected debug level(3): " + level
)
912 if "Timestamp: 1" not in level
:
913 raise Exception ( "Unexpected timestamp(3): " + level
)
915 if "FAIL" not in dev
[ 2 ]. request ( "LOG_LEVEL FOO" ):
916 raise Exception ( "Invalid LOG_LEVEL accepted" )
918 for lev
in [ "EXCESSIVE" , "MSGDUMP" , "DEBUG" , "INFO" , "WARNING" , "ERROR" ]:
919 if "OK" not in dev
[ 2 ]. request ( "LOG_LEVEL " + lev
):
920 raise Exception ( "LOG_LEVEL failed for " + lev
)
921 level
= dev
[ 2 ]. request ( "LOG_LEVEL" )
922 if "Current level: " + lev
not in level
:
923 raise Exception ( "Unexpected debug level: " + level
)
925 if "OK" not in dev
[ 2 ]. request ( "LOG_LEVEL MSGDUMP 1" ):
926 raise Exception ( "LOG_LEVEL failed" )
927 level
= dev
[ 2 ]. request ( "LOG_LEVEL" )
928 if "Current level: MSGDUMP" not in level
:
929 raise Exception ( "Unexpected debug level(3): " + level
)
930 if "Timestamp: 1" not in level
:
931 raise Exception ( "Unexpected timestamp(3): " + level
)
933 def test_wpas_ctrl_enable_disable_network ( dev
, apdev
):
934 """wpa_supplicant ctrl_iface ENABLE/DISABLE_NETWORK"""
935 params
= { "ssid" : "test" }
936 hostapd
. add_ap ( apdev
[ 0 ][ 'ifname' ], params
)
938 id = dev
[ 0 ]. connect ( "test" , key_mgmt
= "NONE" , scan_freq
= "2412" ,
939 only_add_network
= True )
940 if "OK" not in dev
[ 0 ]. request ( "DISABLE_NETWORK " + str ( id )):
941 raise Exception ( "Failed to disable network" )
942 if "OK" not in dev
[ 0 ]. request ( "ENABLE_NETWORK " + str ( id ) + " no-connect" ):
943 raise Exception ( "Failed to enable network" )
944 if "OK" not in dev
[ 0 ]. request ( "DISABLE_NETWORK all" ):
945 raise Exception ( "Failed to disable networks" )
946 if "OK" not in dev
[ 0 ]. request ( "ENABLE_NETWORK " + str ( id )):
947 raise Exception ( "Failed to enable network" )
948 ev
= dev
[ 0 ]. wait_event ([ "CTRL-EVENT-CONNECTED" ], timeout
= 10 )
950 raise Exception ( "Association with the AP timed out" )
951 if "OK" not in dev
[ 0 ]. request ( "DISABLE_NETWORK " + str ( id )):
952 raise Exception ( "Failed to disable network" )
953 ev
= dev
[ 0 ]. wait_event ([ "CTRL-EVENT-DISCONNECTED" ], timeout
= 10 )
955 raise Exception ( "Disconnection with the AP timed out" )
958 if "OK" not in dev
[ 0 ]. request ( "ENABLE_NETWORK all" ):
959 raise Exception ( "Failed to enable network" )
960 ev
= dev
[ 0 ]. wait_event ([ "CTRL-EVENT-CONNECTED" ], timeout
= 10 )
962 raise Exception ( "Association with the AP timed out" )
963 if "OK" not in dev
[ 0 ]. request ( "DISABLE_NETWORK all" ):
964 raise Exception ( "Failed to disable network" )
965 ev
= dev
[ 0 ]. wait_event ([ "CTRL-EVENT-DISCONNECTED" ], timeout
= 10 )
967 raise Exception ( "Disconnection with the AP timed out" )
969 def test_wpas_ctrl_country ( dev
, apdev
):
970 """wpa_supplicant SET/GET country code"""
972 # work around issues with possible pending regdom event from the end of
973 # the previous test case
975 dev
[ 0 ]. dump_monitor ()
977 if "OK" not in dev
[ 0 ]. request ( "SET country FI" ):
978 raise Exception ( "Failed to set country code" )
979 if dev
[ 0 ]. request ( "GET country" ) != "FI" :
980 raise Exception ( "Country code set failed" )
981 ev
= dev
[ 0 ]. wait_event ([ "CTRL-EVENT-REGDOM-CHANGE" ])
983 raise Exception ( "regdom change event not seen" )
984 if "init=USER type=COUNTRY alpha2=FI" not in ev
:
985 raise Exception ( "Unexpected event contents: " + ev
)
986 dev
[ 0 ]. request ( "SET country 00" )
987 if dev
[ 0 ]. request ( "GET country" ) != "00" :
988 raise Exception ( "Country code set failed" )
989 ev
= dev
[ 0 ]. wait_event ([ "CTRL-EVENT-REGDOM-CHANGE" ])
991 raise Exception ( "regdom change event not seen" )
992 if "init=CORE type=WORLD" not in ev
:
993 raise Exception ( "Unexpected event contents: " + ev
)
995 subprocess
. call ([ 'sudo' , 'iw' , 'reg' , 'set' , '00' ])
997 def test_wpas_ctrl_suspend_resume ( dev
):
998 """wpa_supplicant SUSPEND/RESUME"""
999 wpas
= WpaSupplicant ( global_iface
= '/tmp/wpas-wlan5' )
1000 wpas
. interface_add ( "wlan5" )
1001 if "OK" not in wpas
. global_request ( "SUSPEND" ):
1002 raise Exception ( "SUSPEND failed" )
1004 if "OK" not in wpas
. global_request ( "RESUME" ):
1005 raise Exception ( "RESUME failed" )
1006 if "OK" not in wpas
. request ( "SUSPEND" ):
1007 raise Exception ( "Per-interface SUSPEND failed" )
1008 if "OK" not in wpas
. request ( "RESUME" ):
1009 raise Exception ( "Per-interface RESUME failed" )
1010 ev
= wpas
. wait_event ([ "CTRL-EVENT-SCAN-RESULTS" ], timeout
= 10 )
1012 raise Exception ( "Scan not completed" )
1014 def test_wpas_ctrl_global ( dev
):
1015 """wpa_supplicant global control interface"""
1016 wpas
= WpaSupplicant ( global_iface
= '/tmp/wpas-wlan5' )
1017 wpas
. interface_add ( "wlan5" )
1019 if "PONG" not in wpas
. global_request ( "PING" ):
1020 raise Exception ( "PING failed" )
1021 if "wlan5" not in wpas
. global_request ( "INTERFACES" ):
1022 raise Exception ( "Interface not found" )
1023 if "UNKNOWN COMMAND" not in wpas
. global_request ( "FOO" ):
1024 raise Exception ( "Unexpected response to unknown command" )
1025 if "PONG" not in wpas
. global_request ( "IFNAME=wlan5 PING" ):
1026 raise Exception ( "Per-interface PING failed" )
1027 if "FAIL-NO-IFNAME-MATCH" not in wpas
. global_request ( "IFNAME=notfound PING" ):
1028 raise Exception ( "Unknown interface not reported correctly" )
1029 if "FAIL" not in wpas
. global_request ( "SAVE_CONFIG" ):
1030 raise Exception ( "SAVE_CONFIG succeeded unexpectedly" )
1031 if "OK" not in wpas
. global_request ( "SET wifi_display 0" ):
1032 raise Exception ( "SET failed" )
1033 if "wifi_display=0" not in wpas
. global_request ( "STATUS" ):
1034 raise Exception ( "wifi_display not disabled" )
1035 if "OK" not in wpas
. global_request ( "SET wifi_display 1" ):
1036 raise Exception ( "SET failed" )
1037 if "wifi_display=1" not in wpas
. global_request ( "STATUS" ):
1038 raise Exception ( "wifi_display not enabled" )
1039 if "FAIL" not in wpas
. global_request ( "SET foo 1" ):
1040 raise Exception ( "SET succeeded unexpectedly" )
1042 if "p2p_state=IDLE" not in wpas
. global_request ( "STATUS" ):
1043 raise Exception ( "P2P was disabled" )
1044 wpas
. request ( "P2P_SET disabled 1" )
1045 if "p2p_state=DISABLED" not in wpas
. global_request ( "STATUS" ):
1046 raise Exception ( "P2P was not disabled" )
1047 wpas
. request ( "P2P_SET disabled 0" )
1048 if "p2p_state=IDLE" not in wpas
. global_request ( "STATUS" ):
1049 raise Exception ( "P2P was not enabled" )
1051 # driver_nl80211.c does not support interface list, so do not fail because
1053 logger
. debug ( wpas
. global_request ( "INTERFACE_LIST" ))
1055 if "FAIL" not in wpas
. global_request ( "INTERFACE_ADD " ):
1056 raise Exception ( "INTERFACE_ADD succeeded unexpectedly" )
1057 if "FAIL" not in wpas
. global_request ( "INTERFACE_ADD FOO" ):
1058 raise Exception ( "INTERFACE_ADD succeeded unexpectedly" )
1059 if "FAIL" not in wpas
. global_request ( "INTERFACE_ADD FOO conf" ):
1060 raise Exception ( "INTERFACE_ADD succeeded unexpectedly" )
1061 if "FAIL" not in wpas
. global_request ( "INTERFACE_ADD FOO conf driver" ):
1062 raise Exception ( "INTERFACE_ADD succeeded unexpectedly" )
1063 if "FAIL" not in wpas
. global_request ( "INTERFACE_ADD FOO conf driver ctrliface" ):
1064 raise Exception ( "INTERFACE_ADD succeeded unexpectedly" )
1065 if "FAIL" not in wpas
. global_request ( "INTERFACE_ADD FOO conf driver ctrliface driverparam" ):
1066 raise Exception ( "INTERFACE_ADD succeeded unexpectedly" )
1067 if "FAIL" not in wpas
. global_request ( "INTERFACE_ADD FOO conf driver ctrliface driverparam bridge" ):
1068 raise Exception ( "INTERFACE_ADD succeeded unexpectedly" )
1069 if "FAIL" not in wpas
. global_request ( "INTERFACE_ADD FOO conf driver ctrliface driverparam bridge foo" ):
1070 raise Exception ( "INTERFACE_ADD succeeded unexpectedly" )
1071 if "FAIL" not in wpas
. global_request ( "INTERFACE_ADD FOO " ):
1072 raise Exception ( "INTERFACE_ADD succeeded unexpectedly" )
1074 def test_wpas_ctrl_roam ( dev
, apdev
):
1075 """wpa_supplicant ctrl_iface ROAM error cases"""
1076 if "FAIL" not in dev
[ 0 ]. request ( "ROAM 00:11:22:33:44" ):
1077 raise Exception ( "Unexpected success" )
1078 if "FAIL" not in dev
[ 0 ]. request ( "ROAM 00:11:22:33:44:55" ):
1079 raise Exception ( "Unexpected success" )
1080 params
= { "ssid" : "test" }
1081 hostapd
. add_ap ( apdev
[ 0 ][ 'ifname' ], params
)
1082 id = dev
[ 0 ]. connect ( "test" , key_mgmt
= "NONE" , scan_freq
= "2412" )
1083 if "FAIL" not in dev
[ 0 ]. request ( "ROAM 00:11:22:33:44:55" ):
1084 raise Exception ( "Unexpected success" )
1086 def test_wpas_ctrl_ipaddr ( dev
, apdev
):
1087 """wpa_supplicant IP address in STATUS"""
1089 subprocess
. call ([ 'ip' , 'addr' , 'add' , '10.174.65.207/32' , 'dev' ,
1091 ipaddr
= dev
[ 0 ]. get_status_field ( 'ip_address' )
1092 if ipaddr
!= '10.174.65.207' :
1093 raise Exception ( "IP address not in STATUS output" )
1095 subprocess
. call ([ 'ip' , 'addr' , 'del' , '10.174.65.207/32' , 'dev' ,
1098 def test_wpas_ctrl_neighbor_rep_req ( dev
, apdev
):
1099 """wpa_supplicant ctrl_iface NEIGHBOR_REP_REQUEST"""
1100 params
= { "ssid" : "test" }
1101 hostapd
. add_ap ( apdev
[ 0 ][ 'ifname' ], params
)
1102 params
= { "ssid" : "test2" , "radio_measurements" : "1" }
1103 hostapd
. add_ap ( apdev
[ 1 ][ 'ifname' ], params
)
1105 dev
[ 0 ]. connect ( "test" , key_mgmt
= "NONE" , scan_freq
= "2412" )
1106 if "FAIL" not in dev
[ 0 ]. request ( "NEIGHBOR_REP_REQUEST" ):
1107 raise Exception ( "Request succeeded unexpectedly" )
1108 if "FAIL" not in dev
[ 0 ]. request ( "NEIGHBOR_REP_REQUEST ssid=abcdef" ):
1109 raise Exception ( "Request succeeded unexpectedly" )
1110 dev
[ 0 ]. request ( "DISCONNECT" )
1112 rrm
= int ( dev
[ 0 ]. get_driver_status_field ( "capa.rrm_flags" ), 16 )
1113 if rrm
& 0x5 != 0x5 :
1114 logger
. info ( "Driver does not support required RRM capabilities - skip rest of the test case" )
1117 dev
[ 0 ]. connect ( "test2" , key_mgmt
= "NONE" , scan_freq
= "2412" )
1119 # These requests are expected to get sent properly, but since hostapd does
1120 # not yet support processing of the request, these are expected to fail.
1122 if "OK" not in dev
[ 0 ]. request ( "NEIGHBOR_REP_REQUEST" ):
1123 raise Exception ( "Request failed" )
1124 ev
= dev
[ 0 ]. wait_event ([ "RRM-NEIGHBOR-REP-RECEIVED" ,
1125 "RRM-NEIGHBOR-REP-REQUEST-FAILED" ], timeout
= 10 )
1127 raise Exception ( "RRM report result not indicated" )
1128 logger
. info ( "RRM result: " + ev
)
1130 if "OK" not in dev
[ 0 ]. request ( "NEIGHBOR_REP_REQUEST ssid=abcdef" ):
1131 raise Exception ( "Request failed" )
1132 ev
= dev
[ 0 ]. wait_event ([ "RRM-NEIGHBOR-REP-RECEIVED" ,
1133 "RRM-NEIGHBOR-REP-REQUEST-FAILED" ], timeout
= 10 )
1135 raise Exception ( "RRM report result not indicated" )
1136 logger
. info ( "RRM result: " + ev
)
1138 def test_wpas_ctrl_rsp ( dev
, apdev
):
1139 """wpa_supplicant ctrl_iface CTRL-RSP-"""
1140 if "FAIL" not in dev
[ 0 ]. request ( "CTRL-RSP-" ):
1141 raise Exception ( "Request succeeded unexpectedly" )
1142 if "FAIL" not in dev
[ 0 ]. request ( "CTRL-RSP-foo-" ):
1143 raise Exception ( "Request succeeded unexpectedly" )
1144 if "FAIL" not in dev
[ 0 ]. request ( "CTRL-RSP-foo-1234567" ):
1145 raise Exception ( "Request succeeded unexpectedly" )
1146 if "FAIL" not in dev
[ 0 ]. request ( "CTRL-RSP-foo-1234567:" ):
1147 raise Exception ( "Request succeeded unexpectedly" )
1148 id = dev
[ 0 ]. add_network ()
1149 if "FAIL" not in dev
[ 0 ]. request ( "CTRL-RSP-foo- %d :" % id ):
1150 raise Exception ( "Request succeeded unexpectedly" )
1151 for req
in [ "IDENTITY" , "PASSWORD" , "NEW_PASSWORD" , "PIN" , "OTP" ,
1152 "PASSPHRASE" , "SIM" ]:
1153 if "OK" not in dev
[ 0 ]. request ( "CTRL-RSP- %s-%d :" % ( req
, id )):
1154 raise Exception ( "Request failed unexpectedly" )
1155 if "OK" not in dev
[ 0 ]. request ( "CTRL-RSP- %s-%d :" % ( req
, id )):
1156 raise Exception ( "Request failed unexpectedly" )
1158 def test_wpas_ctrl_vendor ( dev
, apdev
):
1159 """wpa_supplicant ctrl_iface VENDOR"""
1166 if "FAIL" not in dev
[ 0 ]. request ( "VENDOR " + cmd
):
1167 raise Exception ( "Invalid VENDOR command accepted: " + cmd
)
1169 def test_wpas_ctrl_mgmt_tx ( dev
, apdev
):
1170 """wpa_supplicant ctrl_iface MGMT_TX"""
1172 "00:11:22:33:44:55 foo" ,
1173 "00:11:22:33:44:55 11:22:33:44:55:66" ,
1174 "00:11:22:33:44:55 11:22:33:44:55:66 freq=0 no_cck=0 wait_time=0 action=123" ,
1175 "00:11:22:33:44:55 11:22:33:44:55:66 action=12qq" ]
1177 if "FAIL" not in dev
[ 0 ]. request ( "MGMT_TX " + cmd
):
1178 raise Exception ( "Invalid MGMT_TX command accepted: " + cmd
)
1180 if "OK" not in dev
[ 0 ]. request ( "MGMT_TX_DONE" ):
1181 raise Exception ( "MGMT_TX_DONE failed" )
1183 def test_wpas_ctrl_driver_event ( dev
, apdev
):
1184 """wpa_supplicant ctrl_iface DRIVER_EVENT"""
1185 if "FAIL" not in dev
[ 0 ]. request ( "DRIVER_EVENT foo" ):
1186 raise Exception ( "Invalid DRIVER_EVENT accepted" )
1188 def test_wpas_ctrl_eapol_rx ( dev
, apdev
):
1189 """wpa_supplicant ctrl_iface EAPOL_RX"""
1191 "00:11:22:33:44:55 123" ,
1192 "00:11:22:33:44:55 12qq" ]
1194 if "FAIL" not in dev
[ 0 ]. request ( "EAPOL_RX " + cmd
):
1195 raise Exception ( "Invalid EAPOL_RX command accepted: " + cmd
)
1197 def test_wpas_ctrl_data_test ( dev
, apdev
):
1198 """wpa_supplicant ctrl_iface DATA_TEST"""
1199 dev
[ 0 ]. request ( "DATA_TEST_CONFIG 0" )
1200 if "FAIL" not in dev
[ 0 ]. request ( "DATA_TEST_TX 00:11:22:33:44:55 00:11:22:33:44:55 0" ):
1201 raise Exception ( "DATA_TEST_TX accepted when not in test mode" )
1204 if "OK" not in dev
[ 0 ]. request ( "DATA_TEST_CONFIG 1" ):
1205 raise Exception ( "DATA_TEST_CONFIG failed" )
1206 if "OK" not in dev
[ 0 ]. request ( "DATA_TEST_CONFIG 1" ):
1207 raise Exception ( "DATA_TEST_CONFIG failed" )
1209 "00:11:22:33:44:55 foo" ,
1210 "00:11:22:33:44:55 00:11:22:33:44:55 -1" ,
1211 "00:11:22:33:44:55 00:11:22:33:44:55 256" ]
1213 if "FAIL" not in dev
[ 0 ]. request ( "DATA_TEST_TX " + cmd
):
1214 raise Exception ( "Invalid DATA_TEST_TX command accepted: " + cmd
)
1215 if "OK" not in dev
[ 0 ]. request ( "DATA_TEST_TX 00:11:22:33:44:55 00:11:22:33:44:55 0" ):
1216 raise Exception ( "DATA_TEST_TX failed" )
1218 dev
[ 0 ]. request ( "DATA_TEST_CONFIG 0" )
1222 "00112233445566778899aabbccdde" ,
1223 "00112233445566778899aabbccdq" ]
1225 if "FAIL" not in dev
[ 0 ]. request ( "DATA_TEST_FRAME " + cmd
):
1226 raise Exception ( "Invalid DATA_TEST_FRAME command accepted: " + cmd
)
1228 if "OK" not in dev
[ 0 ]. request ( "DATA_TEST_FRAME 00112233445566778899aabbccdd" ):
1229 raise Exception ( "DATA_TEST_FRAME failed" )
1231 def test_wpas_ctrl_vendor_elem ( dev
, apdev
):
1232 """wpa_supplicant ctrl_iface VENDOR_ELEM"""
1233 if "OK" not in dev
[ 0 ]. request ( "VENDOR_ELEM_ADD 1 " ):
1234 raise Exception ( "VENDOR_ELEM_ADD failed" )
1241 if "FAIL" not in dev
[ 0 ]. request ( "VENDOR_ELEM_ADD " + cmd
):
1242 raise Exception ( "Invalid VENDOR_ELEM_ADD command accepted: " + cmd
)
1247 if "FAIL" not in dev
[ 0 ]. request ( "VENDOR_ELEM_GET " + cmd
):
1248 raise Exception ( "Invalid VENDOR_ELEM_GET command accepted: " + cmd
)
1250 dev
[ 0 ]. request ( "VENDOR_ELEM_REMOVE 1 *" )
1260 if "FAIL" not in dev
[ 0 ]. request ( "VENDOR_ELEM_REMOVE " + cmd
):
1261 raise Exception ( "Invalid VENDOR_ELEM_REMOVE command accepted: " + cmd
)
1263 dev
[ 0 ]. request ( "VENDOR_ELEM_ADD 1 000100" )
1264 if "OK" not in dev
[ 0 ]. request ( "VENDOR_ELEM_REMOVE 1 " ):
1265 raise Exception ( "VENDOR_ELEM_REMOVE failed" )
1274 if "FAIL" not in dev
[ 0 ]. request ( "VENDOR_ELEM_REMOVE " + cmd
):
1275 raise Exception ( "Invalid VENDOR_ELEM_REMOVE command accepted: " + cmd
)
1276 if "OK" not in dev
[ 0 ]. request ( "VENDOR_ELEM_REMOVE 1 000100" ):
1277 raise Exception ( "VENDOR_ELEM_REMOVE failed" )