]>
git.ipfire.org Git - thirdparty/hostap.git/blob - tests/hwsim/test_wpas_ctrl.py
5d77aa676b92e882c2c8b0cfea6a4400beed37fb
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
14 from utils
import alloc_fail
16 def test_wpas_ctrl_network ( dev
):
17 """wpa_supplicant ctrl_iface network set/get"""
18 id = dev
[ 0 ]. add_network ()
20 if "FAIL" not in dev
[ 0 ]. request ( "SET_NETWORK " + str ( id )):
21 raise Exception ( "Unexpected success for invalid SET_NETWORK" )
22 if "FAIL" not in dev
[ 0 ]. request ( "SET_NETWORK " + str ( id ) + " name" ):
23 raise Exception ( "Unexpected success for invalid SET_NETWORK" )
24 if "FAIL" not in dev
[ 0 ]. request ( "SET_NETWORK " + str ( id + 1 ) + " proto OPEN" ):
25 raise Exception ( "Unexpected success for invalid network id" )
26 if "FAIL" not in dev
[ 0 ]. request ( "GET_NETWORK " + str ( id )):
27 raise Exception ( "Unexpected success for invalid GET_NETWORK" )
28 if "FAIL" not in dev
[ 0 ]. request ( "GET_NETWORK " + str ( id + 1 ) + " proto" ):
29 raise Exception ( "Unexpected success for invalid network id" )
31 tests
= (( "key_mgmt" , "WPA-PSK WPA-EAP IEEE8021X NONE WPA-NONE FT-PSK FT-EAP WPA-PSK-SHA256 WPA-EAP-SHA256" ),
32 ( "pairwise" , "CCMP-256 GCMP-256 CCMP GCMP TKIP" ),
33 ( "group" , "CCMP-256 GCMP-256 CCMP GCMP TKIP WEP104 WEP40" ),
34 ( "auth_alg" , "OPEN SHARED LEAP" ),
35 ( "scan_freq" , "1 2 3 4 5 6 7 8 9 10 11 12 13 14 15" ),
36 ( "freq_list" , "2412 2417" ),
38 ( "bssid" , "00:11:22:33:44:55" ),
39 ( "proto" , "WPA RSN OSEN" ),
41 ( "go_p2p_dev_addr" , "22:33:44:55:66:aa" ),
42 ( "p2p_client_list" , "22:33:44:55:66:bb 02:11:22:33:44:55" ))
44 dev
[ 0 ]. set_network_quoted ( id , "ssid" , "test" )
45 for field
, value
in tests
:
46 dev
[ 0 ]. set_network ( id , field
, value
)
47 res
= dev
[ 0 ]. get_network ( id , field
)
49 raise Exception ( "Unexpected response for '" + field
+ "': '" + res
+ "'" )
51 q_tests
= (( "identity" , "hello" ),
52 ( "anonymous_identity" , "foo@nowhere.com" ))
53 for field
, value
in q_tests
:
54 dev
[ 0 ]. set_network_quoted ( id , field
, value
)
55 res
= dev
[ 0 ]. get_network ( id , field
)
56 if res
!= '"' + value
+ '"' :
57 raise Exception ( "Unexpected quoted response for '" + field
+ "': '" + res
+ "'" )
59 get_tests
= (( "foo" , None ), ( "ssid" , '"test"' ))
60 for field
, value
in get_tests
:
61 res
= dev
[ 0 ]. get_network ( id , field
)
63 raise Exception ( "Unexpected response for '" + field
+ "': '" + res
+ "'" )
65 if dev
[ 0 ]. get_network ( id , "password" ):
66 raise Exception ( "Unexpected response for 'password'" )
67 dev
[ 0 ]. set_network_quoted ( id , "password" , "foo" )
68 if dev
[ 0 ]. get_network ( id , "password" ) != '*' :
69 raise Exception ( "Unexpected response for 'password' (expected *)" )
70 dev
[ 0 ]. set_network ( id , "password" , "hash:12345678901234567890123456789012" )
71 if dev
[ 0 ]. get_network ( id , "password" ) != '*' :
72 raise Exception ( "Unexpected response for 'password' (expected *)" )
73 dev
[ 0 ]. set_network ( id , "password" , "NULL" )
74 if dev
[ 0 ]. get_network ( id , "password" ):
75 raise Exception ( "Unexpected response for 'password'" )
76 if "FAIL" not in dev
[ 0 ]. request ( "SET_NETWORK " + str ( id ) + " password hash:12" ):
77 raise Exception ( "Unexpected success for invalid password hash" )
78 if "FAIL" not in dev
[ 0 ]. request ( "SET_NETWORK " + str ( id ) + " password hash:123456789012345678x0123456789012" ):
79 raise Exception ( "Unexpected success for invalid password hash" )
81 dev
[ 0 ]. set_network ( id , "identity" , "414243" )
82 if dev
[ 0 ]. get_network ( id , "identity" ) != '"ABC"' :
83 raise Exception ( "Unexpected identity hex->text response" )
85 dev
[ 0 ]. set_network ( id , "identity" , 'P"abc \n def"' )
86 if dev
[ 0 ]. get_network ( id , "identity" ) != "6162630a646566" :
87 raise Exception ( "Unexpected identity printf->hex response" )
89 if "FAIL" not in dev
[ 0 ]. request ( "SET_NETWORK " + str ( id ) + ' identity P"foo' ):
90 raise Exception ( "Unexpected success for invalid identity string" )
92 if "FAIL" not in dev
[ 0 ]. request ( "SET_NETWORK " + str ( id ) + ' identity 12x3' ):
93 raise Exception ( "Unexpected success for invalid identity string" )
96 if "FAIL" in dev
[ 0 ]. request ( "SET_NETWORK " + str ( id ) + ' wep_key' + str ( i
) + ' aabbccddee' ):
97 raise Exception ( "Unexpected wep_key set failure" )
98 if dev
[ 0 ]. get_network ( id , "wep_key" + str ( i
)) != '*' :
99 raise Exception ( "Unexpected wep_key get failure" )
101 if "FAIL" in dev
[ 0 ]. request ( "SET_NETWORK " + str ( id ) + ' psk_list P2P-00:11:22:33:44:55-0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef' ):
102 raise Exception ( "Unexpected failure for psk_list string" )
104 if "FAIL" not in dev
[ 0 ]. request ( "SET_NETWORK " + str ( id ) + ' psk_list 00:11:x2:33:44:55-0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef' ):
105 raise Exception ( "Unexpected success for invalid psk_list string" )
107 if "FAIL" not in dev
[ 0 ]. request ( "SET_NETWORK " + str ( id ) + ' psk_list P2P-00:11:x2:33:44:55-0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef' ):
108 raise Exception ( "Unexpected success for invalid psk_list string" )
110 if "FAIL" not in dev
[ 0 ]. request ( "SET_NETWORK " + str ( id ) + ' psk_list P2P-00:11:22:33:44:55+0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef' ):
111 raise Exception ( "Unexpected success for invalid psk_list string" )
113 if "FAIL" not in dev
[ 0 ]. request ( "SET_NETWORK " + str ( id ) + ' psk_list P2P-00:11:22:33:44:55-0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcde' ):
114 raise Exception ( "Unexpected success for invalid psk_list string" )
116 if "FAIL" not in dev
[ 0 ]. request ( "SET_NETWORK " + str ( id ) + ' psk_list P2P-00:11:22:33:44:55-0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdex' ):
117 raise Exception ( "Unexpected success for invalid psk_list string" )
119 if dev
[ 0 ]. get_network ( id , "psk_list" ):
120 raise Exception ( "Unexpected psk_list get response" )
122 if dev
[ 0 ]. list_networks ()[ 0 ][ 'ssid' ] != "test" :
123 raise Exception ( "Unexpected ssid in LIST_NETWORKS" )
124 dev
[ 0 ]. set_network ( id , "ssid" , "NULL" )
125 if dev
[ 0 ]. list_networks ()[ 0 ][ 'ssid' ] != "" :
126 raise Exception ( "Unexpected ssid in LIST_NETWORKS after clearing it" )
128 if "FAIL" not in dev
[ 0 ]. request ( 'SET_NETWORK ' + str ( id ) + ' ssid "0123456789abcdef0123456789abcdef0"' ):
129 raise Exception ( "Too long SSID accepted" )
130 if "FAIL" not in dev
[ 0 ]. request ( 'SET_NETWORK ' + str ( id ) + ' scan_ssid qwerty' ):
131 raise Exception ( "Invalid integer accepted" )
132 if "FAIL" not in dev
[ 0 ]. request ( 'SET_NETWORK ' + str ( id ) + ' scan_ssid 2' ):
133 raise Exception ( "Too large integer accepted" )
134 if "FAIL" not in dev
[ 0 ]. request ( 'SET_NETWORK ' + str ( id ) + ' psk 12345678' ):
135 raise Exception ( "Invalid PSK accepted" )
136 if "FAIL" not in dev
[ 0 ]. request ( 'SET_NETWORK ' + str ( id ) + ' psk "1234567"' ):
137 raise Exception ( "Too short PSK accepted" )
138 if "FAIL" not in dev
[ 0 ]. request ( 'SET_NETWORK ' + str ( id ) + ' psk "1234567890123456789012345678901234567890123456789012345678901234"' ):
139 raise Exception ( "Too long PSK accepted" )
140 dev
[ 0 ]. set_network_quoted ( id , "psk" , "123456768" );
141 dev
[ 0 ]. set_network_quoted ( id , "psk" , "123456789012345678901234567890123456789012345678901234567890123" );
142 if dev
[ 0 ]. get_network ( id , "psk" ) != '*' :
143 raise Exception ( "Unexpected psk read result" );
145 if "FAIL" not in dev
[ 0 ]. request ( 'SET_NETWORK ' + str ( id ) + ' eap UNKNOWN' ):
146 raise Exception ( "Unknown EAP method accepted" )
148 if "FAIL" not in dev
[ 0 ]. request ( 'SET_NETWORK ' + str ( id ) + ' password "foo' ):
149 raise Exception ( "Invalid password accepted" )
151 if "FAIL" not in dev
[ 0 ]. request ( 'SET_NETWORK ' + str ( id ) + ' wep_key0 "foo' ):
152 raise Exception ( "Invalid WEP key accepted" )
153 if "FAIL" not in dev
[ 0 ]. request ( 'SET_NETWORK ' + str ( id ) + ' wep_key0 "12345678901234567"' ):
154 raise Exception ( "Too long WEP key accepted" )
155 # too short WEP key is ignored
156 dev
[ 0 ]. set_network_quoted ( id , "wep_key0" , "1234" )
157 dev
[ 0 ]. set_network_quoted ( id , "wep_key1" , "12345" )
158 dev
[ 0 ]. set_network_quoted ( id , "wep_key2" , "1234567890123" )
159 dev
[ 0 ]. set_network_quoted ( id , "wep_key3" , "1234567890123456" )
161 dev
[ 0 ]. set_network ( id , "go_p2p_dev_addr" , "any" )
162 if dev
[ 0 ]. get_network ( id , "go_p2p_dev_addr" ) is not None :
163 raise Exception ( "Unexpected go_p2p_dev_addr value" )
164 if "FAIL" not in dev
[ 0 ]. request ( 'SET_NETWORK ' + str ( id ) + ' go_p2p_dev_addr 00:11:22:33:44' ):
165 raise Exception ( "Invalid go_p2p_dev_addr accepted" )
166 if "FAIL" not in dev
[ 0 ]. request ( 'SET_NETWORK ' + str ( id ) + ' p2p_client_list 00:11:22:33:44' ):
167 raise Exception ( "Invalid p2p_client_list accepted" )
168 if "FAIL" in dev
[ 0 ]. request ( 'SET_NETWORK ' + str ( id ) + ' p2p_client_list 00:11:22:33:44:55 00:1' ):
169 raise Exception ( "p2p_client_list truncation workaround failed" )
170 if dev
[ 0 ]. get_network ( id , "p2p_client_list" ) != "00:11:22:33:44:55" :
171 raise Exception ( "p2p_client_list truncation workaround did not work" )
173 if "FAIL" not in dev
[ 0 ]. request ( 'SET_NETWORK ' + str ( id ) + ' auth_alg ' ):
174 raise Exception ( "Empty auth_alg accepted" )
175 if "FAIL" not in dev
[ 0 ]. request ( 'SET_NETWORK ' + str ( id ) + ' auth_alg FOO' ):
176 raise Exception ( "Invalid auth_alg accepted" )
178 if "FAIL" not in dev
[ 0 ]. request ( 'SET_NETWORK ' + str ( id ) + ' proto ' ):
179 raise Exception ( "Empty proto accepted" )
180 if "FAIL" not in dev
[ 0 ]. request ( 'SET_NETWORK ' + str ( id ) + ' proto FOO' ):
181 raise Exception ( "Invalid proto accepted" )
183 if "FAIL" not in dev
[ 0 ]. request ( 'SET_NETWORK ' + str ( id ) + ' pairwise ' ):
184 raise Exception ( "Empty pairwise accepted" )
185 if "FAIL" not in dev
[ 0 ]. request ( 'SET_NETWORK ' + str ( id ) + ' pairwise FOO' ):
186 raise Exception ( "Invalid pairwise accepted" )
187 if "FAIL" not in dev
[ 0 ]. request ( 'SET_NETWORK ' + str ( id ) + ' pairwise WEP40' ):
188 raise Exception ( "Invalid pairwise accepted" )
190 if "OK" not in dev
[ 0 ]. request ( 'BSSID ' + str ( id ) + ' 00:11:22:33:44:55' ):
191 raise Exception ( "Unexpected BSSID failure" )
192 if dev
[ 0 ]. request ( "GET_NETWORK 0 bssid" ) != '00:11:22:33:44:55' :
193 raise Exception ( "BSSID command did not set network bssid" )
194 if "OK" not in dev
[ 0 ]. request ( 'BSSID ' + str ( id ) + ' 00:00:00:00:00:00' ):
195 raise Exception ( "Unexpected BSSID failure" )
196 if "FAIL" not in dev
[ 0 ]. request ( "GET_NETWORK 0 bssid" ):
197 raise Exception ( "bssid claimed configured after clearing" )
198 if "FAIL" not in dev
[ 0 ]. request ( 'BSSID 123 00:11:22:33:44:55' ):
199 raise Exception ( "Unexpected BSSID success" )
200 if "FAIL" not in dev
[ 0 ]. request ( 'BSSID ' + str ( id ) + ' 00:11:22:33:44' ):
201 raise Exception ( "Unexpected BSSID success" )
202 if "FAIL" not in dev
[ 0 ]. request ( 'BSSID ' + str ( id )):
203 raise Exception ( "Unexpected BSSID success" )
205 tests
= [ "02:11:22:33:44:55" ,
206 "02:11:22:33:44:55 02:ae:be:ce:53:77" ,
207 "02:11:22:33:44:55/ff:00:ff:00:ff:00" ,
208 "02:11:22:33:44:55/ff:00:ff:00:ff:00 f2:99:88:77:66:55" ,
209 "f2:99:88:77:66:55 02:11:22:33:44:55/ff:00:ff:00:ff:00" ,
210 "f2:99:88:77:66:55 02:11:22:33:44:55/ff:00:ff:00:ff:00 12:34:56:78:90:ab" ,
211 "02:11:22:33:44:55/ff:ff:ff:00:00:00 02:ae:be:ce:53:77/00:00:00:00:00:ff" ]
213 dev
[ 0 ]. set_network ( id , "bssid_blacklist" , val
)
214 res
= dev
[ 0 ]. get_network ( id , "bssid_blacklist" )
216 raise Exception ( "Unexpected bssid_blacklist value: %s != %s " % ( res
, val
))
217 dev
[ 0 ]. set_network ( id , "bssid_whitelist" , val
)
218 res
= dev
[ 0 ]. get_network ( id , "bssid_whitelist" )
220 raise Exception ( "Unexpected bssid_whitelist value: %s != %s " % ( res
, val
))
224 "00:11:22:33:44:55q" ,
225 "00:11:22:33:44:55/" ,
226 "00:11:22:33:44:55/66:77:88:99:aa:b" ]
228 if "FAIL" not in dev
[ 0 ]. request ( "SET_NETWORK %d bssid_blacklist %s " % ( id , val
)):
229 raise Exception ( "Invalid bssid_blacklist value accepted" )
231 def test_wpas_ctrl_many_networks ( dev
, apdev
):
232 """wpa_supplicant ctrl_iface LIST_NETWORKS with huge number of networks"""
233 for i
in range ( 1000 ):
234 id = dev
[ 0 ]. add_network ()
235 res
= dev
[ 0 ]. request ( "LIST_NETWORKS" )
237 raise Exception ( "Last added network was unexpectedly included" )
238 res
= dev
[ 0 ]. request ( "LIST_NETWORKS LAST_ID= %d " % ( id - 2 ))
239 if str ( id ) not in res
:
240 raise Exception ( "Last added network was not present when using LAST_ID" )
242 def test_wpas_ctrl_dup_network ( dev
, apdev
):
243 """wpa_supplicant ctrl_iface DUP_NETWORK"""
245 passphrase
= 'qwertyuiop'
246 params
= hostapd
. wpa2_params ( ssid
= ssid
, passphrase
= passphrase
)
247 hostapd
. add_ap ( apdev
[ 0 ][ 'ifname' ], params
)
249 src
= dev
[ 0 ]. connect ( "another" , psk
= passphrase
, scan_freq
= "2412" ,
250 only_add_network
= True )
251 id = dev
[ 0 ]. add_network ()
252 dev
[ 0 ]. set_network_quoted ( id , "ssid" , ssid
)
253 for f
in [ "key_mgmt" , "psk" , "scan_freq" ]:
254 res
= dev
[ 0 ]. request ( "DUP_NETWORK {} {} {}" . format ( src
, id , f
))
256 raise Exception ( "DUP_NETWORK failed" )
257 dev
[ 0 ]. connect_network ( id )
259 if "FAIL" not in dev
[ 0 ]. request ( "DUP_NETWORK " ):
260 raise Exception ( "Unexpected DUP_NETWORK success" )
261 if "FAIL" not in dev
[ 0 ]. request ( "DUP_NETWORK %d " % id ):
262 raise Exception ( "Unexpected DUP_NETWORK success" )
263 if "FAIL" not in dev
[ 0 ]. request ( "DUP_NETWORK %d %d " % ( id , id )):
264 raise Exception ( "Unexpected DUP_NETWORK success" )
265 if "FAIL" not in dev
[ 0 ]. request ( "DUP_NETWORK 123456 1234567 " ):
266 raise Exception ( "Unexpected DUP_NETWORK success" )
267 if "FAIL" not in dev
[ 0 ]. request ( "DUP_NETWORK %d 123456 " % id ):
268 raise Exception ( "Unexpected DUP_NETWORK success" )
269 if "FAIL" not in dev
[ 0 ]. request ( "DUP_NETWORK %d %d foo" % ( id , id )):
270 raise Exception ( "Unexpected DUP_NETWORK success" )
271 dev
[ 0 ]. request ( "DISCONNECT" )
272 if "OK" not in dev
[ 0 ]. request ( "DUP_NETWORK %d %d ssid" % ( id , id )):
273 raise Exception ( "Unexpected DUP_NETWORK failure" )
277 ev
= dev
. wait_event ([ "CRED-ADDED" ])
279 raise Exception ( "Missing CRED-ADDED event" )
280 if " " + str ( id ) not in ev
:
281 raise Exception ( "CRED-ADDED event without matching id" )
284 def set_cred ( dev
, id , field
, value
):
285 dev
. set_cred ( id , field
, value
)
286 ev
= dev
. wait_event ([ "CRED-MODIFIED" ])
288 raise Exception ( "Missing CRED-MODIFIED event" )
289 if " " + str ( id ) + " " not in ev
:
290 raise Exception ( "CRED-MODIFIED event without matching id" )
292 raise Exception ( "CRED-MODIFIED event without matching field" )
294 def set_cred_quoted ( dev
, id , field
, value
):
295 dev
. set_cred_quoted ( id , field
, value
)
296 ev
= dev
. wait_event ([ "CRED-MODIFIED" ])
298 raise Exception ( "Missing CRED-MODIFIED event" )
299 if " " + str ( id ) + " " not in ev
:
300 raise Exception ( "CRED-MODIFIED event without matching id" )
302 raise Exception ( "CRED-MODIFIED event without matching field" )
304 def remove_cred ( dev
, id ):
306 ev
= dev
. wait_event ([ "CRED-REMOVED" ])
308 raise Exception ( "Missing CRED-REMOVED event" )
309 if " " + str ( id ) not in ev
:
310 raise Exception ( "CRED-REMOVED event without matching id" )
312 def test_wpas_ctrl_cred ( dev
):
313 """wpa_supplicant ctrl_iface cred set"""
314 id1
= add_cred ( dev
[ 0 ])
315 if "FAIL" not in dev
[ 0 ]. request ( "SET_CRED " + str ( id1
+ 1 ) + " temporary 1" ):
316 raise Exception ( "SET_CRED succeeded unexpectedly on unknown cred id" )
317 if "FAIL" not in dev
[ 0 ]. request ( "SET_CRED " + str ( id1
)):
318 raise Exception ( "Invalid SET_CRED succeeded unexpectedly" )
319 if "FAIL" not in dev
[ 0 ]. request ( "SET_CRED " + str ( id1
) + " temporary" ):
320 raise Exception ( "Invalid SET_CRED succeeded unexpectedly" )
321 if "FAIL" not in dev
[ 0 ]. request ( "GET_CRED " + str ( id1
+ 1 ) + " temporary" ):
322 raise Exception ( "GET_CRED succeeded unexpectedly on unknown cred id" )
323 if "FAIL" not in dev
[ 0 ]. request ( "GET_CRED " + str ( id1
)):
324 raise Exception ( "Invalid GET_CRED succeeded unexpectedly" )
325 if "FAIL" not in dev
[ 0 ]. request ( "GET_CRED " + str ( id1
) + " foo" ):
326 raise Exception ( "Invalid GET_CRED succeeded unexpectedly" )
327 id = add_cred ( dev
[ 0 ])
328 id2
= add_cred ( dev
[ 0 ])
329 set_cred ( dev
[ 0 ], id , "temporary" , "1" )
330 set_cred ( dev
[ 0 ], id , "priority" , "1" )
331 set_cred ( dev
[ 0 ], id , "pcsc" , "1" )
332 set_cred_quoted ( dev
[ 0 ], id , "private_key_passwd" , "test" )
333 set_cred_quoted ( dev
[ 0 ], id , "domain_suffix_match" , "test" )
334 set_cred_quoted ( dev
[ 0 ], id , "phase1" , "test" )
335 set_cred_quoted ( dev
[ 0 ], id , "phase2" , "test" )
337 if "FAIL" not in dev
[ 0 ]. request ( "SET_CRED " + str ( id ) + " eap FOO" ):
338 raise Exception ( "Unexpected success on unknown EAP method" )
340 if "FAIL" not in dev
[ 0 ]. request ( "SET_CRED " + str ( id ) + " username 12xa" ):
341 raise Exception ( "Unexpected success on invalid string" )
343 for i
in ( "11" , "1122" , "112233445566778899aabbccddeeff00" ):
344 if "FAIL" not in dev
[ 0 ]. request ( "SET_CRED " + str ( id ) + " roaming_consortium " + i
):
345 raise Exception ( "Unexpected success on invalid roaming_consortium" )
347 dev
[ 0 ]. set_cred ( id , "excluded_ssid" , "00112233445566778899aabbccddeeff00112233445566778899aabbccddeeff" )
348 if "FAIL" not in dev
[ 0 ]. request ( "SET_CRED " + str ( id ) + " excluded_ssid 00112233445566778899aabbccddeeff00112233445566778899aabbccddeeff00" ):
349 raise Exception ( "Unexpected success on invalid excluded_ssid" )
351 if "FAIL" not in dev
[ 0 ]. request ( "SET_CRED " + str ( id ) + " foo 4142" ):
352 raise Exception ( "Unexpected success on unknown field" )
354 id3
= add_cred ( dev
[ 0 ])
355 id4
= add_cred ( dev
[ 0 ])
356 if len ( dev
[ 0 ]. request ( "LIST_CREDS" ). splitlines ()) != 6 :
357 raise Exception ( "Unexpected LIST_CREDS result(1)" )
359 remove_cred ( dev
[ 0 ], id1
)
360 remove_cred ( dev
[ 0 ], id3
)
361 remove_cred ( dev
[ 0 ], id4
)
362 remove_cred ( dev
[ 0 ], id2
)
363 remove_cred ( dev
[ 0 ], id )
364 if "FAIL" not in dev
[ 0 ]. request ( "REMOVE_CRED 1" ):
365 raise Exception ( "Unexpected success on invalid remove cred" )
366 if len ( dev
[ 0 ]. request ( "LIST_CREDS" ). splitlines ()) != 1 :
367 raise Exception ( "Unexpected LIST_CREDS result(2)" )
369 id = add_cred ( dev
[ 0 ])
370 values
= [ ( "temporary" , "1" , False ),
371 ( "temporary" , "0" , False ),
372 ( "pcsc" , "1" , False ),
373 ( "realm" , "example.com" , True ),
374 ( "username" , "user@example.com" , True ),
375 ( "password" , "foo" , True , "*" ),
376 ( "ca_cert" , "ca.pem" , True ),
377 ( "client_cert" , "user.pem" , True ),
378 ( "private_key" , "key.pem" , True ),
379 ( "private_key_passwd" , "foo" , True , "*" ),
380 ( "imsi" , "310026-000000000" , True ),
381 ( "milenage" , "foo" , True , "*" ),
382 ( "domain_suffix_match" , "example.com" , True ),
383 ( "domain" , "example.com" , True ),
384 ( "domain" , "example.org" , True , "example.com \n example.org" ),
385 ( "roaming_consortium" , "0123456789" , False ),
386 ( "required_roaming_consortium" , "456789" , False ),
387 ( "eap" , "TTLS" , False ),
388 ( "phase1" , "foo=bar1" , True ),
389 ( "phase2" , "foo=bar2" , True ),
390 ( "excluded_ssid" , "test" , True ),
391 ( "excluded_ssid" , "foo" , True , "test \n foo" ),
392 ( "roaming_partner" , "example.com,0,4,*" , True ),
393 ( "roaming_partner" , "example.org,1,2,US" , True ,
394 "example.com,0,4,* \n example.org,1,2,US" ),
395 ( "update_identifier" , "4" , False ),
396 ( "provisioning_sp" , "sp.example.com" , True ),
397 ( "sp_priority" , "7" , False ),
398 ( "min_dl_bandwidth_home" , "100" , False ),
399 ( "min_ul_bandwidth_home" , "101" , False ),
400 ( "min_dl_bandwidth_roaming" , "102" , False ),
401 ( "min_ul_bandwidth_roaming" , "103" , False ),
402 ( "max_bss_load" , "57" , False ),
403 ( "req_conn_capab" , "6:22,80,443" , False ),
404 ( "req_conn_capab" , "17:500" , False , "6:22,80,443 \n 17:500" ),
405 ( "req_conn_capab" , "50" , False , "6:22,80,443 \n 17:500 \n 50" ),
406 ( "ocsp" , "1" , False ) ]
409 set_cred_quoted ( dev
[ 0 ], id , v
[ 0 ], v
[ 1 ])
411 set_cred ( dev
[ 0 ], id , v
[ 0 ], v
[ 1 ])
412 val
= dev
[ 0 ]. get_cred ( id , v
[ 0 ])
418 raise Exception ( "Unexpected GET_CRED value for {}: {} != {}" . format ( v
[ 0 ], val
, expect
))
419 creds
= dev
[ 0 ]. request ( "LIST_CREDS" ). splitlines ()
421 raise Exception ( "Unexpected LIST_CREDS result(3)" )
422 if creds
[ 1 ] != "0 \t example.com \t user@example.com \t example.com \t 310026-000000000" :
423 raise Exception ( "Unexpected LIST_CREDS value" )
424 remove_cred ( dev
[ 0 ], id )
425 if len ( dev
[ 0 ]. request ( "LIST_CREDS" ). splitlines ()) != 1 :
426 raise Exception ( "Unexpected LIST_CREDS result(4)" )
428 id = add_cred ( dev
[ 0 ])
429 set_cred_quoted ( dev
[ 0 ], id , "domain" , "foo.example.com" )
430 id = add_cred ( dev
[ 0 ])
431 set_cred_quoted ( dev
[ 0 ], id , "domain" , "bar.example.com" )
432 id = add_cred ( dev
[ 0 ])
433 set_cred_quoted ( dev
[ 0 ], id , "domain" , "foo.example.com" )
434 if "OK" not in dev
[ 0 ]. request ( "REMOVE_CRED sp_fqdn=foo.example.com" ):
435 raise Exception ( "REMOVE_CRED failed" )
436 creds
= dev
[ 0 ]. request ( "LIST_CREDS" )
437 if "foo.example.com" in creds
:
438 raise Exception ( "REMOVE_CRED sp_fqdn did not remove cred" )
439 if "bar.example.com" not in creds
:
440 raise Exception ( "REMOVE_CRED sp_fqdn removed incorrect cred" )
441 dev
[ 0 ]. request ( "REMOVE_CRED all" )
443 id = add_cred ( dev
[ 0 ])
444 set_cred_quoted ( dev
[ 0 ], id , "domain" , "foo.example.com" )
445 set_cred_quoted ( dev
[ 0 ], id , "provisioning_sp" , "sp.foo.example.com" )
446 id = add_cred ( dev
[ 0 ])
447 set_cred_quoted ( dev
[ 0 ], id , "domain" , "bar.example.com" )
448 set_cred_quoted ( dev
[ 0 ], id , "provisioning_sp" , "sp.bar.example.com" )
449 id = add_cred ( dev
[ 0 ])
450 set_cred_quoted ( dev
[ 0 ], id , "domain" , "foo.example.com" )
451 set_cred_quoted ( dev
[ 0 ], id , "provisioning_sp" , "sp.foo.example.com" )
452 if "OK" not in dev
[ 0 ]. request ( "REMOVE_CRED provisioning_sp=sp.foo.example.com" ):
453 raise Exception ( "REMOVE_CRED failed" )
454 creds
= dev
[ 0 ]. request ( "LIST_CREDS" )
455 if "foo.example.com" in creds
:
456 raise Exception ( "REMOVE_CRED provisioning_sp did not remove cred" )
457 if "bar.example.com" not in creds
:
458 raise Exception ( "REMOVE_CRED provisioning_sp removed incorrect cred" )
459 dev
[ 0 ]. request ( "REMOVE_CRED all" )
461 # Test large number of creds and LIST_CREDS truncation
462 dev
[ 0 ]. dump_monitor ()
463 for i
in range ( 0 , 100 ):
464 id = add_cred ( dev
[ 0 ])
465 set_cred_quoted ( dev
[ 0 ], id , "realm" , "relatively.long.realm.test %d .example.com" % i
)
466 dev
[ 0 ]. dump_monitor ()
467 creds
= dev
[ 0 ]. request ( "LIST_CREDS" )
468 for i
in range ( 0 , 100 ):
469 dev
[ 0 ]. remove_cred ( i
)
470 dev
[ 0 ]. dump_monitor ()
471 if len ( creds
) < 3900 or len ( creds
) > 4100 :
472 raise Exception ( "Unexpected LIST_CREDS length: %d " % len ( creds
))
473 if "test10.example.com" not in creds
:
474 raise Exception ( "Missing credential" )
475 if len ( creds
. splitlines ()) > 95 :
476 raise Exception ( "Too many LIST_CREDS entries in the buffer" )
478 def test_wpas_ctrl_pno ( dev
):
479 """wpa_supplicant ctrl_iface pno"""
480 if "FAIL" not in dev
[ 0 ]. request ( "SET pno 1" ):
481 raise Exception ( "Unexpected success in enabling PNO without enabled network blocks" )
482 id = dev
[ 0 ]. add_network ()
483 dev
[ 0 ]. set_network_quoted ( id , "ssid" , "test" )
484 dev
[ 0 ]. set_network ( id , "key_mgmt" , "NONE" )
485 dev
[ 0 ]. request ( "ENABLE_NETWORK " + str ( id ) + " no-connect" )
486 #mac80211_hwsim does not yet support PNO, so this fails
487 if "FAIL" not in dev
[ 0 ]. request ( "SET pno 1" ):
488 raise Exception ( "Unexpected success in enabling PNO" )
489 if "FAIL" not in dev
[ 0 ]. request ( "SET pno 1 freq=2000-3000,5180" ):
490 raise Exception ( "Unexpected success in enabling PNO" )
491 if "FAIL" not in dev
[ 0 ]. request ( "SET pno 1 freq=0-6000" ):
492 raise Exception ( "Unexpected success in enabling PNO" )
493 if "FAIL" in dev
[ 0 ]. request ( "SET pno 0" ):
494 raise Exception ( "Unexpected failure in disabling PNO" )
496 def test_wpas_ctrl_get ( dev
):
497 """wpa_supplicant ctrl_iface get"""
498 if "FAIL" in dev
[ 0 ]. request ( "GET version" ):
499 raise Exception ( "Unexpected get failure for version" )
500 if "FAIL" in dev
[ 0 ]. request ( "GET wifi_display" ):
501 raise Exception ( "Unexpected get failure for wifi_display" )
502 if "FAIL" not in dev
[ 0 ]. request ( "GET foo" ):
503 raise Exception ( "Unexpected success on get command" )
505 def test_wpas_ctrl_preauth ( dev
):
506 """wpa_supplicant ctrl_iface preauth"""
507 if "FAIL" not in dev
[ 0 ]. request ( "PREAUTH " ):
508 raise Exception ( "Unexpected success on invalid PREAUTH" )
509 if "FAIL" in dev
[ 0 ]. request ( "PREAUTH 00:11:22:33:44:55" ):
510 raise Exception ( "Unexpected failure on PREAUTH" )
512 def test_wpas_ctrl_stkstart ( dev
):
513 """wpa_supplicant ctrl_iface strkstart"""
514 if "FAIL" not in dev
[ 0 ]. request ( "STKSTART " ):
515 raise Exception ( "Unexpected success on invalid STKSTART" )
516 if "FAIL" not in dev
[ 0 ]. request ( "STKSTART 00:11:22:33:44:55" ):
517 raise Exception ( "Unexpected success on STKSTART" )
519 def test_wpas_ctrl_tdls_discover ( dev
):
520 """wpa_supplicant ctrl_iface tdls_discover"""
521 if "FAIL" not in dev
[ 0 ]. request ( "TDLS_DISCOVER " ):
522 raise Exception ( "Unexpected success on invalid TDLS_DISCOVER" )
523 if "FAIL" not in dev
[ 0 ]. request ( "TDLS_DISCOVER 00:11:22:33:44:55" ):
524 raise Exception ( "Unexpected success on TDLS_DISCOVER" )
526 def test_wpas_ctrl_tdls_chan_switch ( dev
):
527 """wpa_supplicant ctrl_iface tdls_chan_switch error cases"""
528 for args
in [ '' , '00:11:22:33:44:55' ]:
529 if "FAIL" not in dev
[ 0 ]. request ( "TDLS_CANCEL_CHAN_SWITCH " + args
):
530 raise Exception ( "Unexpected success on invalid TDLS_CANCEL_CHAN_SWITCH: " + args
)
532 for args
in [ '' , 'foo ' , '00:11:22:33:44:55 ' , '00:11:22:33:44:55 q' ,
533 '00:11:22:33:44:55 81' , '00:11:22:33:44:55 81 1234' ,
534 '00:11:22:33:44:55 81 1234 center_freq1=234 center_freq2=345 bandwidth=456 sec_channel_offset=567 ht vht' ]:
535 if "FAIL" not in dev
[ 0 ]. request ( "TDLS_CHAN_SWITCH " + args
):
536 raise Exception ( "Unexpected success on invalid TDLS_CHAN_SWITCH: " + args
)
538 def test_wpas_ctrl_addr ( dev
):
539 """wpa_supplicant ctrl_iface invalid address"""
540 if "FAIL" not in dev
[ 0 ]. request ( "TDLS_SETUP " ):
541 raise Exception ( "Unexpected success on invalid TDLS_SETUP" )
542 if "FAIL" not in dev
[ 0 ]. request ( "TDLS_TEARDOWN " ):
543 raise Exception ( "Unexpected success on invalid TDLS_TEARDOWN" )
544 if "FAIL" not in dev
[ 0 ]. request ( "FT_DS " ):
545 raise Exception ( "Unexpected success on invalid FT_DS" )
546 if "FAIL" not in dev
[ 0 ]. request ( "WPS_PBC 00:11:22:33:44" ):
547 raise Exception ( "Unexpected success on invalid WPS_PBC" )
548 if "FAIL" not in dev
[ 0 ]. request ( "WPS_PIN 00:11:22:33:44" ):
549 raise Exception ( "Unexpected success on invalid WPS_PIN" )
550 if "FAIL" not in dev
[ 0 ]. request ( "WPS_NFC 00:11:22:33:44" ):
551 raise Exception ( "Unexpected success on invalid WPS_NFC" )
552 if "FAIL" not in dev
[ 0 ]. request ( "WPS_REG 00:11:22:33:44 12345670" ):
553 raise Exception ( "Unexpected success on invalid WPS_REG" )
554 if "FAIL" not in dev
[ 0 ]. request ( "IBSS_RSN 00:11:22:33:44" ):
555 raise Exception ( "Unexpected success on invalid IBSS_RSN" )
556 if "FAIL" not in dev
[ 0 ]. request ( "BLACKLIST 00:11:22:33:44" ):
557 raise Exception ( "Unexpected success on invalid BLACKLIST" )
559 def test_wpas_ctrl_wps_errors ( dev
):
560 """wpa_supplicant ctrl_iface WPS error cases"""
561 if "FAIL" not in dev
[ 0 ]. request ( "WPS_REG 00:11:22:33:44:55" ):
562 raise Exception ( "Unexpected success on invalid WPS_REG" )
563 if "FAIL" not in dev
[ 0 ]. request ( "WPS_REG 00:11:22:33:44:55 12345670 2233" ):
564 raise Exception ( "Unexpected success on invalid WPS_REG" )
565 if "FAIL" not in dev
[ 0 ]. request ( "WPS_REG 00:11:22:33:44:55 12345670 2233 OPEN" ):
566 raise Exception ( "Unexpected success on invalid WPS_REG" )
567 if "FAIL" not in dev
[ 0 ]. request ( "WPS_REG 00:11:22:33:44:55 12345670 2233 OPEN NONE" ):
568 raise Exception ( "Unexpected success on invalid WPS_REG" )
570 if "FAIL" not in dev
[ 0 ]. request ( "WPS_AP_PIN random" ):
571 raise Exception ( "Unexpected success on WPS_AP_PIN in non-AP mode" )
573 if "FAIL" not in dev
[ 0 ]. request ( "WPS_ER_PIN any" ):
574 raise Exception ( "Unexpected success on invalid WPS_ER_PIN" )
576 if "FAIL" not in dev
[ 0 ]. request ( "WPS_ER_LEARN 00:11:22:33:44:55" ):
577 raise Exception ( "Unexpected success on invalid WPS_ER_LEARN" )
579 if "FAIL" not in dev
[ 0 ]. request ( "WPS_ER_SET_CONFIG 00:11:22:33:44:55" ):
580 raise Exception ( "Unexpected success on invalid WPS_ER_SET_CONFIG" )
582 if "FAIL" not in dev
[ 0 ]. request ( "WPS_ER_CONFIG 00:11:22:33:44:55" ):
583 raise Exception ( "Unexpected success on invalid WPS_ER_CONFIG" )
584 if "FAIL" not in dev
[ 0 ]. request ( "WPS_ER_CONFIG 00:11:22:33:44:55 12345670" ):
585 raise Exception ( "Unexpected success on invalid WPS_ER_CONFIG" )
586 if "FAIL" not in dev
[ 0 ]. request ( "WPS_ER_CONFIG 00:11:22:33:44:55 12345670 2233" ):
587 raise Exception ( "Unexpected success on invalid WPS_ER_CONFIG" )
588 if "FAIL" not in dev
[ 0 ]. request ( "WPS_ER_CONFIG 00:11:22:33:44:55 12345670 2233 OPEN" ):
589 raise Exception ( "Unexpected success on invalid WPS_ER_CONFIG" )
590 if "FAIL" not in dev
[ 0 ]. request ( "WPS_ER_CONFIG 00:11:22:33:44:55 12345670 2233 OPEN NONE" ):
591 raise Exception ( "Unexpected success on invalid WPS_ER_CONFIG" )
593 if "FAIL" not in dev
[ 0 ]. request ( "WPS_ER_NFC_CONFIG_TOKEN WPS" ):
594 raise Exception ( "Unexpected success on invalid WPS_ER_NFC_CONFIG_TOKEN" )
595 if "FAIL" not in dev
[ 0 ]. request ( "WPS_ER_NFC_CONFIG_TOKEN FOO 00:11:22:33:44:55" ):
596 raise Exception ( "Unexpected success on invalid WPS_ER_NFC_CONFIG_TOKEN" )
597 if "FAIL" not in dev
[ 0 ]. request ( "WPS_ER_NFC_CONFIG_TOKEN NDEF 00:11:22:33:44:55" ):
598 raise Exception ( "Unexpected success on invalid WPS_ER_NFC_CONFIG_TOKEN" )
600 if "FAIL" not in dev
[ 0 ]. request ( "WPS_NFC_CONFIG_TOKEN FOO" ):
601 raise Exception ( "Unexpected success on invalid WPS_NFC_CONFIG_TOKEN" )
602 if "FAIL" not in dev
[ 0 ]. request ( "WPS_NFC_CONFIG_TOKEN WPS FOO" ):
603 raise Exception ( "Unexpected success on invalid WPS_NFC_CONFIG_TOKEN" )
604 if "FAIL" not in dev
[ 0 ]. request ( "WPS_NFC_TOKEN FOO" ):
605 raise Exception ( "Unexpected success on invalid WPS_NFC_TOKEN" )
607 def test_wpas_ctrl_config_parser ( dev
):
608 """wpa_supplicant ctrl_iface SET config parser"""
609 if "FAIL" not in dev
[ 0 ]. request ( "SET pbc_in_m1 qwerty" ):
610 raise Exception ( "Non-number accepted as integer" )
611 if "FAIL" not in dev
[ 0 ]. request ( "SET eapol_version 0" ):
612 raise Exception ( "Out-of-range value accepted" )
613 if "FAIL" not in dev
[ 0 ]. request ( "SET eapol_version 10" ):
614 raise Exception ( "Out-of-range value accepted" )
616 if "FAIL" not in dev
[ 0 ]. request ( "SET serial_number 0123456789abcdef0123456789abcdef0" ):
617 raise Exception ( "Too long string accepted" )
619 def test_wpas_ctrl_mib ( dev
):
620 """wpa_supplicant ctrl_iface MIB"""
621 mib
= dev
[ 0 ]. get_mib ()
622 if "dot11RSNAOptionImplemented" not in mib
:
623 raise Exception ( "Missing MIB entry" )
624 if mib
[ "dot11RSNAOptionImplemented" ] != "TRUE" :
625 raise Exception ( "Unexpected dot11RSNAOptionImplemented value" )
627 def test_wpas_ctrl_set_wps_params ( dev
):
628 """wpa_supplicant ctrl_iface SET config_methods"""
629 ts
= [ "config_methods label virtual_display virtual_push_button keypad" ,
630 "device_type 1-0050F204-1" ,
631 "os_version 01020300" ,
632 "uuid 12345678-9abc-def0-1234-56789abcdef0" ]
634 if "OK" not in dev
[ 2 ]. request ( "SET " + t
):
635 raise Exception ( "SET failed for: " + t
)
637 def test_wpas_ctrl_level ( dev
):
638 """wpa_supplicant ctrl_iface LEVEL"""
640 if "FAIL" not in dev
[ 2 ]. request ( "LEVEL 3" ):
641 raise Exception ( "Unexpected LEVEL success" )
642 if "OK" not in dev
[ 2 ]. mon
. request ( "LEVEL 2" ):
643 raise Exception ( "Unexpected LEVEL failure" )
644 dev
[ 2 ]. request ( "SCAN freq=2412" )
645 ev
= dev
[ 2 ]. wait_event ([ "State:" ], timeout
= 5 )
647 raise Exception ( "No debug message received" )
648 dev
[ 2 ]. wait_event ([ "CTRL-EVENT-SCAN-RESULTS" ], timeout
= 5 )
650 dev
[ 2 ]. mon
. request ( "LEVEL 3" )
652 def test_wpas_ctrl_bssid_filter ( dev
, apdev
):
653 """wpa_supplicant bssid_filter"""
655 if "OK" not in dev
[ 2 ]. request ( "SET bssid_filter " + apdev
[ 0 ][ 'bssid' ]):
656 raise Exception ( "Failed to set bssid_filter" )
657 params
= { "ssid" : "test" }
658 hostapd
. add_ap ( apdev
[ 0 ][ 'ifname' ], params
)
659 hostapd
. add_ap ( apdev
[ 1 ][ 'ifname' ], params
)
660 dev
[ 2 ]. scan_for_bss ( apdev
[ 0 ][ 'bssid' ], freq
= "2412" )
661 dev
[ 2 ]. scan ( freq
= "2412" )
662 bss
= dev
[ 2 ]. get_bss ( apdev
[ 0 ][ 'bssid' ])
663 if bss
is None or len ( bss
) == 0 :
664 raise Exception ( "Missing BSS data" )
665 bss
= dev
[ 2 ]. get_bss ( apdev
[ 1 ][ 'bssid' ])
666 if bss
and len ( bss
) != 0 :
667 raise Exception ( "Unexpected BSS data" )
668 dev
[ 2 ]. request ( "SET bssid_filter " )
669 dev
[ 2 ]. scan ( freq
= "2412" )
670 bss
= dev
[ 2 ]. get_bss ( apdev
[ 0 ][ 'bssid' ])
671 if bss
is None or len ( bss
) == 0 :
672 raise Exception ( "Missing BSS data" )
673 bss
= dev
[ 2 ]. get_bss ( apdev
[ 1 ][ 'bssid' ])
674 if bss
is None or len ( bss
) == 0 :
675 raise Exception ( "Missing BSS data(2)" )
676 res
= dev
[ 2 ]. request ( "SCAN_RESULTS" ). splitlines ()
677 if "test" not in res
[ 1 ] or "test" not in res
[ 2 ]:
678 raise Exception ( "SSID missing from SCAN_RESULTS" )
679 if apdev
[ 0 ][ 'bssid' ] not in res
[ 1 ] and apdev
[ 1 ][ 'bssid' ] not in res
[ 1 ]:
680 raise Exception ( "BSS1 missing from SCAN_RESULTS" )
681 if apdev
[ 0 ][ 'bssid' ] not in res
[ 2 ] and apdev
[ 1 ][ 'bssid' ] not in res
[ 2 ]:
682 raise Exception ( "BSS1 missing from SCAN_RESULTS" )
684 if "FAIL" not in dev
[ 2 ]. request ( "SET bssid_filter 00:11:22:33:44:55 00:11:22:33:44" ):
685 raise Exception ( "Unexpected success for invalid SET bssid_filter" )
687 dev
[ 2 ]. request ( "SET bssid_filter " )
689 def test_wpas_ctrl_disallow_aps ( dev
, apdev
):
690 """wpa_supplicant ctrl_iface disallow_aps"""
691 params
= { "ssid" : "test" }
692 hostapd
. add_ap ( apdev
[ 0 ][ 'ifname' ], params
)
694 if "FAIL" not in dev
[ 0 ]. request ( "SET disallow_aps bssid " ):
695 raise Exception ( "Unexpected success on invalid disallow_aps" )
696 if "FAIL" not in dev
[ 0 ]. request ( "SET disallow_aps bssid 00:11:22:33:44" ):
697 raise Exception ( "Unexpected success on invalid disallow_aps" )
698 if "FAIL" not in dev
[ 0 ]. request ( "SET disallow_aps ssid 0" ):
699 raise Exception ( "Unexpected success on invalid disallow_aps" )
700 if "FAIL" not in dev
[ 0 ]. request ( "SET disallow_aps ssid 4q" ):
701 raise Exception ( "Unexpected success on invalid disallow_aps" )
702 if "FAIL" not in dev
[ 0 ]. request ( "SET disallow_aps bssid 00:11:22:33:44:55 ssid 112233 ssid 123" ):
703 raise Exception ( "Unexpected success on invalid disallow_aps" )
704 if "FAIL" not in dev
[ 0 ]. request ( "SET disallow_aps ssid 000102030405060708090a0b0c0d0e0f000102030405060708090a0b0c0d0e0f00" ):
705 raise Exception ( "Unexpected success on invalid disallow_aps" )
706 if "FAIL" not in dev
[ 0 ]. request ( "SET disallow_aps foo 112233445566" ):
707 raise Exception ( "Unexpected success on invalid disallow_aps" )
709 dev
[ 0 ]. connect ( "test" , key_mgmt
= "NONE" , scan_freq
= "2412" )
710 hostapd
. add_ap ( apdev
[ 1 ][ 'ifname' ], params
)
711 dev
[ 0 ]. dump_monitor ()
712 if "OK" not in dev
[ 0 ]. request ( "SET disallow_aps bssid 00:11:22:33:44:55 bssid 00:22:33:44:55:66" ):
713 raise Exception ( "Failed to set disallow_aps" )
714 if "OK" not in dev
[ 0 ]. request ( "SET disallow_aps bssid " + apdev
[ 0 ][ 'bssid' ]):
715 raise Exception ( "Failed to set disallow_aps" )
716 ev
= dev
[ 0 ]. wait_connected ( timeout
= 15 , error
= "Reassociation timed out" )
717 if apdev
[ 1 ][ 'bssid' ] not in ev
:
718 raise Exception ( "Unexpected BSSID" )
720 dev
[ 0 ]. dump_monitor ()
721 if "OK" not in dev
[ 0 ]. request ( "SET disallow_aps ssid " + "test" . encode ( "hex" )):
722 raise Exception ( "Failed to set disallow_aps" )
723 dev
[ 0 ]. wait_disconnected ( timeout
= 5 , error
= "Disconnection not seen" )
724 ev
= dev
[ 0 ]. wait_event ([ "CTRL-EVENT-CONNECTED" ], timeout
= 1 )
726 raise Exception ( "Unexpected reassociation" )
728 dev
[ 0 ]. request ( "DISCONNECT" )
729 dev
[ 0 ]. p2p_start_go ( freq
= 2412 )
730 if "OK" not in dev
[ 0 ]. request ( "SET disallow_aps " ):
731 raise Exception ( "Failed to set disallow_aps" )
733 def test_wpas_ctrl_blob ( dev
):
734 """wpa_supplicant ctrl_iface SET blob"""
735 if "FAIL" not in dev
[ 0 ]. request ( "SET blob foo" ):
736 raise Exception ( "Unexpected SET success" )
737 if "FAIL" not in dev
[ 0 ]. request ( "SET blob foo 0" ):
738 raise Exception ( "Unexpected SET success" )
739 if "FAIL" not in dev
[ 0 ]. request ( "SET blob foo 0q" ):
740 raise Exception ( "Unexpected SET success" )
741 if "OK" not in dev
[ 0 ]. request ( "SET blob foo 00" ):
742 raise Exception ( "Unexpected SET failure" )
743 if "OK" not in dev
[ 0 ]. request ( "SET blob foo 0011" ):
744 raise Exception ( "Unexpected SET failure" )
746 def test_wpas_ctrl_set_uapsd ( dev
):
747 """wpa_supplicant ctrl_iface SET uapsd"""
748 if "FAIL" not in dev
[ 0 ]. request ( "SET uapsd foo" ):
749 raise Exception ( "Unexpected SET success" )
750 if "FAIL" not in dev
[ 0 ]. request ( "SET uapsd 0,0,0" ):
751 raise Exception ( "Unexpected SET success" )
752 if "FAIL" not in dev
[ 0 ]. request ( "SET uapsd 0,0" ):
753 raise Exception ( "Unexpected SET success" )
754 if "FAIL" not in dev
[ 0 ]. request ( "SET uapsd 0" ):
755 raise Exception ( "Unexpected SET success" )
756 if "OK" not in dev
[ 0 ]. request ( "SET uapsd 1,1,1,1;1" ):
757 raise Exception ( "Unexpected SET failure" )
758 if "OK" not in dev
[ 0 ]. request ( "SET uapsd 0,0,0,0;0" ):
759 raise Exception ( "Unexpected SET failure" )
760 if "OK" not in dev
[ 0 ]. request ( "SET uapsd disable" ):
761 raise Exception ( "Unexpected SET failure" )
763 def test_wpas_ctrl_set ( dev
):
764 """wpa_supplicant ctrl_iface SET"""
770 "dot11RSNAConfigPMKLifetime 0" ,
771 "dot11RSNAConfigPMKReauthThreshold 101" ,
772 "dot11RSNAConfigSATimeout 0" ,
773 "wps_version_number -1" ,
774 "wps_version_number 256" ]
776 if "FAIL" not in dev
[ 0 ]. request ( "SET " + val
):
777 raise Exception ( "Unexpected SET success for " + val
)
779 vals
= [ "EAPOL::heldPeriod 60" ,
780 "EAPOL::authPeriod 30" ,
781 "EAPOL::startPeriod 30" ,
783 "dot11RSNAConfigSATimeout 60" ,
790 if "OK" not in dev
[ 0 ]. request ( "SET " + val
):
791 raise Exception ( "Unexpected SET failure for " + val
)
793 def test_wpas_ctrl_get_capability ( dev
):
794 """wpa_supplicant ctrl_iface GET_CAPABILITY"""
795 if "FAIL" not in dev
[ 0 ]. request ( "GET_CAPABILITY 1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890" ):
796 raise Exception ( "Unexpected success on invalid GET_CAPABILITY" )
797 if "FAIL" not in dev
[ 0 ]. request ( "GET_CAPABILITY eap foo" ):
798 raise Exception ( "Unexpected success on invalid GET_CAPABILITY" )
799 if "AP" not in dev
[ 0 ]. request ( "GET_CAPABILITY modes strict" ):
800 raise Exception ( "Unexpected GET_CAPABILITY response" )
801 res
= dev
[ 0 ]. get_capability ( "eap" )
802 if "TTLS" not in res
:
803 raise Exception ( "Unexpected GET_CAPABILITY eap response: " + str ( res
))
805 res
= dev
[ 0 ]. get_capability ( "pairwise" )
806 if "CCMP" not in res
:
807 raise Exception ( "Unexpected GET_CAPABILITY pairwise response: " + str ( res
))
809 res
= dev
[ 0 ]. get_capability ( "group" )
810 if "CCMP" not in res
:
811 raise Exception ( "Unexpected GET_CAPABILITY group response: " + str ( res
))
813 res
= dev
[ 0 ]. get_capability ( "key_mgmt" )
814 if "WPA-PSK" not in res
or "WPA-EAP" not in res
:
815 raise Exception ( "Unexpected GET_CAPABILITY key_mgmt response: " + str ( res
))
817 res
= dev
[ 0 ]. get_capability ( "proto" )
818 if "WPA" not in res
or "RSN" not in res
:
819 raise Exception ( "Unexpected GET_CAPABILITY proto response: " + str ( res
))
821 res
= dev
[ 0 ]. get_capability ( "auth_alg" )
822 if "OPEN" not in res
or "SHARED" not in res
:
823 raise Exception ( "Unexpected GET_CAPABILITY auth_alg response: " + str ( res
))
825 res
= dev
[ 0 ]. get_capability ( "modes" )
826 if "IBSS" not in res
or "AP" not in res
:
827 raise Exception ( "Unexpected GET_CAPABILITY modes response: " + str ( res
))
829 res
= dev
[ 0 ]. get_capability ( "channels" )
830 if "8" not in res
or "36" not in res
:
831 raise Exception ( "Unexpected GET_CAPABILITY channels response: " + str ( res
))
833 res
= dev
[ 0 ]. get_capability ( "freq" )
834 if "2457" not in res
or "5180" not in res
:
835 raise Exception ( "Unexpected GET_CAPABILITY freq response: " + str ( res
))
837 res
= dev
[ 0 ]. get_capability ( "tdls" )
838 if "EXTERNAL" not in res
[ 0 ]:
839 raise Exception ( "Unexpected GET_CAPABILITY tdls response: " + str ( res
))
841 res
= dev
[ 0 ]. get_capability ( "erp" )
842 if res
is None or "ERP" not in res
[ 0 ]:
843 raise Exception ( "Unexpected GET_CAPABILITY erp response: " + str ( res
))
845 if dev
[ 0 ]. get_capability ( "foo" ) is not None :
846 raise Exception ( "Unexpected GET_CAPABILITY foo response: " + str ( res
))
848 def test_wpas_ctrl_nfc_report_handover ( dev
):
849 """wpa_supplicant ctrl_iface NFC_REPORT_HANDOVER"""
860 if "FAIL" not in dev
[ 0 ]. request ( "NFC_REPORT_HANDOVER " + v
):
861 raise Exception ( "Unexpected NFC_REPORT_HANDOVER success for " + v
)
863 def test_wpas_ctrl_nfc_tag_read ( dev
):
864 """wpa_supplicant ctrl_iface WPS_NFC_TAG_READ"""
865 vals
= [ "FOO" , "0Q" , "00" , "000000" , "10000001" , "10000000" , "00000000" ,
866 "100e0000" , "100e0001ff" , "100e000411110000" , "100e0004100e0001" ]
868 if "FAIL" not in dev
[ 0 ]. request ( "WPS_NFC_TAG_READ " + v
):
869 raise Exception ( "Unexpected WPS_NFC_TAG_READ success for " + v
)
871 def test_wpas_ctrl_nfc_get_handover ( dev
):
872 """wpa_supplicant ctrl_iface NFC_GET_HANDOVER"""
873 vals
= [ "FOO" , "FOO BAR" , "WPS WPS" , "WPS WPS-CR" , "WPS FOO" , "NDEF P2P" ]
875 if "FAIL" not in dev
[ 0 ]. request ( "NFC_GET_HANDOVER_REQ " + v
):
876 raise Exception ( "Unexpected NFC_GET_HANDOVER_REQ success for " + v
)
878 vals
= [ "NDEF WPS" , "NDEF P2P-CR" , "WPS P2P-CR" ]
880 if "FAIL" in dev
[ 0 ]. request ( "NFC_GET_HANDOVER_REQ " + v
):
881 raise Exception ( "Unexpected NFC_GET_HANDOVER_REQ failure for " + v
)
883 vals
= [ "FOO" , "FOO BAR" , "WPS WPS" , "WPS WPS-CR" , "WPS FOO" , "NDEF P2P" ,
884 "NDEF WPS" , "NDEF WPS uuid" ]
886 if "FAIL" not in dev
[ 0 ]. request ( "NFC_GET_HANDOVER_SEL " + v
):
887 raise Exception ( "Unexpected NFC_GET_HANDOVER_SEL success for " + v
)
889 vals
= [ "NDEF P2P-CR" , "WPS P2P-CR" , "NDEF P2P-CR-TAG" ,
892 if "FAIL" in dev
[ 0 ]. request ( "NFC_GET_HANDOVER_SEL " + v
):
893 raise Exception ( "Unexpected NFC_GET_HANDOVER_SEL failure for " + v
)
895 def get_blacklist ( dev
):
896 return dev
. request ( "BLACKLIST" ). splitlines ()
898 def test_wpas_ctrl_blacklist ( dev
):
899 """wpa_supplicant ctrl_iface BLACKLIST"""
900 if "OK" not in dev
[ 0 ]. request ( "BLACKLIST clear" ):
901 raise Exception ( "BLACKLIST clear failed" )
902 b
= get_blacklist ( dev
[ 0 ])
904 raise Exception ( "Unexpected blacklist contents: " + str ( b
))
905 if "OK" not in dev
[ 0 ]. request ( "BLACKLIST 00:11:22:33:44:55" ):
906 raise Exception ( "BLACKLIST add failed" )
907 b
= get_blacklist ( dev
[ 0 ])
908 if "00:11:22:33:44:55" not in b
:
909 raise Exception ( "Unexpected blacklist contents: " + str ( b
))
910 if "OK" not in dev
[ 0 ]. request ( "BLACKLIST 00:11:22:33:44:56" ):
911 raise Exception ( "BLACKLIST add failed" )
912 b
= get_blacklist ( dev
[ 0 ])
913 if "00:11:22:33:44:55" not in b
or "00:11:22:33:44:56" not in b
:
914 raise Exception ( "Unexpected blacklist contents: " + str ( b
))
915 if "OK" not in dev
[ 0 ]. request ( "BLACKLIST 00:11:22:33:44:56" ):
916 raise Exception ( "BLACKLIST add failed" )
917 b
= get_blacklist ( dev
[ 0 ])
918 if "00:11:22:33:44:55" not in b
or "00:11:22:33:44:56" not in b
or len ( b
) != 2 :
919 raise Exception ( "Unexpected blacklist contents: " + str ( b
))
921 if "OK" not in dev
[ 0 ]. request ( "BLACKLIST clear" ):
922 raise Exception ( "BLACKLIST clear failed" )
923 if dev
[ 0 ]. request ( "BLACKLIST" ) != "" :
924 raise Exception ( "Unexpected blacklist contents" )
926 def test_wpas_ctrl_blacklist_oom ( dev
):
927 """wpa_supplicant ctrl_iface BLACKLIST and out-of-memory"""
928 with
alloc_fail ( dev
[ 0 ], 1 , "wpa_blacklist_add" ):
929 if "FAIL" not in dev
[ 0 ]. request ( "BLACKLIST aa:bb:cc:dd:ee:ff" ):
930 raise Exception ( "Unexpected success with allocation failure" )
932 def test_wpas_ctrl_log_level ( dev
):
933 """wpa_supplicant ctrl_iface LOG_LEVEL"""
934 level
= dev
[ 2 ]. request ( "LOG_LEVEL" )
935 if "Current level: MSGDUMP" not in level
:
936 raise Exception ( "Unexpected debug level(1): " + level
)
937 if "Timestamp: 1" not in level
:
938 raise Exception ( "Unexpected timestamp(1): " + level
)
940 if "OK" not in dev
[ 2 ]. request ( "LOG_LEVEL MSGDUMP 0" ):
941 raise Exception ( "LOG_LEVEL failed" )
942 level
= dev
[ 2 ]. request ( "LOG_LEVEL" )
943 if "Current level: MSGDUMP" not in level
:
944 raise Exception ( "Unexpected debug level(2): " + level
)
945 if "Timestamp: 0" not in level
:
946 raise Exception ( "Unexpected timestamp(2): " + level
)
948 if "OK" not in dev
[ 2 ]. request ( "LOG_LEVEL MSGDUMP 1" ):
949 raise Exception ( "LOG_LEVEL failed" )
950 level
= dev
[ 2 ]. request ( "LOG_LEVEL" )
951 if "Current level: MSGDUMP" not in level
:
952 raise Exception ( "Unexpected debug level(3): " + level
)
953 if "Timestamp: 1" not in level
:
954 raise Exception ( "Unexpected timestamp(3): " + level
)
956 if "FAIL" not in dev
[ 2 ]. request ( "LOG_LEVEL FOO" ):
957 raise Exception ( "Invalid LOG_LEVEL accepted" )
959 for lev
in [ "EXCESSIVE" , "MSGDUMP" , "DEBUG" , "INFO" , "WARNING" , "ERROR" ]:
960 if "OK" not in dev
[ 2 ]. request ( "LOG_LEVEL " + lev
):
961 raise Exception ( "LOG_LEVEL failed for " + lev
)
962 level
= dev
[ 2 ]. request ( "LOG_LEVEL" )
963 if "Current level: " + lev
not in level
:
964 raise Exception ( "Unexpected debug level: " + level
)
966 if "OK" not in dev
[ 2 ]. request ( "LOG_LEVEL MSGDUMP 1" ):
967 raise Exception ( "LOG_LEVEL failed" )
968 level
= dev
[ 2 ]. request ( "LOG_LEVEL" )
969 if "Current level: MSGDUMP" not in level
:
970 raise Exception ( "Unexpected debug level(3): " + level
)
971 if "Timestamp: 1" not in level
:
972 raise Exception ( "Unexpected timestamp(3): " + level
)
974 def test_wpas_ctrl_enable_disable_network ( dev
, apdev
):
975 """wpa_supplicant ctrl_iface ENABLE/DISABLE_NETWORK"""
976 params
= { "ssid" : "test" }
977 hostapd
. add_ap ( apdev
[ 0 ][ 'ifname' ], params
)
979 id = dev
[ 0 ]. connect ( "test" , key_mgmt
= "NONE" , scan_freq
= "2412" ,
980 only_add_network
= True )
981 if "OK" not in dev
[ 0 ]. request ( "DISABLE_NETWORK " + str ( id )):
982 raise Exception ( "Failed to disable network" )
983 if "OK" not in dev
[ 0 ]. request ( "ENABLE_NETWORK " + str ( id ) + " no-connect" ):
984 raise Exception ( "Failed to enable network" )
985 if "OK" not in dev
[ 0 ]. request ( "DISABLE_NETWORK all" ):
986 raise Exception ( "Failed to disable networks" )
987 if "OK" not in dev
[ 0 ]. request ( "ENABLE_NETWORK " + str ( id )):
988 raise Exception ( "Failed to enable network" )
989 dev
[ 0 ]. wait_connected ( timeout
= 10 )
990 if "OK" not in dev
[ 0 ]. request ( "DISABLE_NETWORK " + str ( id )):
991 raise Exception ( "Failed to disable network" )
992 dev
[ 0 ]. wait_disconnected ( timeout
= 10 )
995 if "OK" not in dev
[ 0 ]. request ( "ENABLE_NETWORK all" ):
996 raise Exception ( "Failed to enable network" )
997 dev
[ 0 ]. wait_connected ( timeout
= 10 )
998 if "OK" not in dev
[ 0 ]. request ( "DISABLE_NETWORK all" ):
999 raise Exception ( "Failed to disable network" )
1000 dev
[ 0 ]. wait_disconnected ( timeout
= 10 )
1002 def test_wpas_ctrl_country ( dev
, apdev
):
1003 """wpa_supplicant SET/GET country code"""
1005 # work around issues with possible pending regdom event from the end of
1006 # the previous test case
1008 dev
[ 0 ]. dump_monitor ()
1010 if "OK" not in dev
[ 0 ]. request ( "SET country FI" ):
1011 raise Exception ( "Failed to set country code" )
1012 if dev
[ 0 ]. request ( "GET country" ) != "FI" :
1013 raise Exception ( "Country code set failed" )
1014 ev
= dev
[ 0 ]. wait_event ([ "CTRL-EVENT-REGDOM-CHANGE" ])
1016 raise Exception ( "regdom change event not seen" )
1017 if "init=USER type=COUNTRY alpha2=FI" not in ev
:
1018 raise Exception ( "Unexpected event contents: " + ev
)
1019 dev
[ 0 ]. request ( "SET country 00" )
1020 if dev
[ 0 ]. request ( "GET country" ) != "00" :
1021 raise Exception ( "Country code set failed" )
1022 ev
= dev
[ 0 ]. wait_event ([ "CTRL-EVENT-REGDOM-CHANGE" ])
1024 raise Exception ( "regdom change event not seen" )
1025 if "init=CORE type=WORLD" not in ev
:
1026 raise Exception ( "Unexpected event contents: " + ev
)
1028 subprocess
. call ([ 'sudo' , 'iw' , 'reg' , 'set' , '00' ])
1030 def test_wpas_ctrl_suspend_resume ( dev
):
1031 """wpa_supplicant SUSPEND/RESUME"""
1032 wpas
= WpaSupplicant ( global_iface
= '/tmp/wpas-wlan5' )
1033 wpas
. interface_add ( "wlan5" )
1034 if "OK" not in wpas
. global_request ( "SUSPEND" ):
1035 raise Exception ( "SUSPEND failed" )
1037 if "OK" not in wpas
. global_request ( "RESUME" ):
1038 raise Exception ( "RESUME failed" )
1039 if "OK" not in wpas
. request ( "SUSPEND" ):
1040 raise Exception ( "Per-interface SUSPEND failed" )
1041 if "OK" not in wpas
. request ( "RESUME" ):
1042 raise Exception ( "Per-interface RESUME failed" )
1043 ev
= wpas
. wait_event ([ "CTRL-EVENT-SCAN-RESULTS" ], timeout
= 10 )
1045 raise Exception ( "Scan not completed" )
1047 def test_wpas_ctrl_global ( dev
):
1048 """wpa_supplicant global control interface"""
1049 wpas
= WpaSupplicant ( global_iface
= '/tmp/wpas-wlan5' )
1050 wpas
. interface_add ( "wlan5" )
1052 if "PONG" not in wpas
. global_request ( "PING" ):
1053 raise Exception ( "PING failed" )
1054 if "wlan5" not in wpas
. global_request ( "INTERFACES" ):
1055 raise Exception ( "Interface not found" )
1056 if "UNKNOWN COMMAND" not in wpas
. global_request ( "FOO" ):
1057 raise Exception ( "Unexpected response to unknown command" )
1058 if "PONG" not in wpas
. global_request ( "IFNAME=wlan5 PING" ):
1059 raise Exception ( "Per-interface PING failed" )
1060 if "FAIL-NO-IFNAME-MATCH" not in wpas
. global_request ( "IFNAME=notfound PING" ):
1061 raise Exception ( "Unknown interface not reported correctly" )
1062 if "FAIL" not in wpas
. global_request ( "SAVE_CONFIG" ):
1063 raise Exception ( "SAVE_CONFIG succeeded unexpectedly" )
1064 if "OK" not in wpas
. global_request ( "SET wifi_display 0" ):
1065 raise Exception ( "SET failed" )
1066 if "wifi_display=0" not in wpas
. global_request ( "STATUS" ):
1067 raise Exception ( "wifi_display not disabled" )
1068 if "OK" not in wpas
. global_request ( "SET wifi_display 1" ):
1069 raise Exception ( "SET failed" )
1070 if "wifi_display=1" not in wpas
. global_request ( "STATUS" ):
1071 raise Exception ( "wifi_display not enabled" )
1072 if "FAIL" not in wpas
. global_request ( "SET foo 1" ):
1073 raise Exception ( "SET succeeded unexpectedly" )
1075 if "p2p_state=IDLE" not in wpas
. global_request ( "STATUS" ):
1076 raise Exception ( "P2P was disabled" )
1077 wpas
. request ( "P2P_SET disabled 1" )
1078 if "p2p_state=DISABLED" not in wpas
. global_request ( "STATUS" ):
1079 raise Exception ( "P2P was not disabled" )
1080 wpas
. request ( "P2P_SET disabled 0" )
1081 if "p2p_state=IDLE" not in wpas
. global_request ( "STATUS" ):
1082 raise Exception ( "P2P was not enabled" )
1084 # driver_nl80211.c does not support interface list, so do not fail because
1086 logger
. debug ( wpas
. global_request ( "INTERFACE_LIST" ))
1088 if "FAIL" not in wpas
. global_request ( "INTERFACE_ADD " ):
1089 raise Exception ( "INTERFACE_ADD succeeded unexpectedly" )
1090 if "FAIL" not in wpas
. global_request ( "INTERFACE_ADD FOO" ):
1091 raise Exception ( "INTERFACE_ADD succeeded unexpectedly" )
1092 if "FAIL" not in wpas
. global_request ( "INTERFACE_ADD FOO conf" ):
1093 raise Exception ( "INTERFACE_ADD succeeded unexpectedly" )
1094 if "FAIL" not in wpas
. global_request ( "INTERFACE_ADD FOO conf driver" ):
1095 raise Exception ( "INTERFACE_ADD succeeded unexpectedly" )
1096 if "FAIL" not in wpas
. global_request ( "INTERFACE_ADD FOO conf driver ctrliface" ):
1097 raise Exception ( "INTERFACE_ADD succeeded unexpectedly" )
1098 if "FAIL" not in wpas
. global_request ( "INTERFACE_ADD FOO conf driver ctrliface driverparam" ):
1099 raise Exception ( "INTERFACE_ADD succeeded unexpectedly" )
1100 if "FAIL" not in wpas
. global_request ( "INTERFACE_ADD FOO conf driver ctrliface driverparam bridge" ):
1101 raise Exception ( "INTERFACE_ADD succeeded unexpectedly" )
1102 if "FAIL" not in wpas
. global_request ( "INTERFACE_ADD FOO conf driver ctrliface driverparam bridge foo" ):
1103 raise Exception ( "INTERFACE_ADD succeeded unexpectedly" )
1104 if "FAIL" not in wpas
. global_request ( "INTERFACE_ADD FOO " ):
1105 raise Exception ( "INTERFACE_ADD succeeded unexpectedly" )
1107 def test_wpas_ctrl_roam ( dev
, apdev
):
1108 """wpa_supplicant ctrl_iface ROAM error cases"""
1109 if "FAIL" not in dev
[ 0 ]. request ( "ROAM 00:11:22:33:44" ):
1110 raise Exception ( "Unexpected success" )
1111 if "FAIL" not in dev
[ 0 ]. request ( "ROAM 00:11:22:33:44:55" ):
1112 raise Exception ( "Unexpected success" )
1113 params
= { "ssid" : "test" }
1114 hostapd
. add_ap ( apdev
[ 0 ][ 'ifname' ], params
)
1115 id = dev
[ 0 ]. connect ( "test" , key_mgmt
= "NONE" , scan_freq
= "2412" )
1116 if "FAIL" not in dev
[ 0 ]. request ( "ROAM 00:11:22:33:44:55" ):
1117 raise Exception ( "Unexpected success" )
1119 def test_wpas_ctrl_ipaddr ( dev
, apdev
):
1120 """wpa_supplicant IP address in STATUS"""
1122 subprocess
. call ([ 'ip' , 'addr' , 'add' , '10.174.65.207/32' , 'dev' ,
1124 ipaddr
= dev
[ 0 ]. get_status_field ( 'ip_address' )
1125 if ipaddr
!= '10.174.65.207' :
1126 raise Exception ( "IP address not in STATUS output" )
1128 subprocess
. call ([ 'ip' , 'addr' , 'del' , '10.174.65.207/32' , 'dev' ,
1131 def test_wpas_ctrl_neighbor_rep_req ( dev
, apdev
):
1132 """wpa_supplicant ctrl_iface NEIGHBOR_REP_REQUEST"""
1133 params
= { "ssid" : "test" }
1134 hostapd
. add_ap ( apdev
[ 0 ][ 'ifname' ], params
)
1135 params
= { "ssid" : "test2" , "radio_measurements" : "1" }
1136 hostapd
. add_ap ( apdev
[ 1 ][ 'ifname' ], params
)
1138 dev
[ 0 ]. connect ( "test" , key_mgmt
= "NONE" , scan_freq
= "2412" )
1139 if "FAIL" not in dev
[ 0 ]. request ( "NEIGHBOR_REP_REQUEST" ):
1140 raise Exception ( "Request succeeded unexpectedly" )
1141 if "FAIL" not in dev
[ 0 ]. request ( "NEIGHBOR_REP_REQUEST ssid=abcdef" ):
1142 raise Exception ( "Request succeeded unexpectedly" )
1143 dev
[ 0 ]. request ( "DISCONNECT" )
1145 rrm
= int ( dev
[ 0 ]. get_driver_status_field ( "capa.rrm_flags" ), 16 )
1146 if rrm
& 0x5 != 0x5 :
1147 logger
. info ( "Driver does not support required RRM capabilities - skip rest of the test case" )
1150 dev
[ 0 ]. connect ( "test2" , key_mgmt
= "NONE" , scan_freq
= "2412" )
1152 # These requests are expected to get sent properly, but since hostapd does
1153 # not yet support processing of the request, these are expected to fail.
1155 if "OK" not in dev
[ 0 ]. request ( "NEIGHBOR_REP_REQUEST" ):
1156 raise Exception ( "Request failed" )
1157 ev
= dev
[ 0 ]. wait_event ([ "RRM-NEIGHBOR-REP-RECEIVED" ,
1158 "RRM-NEIGHBOR-REP-REQUEST-FAILED" ], timeout
= 10 )
1160 raise Exception ( "RRM report result not indicated" )
1161 logger
. info ( "RRM result: " + ev
)
1163 if "OK" not in dev
[ 0 ]. request ( "NEIGHBOR_REP_REQUEST ssid=abcdef" ):
1164 raise Exception ( "Request failed" )
1165 ev
= dev
[ 0 ]. wait_event ([ "RRM-NEIGHBOR-REP-RECEIVED" ,
1166 "RRM-NEIGHBOR-REP-REQUEST-FAILED" ], timeout
= 10 )
1168 raise Exception ( "RRM report result not indicated" )
1169 logger
. info ( "RRM result: " + ev
)
1171 def test_wpas_ctrl_rsp ( dev
, apdev
):
1172 """wpa_supplicant ctrl_iface CTRL-RSP-"""
1173 if "FAIL" not in dev
[ 0 ]. request ( "CTRL-RSP-" ):
1174 raise Exception ( "Request succeeded unexpectedly" )
1175 if "FAIL" not in dev
[ 0 ]. request ( "CTRL-RSP-foo-" ):
1176 raise Exception ( "Request succeeded unexpectedly" )
1177 if "FAIL" not in dev
[ 0 ]. request ( "CTRL-RSP-foo-1234567" ):
1178 raise Exception ( "Request succeeded unexpectedly" )
1179 if "FAIL" not in dev
[ 0 ]. request ( "CTRL-RSP-foo-1234567:" ):
1180 raise Exception ( "Request succeeded unexpectedly" )
1181 id = dev
[ 0 ]. add_network ()
1182 if "FAIL" not in dev
[ 0 ]. request ( "CTRL-RSP-foo- %d :" % id ):
1183 raise Exception ( "Request succeeded unexpectedly" )
1184 for req
in [ "IDENTITY" , "PASSWORD" , "NEW_PASSWORD" , "PIN" , "OTP" ,
1185 "PASSPHRASE" , "SIM" ]:
1186 if "OK" not in dev
[ 0 ]. request ( "CTRL-RSP- %s-%d :" % ( req
, id )):
1187 raise Exception ( "Request failed unexpectedly" )
1188 if "OK" not in dev
[ 0 ]. request ( "CTRL-RSP- %s-%d :" % ( req
, id )):
1189 raise Exception ( "Request failed unexpectedly" )
1191 def test_wpas_ctrl_vendor ( dev
, apdev
):
1192 """wpa_supplicant ctrl_iface VENDOR"""
1199 if "FAIL" not in dev
[ 0 ]. request ( "VENDOR " + cmd
):
1200 raise Exception ( "Invalid VENDOR command accepted: " + cmd
)
1202 def test_wpas_ctrl_mgmt_tx ( dev
, apdev
):
1203 """wpa_supplicant ctrl_iface MGMT_TX"""
1205 "00:11:22:33:44:55 foo" ,
1206 "00:11:22:33:44:55 11:22:33:44:55:66" ,
1207 "00:11:22:33:44:55 11:22:33:44:55:66 freq=0 no_cck=0 wait_time=0 action=123" ,
1208 "00:11:22:33:44:55 11:22:33:44:55:66 action=12qq" ]
1210 if "FAIL" not in dev
[ 0 ]. request ( "MGMT_TX " + cmd
):
1211 raise Exception ( "Invalid MGMT_TX command accepted: " + cmd
)
1213 if "OK" not in dev
[ 0 ]. request ( "MGMT_TX_DONE" ):
1214 raise Exception ( "MGMT_TX_DONE failed" )
1216 def test_wpas_ctrl_driver_event ( dev
, apdev
):
1217 """wpa_supplicant ctrl_iface DRIVER_EVENT"""
1218 if "FAIL" not in dev
[ 0 ]. request ( "DRIVER_EVENT foo" ):
1219 raise Exception ( "Invalid DRIVER_EVENT accepted" )
1221 def test_wpas_ctrl_eapol_rx ( dev
, apdev
):
1222 """wpa_supplicant ctrl_iface EAPOL_RX"""
1224 "00:11:22:33:44:55 123" ,
1225 "00:11:22:33:44:55 12qq" ]
1227 if "FAIL" not in dev
[ 0 ]. request ( "EAPOL_RX " + cmd
):
1228 raise Exception ( "Invalid EAPOL_RX command accepted: " + cmd
)
1230 def test_wpas_ctrl_data_test ( dev
, apdev
):
1231 """wpa_supplicant ctrl_iface DATA_TEST"""
1232 dev
[ 0 ]. request ( "DATA_TEST_CONFIG 0" )
1233 if "FAIL" not in dev
[ 0 ]. request ( "DATA_TEST_TX 00:11:22:33:44:55 00:11:22:33:44:55 0" ):
1234 raise Exception ( "DATA_TEST_TX accepted when not in test mode" )
1237 if "OK" not in dev
[ 0 ]. request ( "DATA_TEST_CONFIG 1" ):
1238 raise Exception ( "DATA_TEST_CONFIG failed" )
1239 if "OK" not in dev
[ 0 ]. request ( "DATA_TEST_CONFIG 1" ):
1240 raise Exception ( "DATA_TEST_CONFIG failed" )
1242 "00:11:22:33:44:55 foo" ,
1243 "00:11:22:33:44:55 00:11:22:33:44:55 -1" ,
1244 "00:11:22:33:44:55 00:11:22:33:44:55 256" ]
1246 if "FAIL" not in dev
[ 0 ]. request ( "DATA_TEST_TX " + cmd
):
1247 raise Exception ( "Invalid DATA_TEST_TX command accepted: " + cmd
)
1248 if "OK" not in dev
[ 0 ]. request ( "DATA_TEST_TX 00:11:22:33:44:55 00:11:22:33:44:55 0" ):
1249 raise Exception ( "DATA_TEST_TX failed" )
1251 dev
[ 0 ]. request ( "DATA_TEST_CONFIG 0" )
1255 "00112233445566778899aabbccdde" ,
1256 "00112233445566778899aabbccdq" ]
1258 if "FAIL" not in dev
[ 0 ]. request ( "DATA_TEST_FRAME " + cmd
):
1259 raise Exception ( "Invalid DATA_TEST_FRAME command accepted: " + cmd
)
1261 if "OK" not in dev
[ 0 ]. request ( "DATA_TEST_FRAME 00112233445566778899aabbccddee" ):
1262 raise Exception ( "DATA_TEST_FRAME failed" )
1264 def test_wpas_ctrl_vendor_elem ( dev
, apdev
):
1265 """wpa_supplicant ctrl_iface VENDOR_ELEM"""
1266 if "OK" not in dev
[ 0 ]. request ( "VENDOR_ELEM_ADD 1 " ):
1267 raise Exception ( "VENDOR_ELEM_ADD failed" )
1274 if "FAIL" not in dev
[ 0 ]. request ( "VENDOR_ELEM_ADD " + cmd
):
1275 raise Exception ( "Invalid VENDOR_ELEM_ADD command accepted: " + cmd
)
1280 if "FAIL" not in dev
[ 0 ]. request ( "VENDOR_ELEM_GET " + cmd
):
1281 raise Exception ( "Invalid VENDOR_ELEM_GET command accepted: " + cmd
)
1283 dev
[ 0 ]. request ( "VENDOR_ELEM_REMOVE 1 *" )
1293 if "FAIL" not in dev
[ 0 ]. request ( "VENDOR_ELEM_REMOVE " + cmd
):
1294 raise Exception ( "Invalid VENDOR_ELEM_REMOVE command accepted: " + cmd
)
1296 dev
[ 0 ]. request ( "VENDOR_ELEM_ADD 1 000100" )
1297 if "OK" not in dev
[ 0 ]. request ( "VENDOR_ELEM_REMOVE 1 " ):
1298 raise Exception ( "VENDOR_ELEM_REMOVE failed" )
1307 if "FAIL" not in dev
[ 0 ]. request ( "VENDOR_ELEM_REMOVE " + cmd
):
1308 raise Exception ( "Invalid VENDOR_ELEM_REMOVE command accepted: " + cmd
)
1309 if "OK" not in dev
[ 0 ]. request ( "VENDOR_ELEM_REMOVE 1 000100" ):
1310 raise Exception ( "VENDOR_ELEM_REMOVE failed" )
1312 def test_wpas_ctrl_misc ( dev
, apdev
):
1313 """wpa_supplicant ctrl_iface and miscellaneous commands"""
1314 if "OK" not in dev
[ 0 ]. request ( "RELOG" ):
1315 raise Exception ( "RELOG failed" )
1316 if dev
[ 0 ]. request ( "IFNAME" ) != dev
[ 0 ]. ifname
:
1317 raise Exception ( "IFNAME returned unexpected response" )
1318 if "FAIL" not in dev
[ 0 ]. request ( "REATTACH" ):
1319 raise Exception ( "REATTACH accepted while disabled" )
1320 if "OK" not in dev
[ 2 ]. request ( "RECONFIGURE" ):
1321 raise Exception ( "RECONFIGURE failed" )
1322 if "FAIL" in dev
[ 0 ]. request ( "INTERFACE_LIST" ):
1323 raise Exception ( "INTERFACE_LIST failed" )
1324 if "UNKNOWN COMMAND" not in dev
[ 0 ]. request ( "FOO" ):
1325 raise Exception ( "Unknown command accepted" )
1327 if "FAIL" not in dev
[ 0 ]. global_request ( "INTERFACE_REMOVE foo" ):
1328 raise Exception ( "Invalid INTERFACE_REMOVE accepted" )
1329 if "FAIL" not in dev
[ 0 ]. global_request ( "SET foo" ):
1330 raise Exception ( "Invalid global SET accepted" )