[PATCH v2 1/2] hostapd: set sta flags when adding a new station
Arik Nemtsov
arik
Tue Jul 5 13:02:31 PDT 2011
When adding a new station, set the STA flags as part of the sta_add
command. This ensures the flags are up to date when the station is added
by lower level drivers.
Signed-off-by: Arik Nemtsov <arik at wizery.com>
---
v1->2: use hostapd_sta_flags_to_drv to convert WLAN_STA_* flags
to WPA_STA_* ones before sending them to kernel
src/ap/ap_drv_ops.c | 4 +++-
src/ap/ap_drv_ops.h | 3 ++-
src/ap/ieee802_11.c | 3 ++-
src/drivers/driver.h | 1 +
4 files changed, 8 insertions(+), 3 deletions(-)
diff --git a/src/ap/ap_drv_ops.c b/src/ap/ap_drv_ops.c
index 0b6836c..7129644 100644
--- a/src/ap/ap_drv_ops.c
+++ b/src/ap/ap_drv_ops.c
@@ -314,7 +314,8 @@ int hostapd_sta_add(struct hostapd_data *hapd,
const u8 *addr, u16 aid, u16 capability,
const u8 *supp_rates, size_t supp_rates_len,
u16 listen_interval,
- const struct ieee80211_ht_capabilities *ht_capab)
+ const struct ieee80211_ht_capabilities *ht_capab,
+ u32 flags)
{
struct hostapd_sta_add_params params;
@@ -331,6 +332,7 @@ int hostapd_sta_add(struct hostapd_data *hapd,
params.supp_rates_len = supp_rates_len;
params.listen_interval = listen_interval;
params.ht_capabilities = ht_capab;
+ params.flags = hostapd_sta_flags_to_drv(flags);
return hapd->driver->sta_add(hapd->drv_priv, ¶ms);
}
diff --git a/src/ap/ap_drv_ops.h b/src/ap/ap_drv_ops.h
index f6076af..6f947f9 100644
--- a/src/ap/ap_drv_ops.h
+++ b/src/ap/ap_drv_ops.h
@@ -36,7 +36,8 @@ int hostapd_sta_add(struct hostapd_data *hapd,
const u8 *addr, u16 aid, u16 capability,
const u8 *supp_rates, size_t supp_rates_len,
u16 listen_interval,
- const struct ieee80211_ht_capabilities *ht_capab);
+ const struct ieee80211_ht_capabilities *ht_capab,
+ u32 flags);
int hostapd_set_privacy(struct hostapd_data *hapd, int enabled);
int hostapd_set_generic_elem(struct hostapd_data *hapd, const u8 *elem,
size_t elem_len);
diff --git a/src/ap/ieee802_11.c b/src/ap/ieee802_11.c
index 4d8dd25..227a0a5 100644
--- a/src/ap/ieee802_11.c
+++ b/src/ap/ieee802_11.c
@@ -1705,7 +1705,8 @@ static void handle_assoc_cb(struct hostapd_data *hapd,
if (hostapd_sta_add(hapd, sta->addr, sta->aid, sta->capability,
sta->supported_rates, sta->supported_rates_len,
sta->listen_interval,
- sta->flags & WLAN_STA_HT ? &ht_cap : NULL)) {
+ sta->flags & WLAN_STA_HT ? &ht_cap : NULL,
+ sta->flags)) {
hostapd_logger(hapd, sta->addr, HOSTAPD_MODULE_IEEE80211,
HOSTAPD_LEVEL_NOTICE,
"Could not add STA to kernel driver");
diff --git a/src/drivers/driver.h b/src/drivers/driver.h
index 513580a..1f9a4c8 100644
--- a/src/drivers/driver.h
+++ b/src/drivers/driver.h
@@ -602,6 +602,7 @@ struct hostapd_sta_add_params {
size_t supp_rates_len;
u16 listen_interval;
const struct ieee80211_ht_capabilities *ht_capabilities;
+ u32 flags; /* bitmask of WPA_STA_* flags */
};
struct hostapd_freq_params {
--
1.7.4.1
More information about the Hostap
mailing list