This test checks that mesh nodes forward frames for unknown destinations to the mesh gates. Signed-off-by: Bob Copeland <me@xxxxxxxxxxxxxxx> --- tests/hwsim/test_wpas_mesh.py | 55 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 55 insertions(+) diff --git a/tests/hwsim/test_wpas_mesh.py b/tests/hwsim/test_wpas_mesh.py index a05f686e2dfe..00b140cca9cd 100644 --- a/tests/hwsim/test_wpas_mesh.py +++ b/tests/hwsim/test_wpas_mesh.py @@ -13,6 +13,9 @@ import subprocess import hwsim_utils from wpasupplicant import WpaSupplicant from utils import HwsimSkip, alloc_fail +from tshark import run_tshark +import time +import os def check_mesh_support(dev, secure=False): if "MESH" not in dev.get_capability("modes"): @@ -699,3 +702,55 @@ def _test_wpas_mesh_reconnect(dev): check_mesh_peer_connected(dev[1]) dev[0].dump_monitor() dev[1].dump_monitor() + +def check_frame_at_gate(capfile, da, sa, mesh_da): + filt = "wlan.da==%s && wlan.sa==%s && wlan_mgt.fixed.mesh_addr5==%s" % ( + da, sa, mesh_da) + + out = run_tshark(capfile, filt) + if not out: + raise Exception("frame to gate %s not observed" % da) + pass + + +def test_wpas_mesh_gate_forwarding(dev, apdev, p): + """Mesh forwards traffic to unknown sta to mesh gates""" + addr0 = dev[0].p2p_interface_addr() + addr1 = dev[1].p2p_interface_addr() + addr2 = dev[2].p2p_interface_addr() + external_sta = '02:11:22:33:44:55' + + # start 3 node connected mesh + check_mesh_support(dev[0]) + + add_open_mesh_network(dev[0]) + add_open_mesh_network(dev[1]) + add_open_mesh_network(dev[2]) + + check_mesh_group_added(dev[0]) + check_mesh_group_added(dev[1]) + check_mesh_group_added(dev[2]) + + check_mesh_peer_connected(dev[0]) + check_mesh_peer_connected(dev[1]) + check_mesh_peer_connected(dev[2]) + + hwsim_utils.test_connectivity(dev[0], dev[1]) + hwsim_utils.test_connectivity(dev[1], dev[2]) + hwsim_utils.test_connectivity(dev[0], dev[2]) + + # dev0 and dev1 are mesh gates + subprocess.call(['iw', 'dev', dev[0].ifname, 'set', 'mesh_param', 'mesh_gate_announcements=1']) + subprocess.call(['iw', 'dev', dev[1].ifname, 'set', 'mesh_param', 'mesh_gate_announcements=1']) + + # wait for gate announcement frames + time.sleep(1) + + # data frame from dev2 -> external sta should be sent to both gates + dev[2].request("DATA_TEST_CONFIG 1") + dev[2].request("DATA_TEST_TX {} {} 0".format(external_sta, addr2)) + dev[2].request("DATA_TEST_CONFIG 0") + + capfile = os.path.join(p['logdir'], "hwsim0.pcapng") + check_frame_at_gate(capfile, addr0, addr2, external_sta) + check_frame_at_gate(capfile, addr1, addr2, external_sta) -- 2.6.1 _______________________________________________ Hostap mailing list Hostap@xxxxxxxxxxxxxxxxxxx http://lists.infradead.org/mailman/listinfo/hostap