Updated to hostap_2_6
[mech_eap.git] / libeap / tests / hwsim / test_ibss.py
1 # IBSS test cases
2 # Copyright (c) 2013-2015, Jouni Malinen <j@w1.fi>
3 #
4 # This software may be distributed under the terms of the BSD license.
5 # See README for more details.
6
7 from remotehost import remote_compatible
8 import logging
9 logger = logging.getLogger()
10 import time
11 import re
12 import subprocess
13
14 import hwsim_utils
15 from utils import alloc_fail, wait_fail_trigger
16
17 def connect_ibss_cmd(dev, id, freq=2412):
18     dev.dump_monitor()
19     dev.select_network(id, freq=str(freq))
20
21 def wait_ibss_connection(dev):
22     logger.info(dev.ifname + " waiting for IBSS start/join to complete")
23     ev = dev.wait_connected(timeout=20,
24                             error="Connection to the IBSS timed out")
25     exp = r'<.>(CTRL-EVENT-CONNECTED) - Connection to ([0-9a-f:]*) completed.*'
26     s = re.split(exp, ev)
27     if len(s) < 3:
28         return None
29     return s[2]
30
31 def wait_4way_handshake(dev1, dev2):
32     logger.info(dev1.ifname + " waiting for 4-way handshake completion with " + dev2.ifname + " " + dev2.p2p_interface_addr())
33     ev = dev1.wait_event(["IBSS-RSN-COMPLETED " + dev2.p2p_interface_addr()],
34                          timeout=20)
35     if ev is None:
36         raise Exception("4-way handshake in IBSS timed out")
37
38 def wait_4way_handshake2(dev1, dev2, dev3):
39     logger.info(dev1.ifname + " waiting for 4-way handshake completion with " + dev2.ifname + " " + dev2.p2p_interface_addr() + " and " + dev3.p2p_interface_addr())
40     ev = dev1.wait_event(["IBSS-RSN-COMPLETED " + dev2.p2p_interface_addr(),
41                           "IBSS-RSN-COMPLETED " + dev3.p2p_interface_addr()],
42                          timeout=20)
43     if ev is None:
44         raise Exception("4-way handshake in IBSS timed out")
45     ev = dev1.wait_event(["IBSS-RSN-COMPLETED " + dev2.p2p_interface_addr(),
46                           "IBSS-RSN-COMPLETED " + dev3.p2p_interface_addr()],
47                          timeout=20)
48     if ev is None:
49         raise Exception("4-way handshake in IBSS timed out")
50
51 def add_ibss(dev, ssid, psk=None, proto=None, key_mgmt=None, pairwise=None,
52              group=None, beacon_int=None, bssid=None, scan_freq=None,
53              wep_key0=None, freq=2412, chwidth=0, group_rekey=0):
54     id = dev.add_network()
55     dev.set_network(id, "mode", "1")
56     dev.set_network(id, "frequency", str(freq))
57     if chwidth > 0:
58         dev.set_network(id, "max_oper_chwidth", str(chwidth))
59     if scan_freq:
60         dev.set_network(id, "scan_freq", str(scan_freq))
61     dev.set_network_quoted(id, "ssid", ssid)
62     if psk:
63         dev.set_network_quoted(id, "psk", psk)
64     if proto:
65         dev.set_network(id, "proto", proto)
66     if key_mgmt:
67         dev.set_network(id, "key_mgmt", key_mgmt)
68     if pairwise:
69         dev.set_network(id, "pairwise", pairwise)
70     if group:
71         dev.set_network(id, "group", group)
72     if beacon_int:
73         dev.set_network(id, "beacon_int", beacon_int)
74     if bssid:
75         dev.set_network(id, "bssid", bssid)
76     if wep_key0:
77         dev.set_network(id, "wep_key0", wep_key0)
78     if group_rekey:
79         dev.set_network(id, "group_rekey", str(group_rekey))
80     dev.request("ENABLE_NETWORK " + str(id) + " no-connect")
81     return id
82
83 def add_ibss_rsn(dev, ssid, group_rekey=0, scan_freq=None):
84     return add_ibss(dev, ssid, "12345678", "RSN", "WPA-PSK", "CCMP", "CCMP",
85                     group_rekey=group_rekey, scan_freq=scan_freq)
86
87 def add_ibss_rsn_tkip(dev, ssid):
88     return add_ibss(dev, ssid, "12345678", "RSN", "WPA-PSK", "TKIP", "TKIP")
89
90 def add_ibss_wpa_none(dev, ssid):
91     return add_ibss(dev, ssid, "12345678", "WPA", "WPA-NONE", "TKIP", "TKIP")
92
93 def add_ibss_wpa_none_ccmp(dev, ssid):
94     return add_ibss(dev, ssid, "12345678", "WPA", "WPA-NONE", "CCMP", "CCMP")
95
96 def test_ibss_rsn(dev):
97     """IBSS RSN"""
98     ssid="ibss-rsn"
99
100     logger.info("Start IBSS on the first STA")
101     id = add_ibss_rsn(dev[0], ssid)
102     connect_ibss_cmd(dev[0], id)
103     bssid0 = wait_ibss_connection(dev[0])
104
105     logger.info("Join two STAs to the IBSS")
106
107     id = add_ibss_rsn(dev[1], ssid)
108     connect_ibss_cmd(dev[1], id)
109     bssid1 = wait_ibss_connection(dev[1])
110     if bssid0 != bssid1:
111         logger.info("STA0 BSSID " + bssid0 + " differs from STA1 BSSID " + bssid1)
112         # try to merge with a scan
113         dev[1].scan()
114     wait_4way_handshake(dev[0], dev[1])
115     wait_4way_handshake(dev[1], dev[0])
116
117     id = add_ibss_rsn(dev[2], ssid)
118     connect_ibss_cmd(dev[2], id)
119     bssid2 = wait_ibss_connection(dev[2])
120     if bssid0 != bssid2:
121         logger.info("STA0 BSSID " + bssid0 + " differs from STA2 BSSID " + bssid2)
122         # try to merge with a scan
123         dev[2].scan()
124     wait_4way_handshake(dev[0], dev[2])
125     wait_4way_handshake2(dev[2], dev[0], dev[1])
126
127     # Allow some time for all peers to complete key setup
128     time.sleep(3)
129     hwsim_utils.test_connectivity(dev[0], dev[1])
130     hwsim_utils.test_connectivity(dev[0], dev[2])
131     hwsim_utils.test_connectivity(dev[1], dev[2])
132
133     dev[1].request("REMOVE_NETWORK all")
134     time.sleep(1)
135     id = add_ibss_rsn(dev[1], ssid)
136     connect_ibss_cmd(dev[1], id)
137     bssid1 = wait_ibss_connection(dev[1])
138     if bssid0 != bssid1:
139         logger.info("STA0 BSSID " + bssid0 + " differs from STA1 BSSID " + bssid1)
140         # try to merge with a scan
141         dev[1].scan()
142     wait_4way_handshake(dev[0], dev[1])
143     wait_4way_handshake(dev[1], dev[0])
144     time.sleep(3)
145     hwsim_utils.test_connectivity(dev[0], dev[1])
146
147     if "OK" not in dev[0].request("IBSS_RSN " + dev[1].p2p_interface_addr()):
148         raise Exception("IBSS_RSN command failed")
149
150     key_mgmt = dev[0].get_status_field("key_mgmt")
151     if key_mgmt != "WPA2-PSK":
152         raise Exception("Unexpected STATUS key_mgmt: " + key_mgmt)
153
154 def test_ibss_rsn_group_rekey(dev):
155     """IBSS RSN group rekeying"""
156     ssid="ibss-rsn"
157
158     logger.info("Start IBSS on the first STA")
159     id = add_ibss_rsn(dev[0], ssid, group_rekey=4, scan_freq=2412)
160     connect_ibss_cmd(dev[0], id)
161     bssid0 = wait_ibss_connection(dev[0])
162     dev[0].dump_monitor()
163
164     logger.info("Join two STAs to the IBSS")
165
166     dev[1].scan_for_bss(bssid0, freq=2412)
167     id = add_ibss_rsn(dev[1], ssid, scan_freq=2412)
168     connect_ibss_cmd(dev[1], id)
169     bssid1 = wait_ibss_connection(dev[1])
170     if bssid0 != bssid1:
171         raise Exception("STA0 BSSID " + bssid0 + " differs from STA1 BSSID " + bssid1)
172     wait_4way_handshake(dev[0], dev[1])
173     wait_4way_handshake(dev[1], dev[0])
174     dev[0].dump_monitor()
175     dev[1].dump_monitor()
176
177     hwsim_utils.test_connectivity(dev[0], dev[1])
178     ev = dev[1].wait_event(["WPA: Group rekeying completed"], timeout=10)
179     if ev is None:
180         raise Exception("No group rekeying reported")
181     hwsim_utils.test_connectivity(dev[0], dev[1])
182
183 def test_ibss_wpa_none(dev):
184     """IBSS WPA-None"""
185     ssid="ibss-wpa-none"
186
187     logger.info("Start IBSS on the first STA")
188     id = add_ibss_wpa_none(dev[0], ssid)
189     connect_ibss_cmd(dev[0], id)
190     bssid0 = wait_ibss_connection(dev[0])
191
192     # This is a bit ugly, but no one really cares about WPA-None, so there may
193     # not be enough justification to clean this up.. For now, wpa_supplicant
194     # will show two connection events with mac80211_hwsim where the first one
195     # comes with all zeros address.
196     if bssid0 == "00:00:00:00:00:00":
197         logger.info("Waiting for real BSSID on the first STA")
198         bssid0 = wait_ibss_connection(dev[0])
199
200     logger.info("Join two STAs to the IBSS")
201
202     id = add_ibss_wpa_none(dev[1], ssid)
203     connect_ibss_cmd(dev[1], id)
204     id = add_ibss_wpa_none(dev[2], ssid)
205     connect_ibss_cmd(dev[2], id)
206
207     bssid1 = wait_ibss_connection(dev[1])
208     if bssid0 != bssid1:
209         logger.info("STA0 BSSID " + bssid0 + " differs from STA1 BSSID " + bssid1)
210         bssid1 = wait_ibss_connection(dev[1])
211
212     bssid2 = wait_ibss_connection(dev[2])
213     if bssid0 != bssid2:
214         logger.info("STA0 BSSID " + bssid0 + " differs from STA2 BSSID " + bssid2)
215         bssid2 = wait_ibss_connection(dev[2])
216
217     logger.info("bssid0=%s bssid1=%s bssid2=%s" % (bssid0, bssid1, bssid2))
218
219     bss = dev[0].get_bss(bssid0)
220     if not bss:
221         bss = dev[1].get_bss(bssid1)
222         if not bss:
223             raise Exception("Could not find BSS entry for IBSS")
224     if 'flags' not in bss:
225         raise Exception("Could not get BSS flags from BSS table")
226     if "[WPA-None-TKIP]" not in bss['flags']:
227         raise Exception("Unexpected BSS flags: " + bss['flags'])
228
229     # Allow some time for all peers to complete key setup
230     time.sleep(1)
231
232     # This is supposed to work, but looks like WPA-None does not work with
233     # mac80211 currently..
234     try:
235         hwsim_utils.test_connectivity(dev[0], dev[1])
236     except Exception, e:
237         logger.info("Ignoring known connectivity failure: " + str(e))
238     try:
239         hwsim_utils.test_connectivity(dev[0], dev[2])
240     except Exception, e:
241         logger.info("Ignoring known connectivity failure: " + str(e))
242     try:
243         hwsim_utils.test_connectivity(dev[1], dev[2])
244     except Exception, e:
245         logger.info("Ignoring known connectivity failure: " + str(e))
246
247     key_mgmt = dev[0].get_status_field("key_mgmt")
248     if key_mgmt != "WPA-NONE":
249         raise Exception("Unexpected STATUS key_mgmt: " + key_mgmt)
250
251 def test_ibss_wpa_none_ccmp(dev):
252     """IBSS WPA-None/CCMP"""
253     ssid="ibss-wpa-none"
254
255     logger.info("Start IBSS on the first STA")
256     id = add_ibss_wpa_none(dev[0], ssid)
257     connect_ibss_cmd(dev[0], id)
258     bssid0 = wait_ibss_connection(dev[0])
259
260     # This is a bit ugly, but no one really cares about WPA-None, so there may
261     # not be enough justification to clean this up.. For now, wpa_supplicant
262     # will show two connection events with mac80211_hwsim where the first one
263     # comes with all zeros address.
264     if bssid0 == "00:00:00:00:00:00":
265         logger.info("Waiting for real BSSID on the first STA")
266         bssid0 = wait_ibss_connection(dev[0])
267
268
269     logger.info("Join a STA to the IBSS")
270     id = add_ibss_wpa_none(dev[1], ssid)
271     connect_ibss_cmd(dev[1], id)
272
273     bssid1 = wait_ibss_connection(dev[1])
274     if bssid0 != bssid1:
275         logger.info("STA0 BSSID " + bssid0 + " differs from STA1 BSSID " + bssid1)
276         bssid1 = wait_ibss_connection(dev[1])
277
278     logger.info("bssid0=%s bssid1=%s" % (bssid0, bssid1))
279
280     # Allow some time for all peers to complete key setup
281     time.sleep(1)
282
283     # This is supposed to work, but looks like WPA-None does not work with
284     # mac80211 currently..
285     try:
286         hwsim_utils.test_connectivity(dev[0], dev[1])
287     except Exception, e:
288         logger.info("Ignoring known connectivity failure: " + str(e))
289
290 def test_ibss_open(dev):
291     """IBSS open (no security)"""
292     ssid="ibss"
293     id = add_ibss(dev[0], ssid, key_mgmt="NONE", beacon_int="150")
294     connect_ibss_cmd(dev[0], id)
295     bssid0 = wait_ibss_connection(dev[0])
296
297     id = add_ibss(dev[1], ssid, key_mgmt="NONE", beacon_int="200")
298     connect_ibss_cmd(dev[1], id)
299     bssid1 = wait_ibss_connection(dev[1])
300     if bssid0 != bssid1:
301         logger.info("STA0 BSSID " + bssid0 + " differs from STA1 BSSID " + bssid1)
302
303     res = dev[0].request("SCAN_RESULTS")
304     if "[IBSS]" not in res:
305         res = dev[1].request("SCAN_RESULTS")
306         if "[IBSS]" not in res:
307             raise Exception("IBSS flag missing from scan results: " + res)
308     bss = dev[0].get_bss(bssid0)
309     if not bss:
310         bss = dev[1].get_bss(bssid1)
311         if not bss:
312             raise Exception("Could not find BSS entry for IBSS")
313     if 'flags' not in bss:
314         raise Exception("Could not get BSS flags from BSS table")
315     if "[IBSS]" not in bss['flags']:
316         raise Exception("Unexpected BSS flags: " + bss['flags'])
317
318     freq0 = dev[0].get_status_field("freq")
319     freq1 = dev[1].get_status_field("freq")
320     if freq0 != "2412" or freq1 != "2412":
321         raise Exception("IBSS operating frequency not reported correctly (%s %s)" % (freq0, freq1))
322
323     key_mgmt = dev[0].get_status_field("key_mgmt")
324     if key_mgmt != "NONE":
325         raise Exception("Unexpected STATUS key_mgmt: " + key_mgmt)
326
327 def test_ibss_open_fixed_bssid(dev):
328     """IBSS open (no security) and fixed BSSID"""
329     ssid="ibss"
330     bssid="02:11:22:33:44:55"
331     try:
332         dev[0].request("AP_SCAN 2")
333         add_ibss(dev[0], ssid, key_mgmt="NONE", bssid=bssid, beacon_int="150")
334         dev[0].request("REASSOCIATE")
335
336         dev[1].request("AP_SCAN 2")
337         add_ibss(dev[1], ssid, key_mgmt="NONE", bssid=bssid, beacon_int="200")
338         dev[1].request("REASSOCIATE")
339
340         bssid0 = wait_ibss_connection(dev[0])
341         bssid1 = wait_ibss_connection(dev[1])
342         if bssid0 != bssid:
343             raise Exception("STA0 BSSID " + bssid0 + " differs from fixed BSSID " + bssid)
344         if bssid1 != bssid:
345             raise Exception("STA0 BSSID " + bssid0 + " differs from fixed BSSID " + bssid)
346     finally:
347         dev[0].request("AP_SCAN 1")
348         dev[1].request("AP_SCAN 1")
349
350 def test_ibss_open_retry(dev):
351     """IBSS open (no security) with cfg80211 retry workaround"""
352     subprocess.check_call(['iw', 'dev', dev[0].ifname, 'set', 'type', 'adhoc'])
353     subprocess.check_call(['iw', 'dev', dev[0].ifname, 'ibss', 'join',
354                            'ibss-test', '2412', 'HT20', 'fixed-freq',
355                            '02:22:33:44:55:66'])
356     ssid="ibss"
357     try:
358         dev[0].request("AP_SCAN 2")
359         id = add_ibss(dev[0], ssid, key_mgmt="NONE", beacon_int="150",
360                       bssid="02:33:44:55:66:77", scan_freq=2412)
361         #connect_ibss_cmd(dev[0], id)
362         dev[0].request("REASSOCIATE")
363         bssid0 = wait_ibss_connection(dev[0])
364
365         subprocess.check_call(['iw', 'dev', dev[0].ifname, 'ibss', 'leave'])
366         time.sleep(1)
367         dev[0].request("DISCONNECT")
368     finally:
369         dev[0].request("AP_SCAN 1")
370
371 def test_ibss_rsn_tkip(dev):
372     """IBSS RSN with TKIP as the cipher"""
373     ssid="ibss-rsn-tkip"
374
375     id = add_ibss_rsn_tkip(dev[0], ssid)
376     connect_ibss_cmd(dev[0], id)
377     bssid0 = wait_ibss_connection(dev[0])
378
379     id = add_ibss_rsn_tkip(dev[1], ssid)
380     connect_ibss_cmd(dev[1], id)
381     bssid1 = wait_ibss_connection(dev[1])
382     if bssid0 != bssid1:
383         logger.info("STA0 BSSID " + bssid0 + " differs from STA1 BSSID " + bssid1)
384         # try to merge with a scan
385         dev[1].scan()
386     wait_4way_handshake(dev[0], dev[1])
387     wait_4way_handshake(dev[1], dev[0])
388
389 def test_ibss_wep(dev):
390     """IBSS with WEP"""
391     ssid="ibss-wep"
392
393     id = add_ibss(dev[0], ssid, key_mgmt="NONE", wep_key0='"hello"')
394     connect_ibss_cmd(dev[0], id)
395     bssid0 = wait_ibss_connection(dev[0])
396
397     id = add_ibss(dev[1], ssid, key_mgmt="NONE", wep_key0='"hello"')
398     connect_ibss_cmd(dev[1], id)
399     bssid1 = wait_ibss_connection(dev[1])
400
401 @remote_compatible
402 def test_ibss_rsn_error_case(dev):
403     """IBSS RSN regression test for IBSS_RSN prior IBSS setup"""
404     if "FAIL" not in dev[0].request("IBSS_RSN 02:03:04:05:06:07"):
405         raise Exception("Unexpected IBSS_RSN result")
406
407 def test_ibss_5ghz(dev):
408     """IBSS on 5 GHz band"""
409     try:
410         _test_ibss_5ghz(dev)
411     finally:
412         subprocess.call(['iw', 'reg', 'set', '00'])
413         dev[0].flush_scan_cache()
414         dev[1].flush_scan_cache()
415
416 def _test_ibss_5ghz(dev):
417     subprocess.call(['iw', 'reg', 'set', 'US'])
418     for i in range(2):
419         for j in range(5):
420             ev = dev[i].wait_event(["CTRL-EVENT-REGDOM-CHANGE"], timeout=5)
421             if ev is None:
422                 raise Exception("No regdom change event")
423             if "alpha2=US" in ev:
424                 break
425         dev[i].dump_monitor()
426
427     ssid="ibss"
428     id = add_ibss(dev[0], ssid, key_mgmt="NONE", beacon_int="150", freq=5180)
429     connect_ibss_cmd(dev[0], id, freq=5180)
430     bssid0 = wait_ibss_connection(dev[0])
431
432     dev[1].scan_for_bss(bssid0, freq=5180)
433     id = add_ibss(dev[1], ssid, key_mgmt="NONE", beacon_int="200", freq=5180)
434     connect_ibss_cmd(dev[1], id, freq=5180)
435     bssid1 = wait_ibss_connection(dev[1])
436     if bssid0 != bssid1:
437         logger.info("STA0 BSSID " + bssid0 + " differs from STA1 BSSID " + bssid1)
438
439     dev[0].request("DISCONNECT")
440     dev[1].request("DISCONNECT")
441     dev[0].dump_monitor()
442     dev[1].dump_monitor()
443
444 def test_ibss_vht_80p80(dev):
445     """IBSS on VHT 80+80 MHz channel"""
446     try:
447         _test_ibss_vht_80p80(dev)
448     finally:
449         subprocess.call(['iw', 'reg', 'set', '00'])
450         dev[0].flush_scan_cache()
451         dev[1].flush_scan_cache()
452
453 def _test_ibss_vht_80p80(dev):
454     subprocess.call(['iw', 'reg', 'set', 'US'])
455     for i in range(2):
456         for j in range(5):
457             ev = dev[i].wait_event(["CTRL-EVENT-REGDOM-CHANGE"], timeout=5)
458             if ev is None:
459                 raise Exception("No regdom change event")
460             if "alpha2=US" in ev:
461                 break
462         dev[i].dump_monitor()
463
464     ssid="ibss"
465     id = add_ibss(dev[0], ssid, key_mgmt="NONE", freq=5180, chwidth=3)
466     connect_ibss_cmd(dev[0], id, freq=5180)
467     bssid0 = wait_ibss_connection(dev[0])
468     sig = dev[0].request("SIGNAL_POLL").splitlines()
469     if "FREQUENCY=5180" not in sig:
470         raise Exception("Unexpected SIGNAL_POLL value(1): " + str(sig))
471     if "WIDTH=80+80 MHz" not in sig:
472         raise Exception("Unexpected SIGNAL_POLL value(2): " + str(sig))
473     if "CENTER_FRQ1=5210" not in sig:
474         raise Exception("Unexpected SIGNAL_POLL value(3): " + str(sig))
475     if "CENTER_FRQ2=5775" not in sig:
476         raise Exception("Unexpected SIGNAL_POLL value(4): " + str(sig))
477
478     dev[1].scan_for_bss(bssid0, freq=5180)
479     id = add_ibss(dev[1], ssid, key_mgmt="NONE", freq=5180, chwidth=3)
480     connect_ibss_cmd(dev[1], id, freq=5180)
481     bssid1 = wait_ibss_connection(dev[1])
482     if bssid0 != bssid1:
483         logger.info("STA0 BSSID " + bssid0 + " differs from STA1 BSSID " + bssid1)
484
485     sig = dev[1].request("SIGNAL_POLL").splitlines()
486     if "FREQUENCY=5180" not in sig:
487         raise Exception("Unexpected SIGNAL_POLL value(1b): " + str(sig))
488     logger.info("STA1 SIGNAL_POLL: " + str(sig))
489     # For now, don't report errors on joining STA failing to get 80+80 MHZ
490     # since mac80211 missed functionality for that to work.
491
492     dev[0].request("DISCONNECT")
493     dev[1].request("DISCONNECT")
494     dev[0].dump_monitor()
495     dev[1].dump_monitor()
496
497 def test_ibss_rsn_oom(dev):
498     """IBSS RSN OOM during wpa_init"""
499     with alloc_fail(dev[0], 1, "wpa_init"):
500         ssid="ibss-rsn"
501         id = add_ibss_rsn(dev[0], ssid, scan_freq=2412)
502         connect_ibss_cmd(dev[0], id)
503         bssid0 = wait_ibss_connection(dev[0])
504     dev[0].request("REMOVE_NETWORK all")
505     dev[0].dump_monitor()
506
507     with alloc_fail(dev[0], 1, "=ibss_rsn_init"):
508         ssid="ibss-rsn"
509         id = add_ibss_rsn(dev[0], ssid, scan_freq=2412)
510         connect_ibss_cmd(dev[0], id)
511         bssid0 = wait_ibss_connection(dev[0])
512     dev[0].request("REMOVE_NETWORK all")
513     dev[0].dump_monitor()
514
515 def send_eapol_rx(dev, dst):
516     if "OK" not in dev.request("EAPOL_RX %s 0203005f02008a001000000000000000013a54fb19d8a785f5986bdc2ba800553550bc9513e6603eb50809154588c22b110000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000" % dst):
517         raise Exception("EAPOL_RX for %s failed" % dst)
518
519 def test_ibss_rsn_eapol_trigger(dev):
520     """IBSS RSN and EAPOL trigger for a new peer"""
521     ssid="ibss-rsn"
522
523     id = add_ibss_rsn(dev[0], ssid, scan_freq=2412)
524     connect_ibss_cmd(dev[0], id)
525     bssid0 = wait_ibss_connection(dev[0])
526
527     send_eapol_rx(dev[0], "02:ff:00:00:00:01")
528     send_eapol_rx(dev[0], "02:ff:00:00:00:01")
529
530     dst = "02:ff:00:00:00:01"
531     logger.info("Too short EAPOL frame")
532     if "OK" not in dev[0].request("EAPOL_RX %s 0203005e02008a001000000000000000013a54fb19d8a785f5986bdc2ba800553550bc9513e6603eb50809154588c22b1100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000" % dst):
533         raise Exception("EAPOL_RX for %s failed" % dst)
534     logger.info("RSN: EAPOL frame (type 255) discarded, not a Key frame")
535     if "OK" not in dev[0].request("EAPOL_RX %s 02ff005f02008a001000000000000000013a54fb19d8a785f5986bdc2ba800553550bc9513e6603eb50809154588c22b110000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000" % dst):
536         raise Exception("EAPOL_RX for %s failed" % dst)
537     logger.info("RSN: EAPOL frame payload size 96 invalid (frame size 99)")
538     if "OK" not in dev[0].request("EAPOL_RX %s 0203006002008a001000000000000000013a54fb19d8a785f5986bdc2ba800553550bc9513e6603eb50809154588c22b110000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000" % dst):
539         raise Exception("EAPOL_RX for %s failed" % dst)
540     logger.info("RSN: EAPOL-Key type (255) unknown, discarded")
541     if "OK" not in dev[0].request("EAPOL_RX %s 0203005fff008a001000000000000000013a54fb19d8a785f5986bdc2ba800553550bc9513e6603eb50809154588c22b110000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000" % dst):
542         raise Exception("EAPOL_RX for %s failed" % dst)
543
544     with alloc_fail(dev[0], 1, "ibss_rsn_rx_eapol"):
545         send_eapol_rx(dev[0], "02:ff:00:00:00:02")
546         wait_fail_trigger(dev[0], "GET_ALLOC_FAIL")
547
548     with alloc_fail(dev[0], 1, "wpa_auth_sta_init;ibss_rsn_auth_init"):
549         send_eapol_rx(dev[0], "02:ff:00:00:00:03")
550         wait_fail_trigger(dev[0], "GET_ALLOC_FAIL")
551
552     with alloc_fail(dev[0], 1, "=ibss_rsn_peer_init"):
553         send_eapol_rx(dev[0], "02:ff:00:00:00:04")
554         wait_fail_trigger(dev[0], "GET_ALLOC_FAIL")
555
556     with alloc_fail(dev[0], 1, "ibss_rsn_process_rx_eapol"):
557         send_eapol_rx(dev[0], "02:ff:00:00:00:05")
558         wait_fail_trigger(dev[0], "GET_ALLOC_FAIL")
559
560     with alloc_fail(dev[0], 1,
561                     "wpa_sm_set_assoc_wpa_ie_default;ibss_rsn_supp_init"):
562         send_eapol_rx(dev[0], "02:ff:00:00:00:06")
563         wait_fail_trigger(dev[0], "GET_ALLOC_FAIL")
564
565     with alloc_fail(dev[0], 1, "wpa_sm_init;ibss_rsn_supp_init"):
566         send_eapol_rx(dev[0], "02:ff:00:00:00:07")
567         wait_fail_trigger(dev[0], "GET_ALLOC_FAIL")
568
569     with alloc_fail(dev[0], 1, "=ibss_rsn_supp_init"):
570         send_eapol_rx(dev[0], "02:ff:00:00:00:08")
571         wait_fail_trigger(dev[0], "GET_ALLOC_FAIL")
572
573     with alloc_fail(dev[0], 1, "supp_alloc_eapol"):
574         send_eapol_rx(dev[0], "02:ff:00:00:00:09")
575         wait_fail_trigger(dev[0], "GET_ALLOC_FAIL")
576
577     with alloc_fail(dev[0], 1, "wpa_validate_wpa_ie;ibss_rsn_auth_init"):
578         send_eapol_rx(dev[0], "02:ff:00:00:00:0a")
579         wait_fail_trigger(dev[0], "GET_ALLOC_FAIL")
580
581     logger.info("RSN: Timeout on waiting Authentication frame response")
582     if "OK" not in dev[0].request("IBSS_RSN 02:ff:00:00:00:0b"):
583         raise Exception("Unexpected IBSS_RSN result")
584     time.sleep(1.1)