[RFC 56/97] tests: Test NAN management interface creation with an address
Andrei Otcheretianski
andrei.otcheretianski at intel.com
Tue Apr 28 13:05:57 PDT 2026
From: Ilan Peer <ilan.peer at intel.com>
Add test to verify that a NAN management interface can be created
with an address assigned to it. Verify that the expected addresses
are used.
Signed-off-by: Ilan Peer <ilan.peer at intel.com>
---
tests/hwsim/test_nan.py | 27 +++++++++++++++++++++++++--
tests/hwsim/wpasupplicant.py | 4 +++-
2 files changed, 28 insertions(+), 3 deletions(-)
diff --git a/tests/hwsim/test_nan.py b/tests/hwsim/test_nan.py
index 2c21110a15..24da9dc629 100644
--- a/tests/hwsim/test_nan.py
+++ b/tests/hwsim/test_nan.py
@@ -43,11 +43,12 @@ def check_nan_capab(dev):
raise HwsimSkip(f"NAN not supported: {capa}")
class NanDevice:
- def __init__(self, dev, ifname, ndi_name=None):
+ def __init__(self, dev, ifname, ndi_name=None, nmi_addr=None):
self.dev = dev
self.ifname = ifname
self.wpas = None
self.ndi_name = ndi_name
+ self.nmi_addr = nmi_addr
def __enter__(self):
self.start()
@@ -60,7 +61,7 @@ class NanDevice:
check_nan_capab(self.dev)
logger.info(f"NAN device starting on {self.ifname}")
- self.dev.interface_add(self.ifname, if_type="nan", create=True)
+ self.dev.interface_add(self.ifname, if_type="nan", create=True, addr=self.nmi_addr)
self.wpas = WpaSupplicant(ifname=self.ifname)
self.set("master_pref", "10")
self.set("dual_band", "0")
@@ -396,6 +397,28 @@ def test_nan_sync_active_subscribe(dev, apdev, params):
pssi="aabbccdd", sssi="ddbbccaa",
unsolicited=0)
+def test_nan_sync_with_nmi_addresses(dev, apdev, params):
+ """NAN synchronized active subscribe and solicited publish with NMI addresses"""
+ pnmi_addr = "40:00:00:00:17:00"
+ snmi_addr = "40:00:00:00:18:00"
+
+ with hwsim_nan_radios(count=2) as [wpas1, wpas2], \
+ NanDevice(wpas1, "nan0", nmi_addr=pnmi_addr) as pub, \
+ NanDevice(wpas2, "nan1", nmi_addr=snmi_addr) as sub:
+
+ paddr = pub.wpas.own_addr()
+ saddr = sub.wpas.own_addr()
+
+ if paddr != pnmi_addr:
+ raise Exception(f"Publisher NMI address mismatch: got {paddr}, expected {pnmi_addr}")
+
+ if saddr != snmi_addr:
+ raise Exception(f"Subscriber NMI address mismatch: got {saddr}, expected {snmi_addr}")
+
+ nan_sync_discovery(pub, sub, "test_service",
+ pssi="aabbccdd", sssi="ddbbccaa",
+ unsolicited=0)
+
def test_nan_sync_followup(dev, apdev, params):
"""NAN synchronized active subscribe and solicited publish"""
with hwsim_nan_radios(count=2) as [wpas1, wpas2], \
diff --git a/tests/hwsim/wpasupplicant.py b/tests/hwsim/wpasupplicant.py
index c6090f2c62..36854fb343 100644
--- a/tests/hwsim/wpasupplicant.py
+++ b/tests/hwsim/wpasupplicant.py
@@ -222,7 +222,7 @@ class WpaSupplicant:
def interface_add(self, ifname, config="", driver="nl80211",
drv_params=None, br_ifname=None, create=False,
- set_ifname=True, all_params=False, if_type=None):
+ set_ifname=True, all_params=False, if_type=None, addr=None):
status, groups = self.host.execute(["id"])
if status != 0:
group = "admin"
@@ -242,6 +242,8 @@ class WpaSupplicant:
cmd += '\tcreate'
if if_type:
cmd += '\t' + if_type
+ if addr is not None:
+ cmd += '\t' + addr
if all_params and not create:
if not br_ifname:
cmd += '\t'
--
2.53.0
More information about the Hostap
mailing list