Add ctrl_iface events for AP mode STA connect/disconnect
These are used to notify ctrl_iface monitors when a STA completes connection (the port becomes authorized) and when a STA disconnects.
This commit is contained in:
parent
278da1b52a
commit
20bd9547a1
3 changed files with 18 additions and 0 deletions
|
@ -36,6 +36,7 @@
|
||||||
#include "accounting.h"
|
#include "accounting.h"
|
||||||
#include "driver_i.h"
|
#include "driver_i.h"
|
||||||
#include "mlme.h"
|
#include "mlme.h"
|
||||||
|
#include "wpa_ctrl.h"
|
||||||
|
|
||||||
|
|
||||||
u8 * hostapd_eid_supp_rates(struct hostapd_data *hapd, u8 *eid)
|
u8 * hostapd_eid_supp_rates(struct hostapd_data *hapd, u8 *eid)
|
||||||
|
@ -1198,6 +1199,8 @@ static void handle_disassoc(struct hostapd_data *hapd,
|
||||||
}
|
}
|
||||||
|
|
||||||
sta->flags &= ~WLAN_STA_ASSOC;
|
sta->flags &= ~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);
|
||||||
hostapd_logger(hapd, sta->addr, HOSTAPD_MODULE_IEEE80211,
|
hostapd_logger(hapd, sta->addr, HOSTAPD_MODULE_IEEE80211,
|
||||||
HOSTAPD_LEVEL_INFO, "disassociated");
|
HOSTAPD_LEVEL_INFO, "disassociated");
|
||||||
|
@ -1246,6 +1249,8 @@ static void handle_deauth(struct hostapd_data *hapd,
|
||||||
}
|
}
|
||||||
|
|
||||||
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_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");
|
||||||
|
@ -1661,6 +1666,8 @@ static void handle_assoc_cb(struct hostapd_data *hapd,
|
||||||
if (!hapd->conf->ieee802_1x && !hapd->conf->wpa) {
|
if (!hapd->conf->ieee802_1x && !hapd->conf->wpa) {
|
||||||
/* Open or static WEP; no separate authorization */
|
/* Open or static WEP; no separate authorization */
|
||||||
sta->flags |= WLAN_STA_AUTHORIZED;
|
sta->flags |= WLAN_STA_AUTHORIZED;
|
||||||
|
wpa_msg(hapd->msg_ctx, MSG_INFO,
|
||||||
|
AP_STA_CONNECTED MACSTR, MAC2STR(sta->addr));
|
||||||
}
|
}
|
||||||
|
|
||||||
if (reassoc)
|
if (reassoc)
|
||||||
|
|
|
@ -31,6 +31,7 @@
|
||||||
#include "hw_features.h"
|
#include "hw_features.h"
|
||||||
#include "eap_server/eap.h"
|
#include "eap_server/eap.h"
|
||||||
#include "ieee802_11_defs.h"
|
#include "ieee802_11_defs.h"
|
||||||
|
#include "wpa_ctrl.h"
|
||||||
|
|
||||||
|
|
||||||
static void ieee802_1x_finished(struct hostapd_data *hapd,
|
static void ieee802_1x_finished(struct hostapd_data *hapd,
|
||||||
|
@ -83,12 +84,20 @@ void ieee802_1x_set_sta_authorized(struct hostapd_data *hapd,
|
||||||
return;
|
return;
|
||||||
|
|
||||||
if (authorized) {
|
if (authorized) {
|
||||||
|
if (!(sta->flags & WLAN_STA_AUTHORIZED))
|
||||||
|
wpa_msg(hapd->msg_ctx, MSG_INFO,
|
||||||
|
AP_STA_CONNECTED MACSTR, MAC2STR(sta->addr));
|
||||||
sta->flags |= WLAN_STA_AUTHORIZED;
|
sta->flags |= WLAN_STA_AUTHORIZED;
|
||||||
res = hostapd_sta_set_flags(hapd, sta->addr, sta->flags,
|
res = hostapd_sta_set_flags(hapd, sta->addr, sta->flags,
|
||||||
WLAN_STA_AUTHORIZED, ~0);
|
WLAN_STA_AUTHORIZED, ~0);
|
||||||
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 ((sta->flags & (WLAN_STA_AUTHORIZED | WLAN_STA_ASSOC)) ==
|
||||||
|
(WLAN_STA_AUTHORIZED | WLAN_STA_ASSOC))
|
||||||
|
wpa_msg(hapd->msg_ctx, MSG_INFO,
|
||||||
|
AP_STA_DISCONNECTED MACSTR,
|
||||||
|
MAC2STR(sta->addr));
|
||||||
sta->flags &= ~WLAN_STA_AUTHORIZED;
|
sta->flags &= ~WLAN_STA_AUTHORIZED;
|
||||||
res = hostapd_sta_set_flags(hapd, sta->addr, sta->flags,
|
res = hostapd_sta_set_flags(hapd, sta->addr, sta->flags,
|
||||||
0, ~WLAN_STA_AUTHORIZED);
|
0, ~WLAN_STA_AUTHORIZED);
|
||||||
|
|
|
@ -74,6 +74,8 @@ extern "C" {
|
||||||
#define WPS_EVENT_NEW_AP_SETTINGS "WPS-NEW-AP-SETTINGS "
|
#define WPS_EVENT_NEW_AP_SETTINGS "WPS-NEW-AP-SETTINGS "
|
||||||
#define WPS_EVENT_REG_SUCCESS "WPS-REG-SUCCESS "
|
#define WPS_EVENT_REG_SUCCESS "WPS-REG-SUCCESS "
|
||||||
#define WPS_EVENT_AP_SETUP_LOCKED "WPS-AP-SETUP-LOCKED "
|
#define WPS_EVENT_AP_SETUP_LOCKED "WPS-AP-SETUP-LOCKED "
|
||||||
|
#define AP_STA_CONNECTED "AP-STA-CONNECTED "
|
||||||
|
#define AP_STA_DISCONNECTED "AP-STA-DISCONNECTED "
|
||||||
|
|
||||||
|
|
||||||
/* wpa_supplicant/hostapd control interface access */
|
/* wpa_supplicant/hostapd control interface access */
|
||||||
|
|
Loading…
Reference in a new issue