]> git.ipfire.org Git - thirdparty/hostap.git/commitdiff
tests: Scan using SSID List and Short SSID List elements
authorJouni Malinen <j@w1.fi>
Sat, 28 Dec 2019 21:14:47 +0000 (23:14 +0200)
committerJouni Malinen <j@w1.fi>
Sat, 28 Dec 2019 21:14:47 +0000 (23:14 +0200)
Signed-off-by: Jouni Malinen <j@w1.fi>
tests/hwsim/test_scan.py

index a1e41713ab0d15f169fb70979b083e8ed787caa9..a9e415b3f1bd8acd738acf8f930844fe0642bd96 100644 (file)
@@ -1903,3 +1903,53 @@ def test_scan_only_one(dev, apdev):
     entries = len(list(filter(lambda x: x.startswith('BSS '), lines)))
     if entries != 1:
         raise Exception("expected to find 1 BSS entry, got %d" % entries)
+
+def test_scan_ssid_list(dev, apdev):
+    """Scan using SSID List element"""
+    dev[0].flush_scan_cache()
+    ssid = "test-ssid-list"
+    hapd = hostapd.add_ap(apdev[0], {"ssid": ssid,
+                                     "ignore_broadcast_ssid": "1"})
+    bssid = apdev[0]['bssid']
+    found = False
+    try:
+        payload = struct.pack('BB', 0, len(ssid)) + ssid.encode()
+        ssid_list = struct.pack('BB', 84, len(payload)) + payload
+        cmd = "VENDOR_ELEM_ADD 14 " + binascii.hexlify(ssid_list).decode()
+        if "OK" not in dev[0].request(cmd):
+            raise Exception("VENDOR_ELEM_ADD failed")
+        for i in range(10):
+            check_scan(dev[0], "freq=2412 use_id=1")
+            if ssid in dev[0].request("SCAN_RESULTS"):
+                found = True
+                break
+    finally:
+        dev[0].request("VENDOR_ELEM_REMOVE 14 *")
+
+    if not found:
+        raise Exception("AP not found in scan results")
+
+def test_scan_short_ssid_list(dev, apdev):
+    """Scan using Short SSID List element"""
+    dev[0].flush_scan_cache()
+    ssid = "test-short-ssid-list"
+    hapd = hostapd.add_ap(apdev[0], {"ssid": ssid,
+                                     "ignore_broadcast_ssid": "1"})
+    bssid = apdev[0]['bssid']
+    found = False
+    try:
+        payload = struct.pack('<L', binascii.crc32(ssid.encode()))
+        ssid_list = struct.pack('BBB', 255, 1 + len(payload), 58) + payload
+        cmd = "VENDOR_ELEM_ADD 14 " + binascii.hexlify(ssid_list).decode()
+        if "OK" not in dev[0].request(cmd):
+            raise Exception("VENDOR_ELEM_ADD failed")
+        for i in range(10):
+            check_scan(dev[0], "freq=2412 use_id=1")
+            if ssid in dev[0].request("SCAN_RESULTS"):
+                found = True
+                break
+    finally:
+        dev[0].request("VENDOR_ELEM_REMOVE 14 *")
+
+    if not found:
+        raise Exception("AP not found in scan results")