IBSS RSN: Implement disconnect() callback using sta_deauth()
This allows driver wrappers to implement disconnection of IBSS peers in cases operations, e.g., GTK update, fail. Signed-hostap: Jouni Malinen <jouni@qca.qualcomm.com>
This commit is contained in:
parent
4abc0424ef
commit
1aef400bf0
2 changed files with 18 additions and 0 deletions
|
@ -129,6 +129,16 @@ static inline int wpa_drv_set_key(struct wpa_supplicant *wpa_s,
|
|||
return -1;
|
||||
}
|
||||
|
||||
static inline int wpa_drv_sta_deauth(struct wpa_supplicant *wpa_s,
|
||||
const u8 *addr, int reason_code)
|
||||
{
|
||||
if (wpa_s->driver->sta_deauth) {
|
||||
return wpa_s->driver->sta_deauth(wpa_s->drv_priv, NULL, addr,
|
||||
reason_code);
|
||||
}
|
||||
return -1;
|
||||
}
|
||||
|
||||
static inline int wpa_drv_deauthenticate(struct wpa_supplicant *wpa_s,
|
||||
const u8 *addr, int reason_code)
|
||||
{
|
||||
|
|
|
@ -296,6 +296,13 @@ static int auth_set_key(void *ctx, int vlan_id, enum wpa_alg alg,
|
|||
}
|
||||
|
||||
|
||||
static void ibss_rsn_disconnect(void *ctx, const u8 *addr, u16 reason)
|
||||
{
|
||||
struct ibss_rsn *ibss_rsn = ctx;
|
||||
wpa_drv_sta_deauth(ibss_rsn->wpa_s, addr, reason);
|
||||
}
|
||||
|
||||
|
||||
static int auth_for_each_sta(void *ctx, int (*cb)(struct wpa_state_machine *sm,
|
||||
void *ctx),
|
||||
void *cb_ctx)
|
||||
|
@ -386,6 +393,7 @@ static int ibss_rsn_auth_init_group(struct ibss_rsn *ibss_rsn,
|
|||
cb.get_psk = auth_get_psk;
|
||||
cb.set_key = auth_set_key;
|
||||
cb.for_each_sta = auth_for_each_sta;
|
||||
cb.disconnect = ibss_rsn_disconnect;
|
||||
|
||||
ibss_rsn->auth_group = wpa_init(own_addr, &conf, &cb);
|
||||
if (ibss_rsn->auth_group == NULL) {
|
||||
|
|
Loading…
Reference in a new issue