Mark STA authorized if IEEE 802.1X and WPA is not used

This fixes multi-BSS configuration with driver_nl80211.c to mark STAs
that use secondary BSSes with open/static WEP without having to make
driver_nl80211.c track 802.1X configuration for each BSS.
This commit is contained in:
Jouni Malinen 2009-04-03 20:40:07 +03:00 committed by Jouni Malinen
parent c213cc0433
commit 515cf93f8c
2 changed files with 5 additions and 15 deletions

View File

@ -83,7 +83,6 @@ struct i802_driver_data {
struct genl_family *nl80211;
int beacon_int;
struct i802_bss bss;
unsigned int ieee802_1x_active:1;
unsigned int ht_40mhz_scan:1;
int last_freq;
@ -875,7 +874,7 @@ static int i802_sta_set_flags(void *priv, const u8 *addr,
if_nametoindex(drv->iface));
NLA_PUT(msg, NL80211_ATTR_MAC, ETH_ALEN, addr);
if (total_flags & WLAN_STA_AUTHORIZED || !drv->ieee802_1x_active)
if (total_flags & WLAN_STA_AUTHORIZED)
NLA_PUT_FLAG(flags, NL80211_STA_FLAG_AUTHORIZED);
if (total_flags & WLAN_STA_WMM)
@ -1153,18 +1152,6 @@ static int i802_del_beacon(struct i802_driver_data *drv)
}
static int i802_set_ieee8021x(const char *ifname, void *priv, int enabled)
{
struct i802_driver_data *drv = priv;
/*
* FIXME: This needs to be per interface (BSS)
*/
drv->ieee802_1x_active = enabled;
return 0;
}
static int i802_set_privacy(const char *ifname, void *priv, int enabled)
{
struct i802_driver_data *drv = priv;
@ -3009,7 +2996,6 @@ const struct hapd_driver_ops wpa_driver_nl80211_ops = {
.init = i802_init,
.init_bssid = i802_init_bssid,
.deinit = i802_deinit,
.set_ieee8021x = i802_set_ieee8021x,
.set_privacy = i802_set_privacy,
.set_key = i802_set_key,
.get_seqnum = i802_get_seqnum,

View File

@ -1630,6 +1630,10 @@ static void handle_assoc_cb(struct hostapd_data *hapd,
if (sta->flags & WLAN_STA_ASSOC)
new_assoc = 0;
sta->flags |= WLAN_STA_ASSOC;
if (!hapd->conf->ieee802_1x && !hapd->conf->wpa) {
/* Open or static WEP; no separate authorization */
sta->flags |= WLAN_STA_AUTHORIZED;
}
if (reassoc)
mlme_reassociate_indication(hapd, sta);