Add test case for MLO + AP VLAN which brings up an EHT MLD AP with Dynamic VLAN configurations and successfully create VLANs for the connected non-AP MLD and a non-ML STA. Signed-off-by: Muna Sinada <quic_msinada@xxxxxxxxxxx> --- v2: no changes --- tests/hwsim/hostapd.py | 6 +++- tests/hwsim/test_ap_vlan.py | 57 +++++++++++++++++++++++++++++++++++++ 2 files changed, 62 insertions(+), 1 deletion(-) diff --git a/tests/hwsim/hostapd.py b/tests/hwsim/hostapd.py index 1ffc96e7d4de..e1b36ac8a083 100644 --- a/tests/hwsim/hostapd.py +++ b/tests/hwsim/hostapd.py @@ -990,7 +990,7 @@ def send_file(apdev, src, dst): hapd_global = HostapdGlobal(apdev) return hapd_global.send_file(src, dst) -def acl_file(dev, apdev, conf): +def acl_file(dev, apdev, conf, mld_addr1=None): fd, filename = tempfile.mkstemp(dir='/tmp', prefix=conf + '-') f = os.fdopen(fd, 'w') @@ -1008,6 +1008,10 @@ def acl_file(dev, apdev, conf): mac1 = dev[1].get_status_field("address") f.write(mac0 + " 1\n") f.write(mac1 + " 2\n") + + if mld_addr1: + mac2 = mld_addr1 + f.write(mac2 + " 3\n") elif conf == 'hostapd.accept2': mac0 = dev[0].get_status_field("address") mac1 = dev[1].get_status_field("address") diff --git a/tests/hwsim/test_ap_vlan.py b/tests/hwsim/test_ap_vlan.py index 76c3ce93b9b3..312936e11efb 100644 --- a/tests/hwsim/test_ap_vlan.py +++ b/tests/hwsim/test_ap_vlan.py @@ -23,6 +23,9 @@ import hostapd from utils import * import os from tshark import run_tshark +from hwsim import HWSimRadio +from wpasupplicant import WpaSupplicant +from test_eht import eht_mld_enable_ap, eht_verify_status, eht_verify_wifi_version, eht_mld_ap_wpa2_params, traffic_test def test_ap_vlan_open(dev, apdev): """AP VLAN with open network""" @@ -873,3 +876,57 @@ def test_ap_vlan_sae_group_rekey(dev, apdev, params): time.sleep(1) hwsim_utils.test_connectivity_iface(dev[0], hapd, "brvlan1") + +def test_mld_ap_vlan_acl_file(dev, apdev): + """MLD AP VLAN Test""" + with HWSimRadio(use_mlo=True) as (hapd_radio, hapd_iface), \ + HWSimRadio(use_mlo=True) as (wpas_radio, wpas_iface): + + wpas = WpaSupplicant(global_iface='/tmp/wpas-wlan5') + wpas.interface_add(wpas_iface) + + sta_mld_mac = wpas.get_addr() + filename = hostapd.acl_file(dev, apdev, 'hostapd.accept', sta_mld_mac) + hostapd.send_file(apdev[0], filename, filename) + + ssid = "test-mlo-vlan" + passphrase = '12345678' + + params = eht_mld_ap_wpa2_params(ssid, passphrase, + key_mgmt="SAE", mfp="2", pwe='1') + + params['dynamic_vlan'] = "1" + params['accept_mac_file'] = filename + + hapd0 = eht_mld_enable_ap(hapd_iface, 0, params) + + params['channel'] = '6' + hapd1 = eht_mld_enable_ap(hapd_iface, 1, params) + + wpas.set("sae_pwe", "1") + wpas.connect(ssid, sae_password=passphrase, scan_freq="2412 2437", + key_mgmt="SAE", ieee80211w="2") + + dev[0].set("sae_pwe", "1") + dev[0].connect(ssid, sae_password=passphrase, scan_freq="2412", + key_mgmt="SAE", ieee80211w="2") + hapd0.wait_sta() + hapd0.wait_sta() + eht_verify_status(wpas, hapd0, 2412, 20, is_ht=True, mld=True, + valid_links=3, active_links=3) + eht_verify_wifi_version(wpas) + + traffic_test(wpas, hapd0, ifname2="brvlan3") + traffic_test(wpas, hapd1, ifname2="brvlan3") + hwsim_utils.test_connectivity_iface(dev[0], hapd0, "brvlan1") + + sta = hapd0.get_sta(wpas.own_addr()) + if not (sta and "vlan_id" in sta): + raise Exception("VLAN information not in non-AP MLD output") + + sta = hapd0.get_sta(dev[0].own_addr()) + if not (sta and "vlan_id" in sta): + raise Exception("VLAN information not in non-ML STA output") + + if filename.startswith('/tmp/'): + os.unlink(filename) -- 2.34.1 _______________________________________________ Hostap mailing list Hostap@xxxxxxxxxxxxxxxxxxx http://lists.infradead.org/mailman/listinfo/hostap