]> git.ipfire.org Git - thirdparty/hostap.git/commitdiff
tests: Random MAC address in scans while connected
authorJouni Malinen <jouni@qca.qualcomm.com>
Fri, 25 Nov 2016 20:48:26 +0000 (22:48 +0200)
committerJouni Malinen <j@w1.fi>
Fri, 25 Nov 2016 20:52:39 +0000 (22:52 +0200)
Signed-off-by: Jouni Malinen <jouni@qca.qualcomm.com>
tests/hwsim/test_scan.py
tests/hwsim/wpasupplicant.py

index 1ca4bd0ddf079f4bc80783cfcd672e05765cd07e..56f10f832eb5b1d79b6965c9fc639180c0c4b5b5 100644 (file)
@@ -790,6 +790,29 @@ def _test_scan_random_mac(dev, apdev, params):
         if not found:
             raise Exception("Fixed OUI random address not seen")
 
+def test_scan_random_mac_connected(dev, apdev, params):
+    """Random MAC address in scans while connected"""
+    try:
+        _test_scan_random_mac_connected(dev, apdev, params)
+    finally:
+        dev[0].request("MAC_RAND_SCAN all enable=0")
+
+def _test_scan_random_mac_connected(dev, apdev, params):
+    hostapd.add_ap(apdev[0], { "ssid": "test-scan" })
+    bssid = apdev[0]['bssid']
+    if dev[0].get_driver_status_field('capa.mac_addr_rand_scan_supported') != '1':
+        raise HwsimSkip("Driver does not support random MAC address for scanning")
+
+    dev[0].connect("test-scan", key_mgmt="NONE", scan_freq="2412")
+
+    hostapd.add_ap(apdev[1], { "ssid": "test-scan-2", "channel": "11" })
+    bssid1 = apdev[1]['bssid']
+
+    # Verify that scanning can be completed while connected even if that means
+    # disabling use of random MAC address.
+    dev[0].request("MAC_RAND_SCAN all enable=1")
+    dev[0].scan_for_bss(bssid1, freq=2462, force_scan=True)
+
 @remote_compatible
 def test_scan_trigger_failure(dev, apdev):
     """Scan trigger to the driver failing"""
index ba2552c9402127617b5c9543b0ae8f93383ee89b..23cb395daf84f7c991be3e2279fe8e77bda7bf28 100644 (file)
@@ -1053,9 +1053,12 @@ class WpaSupplicant:
             raise Exception("Failed to trigger scan")
         if no_wait:
             return
-        ev = self.wait_event(["CTRL-EVENT-SCAN-RESULTS"], 15)
+        ev = self.wait_event(["CTRL-EVENT-SCAN-RESULTS",
+                              "CTRL-EVENT-SCAN-FAILED"], 15)
         if ev is None:
             raise Exception("Scan timed out")
+        if "CTRL-EVENT-SCAN-FAILED" in ev:
+            raise Exception("Scan failed: " + ev)
 
     def scan_for_bss(self, bssid, freq=None, force_scan=False, only_new=False):
         if not force_scan and self.get_bss(bssid) is not None: