]> git.ipfire.org Git - thirdparty/hostap.git/commitdiff
tests: cfg80211 DEL_STATION issued externally to hostapd
authorJouni Malinen <jouni@qca.qualcomm.com>
Thu, 29 Jan 2015 14:26:31 +0000 (16:26 +0200)
committerJouni Malinen <j@w1.fi>
Thu, 29 Jan 2015 14:26:31 +0000 (16:26 +0200)
Signed-off-by: Jouni Malinen <jouni@qca.qualcomm.com>
tests/hwsim/nl80211.py
tests/hwsim/test_cfg80211.py

index 1abd701cd26f0097f1e7a6b07f94fff0565ab636..440c820a7b71650b8a162e69efd2d9e0f8529b7d 100644 (file)
@@ -328,6 +328,9 @@ def build_nl80211_attr_u32(id, val):
 def build_nl80211_attr_u16(id, val):
     return build_nl80211_attr(id, struct.pack("@HH", val, 0))
 
+def build_nl80211_attr_u8(id, val):
+    return build_nl80211_attr(id, struct.pack("@4B", val, 0, 0, 0))
+
 def build_nl80211_attr_flag(id):
     return build_nl80211_attr(id, '')
 
index 36e8ad94cc091bb84c39d740b349356135ceb08f..e67ad987526bb1f2010f90bf98986319357d9317 100644 (file)
@@ -122,3 +122,22 @@ def test_cfg80211_wep_key_idx_change(dev, apdev):
     # the previous command results in deauth event followed by auto-reconnect
     dev[0].wait_connected(timeout=10, error="Reassociation timed out")
     hwsim_utils.test_connectivity(dev[0], hapd)
+
+def test_cfg80211_hostapd_ext_sta_remove(dev, apdev):
+    """cfg80211 DEL_STATION issued externally to hostapd"""
+    hapd = hostapd.add_ap(apdev[0]['ifname'],
+                          { "ssid": "open" })
+    id = dev[0].connect("open", key_mgmt="NONE", scan_freq="2412")
+
+    ifindex = int(hapd.get_driver_status_field("ifindex"))
+    attrs = build_nl80211_attr_u32('IFINDEX', ifindex)
+    attrs += build_nl80211_attr_u16('REASON_CODE', 1)
+    attrs += build_nl80211_attr_u8('MGMT_SUBTYPE', 12)
+    attrs += build_nl80211_attr_mac('MAC', dev[0].own_addr())
+    nl80211_command(hapd, 'DEL_STATION', attrs)
+
+    # Currently, hostapd ignores the NL80211_CMD_DEL_STATION event if
+    # drv->device_ap_sme == 0 (which is the case with mac80211_hwsim), so no
+    # further action happens here. If that event were to be used to remove the
+    # STA entry from hostapd even in device_ap_sme == 0 case, this test case
+    # could be extended to cover additional operations.