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
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")
82 def test_wpas_ap_wep(dev):
83 """wpa_supplicant AP mode - WEP"""
84 id = dev[0].add_network()
85 dev[0].set_network(id, "mode", "2")
86 dev[0].set_network_quoted(id, "ssid", "wpas-ap-wep")
87 dev[0].set_network(id, "key_mgmt", "NONE")
88 dev[0].set_network(id, "frequency", "2412")
89 dev[0].set_network(id, "scan_freq", "2412")
90 dev[0].set_network_quoted(id, "wep_key0", "hello")
91 dev[0].select_network(id)
94 dev[1].connect("wpas-ap-wep", key_mgmt="NONE", wep_key0='"hello"',
96 hwsim_utils.test_connectivity(dev[0], dev[1])
97 dev[1].request("DISCONNECT")
100 def test_wpas_ap_no_ssid(dev):
101 """wpa_supplicant AP mode - invalid network configuration"""
102 id = dev[0].add_network()
103 dev[0].set_network(id, "mode", "2")
104 dev[0].set_network(id, "key_mgmt", "NONE")
105 dev[0].set_network(id, "frequency", "2412")
106 dev[0].set_network(id, "scan_freq", "2412")
107 dev[0].select_network(id)
108 ev = dev[0].wait_event(["CTRL-EVENT-CONNECTED"], timeout=1)
110 raise Exception("Unexpected AP start")
113 def test_wpas_ap_default_frequency(dev):
114 """wpa_supplicant AP mode - default frequency"""
115 id = dev[0].add_network()
116 dev[0].set_network(id, "mode", "2")
117 dev[0].set_network_quoted(id, "ssid", "wpas-ap-open")
118 dev[0].set_network(id, "key_mgmt", "NONE")
119 dev[0].set_network(id, "scan_freq", "2412")
120 dev[0].select_network(id)
121 wait_ap_ready(dev[0])
122 dev[1].connect("wpas-ap-open", key_mgmt="NONE", scan_freq="2462")
123 dev[1].request("DISCONNECT")
126 def test_wpas_ap_invalid_frequency(dev):
127 """wpa_supplicant AP mode - invalid frequency configuration"""
128 id = dev[0].add_network()
129 dev[0].set_network(id, "mode", "2")
130 dev[0].set_network_quoted(id, "ssid", "wpas-ap-open")
131 dev[0].set_network(id, "key_mgmt", "NONE")
132 dev[0].set_network(id, "frequency", "2413")
133 dev[0].set_network(id, "scan_freq", "2412")
134 dev[0].select_network(id)
135 ev = dev[0].wait_event(["CTRL-EVENT-CONNECTED"], timeout=1)
137 raise Exception("Unexpected AP start")
139 def test_wpas_ap_wps(dev):
140 """wpa_supplicant AP mode - WPS operations"""
141 id = dev[0].add_network()
142 dev[0].set_network(id, "mode", "2")
143 dev[0].set_network_quoted(id, "ssid", "wpas-ap-wps")
144 dev[0].set_network_quoted(id, "psk", "1234567890")
145 dev[0].set_network(id, "frequency", "2412")
146 dev[0].set_network(id, "scan_freq", "2412")
147 dev[0].select_network(id)
148 wait_ap_ready(dev[0])
149 bssid = dev[0].p2p_interface_addr()
151 logger.info("Test PBC mode start/stop")
152 if "FAIL" not in dev[0].request("WPS_CANCEL"):
153 raise Exception("Unexpected WPS_CANCEL success")
154 dev[0].request("WPS_PBC")
155 ev = dev[0].wait_event(["WPS-PBC-ACTIVE"])
157 raise Exception("PBC mode start timeout")
158 if "OK" not in dev[0].request("WPS_CANCEL"):
159 raise Exception("Unexpected WPS_CANCEL failure")
160 ev = dev[0].wait_event(["WPS-TIMEOUT"])
162 raise Exception("PBC mode disabling timeout")
164 logger.info("Test PBC protocol run")
165 dev[0].request("WPS_PBC")
166 ev = dev[0].wait_event(["WPS-PBC-ACTIVE"])
168 raise Exception("PBC mode start timeout")
169 dev[1].request("WPS_PBC")
170 dev[1].wait_connected(timeout=30, error="WPS PBC operation timed out")
171 hwsim_utils.test_connectivity(dev[0], dev[1])
173 logger.info("Test AP PIN to learn configuration")
174 pin = dev[0].request("WPS_AP_PIN random")
176 raise Exception("Could not generate random AP PIN")
177 if pin not in dev[0].request("WPS_AP_PIN get"):
178 raise Exception("Could not fetch current AP PIN")
179 dev[2].wps_reg(bssid, pin)
180 hwsim_utils.test_connectivity(dev[1], dev[2])
182 dev[1].request("REMOVE_NETWORK all")
183 dev[2].request("REMOVE_NETWORK all")
185 logger.info("Test AP PIN operations")
186 dev[0].request("WPS_AP_PIN disable")
187 dev[0].request("WPS_AP_PIN set " + pin + " 1")
189 if "FAIL" not in dev[0].request("WPS_AP_PIN get"):
190 raise Exception("AP PIN unexpectedly still enabled")
192 pin = dev[1].wps_read_pin()
193 dev[0].request("WPS_PIN any " + pin)
194 dev[1].request("WPS_PIN any " + pin)
195 dev[1].wait_connected(timeout=30)
196 dev[1].request("REMOVE_NETWORK all")
197 dev[1].dump_monitor()
199 dev[0].request("WPS_PIN any " + pin + " 100")
200 dev[1].request("WPS_PIN any " + pin)
201 dev[1].wait_connected(timeout=30)
202 dev[1].request("REMOVE_NETWORK all")
203 dev[1].dump_monitor()
205 dev[0].request("WPS_AP_PIN set 12345670")
206 dev[0].dump_monitor()
208 runs = ("88887777", "12340000", "00000000", "12345670")
210 logger.info("Try AP PIN " + pin)
211 dev[2].dump_monitor()
212 dev[2].request("WPS_REG " + bssid + " " + pin)
213 ev = dev[2].wait_event(["WPS-SUCCESS", "WPS-FAIL msg"], timeout=15)
215 raise Exception("WPS operation timed out")
216 if "WPS-SUCCESS" in ev:
217 raise Exception("WPS operation succeeded unexpectedly")
218 dev[2].wait_disconnected(timeout=10)
219 dev[2].request("WPS_CANCEL")
220 dev[2].request("REMOVE_NETWORK all")
221 ev = dev[0].wait_event(["WPS-AP-SETUP-LOCKED"])
223 raise Exception("WPS AP PIN not locked")
225 dev[0].dump_monitor()
226 logger.info("Test random AP PIN timeout")
227 pin = dev[0].request("WPS_AP_PIN random 1")
229 raise Exception("Could not generate random AP PIN")
230 res = dev[0].request("WPS_AP_PIN get")
232 raise Exception("Could not fetch current AP PIN")
235 res = dev[0].request("WPS_AP_PIN get")
238 if "FAIL" not in res:
239 raise Exception("WPS_AP_PIN random timeout did not work")
241 if "FAIL" not in dev[0].request("WPS_AP_PIN foo"):
242 raise Exception("Invalid WPS_AP_PIN command not rejected")
243 if "FAIL" not in dev[0].request("WPS_AP_PIN set"):
244 raise Exception("Invalid WPS_AP_PIN command not rejected")
246 def test_wpas_ap_wps_frag(dev):
247 """wpa_supplicant AP mode - WPS operations with fragmentation"""
248 id = dev[0].add_network()
249 dev[0].set_network(id, "mode", "2")
250 dev[0].set_network_quoted(id, "ssid", "wpas-ap-wps")
251 dev[0].set_network_quoted(id, "psk", "1234567890")
252 dev[0].set_network(id, "frequency", "2412")
253 dev[0].set_network(id, "scan_freq", "2412")
254 dev[0].set_network(id, "fragment_size", "300")
255 dev[0].select_network(id)
256 wait_ap_ready(dev[0])
257 bssid = dev[0].own_addr()
259 pin = dev[1].wps_read_pin()
260 dev[0].request("WPS_PIN any " + pin)
261 dev[1].scan_for_bss(bssid, freq="2412")
262 dev[1].request("WPS_PIN " + bssid + " " + pin)
263 dev[1].wait_connected(timeout=30)
265 def test_wpas_ap_wps_pbc_overlap(dev):
266 """wpa_supplicant AP mode - WPS operations with PBC overlap"""
267 id = dev[0].add_network()
268 dev[0].set_network(id, "mode", "2")
269 dev[0].set_network_quoted(id, "ssid", "wpas-ap-wps")
270 dev[0].set_network_quoted(id, "psk", "1234567890")
271 dev[0].set_network(id, "frequency", "2412")
272 dev[0].set_network(id, "scan_freq", "2412")
273 dev[0].select_network(id)
274 wait_ap_ready(dev[0])
275 bssid = dev[0].p2p_interface_addr()
277 dev[1].scan_for_bss(bssid, freq="2412")
278 dev[1].dump_monitor()
279 dev[2].scan_for_bss(bssid, freq="2412")
280 dev[2].dump_monitor()
281 dev[0].request("WPS_PBC")
282 dev[1].request("WPS_PBC " + bssid)
283 dev[2].request("WPS_PBC " + bssid)
285 ev = dev[1].wait_event(["WPS-M2D"], timeout=15)
287 raise Exception("PBC session overlap not detected (dev1)")
288 if "config_error=12" not in ev:
289 raise Exception("PBC session overlap not correctly reported (dev1)")
291 ev = dev[2].wait_event(["WPS-M2D"], timeout=15)
293 raise Exception("PBC session overlap not detected (dev2)")
294 if "config_error=12" not in ev:
295 raise Exception("PBC session overlap not correctly reported (dev2)")
297 if "FAIL-PBC-OVERLAP" not in dev[0].request("WPS_PBC"):
298 raise Exception("WPS_PBC(AP) accepted during overlap")
299 if "FAIL-PBC-OVERLAP" not in dev[0].request("WPS_PBC any"):
300 raise Exception("WPS_PBC(AP) accepted during overlap")
301 dev[0].request("WPS_CANCEL")
302 dev[1].request("WPS_CANCEL")
303 dev[2].request("WPS_CANCEL")
306 def test_wpas_ap_wps_disabled(dev):
307 """wpa_supplicant AP mode - WPS disabled"""
308 id = dev[0].add_network()
309 dev[0].set_network(id, "mode", "2")
310 dev[0].set_network_quoted(id, "ssid", "wpas-ap-no-wps")
311 dev[0].set_network_quoted(id, "psk", "12345678")
312 dev[0].set_network(id, "frequency", "2412")
313 dev[0].set_network(id, "scan_freq", "2412")
314 dev[0].set_network(id, "wps_disabled", "1")
315 dev[0].select_network(id)
316 wait_ap_ready(dev[0])
318 dev[1].connect("wpas-ap-no-wps", psk="12345678", scan_freq="2412")
319 dev[1].request("DISCONNECT")
320 dev[1].wait_disconnected()
322 def test_wpas_ap_dfs(dev):
323 """wpa_supplicant AP mode - DFS"""
324 if dev[0].get_mcc() > 1:
325 raise HwsimSkip("DFS is not supported with multi channel contexts")
328 _test_wpas_ap_dfs(dev)
331 dev[0].request("SET country 00")
332 dev[1].flush_scan_cache()
334 def _test_wpas_ap_dfs(dev):
336 dev[0].request("SET country US")
337 id = dev[0].add_network()
338 dev[0].set_network(id, "mode", "2")
339 dev[0].set_network_quoted(id, "ssid", "wpas-ap-dfs")
340 dev[0].set_network(id, "key_mgmt", "NONE")
341 dev[0].set_network(id, "frequency", "5260")
342 dev[0].set_network(id, "scan_freq", "5260")
343 dev[0].select_network(id)
345 ev = dev[0].wait_event(["DFS-CAC-START"])
347 # For now, assume DFS is not supported by all kernel builds.
348 raise HwsimSkip("CAC did not start - assume not supported")
350 ev = dev[0].wait_event(["DFS-CAC-COMPLETED"], timeout=70)
352 raise Exception("CAC did not complete")
353 if "success=1" not in ev:
354 raise Exception("CAC failed")
355 if "freq=5260" not in ev:
356 raise Exception("Unexpected DFS freq result")
358 ev = dev[0].wait_event(["CTRL-EVENT-CONNECTED"])
360 raise Exception("AP failed to start")
362 dev[1].connect("wpas-ap-dfs", key_mgmt="NONE")
365 def test_wpas_ap_disable(dev):
366 """wpa_supplicant AP mode - DISABLE_NETWORK"""
367 id = dev[0].add_network()
368 dev[0].set_network(id, "mode", "2")
369 dev[0].set_network_quoted(id, "ssid", "wpas-ap-open")
370 dev[0].set_network(id, "key_mgmt", "NONE")
371 dev[0].set_network(id, "scan_freq", "2412")
372 dev[0].select_network(id)
374 ev = dev[0].wait_event(["AP-ENABLED"])
376 raise Exception("AP-ENABLED event not seen")
377 wait_ap_ready(dev[0])
378 dev[0].request("DISABLE_NETWORK %d" % id)
379 ev = dev[0].wait_event(["AP-DISABLED"])
381 raise Exception("AP-DISABLED event not seen")
382 dev[0].wait_disconnected()
384 def test_wpas_ap_acs(dev):
385 """wpa_supplicant AP mode - ACS"""
386 res = dev[0].get_capability("acs")
387 if res is None or "ACS" not in res:
388 raise HwsimSkip("ACS not supported")
390 id = dev[0].add_network()
391 dev[0].set_network(id, "mode", "2")
392 dev[0].set_network_quoted(id, "ssid", "wpas-ap-open")
393 dev[0].set_network(id, "key_mgmt", "NONE")
394 dev[0].set_network(id, "frequency", "2417")
395 dev[0].set_network(id, "scan_freq", "2417")
396 dev[0].set_network(id, "acs", "1")
397 dev[0].select_network(id)
398 wait_ap_ready(dev[0])
400 # ACS prefers channels 1, 6, 11
401 freq = dev[0].get_status_field('freq')
403 raise Exception("Unexpected operating channel selected")
405 dev[1].connect("wpas-ap-open", key_mgmt="NONE", scan_freq=freq)
408 def test_wpas_ap_and_assoc_req_p2p_ie(dev):
409 """wpa_supplicant AP mode - unexpected P2P IE in Association Request"""
411 _test_wpas_ap_and_assoc_req_p2p_ie(dev)
413 dev[1].request("VENDOR_ELEM_REMOVE 13 *")
414 dev[0].request("P2P_SET disabled 0")
416 def _test_wpas_ap_and_assoc_req_p2p_ie(dev):
417 dev[0].request("P2P_SET disabled 1")
418 id = dev[0].add_network()
419 dev[0].set_network(id, "mode", "2")
420 dev[0].set_network_quoted(id, "ssid", "wpas-ap-open")
421 dev[0].set_network(id, "key_mgmt", "NONE")
422 dev[0].set_network(id, "frequency", "2412")
423 dev[0].set_network(id, "scan_freq", "2412")
424 dev[0].select_network(id)
425 wait_ap_ready(dev[0])
427 dev[1].request("VENDOR_ELEM_ADD 13 dd04506f9a09")
428 dev[1].connect("wpas-ap-open", key_mgmt="NONE", scan_freq="2412")
429 dev[1].request("DISCONNECT")
430 dev[1].wait_disconnected()
432 dev[0].request("DISCONNECT")
433 dev[0].wait_disconnected()
436 def test_wpas_ap_open_ht_disabled(dev):
437 """wpa_supplicant AP mode - open network and HT disabled"""
438 id = dev[0].add_network()
439 dev[0].set_network(id, "mode", "2")
440 dev[0].set_network_quoted(id, "ssid", "wpas-ap-open")
441 dev[0].set_network(id, "key_mgmt", "NONE")
442 dev[0].set_network(id, "frequency", "2412")
443 dev[0].set_network(id, "scan_freq", "2412")
444 dev[0].set_network(id, "disable_ht", "1")
445 dev[0].select_network(id)
446 wait_ap_ready(dev[0])
448 dev[1].connect("wpas-ap-open", key_mgmt="NONE", scan_freq="2412")
449 hwsim_utils.test_connectivity(dev[0], dev[1])
451 def test_wpas_ap_failures(dev):
452 """wpa_supplicant AP mode - failures"""
453 # No SSID configured for AP mode
454 id = dev[0].add_network()
455 dev[0].set_network(id, "mode", "2")
456 dev[0].set_network(id, "key_mgmt", "NONE")
457 dev[0].set_network(id, "frequency", "2412")
458 dev[0].set_network(id, "scan_freq", "2412")
459 dev[0].select_network(id)
460 ev = dev[0].wait_event([ "CTRL-EVENT-CONNECTED" ], timeout=0.1)
462 raise Exception("Unexpected connection event")
463 dev[0].request("REMOVE_NETWORK all")
465 # Invalid pbss value(2) for AP mode
466 dev[0].dump_monitor()
467 id = dev[0].add_network()
468 dev[0].set_network(id, "mode", "2")
469 dev[0].set_network_quoted(id, "ssid", "wpas-ap-open")
470 dev[0].set_network(id, "key_mgmt", "NONE")
471 dev[0].set_network(id, "frequency", "2412")
472 dev[0].set_network(id, "scan_freq", "2412")
473 dev[0].set_network(id, "pbss", "2")
474 dev[0].select_network(id)
475 ev = dev[0].wait_event([ "CTRL-EVENT-CONNECTED",
476 "CTRL-EVENT-DISCONNECTED" ], timeout=0.1)
477 if ev is not None and "CTRL-EVENT-CONNECTED" in ev:
478 raise Exception("Unexpected connection event(2)")
479 dev[0].request("REMOVE_NETWORK all")
481 def test_wpas_ap_oom(dev):
482 """wpa_supplicant AP mode - OOM"""
483 id = dev[0].add_network()
484 dev[0].set_network(id, "mode", "2")
485 dev[0].set_network_quoted(id, "ssid", "wpas-ap")
486 dev[0].set_network_quoted(id, "psk", "1234567890")
487 dev[0].set_network(id, "frequency", "2412")
488 dev[0].set_network(id, "scan_freq", "2412")
489 with alloc_fail(dev[0], 1, "=wpa_supplicant_conf_ap"):
490 dev[0].select_network(id)
491 dev[0].wait_disconnected()
492 dev[0].request("REMOVE_NETWORK all")
494 id = dev[0].add_network()
495 dev[0].set_network(id, "mode", "2")
496 dev[0].set_network_quoted(id, "ssid", "wpas-ap")
497 dev[0].set_network(id, "psk", "1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef")
498 dev[0].set_network(id, "frequency", "2412")
499 dev[0].set_network(id, "scan_freq", "2412")
500 with alloc_fail(dev[0], 1, "=wpa_supplicant_conf_ap"):
501 dev[0].select_network(id)
502 dev[0].wait_disconnected()
503 dev[0].request("REMOVE_NETWORK all")
505 id = dev[0].add_network()
506 dev[0].set_network(id, "mode", "2")
507 dev[0].set_network_quoted(id, "ssid", "wpas-ap")
508 dev[0].set_network(id, "key_mgmt", "NONE")
509 dev[0].set_network_quoted(id, "wep_key0", "hello")
510 dev[0].set_network(id, "frequency", "2412")
511 dev[0].set_network(id, "scan_freq", "2412")
512 with alloc_fail(dev[0], 1, "=wpa_supplicant_conf_ap"):
513 dev[0].select_network(id)
514 dev[0].wait_disconnected()
515 dev[0].request("REMOVE_NETWORK all")
517 wpas = WpaSupplicant(global_iface='/tmp/wpas-wlan5')
518 wpas.interface_add("wlan5")
519 wpas.request("SET manufacturer test")
520 wpas.request("SET model_name test")
521 wpas.request("SET model_number test")
522 wpas.request("SET serial_number test")
523 wpas.request("SET serial_number test")
524 wpas.request("SET serial_number test")
525 wpas.request("SET ap_vendor_elements dd0411223301")
526 id = wpas.add_network()
527 wpas.set_network(id, "mode", "2")
528 wpas.set_network_quoted(id, "ssid", "wpas-ap")
529 wpas.set_network(id, "key_mgmt", "NONE")
530 wpas.set_network(id, "frequency", "2412")
531 wpas.set_network(id, "scan_freq", "2412")
534 with alloc_fail(wpas, i, "=wpa_supplicant_conf_ap"):
535 wpas.select_network(id)
536 ev = dev[0].wait_event([ "CTRL-EVENT-CONNECTED",
537 "CTRL-EVENT-DISCONNECTED" ], timeout=1)
538 wpas.request("DISCONNECT")
539 wpas.wait_disconnected()
541 def test_wpas_ap_params(dev):
542 """wpa_supplicant AP mode - parameters"""
543 wpas = WpaSupplicant(global_iface='/tmp/wpas-wlan5')
544 wpas.interface_add("wlan5")
545 wpas.request("SET manufacturer test")
546 wpas.request("SET model_name test")
547 wpas.request("SET model_number test")
548 wpas.request("SET serial_number test")
549 wpas.request("SET serial_number test")
550 wpas.request("SET serial_number test")
551 wpas.request("SET ap_vendor_elements dd0411223301")
552 id = wpas.add_network()
553 wpas.set_network(id, "mode", "2")
554 wpas.set_network_quoted(id, "ssid", "wpas-ap")
555 wpas.set_network(id, "key_mgmt", "NONE")
556 wpas.set_network(id, "frequency", "2412")
557 wpas.set_network(id, "scan_freq", "2412")
558 wpas.select_network(id)
559 wpas.wait_connected()
560 wpas.request("DISCONNECT")
561 wpas.wait_disconnected()
563 wpas.request("SET beacon_int 200 3")
564 wpas.request("SET dtim_period 3")
565 wpas.select_network(id)
566 wpas.wait_connected()
567 wpas.request("DISCONNECT")
568 wpas.wait_disconnected()
570 wpas.set_network(id, "beacon_int", "300")
571 wpas.set_network(id, "dtim_period", "2")
572 wpas.select_network(id)
573 wpas.wait_connected()
574 if "---- AP ----" not in wpas.request("PMKSA"):
575 raise Exception("AP section missing from PMKSA output")
576 if "OK" not in wpas.request("PMKSA_FLUSH"):
577 raise Exception("PMKSA_FLUSH failed")
578 wpas.request("DISCONNECT")
579 wpas.wait_disconnected()