]>
git.ipfire.org Git - thirdparty/hostap.git/blob - tests/hwsim/test_wpas_ap.py
1 # wpa_supplicant AP mode tests
2 # Copyright (c) 2014, Qualcomm Atheros, Inc.
4 # This software may be distributed under the terms of the BSD license.
5 # See README for more details.
7 from remotehost
import remote_compatible
10 logger
= logging
.getLogger()
13 from utils
import HwsimSkip
, alloc_fail
, clear_regdom_dev
14 from wpasupplicant
import WpaSupplicant
15 from test_p2p_channel
import set_country
17 def wait_ap_ready(dev
):
18 ev
= dev
.wait_event(["CTRL-EVENT-CONNECTED"])
20 raise Exception("AP failed to start")
22 def test_wpas_ap_open(dev
):
23 """wpa_supplicant AP mode - open network"""
24 if "FAIL" not in dev
[0].request("DEAUTHENTICATE 00:11:22:33:44:55"):
25 raise Exception("Unexpected DEAUTHENTICATE accepted")
26 if "FAIL" not in dev
[0].request("DISASSOCIATE 00:11:22:33:44:55"):
27 raise Exception("Unexpected DISASSOCIATE accepted")
28 if "FAIL" not in dev
[0].request("CHAN_SWITCH 0 2432"):
29 raise Exception("Unexpected CHAN_SWITCH accepted")
31 id = dev
[0].add_network()
32 dev
[0].set_network(id, "mode", "2")
33 dev
[0].set_network_quoted(id, "ssid", "wpas-ap-open")
34 dev
[0].set_network(id, "key_mgmt", "NONE")
35 dev
[0].set_network(id, "frequency", "2412")
36 dev
[0].set_network(id, "scan_freq", "2412")
37 dev
[0].select_network(id)
40 if "FAIL" not in dev
[0].request("DEAUTHENTICATE foo"):
41 raise Exception("Invalid DEAUTHENTICATE accepted")
42 if "FAIL" not in dev
[0].request("DISASSOCIATE foo"):
43 raise Exception("Invalid DISASSOCIATE accepted")
45 dev
[1].connect("wpas-ap-open", key_mgmt
="NONE", scan_freq
="2412")
46 dev
[2].connect("wpas-ap-open", key_mgmt
="NONE", scan_freq
="2412")
47 hwsim_utils
.test_connectivity(dev
[0], dev
[1])
48 hwsim_utils
.test_connectivity(dev
[1], dev
[2])
50 addr1
= dev
[1].p2p_interface_addr()
51 addr2
= dev
[2].p2p_interface_addr()
52 addrs
= [addr1
, addr2
]
53 sta
= dev
[0].get_sta(None)
54 if sta
['addr'] not in addrs
:
55 raise Exception("Unexpected STA address")
56 sta1
= dev
[0].get_sta(sta
['addr'])
57 if sta1
['addr'] not in addrs
:
58 raise Exception("Unexpected STA address")
59 sta2
= dev
[0].get_sta(sta
['addr'], next
=True)
60 if sta2
['addr'] not in addrs
:
61 raise Exception("Unexpected STA2 address")
62 sta3
= dev
[0].get_sta(sta2
['addr'], next
=True)
64 raise Exception("Unexpected STA iteration result (did not stop)")
66 status
= dev
[0].get_status()
67 if status
['mode'] != "AP":
68 raise Exception("Unexpected status mode")
72 dev
[0].request("DEAUTHENTICATE " + addr1
)
73 dev
[0].request("DISASSOCIATE " + addr2
)
74 dev
[1].wait_disconnected(timeout
=10)
75 dev
[2].wait_disconnected(timeout
=10)
76 dev
[1].wait_connected(timeout
=10, error
="Reconnection timed out")
77 dev
[2].wait_connected(timeout
=10, error
="Reconnection timed out")
78 dev
[1].request("DISCONNECT")
79 dev
[2].request("DISCONNECT")
81 def test_wpas_ap_open_isolate(dev
):
82 """wpa_supplicant AP mode - open network with client isolation"""
84 dev
[0].set("ap_isolate", "1")
85 id = dev
[0].add_network()
86 dev
[0].set_network(id, "mode", "2")
87 dev
[0].set_network_quoted(id, "ssid", "wpas-ap-open")
88 dev
[0].set_network(id, "key_mgmt", "NONE")
89 dev
[0].set_network(id, "frequency", "2412")
90 dev
[0].set_network(id, "scan_freq", "2412")
91 dev
[0].select_network(id)
94 dev
[1].connect("wpas-ap-open", key_mgmt
="NONE", scan_freq
="2412")
95 dev
[2].connect("wpas-ap-open", key_mgmt
="NONE", scan_freq
="2412")
96 hwsim_utils
.test_connectivity(dev
[0], dev
[1])
97 hwsim_utils
.test_connectivity(dev
[0], dev
[2])
98 hwsim_utils
.test_connectivity(dev
[1], dev
[2], success_expected
=False,
101 dev
[0].set("ap_isolate", "0")
104 def test_wpas_ap_wep(dev
):
105 """wpa_supplicant AP mode - WEP"""
106 id = dev
[0].add_network()
107 dev
[0].set_network(id, "mode", "2")
108 dev
[0].set_network_quoted(id, "ssid", "wpas-ap-wep")
109 dev
[0].set_network(id, "key_mgmt", "NONE")
110 dev
[0].set_network(id, "frequency", "2412")
111 dev
[0].set_network(id, "scan_freq", "2412")
112 dev
[0].set_network_quoted(id, "wep_key0", "hello")
113 dev
[0].select_network(id)
114 wait_ap_ready(dev
[0])
116 dev
[1].connect("wpas-ap-wep", key_mgmt
="NONE", wep_key0
='"hello"',
118 hwsim_utils
.test_connectivity(dev
[0], dev
[1])
119 dev
[1].request("DISCONNECT")
122 def test_wpas_ap_no_ssid(dev
):
123 """wpa_supplicant AP mode - invalid network configuration"""
124 id = dev
[0].add_network()
125 dev
[0].set_network(id, "mode", "2")
126 dev
[0].set_network(id, "key_mgmt", "NONE")
127 dev
[0].set_network(id, "frequency", "2412")
128 dev
[0].set_network(id, "scan_freq", "2412")
129 dev
[0].select_network(id)
130 ev
= dev
[0].wait_event(["CTRL-EVENT-CONNECTED"], timeout
=1)
132 raise Exception("Unexpected AP start")
135 def test_wpas_ap_default_frequency(dev
):
136 """wpa_supplicant AP mode - default frequency"""
137 id = dev
[0].add_network()
138 dev
[0].set_network(id, "mode", "2")
139 dev
[0].set_network_quoted(id, "ssid", "wpas-ap-open")
140 dev
[0].set_network(id, "key_mgmt", "NONE")
141 dev
[0].set_network(id, "scan_freq", "2412")
142 dev
[0].select_network(id)
143 wait_ap_ready(dev
[0])
144 dev
[1].connect("wpas-ap-open", key_mgmt
="NONE", scan_freq
="2462")
145 dev
[1].request("DISCONNECT")
148 def test_wpas_ap_invalid_frequency(dev
):
149 """wpa_supplicant AP mode - invalid frequency configuration"""
150 id = dev
[0].add_network()
151 dev
[0].set_network(id, "mode", "2")
152 dev
[0].set_network_quoted(id, "ssid", "wpas-ap-open")
153 dev
[0].set_network(id, "key_mgmt", "NONE")
154 dev
[0].set_network(id, "frequency", "2413")
155 dev
[0].set_network(id, "scan_freq", "2412")
156 dev
[0].select_network(id)
157 ev
= dev
[0].wait_event(["CTRL-EVENT-CONNECTED"], timeout
=1)
159 raise Exception("Unexpected AP start")
161 def test_wpas_ap_wps(dev
):
162 """wpa_supplicant AP mode - WPS operations"""
163 id = dev
[0].add_network()
164 dev
[0].set_network(id, "mode", "2")
165 dev
[0].set_network_quoted(id, "ssid", "wpas-ap-wps")
166 dev
[0].set_network_quoted(id, "psk", "1234567890")
167 dev
[0].set_network(id, "frequency", "2412")
168 dev
[0].set_network(id, "scan_freq", "2412")
169 dev
[0].select_network(id)
170 wait_ap_ready(dev
[0])
171 bssid
= dev
[0].p2p_interface_addr()
173 logger
.info("Test PBC mode start/stop")
174 if "FAIL" not in dev
[0].request("WPS_CANCEL"):
175 raise Exception("Unexpected WPS_CANCEL success")
176 dev
[0].request("WPS_PBC")
177 ev
= dev
[0].wait_event(["WPS-PBC-ACTIVE"])
179 raise Exception("PBC mode start timeout")
180 if "OK" not in dev
[0].request("WPS_CANCEL"):
181 raise Exception("Unexpected WPS_CANCEL failure")
182 ev
= dev
[0].wait_event(["WPS-TIMEOUT"])
184 raise Exception("PBC mode disabling timeout")
186 logger
.info("Test PBC protocol run")
187 dev
[0].request("WPS_PBC")
188 ev
= dev
[0].wait_event(["WPS-PBC-ACTIVE"])
190 raise Exception("PBC mode start timeout")
191 dev
[1].request("WPS_PBC")
192 dev
[1].wait_connected(timeout
=30, error
="WPS PBC operation timed out")
193 hwsim_utils
.test_connectivity(dev
[0], dev
[1])
195 logger
.info("Test AP PIN to learn configuration")
196 pin
= dev
[0].request("WPS_AP_PIN random")
198 raise Exception("Could not generate random AP PIN")
199 if pin
not in dev
[0].request("WPS_AP_PIN get"):
200 raise Exception("Could not fetch current AP PIN")
201 dev
[2].wps_reg(bssid
, pin
)
202 hwsim_utils
.test_connectivity(dev
[1], dev
[2])
204 dev
[1].request("REMOVE_NETWORK all")
205 dev
[2].request("REMOVE_NETWORK all")
207 logger
.info("Test AP PIN operations")
208 dev
[0].request("WPS_AP_PIN disable")
209 dev
[0].request("WPS_AP_PIN set " + pin
+ " 1")
211 if "FAIL" not in dev
[0].request("WPS_AP_PIN get"):
212 raise Exception("AP PIN unexpectedly still enabled")
214 pin
= dev
[1].wps_read_pin()
215 dev
[0].request("WPS_PIN any " + pin
)
216 dev
[1].request("WPS_PIN any " + pin
)
217 dev
[1].wait_connected(timeout
=30)
218 dev
[1].request("REMOVE_NETWORK all")
219 dev
[1].dump_monitor()
221 dev
[0].request("WPS_PIN any " + pin
+ " 100")
222 dev
[1].request("WPS_PIN any " + pin
)
223 dev
[1].wait_connected(timeout
=30)
224 dev
[1].request("REMOVE_NETWORK all")
225 dev
[1].dump_monitor()
227 dev
[0].request("WPS_AP_PIN set 12345670")
228 dev
[0].dump_monitor()
230 runs
= ("88887777", "12340000", "00000000", "12345670")
232 logger
.info("Try AP PIN " + pin
)
233 dev
[2].dump_monitor()
234 dev
[2].request("WPS_REG " + bssid
+ " " + pin
)
235 ev
= dev
[2].wait_event(["WPS-SUCCESS", "WPS-FAIL msg"], timeout
=15)
237 raise Exception("WPS operation timed out")
238 if "WPS-SUCCESS" in ev
:
239 raise Exception("WPS operation succeeded unexpectedly")
240 dev
[2].wait_disconnected(timeout
=10)
241 dev
[2].request("WPS_CANCEL")
242 dev
[2].request("REMOVE_NETWORK all")
243 ev
= dev
[0].wait_event(["WPS-AP-SETUP-LOCKED"])
245 raise Exception("WPS AP PIN not locked")
247 dev
[0].dump_monitor()
248 logger
.info("Test random AP PIN timeout")
249 pin
= dev
[0].request("WPS_AP_PIN random 1")
251 raise Exception("Could not generate random AP PIN")
252 res
= dev
[0].request("WPS_AP_PIN get")
254 raise Exception("Could not fetch current AP PIN")
257 res
= dev
[0].request("WPS_AP_PIN get")
260 if "FAIL" not in res
:
261 raise Exception("WPS_AP_PIN random timeout did not work")
263 if "FAIL" not in dev
[0].request("WPS_AP_PIN foo"):
264 raise Exception("Invalid WPS_AP_PIN command not rejected")
265 if "FAIL" not in dev
[0].request("WPS_AP_PIN set"):
266 raise Exception("Invalid WPS_AP_PIN command not rejected")
268 def test_wpas_ap_wps_frag(dev
):
269 """wpa_supplicant AP mode - WPS operations with fragmentation"""
270 id = dev
[0].add_network()
271 dev
[0].set_network(id, "mode", "2")
272 dev
[0].set_network_quoted(id, "ssid", "wpas-ap-wps")
273 dev
[0].set_network_quoted(id, "psk", "1234567890")
274 dev
[0].set_network(id, "frequency", "2412")
275 dev
[0].set_network(id, "scan_freq", "2412")
276 dev
[0].set_network(id, "fragment_size", "300")
277 dev
[0].select_network(id)
278 wait_ap_ready(dev
[0])
279 bssid
= dev
[0].own_addr()
281 pin
= dev
[1].wps_read_pin()
282 dev
[0].request("WPS_PIN any " + pin
)
283 dev
[1].scan_for_bss(bssid
, freq
="2412")
284 dev
[1].request("WPS_PIN " + bssid
+ " " + pin
)
285 dev
[1].wait_connected(timeout
=30)
287 def test_wpas_ap_wps_pbc_overlap(dev
):
288 """wpa_supplicant AP mode - WPS operations with PBC overlap"""
289 id = dev
[0].add_network()
290 dev
[0].set_network(id, "mode", "2")
291 dev
[0].set_network_quoted(id, "ssid", "wpas-ap-wps")
292 dev
[0].set_network_quoted(id, "psk", "1234567890")
293 dev
[0].set_network(id, "frequency", "2412")
294 dev
[0].set_network(id, "scan_freq", "2412")
295 dev
[0].select_network(id)
296 wait_ap_ready(dev
[0])
297 bssid
= dev
[0].p2p_interface_addr()
299 dev
[1].scan_for_bss(bssid
, freq
="2412")
300 dev
[1].dump_monitor()
301 dev
[2].scan_for_bss(bssid
, freq
="2412")
302 dev
[2].dump_monitor()
303 dev
[0].request("WPS_PBC")
304 dev
[1].request("WPS_PBC " + bssid
)
305 dev
[2].request("WPS_PBC " + bssid
)
307 ev
= dev
[1].wait_event(["WPS-M2D"], timeout
=15)
309 raise Exception("PBC session overlap not detected (dev1)")
310 if "config_error=12" not in ev
:
311 raise Exception("PBC session overlap not correctly reported (dev1)")
313 ev
= dev
[2].wait_event(["WPS-M2D"], timeout
=15)
315 raise Exception("PBC session overlap not detected (dev2)")
316 if "config_error=12" not in ev
:
317 raise Exception("PBC session overlap not correctly reported (dev2)")
319 if "FAIL-PBC-OVERLAP" not in dev
[0].request("WPS_PBC"):
320 raise Exception("WPS_PBC(AP) accepted during overlap")
321 if "FAIL-PBC-OVERLAP" not in dev
[0].request("WPS_PBC any"):
322 raise Exception("WPS_PBC(AP) accepted during overlap")
323 dev
[0].request("WPS_CANCEL")
324 dev
[1].request("WPS_CANCEL")
325 dev
[2].request("WPS_CANCEL")
328 def test_wpas_ap_wps_disabled(dev
):
329 """wpa_supplicant AP mode - WPS disabled"""
330 id = dev
[0].add_network()
331 dev
[0].set_network(id, "mode", "2")
332 dev
[0].set_network_quoted(id, "ssid", "wpas-ap-no-wps")
333 dev
[0].set_network_quoted(id, "psk", "12345678")
334 dev
[0].set_network(id, "frequency", "2412")
335 dev
[0].set_network(id, "scan_freq", "2412")
336 dev
[0].set_network(id, "wps_disabled", "1")
337 dev
[0].select_network(id)
338 wait_ap_ready(dev
[0])
340 dev
[1].connect("wpas-ap-no-wps", psk
="12345678", scan_freq
="2412")
341 dev
[1].request("DISCONNECT")
342 dev
[1].wait_disconnected()
344 def test_wpas_ap_dfs(dev
):
345 """wpa_supplicant AP mode - DFS"""
346 if dev
[0].get_mcc() > 1:
347 raise HwsimSkip("DFS is not supported with multi channel contexts")
350 _test_wpas_ap_dfs(dev
)
353 dev
[0].request("SET country 00")
354 dev
[1].flush_scan_cache()
356 def _test_wpas_ap_dfs(dev
):
358 dev
[0].request("SET country US")
359 id = dev
[0].add_network()
360 dev
[0].set_network(id, "mode", "2")
361 dev
[0].set_network_quoted(id, "ssid", "wpas-ap-dfs")
362 dev
[0].set_network(id, "key_mgmt", "NONE")
363 dev
[0].set_network(id, "frequency", "5260")
364 dev
[0].set_network(id, "scan_freq", "5260")
365 dev
[0].select_network(id)
367 ev
= dev
[0].wait_event(["DFS-CAC-START"])
369 # For now, assume DFS is not supported by all kernel builds.
370 raise HwsimSkip("CAC did not start - assume not supported")
372 ev
= dev
[0].wait_event(["DFS-CAC-COMPLETED"], timeout
=70)
374 raise Exception("CAC did not complete")
375 if "success=1" not in ev
:
376 raise Exception("CAC failed")
377 if "freq=5260" not in ev
:
378 raise Exception("Unexpected DFS freq result")
380 ev
= dev
[0].wait_event(["CTRL-EVENT-CONNECTED"])
382 raise Exception("AP failed to start")
384 dev
[1].connect("wpas-ap-dfs", key_mgmt
="NONE")
385 dev
[1].wait_regdom(country_ie
=True)
386 dev
[0].request("DISCONNECT")
387 dev
[1].disconnect_and_stop_scan()
390 def test_wpas_ap_disable(dev
):
391 """wpa_supplicant AP mode - DISABLE_NETWORK"""
392 id = dev
[0].add_network()
393 dev
[0].set_network(id, "mode", "2")
394 dev
[0].set_network_quoted(id, "ssid", "wpas-ap-open")
395 dev
[0].set_network(id, "key_mgmt", "NONE")
396 dev
[0].set_network(id, "scan_freq", "2412")
397 dev
[0].select_network(id)
399 ev
= dev
[0].wait_event(["AP-ENABLED"])
401 raise Exception("AP-ENABLED event not seen")
402 wait_ap_ready(dev
[0])
403 dev
[0].request("DISABLE_NETWORK %d" % id)
404 ev
= dev
[0].wait_event(["AP-DISABLED"])
406 raise Exception("AP-DISABLED event not seen")
407 dev
[0].wait_disconnected()
409 def test_wpas_ap_acs(dev
):
410 """wpa_supplicant AP mode - ACS"""
411 res
= dev
[0].get_capability("acs")
412 if res
is None or "ACS" not in res
:
413 raise HwsimSkip("ACS not supported")
415 # For now, make sure the last operating channel was on 2.4 GHz band to get
416 # sufficient survey data from mac80211_hwsim.
417 id = dev
[0].add_network()
418 dev
[0].set_network(id, "mode", "2")
419 dev
[0].set_network_quoted(id, "ssid", "wpas-ap-open")
420 dev
[0].set_network(id, "key_mgmt", "NONE")
421 dev
[0].set_network(id, "frequency", "2412")
422 dev
[0].set_network(id, "scan_freq", "2412")
423 dev
[0].select_network(id)
424 wait_ap_ready(dev
[0])
425 dev
[0].request("REMOVE_NETWORK all")
426 dev
[0].wait_disconnected()
428 id = dev
[0].add_network()
429 dev
[0].set_network(id, "mode", "2")
430 dev
[0].set_network_quoted(id, "ssid", "wpas-ap-open")
431 dev
[0].set_network(id, "key_mgmt", "NONE")
432 dev
[0].set_network(id, "frequency", "2417")
433 dev
[0].set_network(id, "scan_freq", "2417")
434 dev
[0].set_network(id, "acs", "1")
435 dev
[0].select_network(id)
436 wait_ap_ready(dev
[0])
438 # ACS prefers channels 1, 6, 11
439 freq
= dev
[0].get_status_field('freq')
441 raise Exception("Unexpected operating channel selected")
443 dev
[1].connect("wpas-ap-open", key_mgmt
="NONE", scan_freq
=freq
)
446 def test_wpas_ap_and_assoc_req_p2p_ie(dev
):
447 """wpa_supplicant AP mode - unexpected P2P IE in Association Request"""
449 _test_wpas_ap_and_assoc_req_p2p_ie(dev
)
451 dev
[1].request("VENDOR_ELEM_REMOVE 13 *")
452 dev
[0].request("P2P_SET disabled 0")
454 def _test_wpas_ap_and_assoc_req_p2p_ie(dev
):
455 dev
[0].request("P2P_SET disabled 1")
456 id = dev
[0].add_network()
457 dev
[0].set_network(id, "mode", "2")
458 dev
[0].set_network_quoted(id, "ssid", "wpas-ap-open")
459 dev
[0].set_network(id, "key_mgmt", "NONE")
460 dev
[0].set_network(id, "frequency", "2412")
461 dev
[0].set_network(id, "scan_freq", "2412")
462 dev
[0].select_network(id)
463 wait_ap_ready(dev
[0])
465 dev
[1].request("VENDOR_ELEM_ADD 13 dd04506f9a09")
466 dev
[1].connect("wpas-ap-open", key_mgmt
="NONE", scan_freq
="2412")
467 dev
[1].request("DISCONNECT")
468 dev
[1].wait_disconnected()
470 dev
[0].request("DISCONNECT")
471 dev
[0].wait_disconnected()
474 def test_wpas_ap_open_ht_disabled(dev
):
475 """wpa_supplicant AP mode - open network and HT disabled"""
476 id = dev
[0].add_network()
477 dev
[0].set_network(id, "mode", "2")
478 dev
[0].set_network_quoted(id, "ssid", "wpas-ap-open")
479 dev
[0].set_network(id, "key_mgmt", "NONE")
480 dev
[0].set_network(id, "frequency", "2412")
481 dev
[0].set_network(id, "scan_freq", "2412")
482 dev
[0].set_network(id, "disable_ht", "1")
483 dev
[0].select_network(id)
484 wait_ap_ready(dev
[0])
486 dev
[1].connect("wpas-ap-open", key_mgmt
="NONE", scan_freq
="2412")
487 hwsim_utils
.test_connectivity(dev
[0], dev
[1])
489 def test_wpas_ap_failures(dev
):
490 """wpa_supplicant AP mode - failures"""
491 # No SSID configured for AP mode
492 id = dev
[0].add_network()
493 dev
[0].set_network(id, "mode", "2")
494 dev
[0].set_network(id, "key_mgmt", "NONE")
495 dev
[0].set_network(id, "frequency", "2412")
496 dev
[0].set_network(id, "scan_freq", "2412")
497 dev
[0].select_network(id)
498 ev
= dev
[0].wait_event(["CTRL-EVENT-CONNECTED"], timeout
=0.1)
500 raise Exception("Unexpected connection event")
501 dev
[0].request("REMOVE_NETWORK all")
503 # Invalid pbss value(2) for AP mode
504 dev
[0].dump_monitor()
505 id = dev
[0].add_network()
506 dev
[0].set_network(id, "mode", "2")
507 dev
[0].set_network_quoted(id, "ssid", "wpas-ap-open")
508 dev
[0].set_network(id, "key_mgmt", "NONE")
509 dev
[0].set_network(id, "frequency", "2412")
510 dev
[0].set_network(id, "scan_freq", "2412")
511 dev
[0].set_network(id, "pbss", "2")
512 dev
[0].select_network(id)
513 ev
= dev
[0].wait_event(["CTRL-EVENT-CONNECTED",
514 "CTRL-EVENT-DISCONNECTED"], timeout
=0.1)
515 if ev
is not None and "CTRL-EVENT-CONNECTED" in ev
:
516 raise Exception("Unexpected connection event(2)")
517 dev
[0].request("REMOVE_NETWORK all")
519 def test_wpas_ap_oom(dev
):
520 """wpa_supplicant AP mode - OOM"""
521 id = dev
[0].add_network()
522 dev
[0].set_network(id, "mode", "2")
523 dev
[0].set_network_quoted(id, "ssid", "wpas-ap")
524 dev
[0].set_network_quoted(id, "psk", "1234567890")
525 dev
[0].set_network(id, "frequency", "2412")
526 dev
[0].set_network(id, "scan_freq", "2412")
527 with
alloc_fail(dev
[0], 1, "=wpa_supplicant_conf_ap"):
528 dev
[0].select_network(id)
529 dev
[0].wait_disconnected()
530 dev
[0].request("REMOVE_NETWORK all")
532 id = dev
[0].add_network()
533 dev
[0].set_network(id, "mode", "2")
534 dev
[0].set_network_quoted(id, "ssid", "wpas-ap")
535 dev
[0].set_network(id, "psk", "1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef")
536 dev
[0].set_network(id, "frequency", "2412")
537 dev
[0].set_network(id, "scan_freq", "2412")
538 with
alloc_fail(dev
[0], 1, "=wpa_supplicant_conf_ap"):
539 dev
[0].select_network(id)
540 dev
[0].wait_disconnected()
541 dev
[0].request("REMOVE_NETWORK all")
543 id = dev
[0].add_network()
544 dev
[0].set_network(id, "mode", "2")
545 dev
[0].set_network_quoted(id, "ssid", "wpas-ap")
546 dev
[0].set_network(id, "key_mgmt", "NONE")
547 dev
[0].set_network_quoted(id, "wep_key0", "hello")
548 dev
[0].set_network(id, "frequency", "2412")
549 dev
[0].set_network(id, "scan_freq", "2412")
550 with
alloc_fail(dev
[0], 1, "=wpa_supplicant_conf_ap"):
551 dev
[0].select_network(id)
552 dev
[0].wait_disconnected()
553 dev
[0].request("REMOVE_NETWORK all")
555 wpas
= WpaSupplicant(global_iface
='/tmp/wpas-wlan5')
556 wpas
.interface_add("wlan5")
557 wpas
.request("SET manufacturer test")
558 wpas
.request("SET model_name test")
559 wpas
.request("SET model_number test")
560 wpas
.request("SET serial_number test")
561 wpas
.request("SET serial_number test")
562 wpas
.request("SET serial_number test")
563 wpas
.request("SET ap_vendor_elements dd0411223301")
564 id = wpas
.add_network()
565 wpas
.set_network(id, "mode", "2")
566 wpas
.set_network_quoted(id, "ssid", "wpas-ap")
567 wpas
.set_network(id, "key_mgmt", "NONE")
568 wpas
.set_network(id, "frequency", "2412")
569 wpas
.set_network(id, "scan_freq", "2412")
572 with
alloc_fail(wpas
, i
, "=wpa_supplicant_conf_ap"):
573 wpas
.select_network(id)
574 ev
= dev
[0].wait_event(["CTRL-EVENT-CONNECTED",
575 "CTRL-EVENT-DISCONNECTED"], timeout
=1)
576 wpas
.request("DISCONNECT")
577 wpas
.wait_disconnected()
579 def test_wpas_ap_params(dev
):
580 """wpa_supplicant AP mode - parameters"""
581 wpas
= WpaSupplicant(global_iface
='/tmp/wpas-wlan5')
582 wpas
.interface_add("wlan5")
583 wpas
.request("SET manufacturer test")
584 wpas
.request("SET model_name test")
585 wpas
.request("SET model_number test")
586 wpas
.request("SET serial_number test")
587 wpas
.request("SET serial_number test")
588 wpas
.request("SET serial_number test")
589 wpas
.request("SET ap_vendor_elements dd0411223301")
590 id = wpas
.add_network()
591 wpas
.set_network(id, "mode", "2")
592 wpas
.set_network_quoted(id, "ssid", "wpas-ap")
593 wpas
.set_network(id, "key_mgmt", "NONE")
594 wpas
.set_network(id, "frequency", "2412")
595 wpas
.set_network(id, "scan_freq", "2412")
596 wpas
.select_network(id)
597 wpas
.wait_connected()
598 wpas
.request("DISCONNECT")
599 wpas
.wait_disconnected()
601 wpas
.request("SET beacon_int 200 3")
602 wpas
.request("SET dtim_period 3")
603 wpas
.select_network(id)
604 wpas
.wait_connected()
605 wpas
.request("DISCONNECT")
606 wpas
.wait_disconnected()
608 wpas
.set_network(id, "beacon_int", "300")
609 wpas
.set_network(id, "dtim_period", "2")
610 wpas
.select_network(id)
611 wpas
.wait_connected()
612 if "---- AP ----" not in wpas
.request("PMKSA"):
613 raise Exception("AP section missing from PMKSA output")
614 if "OK" not in wpas
.request("PMKSA_FLUSH"):
615 raise Exception("PMKSA_FLUSH failed")
616 wpas
.request("DISCONNECT")
617 wpas
.wait_disconnected()
619 def test_wpas_ap_global_sta(dev
):
620 """wpa_supplicant AP mode - STA commands on global control interface"""
621 id = dev
[0].add_network()
622 dev
[0].set_network(id, "mode", "2")
623 dev
[0].set_network_quoted(id, "ssid", "wpas-ap-open")
624 dev
[0].set_network(id, "key_mgmt", "NONE")
625 dev
[0].set_network(id, "frequency", "2412")
626 dev
[0].set_network(id, "scan_freq", "2412")
627 dev
[0].select_network(id)
628 wait_ap_ready(dev
[0])
630 dev
[1].connect("wpas-ap-open", key_mgmt
="NONE", scan_freq
="2412")
632 addr1
= dev
[1].own_addr()
633 res
= dev
[0].global_request("STA " + addr1
)
634 if "UNKNOWN COMMAND" in res
:
635 raise Exception("STA command not known on global control interface")
636 res
= dev
[0].global_request("STA-FIRST")
637 if "UNKNOWN COMMAND" in res
:
638 raise Exception("STA-FIRST command not known on global control interface")
639 res
= dev
[0].global_request("STA-NEXT " + addr1
)
640 if "UNKNOWN COMMAND" in res
:
641 raise Exception("STA-NEXT command not known on global control interface")
642 dev
[1].request("DISCONNECT")
643 dev
[1].wait_disconnected()
644 dev
[0].request("DISCONNECT")
645 dev
[0].wait_disconnected()
647 def test_wpas_ap_5ghz(dev
):
648 """wpa_supplicant AP mode - 5 GHz"""
650 _test_wpas_ap_5ghz(dev
)
653 dev
[0].request("SET country 00")
654 dev
[1].flush_scan_cache()
656 def _test_wpas_ap_5ghz(dev
):
658 dev
[0].request("SET country US")
659 id = dev
[0].add_network()
660 dev
[0].set_network(id, "mode", "2")
661 dev
[0].set_network_quoted(id, "ssid", "wpas-ap-5ghz")
662 dev
[0].set_network(id, "key_mgmt", "NONE")
663 dev
[0].set_network(id, "frequency", "5180")
664 dev
[0].set_network(id, "scan_freq", "5180")
665 dev
[0].select_network(id)
666 wait_ap_ready(dev
[0])
668 dev
[1].connect("wpas-ap-5ghz", key_mgmt
="NONE", scan_freq
="5180")
669 dev
[1].request("DISCONNECT")
670 dev
[1].wait_disconnected()
672 def test_wpas_ap_open_vht80(dev
):
673 """wpa_supplicant AP mode - VHT 80 MHz"""
674 id = dev
[0].add_network()
675 dev
[0].set("country", "FI")
677 dev
[0].set_network(id, "mode", "2")
678 dev
[0].set_network_quoted(id, "ssid", "wpas-ap-open")
679 dev
[0].set_network(id, "key_mgmt", "NONE")
680 dev
[0].set_network(id, "frequency", "5180")
681 dev
[0].set_network(id, "scan_freq", "5180")
682 dev
[0].set_network(id, "vht", "1")
683 dev
[0].set_network(id, "vht_center_freq1", "5210")
684 dev
[0].set_network(id, "max_oper_chwidth", "1")
685 dev
[0].set_network(id, "ht40", "1")
686 dev
[0].select_network(id)
687 wait_ap_ready(dev
[0])
689 dev
[1].connect("wpas-ap-open", key_mgmt
="NONE", scan_freq
="5180")
690 sig
= dev
[1].request("SIGNAL_POLL").splitlines()
691 hwsim_utils
.test_connectivity(dev
[0], dev
[1])
692 dev
[1].request("DISCONNECT")
693 dev
[1].wait_disconnected()
694 if "FREQUENCY=5180" not in sig
:
695 raise Exception("Unexpected SIGNAL_POLL value(1): " + str(sig
))
696 if "WIDTH=80 MHz" not in sig
:
697 raise Exception("Unexpected SIGNAL_POLL value(2): " + str(sig
))
700 dev
[0].set("country", "00")
701 dev
[1].flush_scan_cache()
703 def test_wpas_ap_no_ht(dev
):
704 """wpa_supplicant AP mode - HT disabled"""
705 id = dev
[0].add_network()
706 dev
[0].set_network(id, "mode", "2")
707 dev
[0].set_network_quoted(id, "ssid", "wpas-ap-open")
708 dev
[0].set_network(id, "key_mgmt", "NONE")
709 dev
[0].set_network(id, "frequency", "2412")
710 dev
[0].set_network(id, "scan_freq", "2412")
711 dev
[0].set_network(id, "ht", "0")
712 dev
[0].set_network(id, "wps_disabled", "1")
713 dev
[0].select_network(id)
714 wait_ap_ready(dev
[0])
715 dev
[1].connect("wpas-ap-open", key_mgmt
="NONE", scan_freq
="2412")
716 sig
= dev
[1].request("SIGNAL_POLL").splitlines()
717 dev
[1].request("DISCONNECT")
718 dev
[1].wait_disconnected()
719 dev
[0].request("REMOVE_NETWORK all")
720 dev
[0].wait_disconnected()
722 id = dev
[0].add_network()
723 dev
[0].set_network(id, "mode", "2")
724 dev
[0].set_network_quoted(id, "ssid", "wpas-ap-open")
725 dev
[0].set_network(id, "key_mgmt", "NONE")
726 dev
[0].set_network(id, "frequency", "2412")
727 dev
[0].set_network(id, "scan_freq", "2412")
728 dev
[0].set_network(id, "wps_disabled", "1")
729 dev
[0].select_network(id)
730 wait_ap_ready(dev
[0])
731 dev
[1].flush_scan_cache()
732 dev
[1].connect("wpas-ap-open", key_mgmt
="NONE", scan_freq
="2412")
733 sig2
= dev
[1].request("SIGNAL_POLL").splitlines()
734 dev
[1].request("DISCONNECT")
735 dev
[1].wait_disconnected()
736 dev
[0].request("REMOVE_NETWORK all")
737 dev
[0].wait_disconnected()
739 if "WIDTH=20 MHz (no HT)" not in sig
:
740 raise Exception("HT was not disabled: " + str(sig
))
741 if "WIDTH=20 MHz" not in sig2
:
742 raise Exception("HT was not enabled: " + str(sig2
))
744 def test_wpas_ap_async_fail(dev
):
745 """wpa_supplicant AP mode - Async failure"""
746 id = dev
[0].add_network()
747 dev
[0].set("country", "FI")
749 dev
[0].set_network(id, "mode", "2")
750 dev
[0].set_network_quoted(id, "ssid", "wpas-ap-open")
751 dev
[0].set_network(id, "key_mgmt", "NONE")
752 dev
[0].set_network(id, "frequency", "5180")
753 dev
[0].set_network(id, "scan_freq", "5180")
754 dev
[0].set_network(id, "vht", "1")
755 dev
[0].set_network(id, "vht_center_freq1", "5210")
756 dev
[0].set_network(id, "max_oper_chwidth", "1")
757 dev
[0].set_network(id, "ht40", "1")
759 with
alloc_fail(dev
[0], 1,
760 "nl80211_get_scan_results;ieee80211n_check_scan"):
761 dev
[0].select_network(id)
762 dev
[0].wait_disconnected()
764 clear_regdom_dev(dev
)