Add helper functions for parsing RSNXE capabilities
Simplify the implementation by using shared functions for parsing the capabilities instead of using various similar but not exactly identical checks throughout the implementation. Signed-off-by: Jouni Malinen <j@w1.fi>
This commit is contained in:
parent
663e190b72
commit
d675d3b15b
11 changed files with 75 additions and 55 deletions
|
@ -2403,6 +2403,35 @@ int ieee802_11_ext_capab(const u8 *ie, unsigned int capab)
|
|||
}
|
||||
|
||||
|
||||
bool ieee802_11_rsnx_capab_len(const u8 *rsnxe, size_t rsnxe_len,
|
||||
unsigned int capab)
|
||||
{
|
||||
const u8 *end;
|
||||
size_t flen, i;
|
||||
u32 capabs = 0;
|
||||
|
||||
if (!rsnxe || rsnxe_len == 0)
|
||||
return false;
|
||||
end = rsnxe + rsnxe_len;
|
||||
flen = (rsnxe[0] & 0x0f) + 1;
|
||||
if (rsnxe + flen > end)
|
||||
return false;
|
||||
if (flen > 4)
|
||||
flen = 4;
|
||||
for (i = 0; i < flen; i++)
|
||||
capabs |= rsnxe[i] << (8 * i);
|
||||
|
||||
return capabs & BIT(capab);
|
||||
}
|
||||
|
||||
|
||||
bool ieee802_11_rsnx_capab(const u8 *rsnxe, unsigned int capab)
|
||||
{
|
||||
return ieee802_11_rsnx_capab_len(rsnxe ? rsnxe + 2 : NULL,
|
||||
rsnxe ? rsnxe[1] : 0, capab);
|
||||
}
|
||||
|
||||
|
||||
void hostapd_encode_edmg_chan(int edmg_enable, u8 edmg_channel,
|
||||
int primary_channel,
|
||||
struct ieee80211_edmg_config *edmg)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue