]>
git.ipfire.org Git - thirdparty/hostap.git/blob - tests/hwsim/test_ibss.py
2 # Copyright (c) 2013-2015, Jouni Malinen <j@w1.fi>
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
9 logger
= logging
. getLogger ()
15 from utils
import alloc_fail
, wait_fail_trigger
17 def connect_ibss_cmd ( dev
, id , freq
= 2412 ):
19 dev
. select_network ( id , freq
= str ( freq
))
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.*'
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 ()],
36 raise Exception ( "4-way handshake in IBSS timed out" )
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 ()],
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 ()],
49 raise Exception ( "4-way handshake in IBSS timed out" )
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
))
58 dev
. set_network ( id , "max_oper_chwidth" , str ( chwidth
))
60 dev
. set_network ( id , "scan_freq" , str ( scan_freq
))
61 dev
. set_network_quoted ( id , "ssid" , ssid
)
63 dev
. set_network_quoted ( id , "psk" , psk
)
65 dev
. set_network ( id , "proto" , proto
)
67 dev
. set_network ( id , "key_mgmt" , key_mgmt
)
69 dev
. set_network ( id , "pairwise" , pairwise
)
71 dev
. set_network ( id , "group" , group
)
73 dev
. set_network ( id , "beacon_int" , beacon_int
)
75 dev
. set_network ( id , "bssid" , bssid
)
77 dev
. set_network ( id , "wep_key0" , wep_key0
)
79 dev
. set_network ( id , "group_rekey" , str ( group_rekey
))
80 dev
. request ( "ENABLE_NETWORK " + str ( id ) + " no-connect" )
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
)
87 def add_ibss_rsn_tkip ( dev
, ssid
):
88 return add_ibss ( dev
, ssid
, "12345678" , "RSN" , "WPA-PSK" , "TKIP" , "TKIP" )
90 def add_ibss_wpa_none ( dev
, ssid
):
91 return add_ibss ( dev
, ssid
, "12345678" , "WPA" , "WPA-NONE" , "TKIP" , "TKIP" )
93 def add_ibss_wpa_none_ccmp ( dev
, ssid
):
94 return add_ibss ( dev
, ssid
, "12345678" , "WPA" , "WPA-NONE" , "CCMP" , "CCMP" )
96 def test_ibss_rsn ( dev
):
100 logger
. info ( "Start IBSS on the first STA" )
101 id = add_ibss_rsn ( dev
[ 0 ], ssid
)
102 # FIX: For now, this disables HT to avoid a strange issue with mac80211
103 # frame reordering during the final test_connectivity() call. Once that is
104 # figured out, these disable_ht=1 calls should be removed from the test
106 dev
[ 0 ]. set_network ( id , "disable_ht" , "1" )
107 connect_ibss_cmd ( dev
[ 0 ], id )
108 bssid0
= wait_ibss_connection ( dev
[ 0 ])
110 logger
. info ( "Join two STAs to the IBSS" )
112 id = add_ibss_rsn ( dev
[ 1 ], ssid
)
113 dev
[ 1 ]. set_network ( id , "disable_ht" , "1" )
114 connect_ibss_cmd ( dev
[ 1 ], id )
115 bssid1
= wait_ibss_connection ( dev
[ 1 ])
117 logger
. info ( "STA0 BSSID " + bssid0
+ " differs from STA1 BSSID " + bssid1
)
118 # try to merge with a scan
120 wait_4way_handshake ( dev
[ 0 ], dev
[ 1 ])
121 wait_4way_handshake ( dev
[ 1 ], dev
[ 0 ])
123 id = add_ibss_rsn ( dev
[ 2 ], ssid
)
124 connect_ibss_cmd ( dev
[ 2 ], id )
125 bssid2
= wait_ibss_connection ( dev
[ 2 ])
127 logger
. info ( "STA0 BSSID " + bssid0
+ " differs from STA2 BSSID " + bssid2
)
128 # try to merge with a scan
130 wait_4way_handshake ( dev
[ 0 ], dev
[ 2 ])
131 wait_4way_handshake2 ( dev
[ 2 ], dev
[ 0 ], dev
[ 1 ])
133 # Allow some time for all peers to complete key setup
135 hwsim_utils
. test_connectivity ( dev
[ 0 ], dev
[ 1 ])
136 hwsim_utils
. test_connectivity ( dev
[ 0 ], dev
[ 2 ])
137 hwsim_utils
. test_connectivity ( dev
[ 1 ], dev
[ 2 ])
139 dev
[ 1 ]. request ( "REMOVE_NETWORK all" )
141 id = add_ibss_rsn ( dev
[ 1 ], ssid
)
142 dev
[ 1 ]. set_network ( id , "disable_ht" , "1" )
143 connect_ibss_cmd ( dev
[ 1 ], id )
144 bssid1
= wait_ibss_connection ( dev
[ 1 ])
146 logger
. info ( "STA0 BSSID " + bssid0
+ " differs from STA1 BSSID " + bssid1
)
147 # try to merge with a scan
149 wait_4way_handshake ( dev
[ 0 ], dev
[ 1 ])
150 wait_4way_handshake ( dev
[ 1 ], dev
[ 0 ])
152 hwsim_utils
. test_connectivity ( dev
[ 0 ], dev
[ 1 ])
154 if "OK" not in dev
[ 0 ]. request ( "IBSS_RSN " + dev
[ 1 ]. p2p_interface_addr ()):
155 raise Exception ( "IBSS_RSN command failed" )
157 key_mgmt
= dev
[ 0 ]. get_status_field ( "key_mgmt" )
158 if key_mgmt
!= "WPA2-PSK" :
159 raise Exception ( "Unexpected STATUS key_mgmt: " + key_mgmt
)
161 def test_ibss_rsn_group_rekey ( dev
):
162 """IBSS RSN group rekeying"""
165 logger
. info ( "Start IBSS on the first STA" )
166 id = add_ibss_rsn ( dev
[ 0 ], ssid
, group_rekey
= 4 , scan_freq
= 2412 )
167 connect_ibss_cmd ( dev
[ 0 ], id )
168 bssid0
= wait_ibss_connection ( dev
[ 0 ])
169 dev
[ 0 ]. dump_monitor ()
171 logger
. info ( "Join two STAs to the IBSS" )
173 dev
[ 1 ]. scan_for_bss ( bssid0
, freq
= 2412 )
174 id = add_ibss_rsn ( dev
[ 1 ], ssid
, scan_freq
= 2412 )
175 connect_ibss_cmd ( dev
[ 1 ], id )
176 bssid1
= wait_ibss_connection ( dev
[ 1 ])
178 raise Exception ( "STA0 BSSID " + bssid0
+ " differs from STA1 BSSID " + bssid1
)
179 wait_4way_handshake ( dev
[ 0 ], dev
[ 1 ])
180 wait_4way_handshake ( dev
[ 1 ], dev
[ 0 ])
181 dev
[ 0 ]. dump_monitor ()
182 dev
[ 1 ]. dump_monitor ()
184 hwsim_utils
. test_connectivity ( dev
[ 0 ], dev
[ 1 ])
185 ev
= dev
[ 1 ]. wait_event ([ "WPA: Group rekeying completed" ], timeout
= 10 )
187 raise Exception ( "No group rekeying reported" )
188 hwsim_utils
. test_connectivity ( dev
[ 0 ], dev
[ 1 ])
190 def test_ibss_wpa_none ( dev
):
192 ssid
= "ibss-wpa-none"
194 logger
. info ( "Start IBSS on the first STA" )
195 id = add_ibss_wpa_none ( dev
[ 0 ], ssid
)
196 connect_ibss_cmd ( dev
[ 0 ], id )
197 bssid0
= wait_ibss_connection ( dev
[ 0 ])
199 # This is a bit ugly, but no one really cares about WPA-None, so there may
200 # not be enough justification to clean this up.. For now, wpa_supplicant
201 # will show two connection events with mac80211_hwsim where the first one
202 # comes with all zeros address.
203 if bssid0
== "00:00:00:00:00:00" :
204 logger
. info ( "Waiting for real BSSID on the first STA" )
205 bssid0
= wait_ibss_connection ( dev
[ 0 ])
207 logger
. info ( "Join two STAs to the IBSS" )
209 id = add_ibss_wpa_none ( dev
[ 1 ], ssid
)
210 connect_ibss_cmd ( dev
[ 1 ], id )
211 id = add_ibss_wpa_none ( dev
[ 2 ], ssid
)
212 connect_ibss_cmd ( dev
[ 2 ], id )
214 bssid1
= wait_ibss_connection ( dev
[ 1 ])
216 logger
. info ( "STA0 BSSID " + bssid0
+ " differs from STA1 BSSID " + bssid1
)
217 bssid1
= wait_ibss_connection ( dev
[ 1 ])
219 bssid2
= wait_ibss_connection ( dev
[ 2 ])
221 logger
. info ( "STA0 BSSID " + bssid0
+ " differs from STA2 BSSID " + bssid2
)
222 bssid2
= wait_ibss_connection ( dev
[ 2 ])
224 logger
. info ( "bssid0= %s bssid1= %s bssid2= %s " % ( bssid0
, bssid1
, bssid2
))
226 bss
= dev
[ 0 ]. get_bss ( bssid0
)
228 bss
= dev
[ 1 ]. get_bss ( bssid1
)
230 raise Exception ( "Could not find BSS entry for IBSS" )
231 if 'flags' not in bss
:
232 raise Exception ( "Could not get BSS flags from BSS table" )
233 if "[WPA-None-TKIP]" not in bss
[ 'flags' ]:
234 raise Exception ( "Unexpected BSS flags: " + bss
[ 'flags' ])
236 # Allow some time for all peers to complete key setup
239 # This is supposed to work, but looks like WPA-None does not work with
240 # mac80211 currently..
242 hwsim_utils
. test_connectivity ( dev
[ 0 ], dev
[ 1 ])
243 except Exception as e
:
244 logger
. info ( "Ignoring known connectivity failure: " + str ( e
))
246 hwsim_utils
. test_connectivity ( dev
[ 0 ], dev
[ 2 ])
247 except Exception as e
:
248 logger
. info ( "Ignoring known connectivity failure: " + str ( e
))
250 hwsim_utils
. test_connectivity ( dev
[ 1 ], dev
[ 2 ])
251 except Exception as e
:
252 logger
. info ( "Ignoring known connectivity failure: " + str ( e
))
254 key_mgmt
= dev
[ 0 ]. get_status_field ( "key_mgmt" )
255 if key_mgmt
!= "WPA-NONE" :
256 raise Exception ( "Unexpected STATUS key_mgmt: " + key_mgmt
)
258 def test_ibss_wpa_none_ccmp ( dev
):
259 """IBSS WPA-None/CCMP"""
260 ssid
= "ibss-wpa-none"
262 logger
. info ( "Start IBSS on the first STA" )
263 id = add_ibss_wpa_none ( dev
[ 0 ], ssid
)
264 connect_ibss_cmd ( dev
[ 0 ], id )
265 bssid0
= wait_ibss_connection ( dev
[ 0 ])
267 # This is a bit ugly, but no one really cares about WPA-None, so there may
268 # not be enough justification to clean this up.. For now, wpa_supplicant
269 # will show two connection events with mac80211_hwsim where the first one
270 # comes with all zeros address.
271 if bssid0
== "00:00:00:00:00:00" :
272 logger
. info ( "Waiting for real BSSID on the first STA" )
273 bssid0
= wait_ibss_connection ( dev
[ 0 ])
276 logger
. info ( "Join a STA to the IBSS" )
277 id = add_ibss_wpa_none ( dev
[ 1 ], ssid
)
278 connect_ibss_cmd ( dev
[ 1 ], id )
280 bssid1
= wait_ibss_connection ( dev
[ 1 ])
282 logger
. info ( "STA0 BSSID " + bssid0
+ " differs from STA1 BSSID " + bssid1
)
283 bssid1
= wait_ibss_connection ( dev
[ 1 ])
285 logger
. info ( "bssid0= %s bssid1= %s " % ( bssid0
, bssid1
))
287 # Allow some time for all peers to complete key setup
290 # This is supposed to work, but looks like WPA-None does not work with
291 # mac80211 currently..
293 hwsim_utils
. test_connectivity ( dev
[ 0 ], dev
[ 1 ])
294 except Exception as e
:
295 logger
. info ( "Ignoring known connectivity failure: " + str ( e
))
297 def test_ibss_open ( dev
):
298 """IBSS open (no security)"""
300 id = add_ibss ( dev
[ 0 ], ssid
, key_mgmt
= "NONE" , beacon_int
= "150" )
301 connect_ibss_cmd ( dev
[ 0 ], id )
302 bssid0
= wait_ibss_connection ( dev
[ 0 ])
304 id = add_ibss ( dev
[ 1 ], ssid
, key_mgmt
= "NONE" , beacon_int
= "200" )
305 connect_ibss_cmd ( dev
[ 1 ], id )
306 bssid1
= wait_ibss_connection ( dev
[ 1 ])
308 logger
. info ( "STA0 BSSID " + bssid0
+ " differs from STA1 BSSID " + bssid1
)
310 res
= dev
[ 0 ]. request ( "SCAN_RESULTS" )
311 if "[IBSS]" not in res
:
312 res
= dev
[ 1 ]. request ( "SCAN_RESULTS" )
313 if "[IBSS]" not in res
:
314 raise Exception ( "IBSS flag missing from scan results: " + res
)
315 bss
= dev
[ 0 ]. get_bss ( bssid0
)
317 bss
= dev
[ 1 ]. get_bss ( bssid1
)
319 raise Exception ( "Could not find BSS entry for IBSS" )
320 if 'flags' not in bss
:
321 raise Exception ( "Could not get BSS flags from BSS table" )
322 if "[IBSS]" not in bss
[ 'flags' ]:
323 raise Exception ( "Unexpected BSS flags: " + bss
[ 'flags' ])
325 freq0
= dev
[ 0 ]. get_status_field ( "freq" )
326 freq1
= dev
[ 1 ]. get_status_field ( "freq" )
327 if freq0
!= "2412" or freq1
!= "2412" :
328 raise Exception ( "IBSS operating frequency not reported correctly ( %s %s )" % ( freq0
, freq1
))
330 key_mgmt
= dev
[ 0 ]. get_status_field ( "key_mgmt" )
331 if key_mgmt
!= "NONE" :
332 raise Exception ( "Unexpected STATUS key_mgmt: " + key_mgmt
)
334 def test_ibss_open_fixed_bssid ( dev
):
335 """IBSS open (no security) and fixed BSSID"""
337 bssid
= "02:11:22:33:44:55"
339 dev
[ 0 ]. request ( "AP_SCAN 2" )
340 add_ibss ( dev
[ 0 ], ssid
, key_mgmt
= "NONE" , bssid
= bssid
, beacon_int
= "150" )
341 dev
[ 0 ]. request ( "REASSOCIATE" )
343 dev
[ 1 ]. request ( "AP_SCAN 2" )
344 add_ibss ( dev
[ 1 ], ssid
, key_mgmt
= "NONE" , bssid
= bssid
, beacon_int
= "200" )
345 dev
[ 1 ]. request ( "REASSOCIATE" )
347 bssid0
= wait_ibss_connection ( dev
[ 0 ])
348 bssid1
= wait_ibss_connection ( dev
[ 1 ])
350 raise Exception ( "STA0 BSSID " + bssid0
+ " differs from fixed BSSID " + bssid
)
352 raise Exception ( "STA0 BSSID " + bssid0
+ " differs from fixed BSSID " + bssid
)
354 dev
[ 0 ]. request ( "AP_SCAN 1" )
355 dev
[ 1 ]. request ( "AP_SCAN 1" )
357 def test_ibss_open_retry ( dev
):
358 """IBSS open (no security) with cfg80211 retry workaround"""
359 subprocess
. check_call ([ 'iw' , 'dev' , dev
[ 0 ]. ifname
, 'set' , 'type' , 'adhoc' ])
360 subprocess
. check_call ([ 'iw' , 'dev' , dev
[ 0 ]. ifname
, 'ibss' , 'join' ,
361 'ibss-test' , '2412' , 'HT20' , 'fixed-freq' ,
362 '02:22:33:44:55:66' ])
365 dev
[ 0 ]. request ( "AP_SCAN 2" )
366 id = add_ibss ( dev
[ 0 ], ssid
, key_mgmt
= "NONE" , beacon_int
= "150" ,
367 bssid
= "02:33:44:55:66:77" , scan_freq
= 2412 )
368 #connect_ibss_cmd(dev[0], id)
369 dev
[ 0 ]. request ( "REASSOCIATE" )
370 bssid0
= wait_ibss_connection ( dev
[ 0 ])
372 subprocess
. check_call ([ 'iw' , 'dev' , dev
[ 0 ]. ifname
, 'ibss' , 'leave' ])
374 dev
[ 0 ]. request ( "DISCONNECT" )
376 dev
[ 0 ]. request ( "AP_SCAN 1" )
378 def test_ibss_rsn_tkip ( dev
):
379 """IBSS RSN with TKIP as the cipher"""
380 ssid
= "ibss-rsn-tkip"
382 id = add_ibss_rsn_tkip ( dev
[ 0 ], ssid
)
383 connect_ibss_cmd ( dev
[ 0 ], id )
384 bssid0
= wait_ibss_connection ( dev
[ 0 ])
386 id = add_ibss_rsn_tkip ( dev
[ 1 ], ssid
)
387 connect_ibss_cmd ( dev
[ 1 ], id )
388 bssid1
= wait_ibss_connection ( dev
[ 1 ])
390 logger
. info ( "STA0 BSSID " + bssid0
+ " differs from STA1 BSSID " + bssid1
)
391 # try to merge with a scan
393 wait_4way_handshake ( dev
[ 0 ], dev
[ 1 ])
394 wait_4way_handshake ( dev
[ 1 ], dev
[ 0 ])
396 def test_ibss_wep ( dev
):
400 id = add_ibss ( dev
[ 0 ], ssid
, key_mgmt
= "NONE" , wep_key0
= '"hello"' )
401 connect_ibss_cmd ( dev
[ 0 ], id )
402 bssid0
= wait_ibss_connection ( dev
[ 0 ])
404 id = add_ibss ( dev
[ 1 ], ssid
, key_mgmt
= "NONE" , wep_key0
= '"hello"' )
405 connect_ibss_cmd ( dev
[ 1 ], id )
406 bssid1
= wait_ibss_connection ( dev
[ 1 ])
409 def test_ibss_rsn_error_case ( dev
):
410 """IBSS RSN regression test for IBSS_RSN prior IBSS setup"""
411 if "FAIL" not in dev
[ 0 ]. request ( "IBSS_RSN 02:03:04:05:06:07" ):
412 raise Exception ( "Unexpected IBSS_RSN result" )
414 def test_ibss_5ghz ( dev
):
415 """IBSS on 5 GHz band"""
419 subprocess
. call ([ 'iw' , 'reg' , 'set' , '00' ])
420 dev
[ 0 ]. flush_scan_cache ()
421 dev
[ 1 ]. flush_scan_cache ()
423 def _test_ibss_5ghz ( dev
):
424 subprocess
. call ([ 'iw' , 'reg' , 'set' , 'US' ])
427 ev
= dev
[ i
]. wait_event ([ "CTRL-EVENT-REGDOM-CHANGE" ], timeout
= 5 )
429 raise Exception ( "No regdom change event" )
430 if "alpha2=US" in ev
:
432 dev
[ i
]. dump_monitor ()
435 id = add_ibss ( dev
[ 0 ], ssid
, key_mgmt
= "NONE" , beacon_int
= "150" , freq
= 5180 )
436 connect_ibss_cmd ( dev
[ 0 ], id , freq
= 5180 )
437 bssid0
= wait_ibss_connection ( dev
[ 0 ])
439 dev
[ 1 ]. scan_for_bss ( bssid0
, freq
= 5180 )
440 id = add_ibss ( dev
[ 1 ], ssid
, key_mgmt
= "NONE" , beacon_int
= "200" , freq
= 5180 )
441 connect_ibss_cmd ( dev
[ 1 ], id , freq
= 5180 )
442 bssid1
= wait_ibss_connection ( dev
[ 1 ])
444 logger
. info ( "STA0 BSSID " + bssid0
+ " differs from STA1 BSSID " + bssid1
)
446 dev
[ 0 ]. request ( "DISCONNECT" )
447 dev
[ 1 ]. request ( "DISCONNECT" )
448 dev
[ 0 ]. dump_monitor ()
449 dev
[ 1 ]. dump_monitor ()
451 def test_ibss_vht_80p80 ( dev
):
452 """IBSS on VHT 80+80 MHz channel"""
454 _test_ibss_vht_80p80 ( dev
)
456 subprocess
. call ([ 'iw' , 'reg' , 'set' , '00' ])
457 dev
[ 0 ]. flush_scan_cache ()
458 dev
[ 1 ]. flush_scan_cache ()
460 def _test_ibss_vht_80p80 ( dev
):
461 subprocess
. call ([ 'iw' , 'reg' , 'set' , 'US' ])
464 ev
= dev
[ i
]. wait_event ([ "CTRL-EVENT-REGDOM-CHANGE" ], timeout
= 5 )
466 raise Exception ( "No regdom change event" )
467 if "alpha2=US" in ev
:
469 dev
[ i
]. dump_monitor ()
472 id = add_ibss ( dev
[ 0 ], ssid
, key_mgmt
= "NONE" , freq
= 5180 , chwidth
= 3 )
473 connect_ibss_cmd ( dev
[ 0 ], id , freq
= 5180 )
474 bssid0
= wait_ibss_connection ( dev
[ 0 ])
475 sig
= dev
[ 0 ]. request ( "SIGNAL_POLL" ). splitlines ()
476 if "FREQUENCY=5180" not in sig
:
477 raise Exception ( "Unexpected SIGNAL_POLL value(1): " + str ( sig
))
478 if "WIDTH=80+80 MHz" not in sig
:
479 raise Exception ( "Unexpected SIGNAL_POLL value(2): " + str ( sig
))
480 if "CENTER_FRQ1=5210" not in sig
:
481 raise Exception ( "Unexpected SIGNAL_POLL value(3): " + str ( sig
))
482 if "CENTER_FRQ2=5775" not in sig
:
483 raise Exception ( "Unexpected SIGNAL_POLL value(4): " + str ( sig
))
485 dev
[ 1 ]. scan_for_bss ( bssid0
, freq
= 5180 )
486 id = add_ibss ( dev
[ 1 ], ssid
, key_mgmt
= "NONE" , freq
= 5180 , chwidth
= 3 )
487 connect_ibss_cmd ( dev
[ 1 ], id , freq
= 5180 )
488 bssid1
= wait_ibss_connection ( dev
[ 1 ])
490 logger
. info ( "STA0 BSSID " + bssid0
+ " differs from STA1 BSSID " + bssid1
)
492 sig
= dev
[ 1 ]. request ( "SIGNAL_POLL" ). splitlines ()
493 if "FREQUENCY=5180" not in sig
:
494 raise Exception ( "Unexpected SIGNAL_POLL value(1b): " + str ( sig
))
495 logger
. info ( "STA1 SIGNAL_POLL: " + str ( sig
))
496 # For now, don't report errors on joining STA failing to get 80+80 MHZ
497 # since mac80211 missed functionality for that to work.
499 dev
[ 0 ]. request ( "DISCONNECT" )
500 dev
[ 1 ]. request ( "DISCONNECT" )
501 dev
[ 0 ]. dump_monitor ()
502 dev
[ 1 ]. dump_monitor ()
504 def test_ibss_rsn_oom ( dev
):
505 """IBSS RSN OOM during wpa_init"""
506 with
alloc_fail ( dev
[ 0 ], 1 , "wpa_init" ):
508 id = add_ibss_rsn ( dev
[ 0 ], ssid
, scan_freq
= 2412 )
509 connect_ibss_cmd ( dev
[ 0 ], id )
510 bssid0
= wait_ibss_connection ( dev
[ 0 ])
511 dev
[ 0 ]. request ( "REMOVE_NETWORK all" )
512 dev
[ 0 ]. dump_monitor ()
514 with
alloc_fail ( dev
[ 0 ], 1 , "=ibss_rsn_init" ):
516 id = add_ibss_rsn ( dev
[ 0 ], ssid
, scan_freq
= 2412 )
517 connect_ibss_cmd ( dev
[ 0 ], id )
518 bssid0
= wait_ibss_connection ( dev
[ 0 ])
519 dev
[ 0 ]. request ( "REMOVE_NETWORK all" )
520 dev
[ 0 ]. dump_monitor ()
522 def send_eapol_rx ( dev
, dst
):
523 if "OK" not in dev
. request ( "EAPOL_RX %s 0203005f02008a001000000000000000013a54fb19d8a785f5986bdc2ba800553550bc9513e6603eb50809154588c22b110000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000" % dst
):
524 raise Exception ( "EAPOL_RX for %s failed" % dst
)
526 def test_ibss_rsn_eapol_trigger ( dev
):
527 """IBSS RSN and EAPOL trigger for a new peer"""
530 id = add_ibss_rsn ( dev
[ 0 ], ssid
, scan_freq
= 2412 )
531 connect_ibss_cmd ( dev
[ 0 ], id )
532 bssid0
= wait_ibss_connection ( dev
[ 0 ])
534 send_eapol_rx ( dev
[ 0 ], "02:ff:00:00:00:01" )
535 send_eapol_rx ( dev
[ 0 ], "02:ff:00:00:00:01" )
537 dst
= "02:ff:00:00:00:01"
538 logger
. info ( "Too short EAPOL frame" )
539 if "OK" not in dev
[ 0 ]. request ( "EAPOL_RX %s 0203005e02008a001000000000000000013a54fb19d8a785f5986bdc2ba800553550bc9513e6603eb50809154588c22b1100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000" % dst
):
540 raise Exception ( "EAPOL_RX for %s failed" % dst
)
541 logger
. info ( "RSN: EAPOL frame (type 255) discarded, not a Key frame" )
542 if "OK" not in dev
[ 0 ]. request ( "EAPOL_RX %s 02ff005f02008a001000000000000000013a54fb19d8a785f5986bdc2ba800553550bc9513e6603eb50809154588c22b110000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000" % dst
):
543 raise Exception ( "EAPOL_RX for %s failed" % dst
)
544 logger
. info ( "RSN: EAPOL frame payload size 96 invalid (frame size 99)" )
545 if "OK" not in dev
[ 0 ]. request ( "EAPOL_RX %s 0203006002008a001000000000000000013a54fb19d8a785f5986bdc2ba800553550bc9513e6603eb50809154588c22b110000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000" % dst
):
546 raise Exception ( "EAPOL_RX for %s failed" % dst
)
547 logger
. info ( "RSN: EAPOL-Key type (255) unknown, discarded" )
548 if "OK" not in dev
[ 0 ]. request ( "EAPOL_RX %s 0203005fff008a001000000000000000013a54fb19d8a785f5986bdc2ba800553550bc9513e6603eb50809154588c22b110000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000" % dst
):
549 raise Exception ( "EAPOL_RX for %s failed" % dst
)
551 with
alloc_fail ( dev
[ 0 ], 1 , "ibss_rsn_rx_eapol" ):
552 send_eapol_rx ( dev
[ 0 ], "02:ff:00:00:00:02" )
553 wait_fail_trigger ( dev
[ 0 ], "GET_ALLOC_FAIL" )
555 with
alloc_fail ( dev
[ 0 ], 1 , "wpa_auth_sta_init;ibss_rsn_auth_init" ):
556 send_eapol_rx ( dev
[ 0 ], "02:ff:00:00:00:03" )
557 wait_fail_trigger ( dev
[ 0 ], "GET_ALLOC_FAIL" )
559 with
alloc_fail ( dev
[ 0 ], 1 , "=ibss_rsn_peer_init" ):
560 send_eapol_rx ( dev
[ 0 ], "02:ff:00:00:00:04" )
561 wait_fail_trigger ( dev
[ 0 ], "GET_ALLOC_FAIL" )
563 with
alloc_fail ( dev
[ 0 ], 1 , "ibss_rsn_process_rx_eapol" ):
564 send_eapol_rx ( dev
[ 0 ], "02:ff:00:00:00:05" )
565 wait_fail_trigger ( dev
[ 0 ], "GET_ALLOC_FAIL" )
567 with
alloc_fail ( dev
[ 0 ], 1 ,
568 "wpa_sm_set_assoc_wpa_ie_default;ibss_rsn_supp_init" ):
569 send_eapol_rx ( dev
[ 0 ], "02:ff:00:00:00:06" )
570 wait_fail_trigger ( dev
[ 0 ], "GET_ALLOC_FAIL" )
572 with
alloc_fail ( dev
[ 0 ], 1 , "wpa_sm_init;ibss_rsn_supp_init" ):
573 send_eapol_rx ( dev
[ 0 ], "02:ff:00:00:00:07" )
574 wait_fail_trigger ( dev
[ 0 ], "GET_ALLOC_FAIL" )
576 with
alloc_fail ( dev
[ 0 ], 1 , "=ibss_rsn_supp_init" ):
577 send_eapol_rx ( dev
[ 0 ], "02:ff:00:00:00:08" )
578 wait_fail_trigger ( dev
[ 0 ], "GET_ALLOC_FAIL" )
580 with
alloc_fail ( dev
[ 0 ], 1 , "supp_alloc_eapol" ):
581 send_eapol_rx ( dev
[ 0 ], "02:ff:00:00:00:09" )
582 wait_fail_trigger ( dev
[ 0 ], "GET_ALLOC_FAIL" )
584 with
alloc_fail ( dev
[ 0 ], 1 , "wpa_validate_wpa_ie;ibss_rsn_auth_init" ):
585 send_eapol_rx ( dev
[ 0 ], "02:ff:00:00:00:0a" )
586 wait_fail_trigger ( dev
[ 0 ], "GET_ALLOC_FAIL" )
588 logger
. info ( "RSN: Timeout on waiting Authentication frame response" )
589 if "OK" not in dev
[ 0 ]. request ( "IBSS_RSN 02:ff:00:00:00:0b" ):
590 raise Exception ( "Unexpected IBSS_RSN result" )