hostapd: mirror ieee80211w ap mode defaults in station mode
[librecmc/librecmc.git] / package / network / services / hostapd / patches / 552-tests-Multi-AP-association.patch
1 From 7488e0ade6dffb6df4c1fb6526a9f3ede0eb18ef Mon Sep 17 00:00:00 2001
2 From: Jouni Malinen <jouni@codeaurora.org>
3 Date: Thu, 20 Dec 2018 12:41:00 +0200
4 Subject: [PATCH] tests: Multi-AP association
5
6 Signed-off-by: Jouni Malinen <jouni@codeaurora.org>
7 ---
8  tests/hwsim/test_multi_ap.py | 73 ++++++++++++++++++++++++++++++++++++
9  tests/hwsim/wpasupplicant.py |  3 +-
10  2 files changed, 75 insertions(+), 1 deletion(-)
11  create mode 100644 tests/hwsim/test_multi_ap.py
12
13 --- /dev/null
14 +++ b/tests/hwsim/test_multi_ap.py
15 @@ -0,0 +1,73 @@
16 +# Test cases for Multi-AP
17 +# Copyright (c) 2018, The Linux Foundation
18 +#
19 +# This software may be distributed under the terms of the BSD license.
20 +# See README for more details.
21 +
22 +import hostapd
23 +
24 +def test_multi_ap_association(dev, apdev):
25 +    """Multi-AP association in backhaul BSS"""
26 +    run_multi_ap_association(dev, apdev, 1)
27 +    dev[1].connect("multi-ap", psk="12345678", scan_freq="2412",
28 +                   wait_connect=False)
29 +    ev = dev[1].wait_event([ "CTRL-EVENT-DISCONNECTED",
30 +                             "CTRL-EVENT-CONNECTED",
31 +                             "CTRL-EVENT-ASSOC-REJECT" ],
32 +                           timeout=5)
33 +    dev[1].request("DISCONNECT")
34 +    if ev is None:
35 +        raise Exception("Connection result not reported")
36 +    if "CTRL-EVENT-ASSOC-REJECT" not in ev:
37 +        raise Exception("Association rejection not reported")
38 +    if "status_code=12" not in ev:
39 +        raise Exception("Unexpected association status code: " + ev)
40 +
41 +def test_multi_ap_association_shared_bss(dev, apdev):
42 +    """Multi-AP association in backhaul BSS (with fronthaul BSS enabled)"""
43 +    run_multi_ap_association(dev, apdev, 3)
44 +    dev[1].connect("multi-ap", psk="12345678", scan_freq="2412")
45 +
46 +def run_multi_ap_association(dev, apdev, multi_ap):
47 +    params = hostapd.wpa2_params(ssid="multi-ap", passphrase="12345678")
48 +    params["multi_ap"] = str(multi_ap)
49 +    hapd = hostapd.add_ap(apdev[0], params)
50 +
51 +    dev[0].connect("multi-ap", psk="12345678", multi_ap_backhaul_sta="1",
52 +                   scan_freq="2412")
53 +
54 +def test_multi_ap_disabled_on_ap(dev, apdev):
55 +    """Multi-AP association attempt when disabled on AP"""
56 +    params = hostapd.wpa2_params(ssid="multi-ap", passphrase="12345678")
57 +    hapd = hostapd.add_ap(apdev[0], params)
58 +
59 +    dev[0].connect("multi-ap", psk="12345678", multi_ap_backhaul_sta="1",
60 +                   scan_freq="2412", wait_connect=False)
61 +    ev = dev[0].wait_event([ "CTRL-EVENT-DISCONNECTED",
62 +                             "CTRL-EVENT-CONNECTED" ],
63 +                           timeout=5)
64 +    dev[0].request("DISCONNECT")
65 +    if ev is None:
66 +        raise Exception("Connection result not reported")
67 +    if "CTRL-EVENT-DISCONNECTED" not in ev:
68 +        raise Exception("Unexpected connection result")
69 +
70 +def test_multi_ap_fronthaul_on_ap(dev, apdev):
71 +    """Multi-AP association attempt when only fronthaul BSS on AP"""
72 +    params = hostapd.wpa2_params(ssid="multi-ap", passphrase="12345678")
73 +    params["multi_ap"] = "2"
74 +    hapd = hostapd.add_ap(apdev[0], params)
75 +
76 +    dev[0].connect("multi-ap", psk="12345678", multi_ap_backhaul_sta="1",
77 +                   scan_freq="2412", wait_connect=False)
78 +    ev = dev[0].wait_event([ "CTRL-EVENT-DISCONNECTED",
79 +                             "CTRL-EVENT-CONNECTED",
80 +                             "CTRL-EVENT-ASSOC-REJECT" ],
81 +                           timeout=5)
82 +    dev[0].request("DISCONNECT")
83 +    if ev is None:
84 +        raise Exception("Connection result not reported")
85 +    if "CTRL-EVENT-ASSOC-REJECT" not in ev:
86 +        raise Exception("Association rejection not reported")
87 +    if "status_code=12" not in ev:
88 +        raise Exception("Unexpected association status code: " + ev)
89 --- a/tests/hwsim/wpasupplicant.py
90 +++ b/tests/hwsim/wpasupplicant.py
91 @@ -1031,7 +1031,8 @@ class WpaSupplicant:
92                         "dpp_csign", "dpp_csign_expiry",
93                         "dpp_netaccesskey", "dpp_netaccesskey_expiry",
94                         "group_mgmt", "owe_group",
95 -                       "roaming_consortium_selection" ]
96 +                       "roaming_consortium_selection", "multi_ap_backhaul_sta" ]
97 +
98          for field in not_quoted:
99              if field in kwargs and kwargs[field]:
100                  self.set_network(id, field, kwargs[field])