Move AP events for STA connected/disconnected into one function
Instead of trying to remember to add wpa_msg() calls for every possible path where a STA becomes authorized or unauthorized, use ap_sta_set_authorized() to send these events more consistently. Signed-hostap: Jouni Malinen <j@w1.fi>
This commit is contained in:
parent
3ec1e9020f
commit
ae055af4f7
4 changed files with 21 additions and 34 deletions
|
@ -246,9 +246,8 @@ void hostapd_notif_disassoc(struct hostapd_data *hapd, const u8 *addr)
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
ap_sta_set_authorized(hapd, sta, 0);
|
||||||
sta->flags &= ~(WLAN_STA_AUTH | WLAN_STA_ASSOC);
|
sta->flags &= ~(WLAN_STA_AUTH | WLAN_STA_ASSOC);
|
||||||
wpa_msg(hapd->msg_ctx, MSG_INFO, AP_STA_DISCONNECTED MACSTR,
|
|
||||||
MAC2STR(sta->addr));
|
|
||||||
wpa_auth_sm_event(sta->wpa_sm, WPA_DISASSOC);
|
wpa_auth_sm_event(sta->wpa_sm, WPA_DISASSOC);
|
||||||
sta->acct_terminate_cause = RADIUS_ACCT_TERMINATE_CAUSE_USER_REQUEST;
|
sta->acct_terminate_cause = RADIUS_ACCT_TERMINATE_CAUSE_USER_REQUEST;
|
||||||
ieee802_1x_notify_port_enabled(sta->eapol_sm, 0);
|
ieee802_1x_notify_port_enabled(sta->eapol_sm, 0);
|
||||||
|
|
|
@ -1111,9 +1111,8 @@ static void handle_disassoc(struct hostapd_data *hapd,
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
ap_sta_set_authorized(hapd, sta, 0);
|
||||||
sta->flags &= ~(WLAN_STA_ASSOC | WLAN_STA_ASSOC_REQ_OK);
|
sta->flags &= ~(WLAN_STA_ASSOC | WLAN_STA_ASSOC_REQ_OK);
|
||||||
wpa_msg(hapd->msg_ctx, MSG_INFO, AP_STA_DISCONNECTED MACSTR,
|
|
||||||
MAC2STR(sta->addr));
|
|
||||||
wpa_auth_sm_event(sta->wpa_sm, WPA_DISASSOC);
|
wpa_auth_sm_event(sta->wpa_sm, WPA_DISASSOC);
|
||||||
hostapd_logger(hapd, sta->addr, HOSTAPD_MODULE_IEEE80211,
|
hostapd_logger(hapd, sta->addr, HOSTAPD_MODULE_IEEE80211,
|
||||||
HOSTAPD_LEVEL_INFO, "disassociated");
|
HOSTAPD_LEVEL_INFO, "disassociated");
|
||||||
|
@ -1161,10 +1160,9 @@ static void handle_deauth(struct hostapd_data *hapd,
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
ap_sta_set_authorized(hapd, sta, 0);
|
||||||
sta->flags &= ~(WLAN_STA_AUTH | WLAN_STA_ASSOC |
|
sta->flags &= ~(WLAN_STA_AUTH | WLAN_STA_ASSOC |
|
||||||
WLAN_STA_ASSOC_REQ_OK);
|
WLAN_STA_ASSOC_REQ_OK);
|
||||||
wpa_msg(hapd->msg_ctx, MSG_INFO, AP_STA_DISCONNECTED MACSTR,
|
|
||||||
MAC2STR(sta->addr));
|
|
||||||
wpa_auth_sm_event(sta->wpa_sm, WPA_DEAUTH);
|
wpa_auth_sm_event(sta->wpa_sm, WPA_DEAUTH);
|
||||||
hostapd_logger(hapd, sta->addr, HOSTAPD_MODULE_IEEE80211,
|
hostapd_logger(hapd, sta->addr, HOSTAPD_MODULE_IEEE80211,
|
||||||
HOSTAPD_LEVEL_DEBUG, "deauthenticated");
|
HOSTAPD_LEVEL_DEBUG, "deauthenticated");
|
||||||
|
@ -1519,8 +1517,6 @@ static void handle_assoc_cb(struct hostapd_data *hapd,
|
||||||
* step.
|
* step.
|
||||||
*/
|
*/
|
||||||
ap_sta_set_authorized(hapd, sta, 1);
|
ap_sta_set_authorized(hapd, sta, 1);
|
||||||
wpa_msg(hapd->msg_ctx, MSG_INFO,
|
|
||||||
AP_STA_CONNECTED MACSTR, MAC2STR(sta->addr));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (reassoc)
|
if (reassoc)
|
||||||
|
|
|
@ -90,32 +90,11 @@ void ieee802_1x_set_sta_authorized(struct hostapd_data *hapd,
|
||||||
return;
|
return;
|
||||||
|
|
||||||
if (authorized) {
|
if (authorized) {
|
||||||
if (!ap_sta_is_authorized(sta)) {
|
|
||||||
const u8 *dev_addr = NULL;
|
|
||||||
#ifdef CONFIG_P2P
|
|
||||||
dev_addr = p2p_group_get_dev_addr(hapd->p2p_group,
|
|
||||||
sta->addr);
|
|
||||||
#endif /* CONFIG_P2P */
|
|
||||||
|
|
||||||
if (dev_addr)
|
|
||||||
wpa_msg(hapd->msg_ctx, MSG_INFO,
|
|
||||||
AP_STA_CONNECTED MACSTR
|
|
||||||
" dev_addr=" MACSTR,
|
|
||||||
MAC2STR(sta->addr), MAC2STR(dev_addr));
|
|
||||||
else
|
|
||||||
wpa_msg(hapd->msg_ctx, MSG_INFO,
|
|
||||||
AP_STA_CONNECTED MACSTR,
|
|
||||||
MAC2STR(sta->addr));
|
|
||||||
}
|
|
||||||
ap_sta_set_authorized(hapd, sta, 1);
|
ap_sta_set_authorized(hapd, sta, 1);
|
||||||
res = hostapd_set_authorized(hapd, sta, 1);
|
res = hostapd_set_authorized(hapd, sta, 1);
|
||||||
hostapd_logger(hapd, sta->addr, HOSTAPD_MODULE_IEEE8021X,
|
hostapd_logger(hapd, sta->addr, HOSTAPD_MODULE_IEEE8021X,
|
||||||
HOSTAPD_LEVEL_DEBUG, "authorizing port");
|
HOSTAPD_LEVEL_DEBUG, "authorizing port");
|
||||||
} else {
|
} else {
|
||||||
if (ap_sta_is_authorized(sta) && (sta->flags & WLAN_STA_ASSOC))
|
|
||||||
wpa_msg(hapd->msg_ctx, MSG_INFO,
|
|
||||||
AP_STA_DISCONNECTED MACSTR,
|
|
||||||
MAC2STR(sta->addr));
|
|
||||||
ap_sta_set_authorized(hapd, sta, 0);
|
ap_sta_set_authorized(hapd, sta, 0);
|
||||||
res = hostapd_set_authorized(hapd, sta, 0);
|
res = hostapd_set_authorized(hapd, sta, 0);
|
||||||
hostapd_logger(hapd, sta->addr, HOSTAPD_MODULE_IEEE8021X,
|
hostapd_logger(hapd, sta->addr, HOSTAPD_MODULE_IEEE8021X,
|
||||||
|
|
|
@ -351,6 +351,7 @@ void ap_handle_timer(void *eloop_ctx, void *timeout_ctx)
|
||||||
hapd, sta);
|
hapd, sta);
|
||||||
break;
|
break;
|
||||||
case STA_DISASSOC:
|
case STA_DISASSOC:
|
||||||
|
ap_sta_set_authorized(hapd, sta, 0);
|
||||||
sta->flags &= ~WLAN_STA_ASSOC;
|
sta->flags &= ~WLAN_STA_ASSOC;
|
||||||
ieee802_1x_notify_port_enabled(sta->eapol_sm, 0);
|
ieee802_1x_notify_port_enabled(sta->eapol_sm, 0);
|
||||||
if (!sta->acct_terminate_cause)
|
if (!sta->acct_terminate_cause)
|
||||||
|
@ -378,9 +379,6 @@ void ap_handle_timer(void *eloop_ctx, void *timeout_ctx)
|
||||||
mlme_deauthenticate_indication(
|
mlme_deauthenticate_indication(
|
||||||
hapd, sta,
|
hapd, sta,
|
||||||
WLAN_REASON_PREV_AUTH_NOT_VALID);
|
WLAN_REASON_PREV_AUTH_NOT_VALID);
|
||||||
|
|
||||||
wpa_msg(hapd->msg_ctx, MSG_INFO, AP_STA_DISCONNECTED MACSTR,
|
|
||||||
MAC2STR(sta->addr));
|
|
||||||
ap_free_sta(hapd, sta);
|
ap_free_sta(hapd, sta);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
@ -776,10 +774,25 @@ void ap_sta_set_authorized(struct hostapd_data *hapd, struct sta_info *sta,
|
||||||
if (!!authorized == !!(sta->flags & WLAN_STA_AUTHORIZED))
|
if (!!authorized == !!(sta->flags & WLAN_STA_AUTHORIZED))
|
||||||
return;
|
return;
|
||||||
|
|
||||||
if (authorized)
|
if (authorized) {
|
||||||
sta->flags |= WLAN_STA_AUTHORIZED;
|
const u8 *dev_addr = NULL;
|
||||||
|
#ifdef CONFIG_P2P
|
||||||
|
dev_addr = p2p_group_get_dev_addr(hapd->p2p_group, sta->addr);
|
||||||
|
#endif /* CONFIG_P2P */
|
||||||
|
if (dev_addr)
|
||||||
|
wpa_msg(hapd->msg_ctx, MSG_INFO, AP_STA_CONNECTED
|
||||||
|
MACSTR " dev_addr=" MACSTR,
|
||||||
|
MAC2STR(sta->addr), MAC2STR(dev_addr));
|
||||||
else
|
else
|
||||||
|
wpa_msg(hapd->msg_ctx, MSG_INFO, AP_STA_CONNECTED
|
||||||
|
MACSTR, MAC2STR(sta->addr));
|
||||||
|
|
||||||
|
sta->flags |= WLAN_STA_AUTHORIZED;
|
||||||
|
} else {
|
||||||
|
wpa_msg(hapd->msg_ctx, MSG_INFO, AP_STA_DISCONNECTED MACSTR,
|
||||||
|
MAC2STR(sta->addr));
|
||||||
sta->flags &= ~WLAN_STA_AUTHORIZED;
|
sta->flags &= ~WLAN_STA_AUTHORIZED;
|
||||||
|
}
|
||||||
|
|
||||||
if (hapd->sta_authorized_cb)
|
if (hapd->sta_authorized_cb)
|
||||||
hapd->sta_authorized_cb(hapd->sta_authorized_cb_ctx,
|
hapd->sta_authorized_cb(hapd->sta_authorized_cb_ctx,
|
||||||
|
|
Loading…
Reference in a new issue