{
if (hapd->driver == NULL || hapd->driver->sta_set_flags == NULL)
return 0;
- return hapd->driver->sta_set_flags(hapd->drv_priv, addr, total_flags,
+ return hapd->driver->sta_set_flags(hapd->conf->iface, hapd->drv_priv, addr, total_flags,
flags_or, flags_and);
}
/**
* sta_set_flags - Set station flags (AP only)
+ * @ifname: Interface name (for multi-SSID/VLAN support)
* @priv: Private driver interface data
* @addr: Station address
* @total_flags: Bitmap of all WPA_STA_* flags currently set
* @flags_and: Bitmap of WPA_STA_* flags to us as a mask
* Returns: 0 on success, -1 on failure
*/
- int (*sta_set_flags)(void *priv, const u8 *addr,
+ int (*sta_set_flags)(const char *ifname, void *priv, const u8 *addr,
int total_flags, int flags_or, int flags_and);
/**
}
static int
-madwifi_sta_set_flags(void *priv, const u8 *addr, int total_flags,
- int flags_or, int flags_and)
+madwifi_sta_set_flags(const char *ifname, void *priv, const u8 *addr,
+ int total_flags, int flags_or, int flags_and)
{
/* For now, only support setting Authorized flag */
if (flags_or & WPA_STA_AUTHORIZED)
}
static int
-bsd_set_sta_authorized(void *priv, const u8 *addr, int total_flags,
- int flags_or, int flags_and)
+bsd_set_sta_authorized(const char *ifname, void *priv, const u8 *addr,
+ int total_flags, int flags_or, int flags_and)
{
int authorized = -1;
}
-static int hostap_sta_set_flags(void *priv, const u8 *addr,
+static int hostap_sta_set_flags(const char *ifname, void *priv, const u8 *addr,
int total_flags, int flags_or, int flags_and)
{
struct hostap_driver_data *drv = priv;
struct hostap_driver_data *drv = priv;
struct prism2_hostapd_param param;
- hostap_sta_set_flags(drv, addr, 0, 0, ~WPA_STA_AUTHORIZED);
+ hostap_sta_set_flags(drv->iface, drv, addr, 0, 0,
+ ~WPA_STA_AUTHORIZED);
memset(¶m, 0, sizeof(param));
param.cmd = PRISM2_HOSTAPD_REMOVE_STA;
}
static int
-madwifi_sta_set_flags(void *priv, const u8 *addr, int total_flags,
- int flags_or, int flags_and)
+madwifi_sta_set_flags(const char *ifname, void *priv, const u8 *addr,
+ int total_flags, int flags_or, int flags_and)
{
/* For now, only support setting Authorized flag */
if (flags_or & WPA_STA_AUTHORIZED)
}
-static int wpa_driver_nl80211_sta_set_flags(void *priv, const u8 *addr,
- int total_flags, int flags_or,
- int flags_and)
+static int wpa_driver_nl80211_sta_set_flags(const char *ifname, void *priv,
+ const u8 *addr, int total_flags,
+ int flags_or, int flags_and)
{
struct wpa_driver_nl80211_data *drv = priv;
struct nl_msg *msg, *flags = NULL;
0, NL80211_CMD_SET_STATION, 0);
NLA_PUT_U32(msg, NL80211_ATTR_IFINDEX,
- if_nametoindex(drv->ifname));
+ if_nametoindex(ifname));
NLA_PUT(msg, NL80211_ATTR_MAC, ETH_ALEN, addr);
/*
int flags_or, int flags_and)
{
if (wpa_s->driver->sta_set_flags)
- return wpa_s->driver->sta_set_flags(wpa_s->drv_priv, addr,
+ return wpa_s->driver->sta_set_flags(wpa_s->ifname,
+ wpa_s->drv_priv, addr,
total_flags, flags_or,
flags_and);
return -1;