mirror of
https://git.kernel.org/pub/scm/network/wireless/iwd.git
synced 2024-11-25 09:39:25 +01:00
ap: check FULL_AP_CLIENT_STATE for NEW_STATION
nl80211 has a check which returns -EINVAL for NEW_STATION if this feature is not enabled and the mask contains Authenticated/Associated flags.
This commit is contained in:
parent
c57071df65
commit
fb8ef45213
17
src/ap.c
17
src/ap.c
@ -1643,19 +1643,22 @@ static struct l_genl_msg *ap_build_cmd_new_station(struct sta_state *sta)
|
||||
{
|
||||
struct l_genl_msg *msg;
|
||||
uint32_t ifindex = netdev_get_ifindex(sta->ap->netdev);
|
||||
/*
|
||||
* This should hopefully work both with and without
|
||||
* NL80211_FEATURE_FULL_AP_CLIENT_STATE.
|
||||
*/
|
||||
struct nl80211_sta_flag_update flags = {
|
||||
.mask = (1 << NL80211_STA_FLAG_AUTHENTICATED) |
|
||||
(1 << NL80211_STA_FLAG_ASSOCIATED) |
|
||||
(1 << NL80211_STA_FLAG_AUTHORIZED) |
|
||||
.mask = (1 << NL80211_STA_FLAG_AUTHORIZED) |
|
||||
(1 << NL80211_STA_FLAG_MFP),
|
||||
.set = (1 << NL80211_STA_FLAG_AUTHENTICATED) |
|
||||
(1 << NL80211_STA_FLAG_ASSOCIATED),
|
||||
};
|
||||
|
||||
/*
|
||||
* Without this feature nl80211 rejects NEW_STATION if the mask contains
|
||||
* auth/assoc flags
|
||||
*/
|
||||
if (wiphy_has_feature(netdev_get_wiphy(sta->ap->netdev),
|
||||
NL80211_FEATURE_FULL_AP_CLIENT_STATE))
|
||||
flags.mask |= (1 << NL80211_STA_FLAG_ASSOCIATED) |
|
||||
(1 << NL80211_STA_FLAG_AUTHENTICATED);
|
||||
|
||||
msg = l_genl_msg_new_sized(NL80211_CMD_NEW_STATION, 300);
|
||||
|
||||
l_genl_msg_append_attr(msg, NL80211_ATTR_IFINDEX, 4, &ifindex);
|
||||
|
Loading…
Reference in New Issue
Block a user