[PATCH] tests: add a test for mesh gate forwarding
Bob Copeland
me at bobcopeland.com
Sat Feb 27 17:51:25 PST 2016
This test checks that mesh nodes forward frames for unknown
destinations to the mesh gates.
Signed-off-by: Bob Copeland <me at bobcopeland.com>
---
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
More information about the Hostap
mailing list