Pass apdev dictionary to add_bss()/remove_bss() funtions instead of ifname. This allow us to handle remote hosts correctly while we can get hostname form apdev['hostname']. Signed-off-by: Janusz Dziedzic <janusz.dziedzic@xxxxxxxxx> --- tests/hwsim/hostapd.py | 25 ++++-- tests/hwsim/test_ap_dynamic.py | 165 ++++++++++++++++++---------------- tests/hwsim/test_ap_ht.py | 14 +-- tests/hwsim/test_ap_wps.py | 2 +- tests/hwsim/test_monitor_interface.py | 2 +- 5 files changed, 119 insertions(+), 89 deletions(-) diff --git a/tests/hwsim/hostapd.py b/tests/hwsim/hostapd.py index 5abd3ca..5ee22bb 100644 --- a/tests/hwsim/hostapd.py +++ b/tests/hwsim/hostapd.py @@ -383,9 +383,16 @@ def add_ap(apdev, params, wait_enabled=True, no_enable=False, timeout=30): raise Exception("AP startup failed") return hapd -def add_bss(phy, ifname, confname, ignore_error=False, hostname=None, - port=8878): - logger.info("Starting BSS phy=" + phy + " ifname=" + ifname) +def add_bss(phy, apdev, confname, ignore_error=False): + ifname = apdev['ifname'] + try: + hostname = apdev['hostname'] + port = apdev['port'] + logger.info("Starting BSS " + hostname + "/" + port + " phy=" + phy + " ifname=" + ifname) + except: + logger.info("Starting BSS phy=" + phy + " ifname=" + ifname) + hostname = None + port = 8878 hapd_global = HostapdGlobal(hostname=hostname, port=port) hapd_global.add_bss(phy, confname, ignore_error) port = hapd_global.get_ctrl_iface_port(ifname) @@ -402,8 +409,16 @@ def add_iface(ifname, confname, hostname=None, port=8878): if not hapd.ping(): raise Exception("Could not ping hostapd") -def remove_bss(ifname, hostname=None, port=8878): - logger.info("Removing BSS " + ifname) +def remove_bss(apdev): + ifname = apdev['ifname'] + try: + hostname = apdev['hostname'] + port = apdev['port'] + logger.info("Removing BSS " + hostname + "/" + port + " " + ifname) + except: + logger.info("Removing BSS " + ifname) + hostname = None + port = 8878 hapd_global = HostapdGlobal(hostname=hostname, port=port) hapd_global.remove(ifname) diff --git a/tests/hwsim/test_ap_dynamic.py b/tests/hwsim/test_ap_dynamic.py index de1c4d9..dac2d20 100644 --- a/tests/hwsim/test_ap_dynamic.py +++ b/tests/hwsim/test_ap_dynamic.py @@ -92,111 +92,117 @@ def _test_ap_bss_add_remove(dev, apdev): for i in range(3): dev[i].flush_scan_cache() dev[i].request("SCAN_INTERVAL 1") - ifname1 = apdev[0]['ifname'] - ifname2 = apdev[0]['ifname'] + '-2' - ifname3 = apdev[0]['ifname'] + '-3' + apdev1 = apdev[0].copy() + apdev2 = apdev[0].copy() + apdev2['ifname'] = apdev[0]['ifname'] + '-2' + apdev3 = apdev[0].copy() + apdev3['ifname'] = apdev[0]['ifname'] + '-3' + logger.info("Set up three BSSes one by one") - hostapd.add_bss('phy3', ifname1, 'bss-1.conf') + hostapd.add_bss('phy3', apdev1, 'bss-1.conf') multi_check(dev, [ True, False, False ]) - hostapd.add_bss('phy3', ifname2, 'bss-2.conf') + hostapd.add_bss('phy3', apdev2, 'bss-2.conf') multi_check(dev, [ True, True, False ]) - hostapd.add_bss('phy3', ifname3, 'bss-3.conf') + hostapd.add_bss('phy3', apdev3, 'bss-3.conf') multi_check(dev, [ True, True, True ]) logger.info("Remove the last BSS and re-add it") - hostapd.remove_bss(ifname3) + hostapd.remove_bss(apdev3) multi_check(dev, [ True, True, False ]) - hostapd.add_bss('phy3', ifname3, 'bss-3.conf') + hostapd.add_bss('phy3', apdev3, 'bss-3.conf') multi_check(dev, [ True, True, True ]) logger.info("Remove the middle BSS and re-add it") - hostapd.remove_bss(ifname2) + hostapd.remove_bss(apdev2) multi_check(dev, [ True, False, True ]) - hostapd.add_bss('phy3', ifname2, 'bss-2.conf') + hostapd.add_bss('phy3', apdev2, 'bss-2.conf') multi_check(dev, [ True, True, True ]) logger.info("Remove the first BSS and re-add it and other BSSs") - hostapd.remove_bss(ifname1) + hostapd.remove_bss(apdev1) multi_check(dev, [ False, False, False ]) - hostapd.add_bss('phy3', ifname1, 'bss-1.conf') - hostapd.add_bss('phy3', ifname2, 'bss-2.conf') - hostapd.add_bss('phy3', ifname3, 'bss-3.conf') + hostapd.add_bss('phy3', apdev1, 'bss-1.conf') + hostapd.add_bss('phy3', apdev2, 'bss-2.conf') + hostapd.add_bss('phy3', apdev3, 'bss-3.conf') multi_check(dev, [ True, True, True ]) logger.info("Remove two BSSes and re-add them") - hostapd.remove_bss(ifname2) + hostapd.remove_bss(apdev2) multi_check(dev, [ True, False, True ]) - hostapd.remove_bss(ifname3) + hostapd.remove_bss(apdev3) multi_check(dev, [ True, False, False ]) - hostapd.add_bss('phy3', ifname2, 'bss-2.conf') + hostapd.add_bss('phy3', apdev2, 'bss-2.conf') multi_check(dev, [ True, True, False ]) - hostapd.add_bss('phy3', ifname3, 'bss-3.conf') + hostapd.add_bss('phy3', apdev3, 'bss-3.conf') multi_check(dev, [ True, True, True ]) logger.info("Remove three BSSes in and re-add them") - hostapd.remove_bss(ifname3) + hostapd.remove_bss(apdev3) multi_check(dev, [ True, True, False ]) - hostapd.remove_bss(ifname2) + hostapd.remove_bss(apdev2) multi_check(dev, [ True, False, False ]) - hostapd.remove_bss(ifname1) + hostapd.remove_bss(apdev1) multi_check(dev, [ False, False, False ]) - hostapd.add_bss('phy3', ifname1, 'bss-1.conf') + hostapd.add_bss('phy3', apdev1, 'bss-1.conf') multi_check(dev, [ True, False, False ]) - hostapd.add_bss('phy3', ifname2, 'bss-2.conf') + hostapd.add_bss('phy3', apdev2, 'bss-2.conf') multi_check(dev, [ True, True, False ]) - hostapd.add_bss('phy3', ifname3, 'bss-3.conf') + hostapd.add_bss('phy3', apdev3, 'bss-3.conf') multi_check(dev, [ True, True, True ]) logger.info("Test error handling if a duplicate ifname is tried") - hostapd.add_bss('phy3', ifname3, 'bss-3.conf', ignore_error=True) + hostapd.add_bss('phy3', apdev3, 'bss-3.conf', ignore_error=True) multi_check(dev, [ True, True, True ]) def test_ap_bss_add_remove_during_ht_scan(dev, apdev): """Dynamic BSS add during HT40 co-ex scan""" for i in range(3): dev[i].flush_scan_cache() - ifname1 = apdev[0]['ifname'] - ifname2 = apdev[0]['ifname'] + '-2' - hostapd.add_bss('phy3', ifname1, 'bss-ht40-1.conf') - hostapd.add_bss('phy3', ifname2, 'bss-ht40-2.conf') + apdev1 = apdev[0].copy() + apdev2 = apdev[0].copy() + apdev2['ifname'] = apdev[0]['ifname'] + '-2' + hostapd.add_bss('phy3', apdev1, 'bss-ht40-1.conf') + hostapd.add_bss('phy3', apdev2, 'bss-ht40-2.conf') multi_check(dev, [ True, True ], scan_opt=False) - hostapd.remove_bss(ifname2) - hostapd.remove_bss(ifname1) + hostapd.remove_bss(apdev2) + hostapd.remove_bss(apdev1) - hostapd.add_bss('phy3', ifname1, 'bss-ht40-1.conf') - hostapd.add_bss('phy3', ifname2, 'bss-ht40-2.conf') - hostapd.remove_bss(ifname2) + hostapd.add_bss('phy3', apdev1, 'bss-ht40-1.conf') + hostapd.add_bss('phy3', apdev2, 'bss-ht40-2.conf') + hostapd.remove_bss(apdev2) multi_check(dev, [ True, False ], scan_opt=False) - hostapd.remove_bss(ifname1) + hostapd.remove_bss(apdev1) - hostapd.add_bss('phy3', ifname1, 'bss-ht40-1.conf') - hostapd.add_bss('phy3', ifname2, 'bss-ht40-2.conf') - hostapd.remove_bss(ifname1) + hostapd.add_bss('phy3', apdev1, 'bss-ht40-1.conf') + hostapd.add_bss('phy3', apdev2, 'bss-ht40-2.conf') + hostapd.remove_bss(apdev1) multi_check(dev, [ False, False ]) def test_ap_multi_bss_config(dev, apdev): """hostapd start with a multi-BSS configuration file""" for i in range(3): dev[i].flush_scan_cache() - ifname1 = apdev[0]['ifname'] - ifname2 = apdev[0]['ifname'] + '-2' - ifname3 = apdev[0]['ifname'] + '-3' + apdev1 = apdev[0].copy() + apdev2 = apdev[0].copy() + apdev3 = apdev[0].copy() + apdev2['ifname'] = apdev[0]['ifname'] + '-2' + apdev3['ifname'] = apdev[0]['ifname'] + '-3' logger.info("Set up three BSSes with one configuration file") - hostapd.add_iface(ifname1, 'multi-bss.conf') - hapd = hostapd.Hostapd(ifname1) + hostapd.add_iface(apdev1['ifname'], 'multi-bss.conf') + hapd = hostapd.Hostapd(apdev1['ifname']) hapd.enable() multi_check(dev, [ True, True, True ]) - hostapd.remove_bss(ifname2) + hostapd.remove_bss(apdev2) multi_check(dev, [ True, False, True ]) - hostapd.remove_bss(ifname3) + hostapd.remove_bss(apdev3) multi_check(dev, [ True, False, False ]) - hostapd.remove_bss(ifname1) + hostapd.remove_bss(apdev1) multi_check(dev, [ False, False, False ]) - hostapd.add_iface(ifname1, 'multi-bss.conf') - hapd = hostapd.Hostapd(ifname1) + hostapd.add_iface(apdev1['ifname'], 'multi-bss.conf') + hapd = hostapd.Hostapd(apdev1['ifname']) hapd.enable() - hostapd.remove_bss(ifname1) + hostapd.remove_bss(apdev1) multi_check(dev, [ False, False, False ]) def invalid_ap(hapd_global, ifname): @@ -348,8 +354,11 @@ def test_ap_enable_disable_reenable(dev, apdev): def test_ap_double_disable(dev, apdev): """Double DISABLE regression test""" - hostapd.add_bss('phy3', apdev[0]['ifname'], 'bss-1.conf') - hostapd.add_bss('phy3', apdev[0]['ifname'] + '-2', 'bss-2.conf') + apdev1 = apdev[0].copy() + apdev2 = apdev[0].copy() + apdev2['ifname'] = apdev[0]['ifname'] + '-2' + hostapd.add_bss('phy3', apdev1, 'bss-1.conf') + hostapd.add_bss('phy3', apdev2, 'bss-2.conf') hapd = hostapd.Hostapd(apdev[0]['ifname']) hapd.disable() if "FAIL" not in hapd.request("DISABLE"): @@ -377,23 +386,24 @@ def test_ap_bss_add_many(dev, apdev): pass def _test_ap_bss_add_many(dev, apdev): - ifname = apdev[0]['ifname'] + apdev1 = apdev[0].copy() phy = 'phy3' - hostapd.add_bss(phy, ifname, 'bss-1.conf') + hostapd.add_bss(phy, apdev1, 'bss-1.conf') hapd = hostapd.HostapdGlobal() fname = '/tmp/hwsim-bss.conf' for i in range(16): - ifname2 = ifname + '-' + str(i) + apdev2 = apdev[0].copy() + apdev2['ifname'] = apdev[0]['ifname'] + '-' + str(i) with open(fname, 'w') as f: f.write("driver=nl80211\n") f.write("hw_mode=g\n") f.write("channel=1\n") f.write("ieee80211n=1\n") - f.write("interface=%s\n" % ifname2) + f.write("interface=%s\n" % apdev2['ifname']) f.write("bssid=02:00:00:00:03:%02x\n" % (i + 1)) f.write("ctrl_interface=/var/run/hostapd\n") f.write("ssid=test-%d\n" % i) - hostapd.add_bss(phy, ifname2, fname) + hostapd.add_bss(phy, apdev2, fname) os.remove(fname) dev[0].request("SCAN_INTERVAL 1") @@ -404,19 +414,20 @@ def _test_ap_bss_add_many(dev, apdev): dev[0].connect("test-%d" % i, key_mgmt="NONE", scan_freq="2412") dev[0].request("DISCONNECT") dev[0].wait_disconnected(timeout=5) - ifname2 = ifname + '-' + str(i) + ifname2 = apdev[0]['ifname'] + '-' + str(i) hapd.remove(ifname2) def test_ap_bss_add_reuse_existing(dev, apdev): """Dynamic BSS add operation reusing existing interface""" - ifname1 = apdev[0]['ifname'] - ifname2 = apdev[0]['ifname'] + '-2' - hostapd.add_bss('phy3', ifname1, 'bss-1.conf') - subprocess.check_call(["iw", "dev", ifname1, "interface", "add", ifname2, + apdev1 = apdev[0].copy() + apdev2 = apdev[1].copy() + apdev2['ifname'] = apdev[0]['ifname'] + '-2' + hostapd.add_bss('phy3', apdev1, 'bss-1.conf') + subprocess.check_call(["iw", "dev", apdev1['ifname'], "interface", "add", apdev2['ifname'], "type", "__ap"]) - hostapd.add_bss('phy3', ifname2, 'bss-2.conf') - hostapd.remove_bss(ifname2) - subprocess.check_call(["iw", "dev", ifname2, "del"]) + hostapd.add_bss('phy3', apdev2, 'bss-2.conf') + hostapd.remove_bss(apdev2) + subprocess.check_call(["iw", "dev", apdev2['ifname'], "del"]) def hapd_bss_out_of_mem(hapd, phy, confname, count, func): with alloc_fail(hapd, count, func): @@ -429,8 +440,9 @@ def test_ap_bss_add_out_of_memory(dev, apdev): """Running out of memory while adding a BSS""" hapd2 = hostapd.add_ap(apdev[1], { "ssid": "open" }) - ifname1 = apdev[0]['ifname'] - ifname2 = apdev[0]['ifname'] + '-2' + apdev1 = apdev[0].copy() + apdev2 = apdev[0].copy() + apdev2['ifname'] = apdev[0]['ifname'] + '-2' hapd_bss_out_of_mem(hapd2, 'phy3', 'bss-1.conf', 1, 'hostapd_add_iface') for i in range(1, 3): @@ -439,28 +451,29 @@ def test_ap_bss_add_out_of_memory(dev, apdev): hapd_bss_out_of_mem(hapd2, 'phy3', 'bss-1.conf', 1, 'ieee802_11_build_ap_params') - hostapd.add_bss('phy3', ifname1, 'bss-1.conf') + hostapd.add_bss('phy3', apdev1, 'bss-1.conf') hapd_bss_out_of_mem(hapd2, 'phy3', 'bss-2.conf', 1, 'hostapd_interface_init_bss') hapd_bss_out_of_mem(hapd2, 'phy3', 'bss-2.conf', 1, 'ieee802_11_build_ap_params') - hostapd.add_bss('phy3', ifname2, 'bss-2.conf') - hostapd.remove_bss(ifname2) - hostapd.remove_bss(ifname1) + hostapd.add_bss('phy3', apdev2, 'bss-2.conf') + hostapd.remove_bss(apdev2) + hostapd.remove_bss(apdev1) def test_ap_multi_bss(dev, apdev): """Multiple BSSes with hostapd""" - ifname1 = apdev[0]['ifname'] - ifname2 = apdev[0]['ifname'] + '-2' - hostapd.add_bss('phy3', ifname1, 'bss-1.conf') - hostapd.add_bss('phy3', ifname2, 'bss-2.conf') + apdev1 = apdev[0].copy() + apdev2 = apdev[0].copy() + apdev2['ifname'] = apdev[0]['ifname'] + '-2' + hostapd.add_bss('phy3', apdev1, 'bss-1.conf') + hostapd.add_bss('phy3', apdev2, 'bss-2.conf') dev[0].connect("bss-1", key_mgmt="NONE", scan_freq="2412") dev[1].connect("bss-2", key_mgmt="NONE", scan_freq="2412") - hapd1 = hostapd.Hostapd(ifname1) - hapd2 = hostapd.Hostapd(ifname2) + hapd1 = hostapd.Hostapd(apdev1['ifname']) + hapd2 = hostapd.Hostapd(apdev2['ifname']) hwsim_utils.test_connectivity(dev[0], hapd1) hwsim_utils.test_connectivity(dev[1], hapd2) diff --git a/tests/hwsim/test_ap_ht.py b/tests/hwsim/test_ap_ht.py index e66f7a9..63aae42 100644 --- a/tests/hwsim/test_ap_ht.py +++ b/tests/hwsim/test_ap_ht.py @@ -699,12 +699,14 @@ def test_olbc(dev, apdev): def test_olbc_table_limit(dev, apdev): """OLBC AP table size limit""" - ifname1 = apdev[0]['ifname'] - ifname2 = apdev[0]['ifname'] + '-2' - ifname3 = apdev[0]['ifname'] + '-3' - hostapd.add_bss('phy3', ifname1, 'bss-1.conf') - hostapd.add_bss('phy3', ifname2, 'bss-2.conf') - hostapd.add_bss('phy3', ifname3, 'bss-3.conf') + apdev1 = apdev[0].copy() + apdev2 = apdev[0].copy() + apdev3 = apdev[0].copy() + apdev2['ifname'] = apdev[0]['ifname'] + '-2' + apdev3['ifname'] = apdev[0]['ifname'] + '-3' + hostapd.add_bss('phy3', apdev1, 'bss-1.conf') + hostapd.add_bss('phy3', apdev2, 'bss-2.conf') + hostapd.add_bss('phy3', apdev3, 'bss-3.conf') params = { "ssid": "test-olbc", "channel": "1", diff --git a/tests/hwsim/test_ap_wps.py b/tests/hwsim/test_ap_wps.py index ed1de58..712c7de 100644 --- a/tests/hwsim/test_ap_wps.py +++ b/tests/hwsim/test_ap_wps.py @@ -2287,7 +2287,7 @@ def test_ap_wps_auto_setup_with_config_file(dev, apdev): f.write("ssid=wps\n") f.write("eap_server=1\n") f.write("wps_state=1\n") - hostapd.add_bss('phy3', ifname, conffile) + hostapd.add_bss('phy3', apdev[0], conffile) hapd = hostapd.Hostapd(ifname) hapd.request("WPS_PBC") dev[0].scan_for_bss(apdev[0]['bssid'], freq="2412") diff --git a/tests/hwsim/test_monitor_interface.py b/tests/hwsim/test_monitor_interface.py index 435afa7..a07668b 100644 --- a/tests/hwsim/test_monitor_interface.py +++ b/tests/hwsim/test_monitor_interface.py @@ -46,7 +46,7 @@ def test_monitor_iface_multi_bss(dev, apdev): """AP mode mmonitor interface with hostapd multi-BSS setup""" params = { "ssid": "monitor-iface", "driver_params": "use_monitor=1" } hapd = hostapd.add_ap(apdev[0], params) - hostapd.add_bss('phy3', apdev[0]['ifname'] + '-2', 'bss-2.conf') + hostapd.add_bss('phy3', apdev[0] + '-2', 'bss-2.conf') dev[0].connect("monitor-iface", key_mgmt="NONE", scan_freq="2412") dev[1].connect("bss-2", key_mgmt="NONE", scan_freq="2412") -- 1.9.1 _______________________________________________ Hostap mailing list Hostap@xxxxxxxxxxxxxxxxxxx http://lists.infradead.org/mailman/listinfo/hostap