Stop processing if STA VLAN bind fails
This commit is contained in:
parent
91faf6b948
commit
4254100d6c
3 changed files with 14 additions and 4 deletions
|
@ -1620,10 +1620,12 @@ static void handle_assoc_cb(struct hostapd_data *hapd,
|
||||||
* so bind it to the selected VLAN interface now, since the
|
* so bind it to the selected VLAN interface now, since the
|
||||||
* interface selection is not going to change anymore.
|
* interface selection is not going to change anymore.
|
||||||
*/
|
*/
|
||||||
ap_sta_bind_vlan(hapd, sta, 0);
|
if (ap_sta_bind_vlan(hapd, sta, 0) < 0)
|
||||||
|
goto fail;
|
||||||
} else if (sta->vlan_id) {
|
} else if (sta->vlan_id) {
|
||||||
/* VLAN ID already set (e.g., by PMKSA caching), so bind STA */
|
/* VLAN ID already set (e.g., by PMKSA caching), so bind STA */
|
||||||
ap_sta_bind_vlan(hapd, sta, 0);
|
if (ap_sta_bind_vlan(hapd, sta, 0) < 0)
|
||||||
|
goto fail;
|
||||||
}
|
}
|
||||||
|
|
||||||
hapd->drv.set_sta_flags(hapd, sta);
|
hapd->drv.set_sta_flags(hapd, sta);
|
||||||
|
|
|
@ -1282,7 +1282,8 @@ ieee802_1x_receive_auth(struct radius_msg *msg, struct radius_msg *req,
|
||||||
}
|
}
|
||||||
#endif /* CONFIG_NO_VLAN */
|
#endif /* CONFIG_NO_VLAN */
|
||||||
|
|
||||||
ap_sta_bind_vlan(hapd, sta, old_vlanid);
|
if (ap_sta_bind_vlan(hapd, sta, old_vlanid) < 0)
|
||||||
|
break;
|
||||||
|
|
||||||
/* RFC 3580, Ch. 3.17 */
|
/* RFC 3580, Ch. 3.17 */
|
||||||
if (session_timeout_set && termination_action ==
|
if (session_timeout_set && termination_action ==
|
||||||
|
|
|
@ -540,6 +540,7 @@ int ap_sta_bind_vlan(struct hostapd_data *hapd, struct sta_info *sta,
|
||||||
#ifndef CONFIG_NO_VLAN
|
#ifndef CONFIG_NO_VLAN
|
||||||
const char *iface;
|
const char *iface;
|
||||||
struct hostapd_vlan *vlan = NULL;
|
struct hostapd_vlan *vlan = NULL;
|
||||||
|
int ret;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Do not proceed furthur if the vlan id remains same. We do not want
|
* Do not proceed furthur if the vlan id remains same. We do not want
|
||||||
|
@ -635,7 +636,13 @@ int ap_sta_bind_vlan(struct hostapd_data *hapd, struct sta_info *sta,
|
||||||
if (wpa_auth_sta_set_vlan(sta->wpa_sm, sta->vlan_id) < 0)
|
if (wpa_auth_sta_set_vlan(sta->wpa_sm, sta->vlan_id) < 0)
|
||||||
wpa_printf(MSG_INFO, "Failed to update VLAN-ID for WPA");
|
wpa_printf(MSG_INFO, "Failed to update VLAN-ID for WPA");
|
||||||
|
|
||||||
return hapd->drv.set_sta_vlan(iface, hapd, sta->addr, sta->vlan_id);
|
ret = hapd->drv.set_sta_vlan(iface, hapd, sta->addr, sta->vlan_id);
|
||||||
|
if (ret < 0) {
|
||||||
|
hostapd_logger(hapd, sta->addr, HOSTAPD_MODULE_IEEE80211,
|
||||||
|
HOSTAPD_LEVEL_DEBUG, "could not bind the STA "
|
||||||
|
"entry to vlan_id=%d", sta->vlan_id);
|
||||||
|
}
|
||||||
|
return ret;
|
||||||
#else /* CONFIG_NO_VLAN */
|
#else /* CONFIG_NO_VLAN */
|
||||||
return 0;
|
return 0;
|
||||||
#endif /* CONFIG_NO_VLAN */
|
#endif /* CONFIG_NO_VLAN */
|
||||||
|
|
Loading…
Reference in a new issue