mirror of
https://git.kernel.org/pub/scm/network/wireless/iwd.git
synced 2024-12-22 21:22:37 +01:00
iwd: Use test_bit from ell
This commit is contained in:
parent
ea3dedffd9
commit
0c0d9e5696
@ -26,6 +26,7 @@
|
|||||||
|
|
||||||
#include <ell/ell.h>
|
#include <ell/ell.h>
|
||||||
|
|
||||||
|
#include "ell/useful.h"
|
||||||
#include "src/anqputil.h"
|
#include "src/anqputil.h"
|
||||||
#include "src/ie.h"
|
#include "src/ie.h"
|
||||||
#include "src/util.h"
|
#include "src/util.h"
|
||||||
@ -178,7 +179,7 @@ char **anqp_parse_nai_realms(const unsigned char *anqp, unsigned int len)
|
|||||||
* action frames it could have been spoofed, but ultimately if
|
* action frames it could have been spoofed, but ultimately if
|
||||||
* its bogus the AP won't allow us to connect.
|
* its bogus the AP won't allow us to connect.
|
||||||
*/
|
*/
|
||||||
if (!util_is_bit_set(encoding, 0))
|
if (!test_bit(&encoding, 0))
|
||||||
l_warn("Not verifying NAI encoding");
|
l_warn("Not verifying NAI encoding");
|
||||||
else if (!l_utf8_validate(nai_realm, nai_len, NULL)) {
|
else if (!l_utf8_validate(nai_realm, nai_len, NULL)) {
|
||||||
l_warn("NAI is not UTF-8");
|
l_warn("NAI is not UTF-8");
|
||||||
|
@ -656,9 +656,9 @@ static void eap_pwd_handle_request(struct eap_state *eap,
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* set if Total-Length parameter is include (i.e. first fragment) */
|
/* set if Total-Length parameter is include (i.e. first fragment) */
|
||||||
len_bit = util_is_bit_set(pkt[0], 7);
|
len_bit = test_bit(pkt, 7);
|
||||||
/* set on all but the last fragment */
|
/* set on all but the last fragment */
|
||||||
more_bit = util_is_bit_set(pkt[0], 6);
|
more_bit = test_bit(pkt, 6);
|
||||||
|
|
||||||
/* first rx fragment */
|
/* first rx fragment */
|
||||||
if (len_bit) {
|
if (len_bit) {
|
||||||
|
@ -434,7 +434,7 @@ int erp_rx_packet(struct erp_state *erp, const uint8_t *pkt, size_t len)
|
|||||||
if (type != ERP_TYPE_REAUTH)
|
if (type != ERP_TYPE_REAUTH)
|
||||||
goto eap_failed;
|
goto eap_failed;
|
||||||
|
|
||||||
r = util_is_bit_set(pkt[5], 0);
|
r = test_bit(pkt + 5, 0);
|
||||||
if (r)
|
if (r)
|
||||||
goto eap_failed;
|
goto eap_failed;
|
||||||
|
|
||||||
|
60
src/ie.c
60
src/ie.c
@ -727,17 +727,17 @@ static int parse_ciphers(const uint8_t *data, size_t len,
|
|||||||
if (len < 2)
|
if (len < 2)
|
||||||
return -EBADMSG;
|
return -EBADMSG;
|
||||||
|
|
||||||
out_info->preauthentication = util_is_bit_set(data[0], 0);
|
out_info->preauthentication = test_bit(data, 0);
|
||||||
out_info->no_pairwise = util_is_bit_set(data[0], 1);
|
out_info->no_pairwise = test_bit(data, 1);
|
||||||
out_info->ptksa_replay_counter = bit_field(data[0], 2, 2);
|
out_info->ptksa_replay_counter = bit_field(data[0], 2, 2);
|
||||||
out_info->gtksa_replay_counter = bit_field(data[0], 4, 2);
|
out_info->gtksa_replay_counter = bit_field(data[0], 4, 2);
|
||||||
out_info->mfpr = util_is_bit_set(data[0], 6);
|
out_info->mfpr = test_bit(data, 6);
|
||||||
out_info->mfpc = util_is_bit_set(data[0], 7);
|
out_info->mfpc = test_bit(data, 7);
|
||||||
out_info->peerkey_enabled = util_is_bit_set(data[1], 1);
|
out_info->peerkey_enabled = test_bit(data + 1, 1);
|
||||||
out_info->spp_a_msdu_capable = util_is_bit_set(data[1], 2);
|
out_info->spp_a_msdu_capable = test_bit(data + 1, 2);
|
||||||
out_info->spp_a_msdu_required = util_is_bit_set(data[1], 3);
|
out_info->spp_a_msdu_required = test_bit(data + 1, 3);
|
||||||
out_info->pbac = util_is_bit_set(data[1], 4);
|
out_info->pbac = test_bit(data + 1, 4);
|
||||||
out_info->extended_key_id = util_is_bit_set(data[1], 5);
|
out_info->extended_key_id = test_bit(data + 1, 5);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* BIP—default group management cipher suite in an RSNA with
|
* BIP—default group management cipher suite in an RSNA with
|
||||||
@ -1450,8 +1450,8 @@ int ie_parse_wpa(struct ie_tlv_iter *iter, struct ie_rsn_info *out_info)
|
|||||||
if (len < 2)
|
if (len < 2)
|
||||||
return -EBADMSG;
|
return -EBADMSG;
|
||||||
|
|
||||||
out_info->preauthentication = util_is_bit_set(data[0], 0);
|
out_info->preauthentication = test_bit(data, 0);
|
||||||
out_info->no_pairwise = util_is_bit_set(data[0], 1);
|
out_info->no_pairwise = test_bit(data, 1);
|
||||||
out_info->ptksa_replay_counter = bit_field(data[0], 2, 2);
|
out_info->ptksa_replay_counter = bit_field(data[0], 2, 2);
|
||||||
out_info->gtksa_replay_counter = bit_field(data[0], 4, 2);
|
out_info->gtksa_replay_counter = bit_field(data[0], 4, 2);
|
||||||
|
|
||||||
@ -1851,9 +1851,9 @@ static int ie_parse_ht_capability(struct ie_tlv_iter *iter, int32_t rssi,
|
|||||||
/* Parse out channel width set and short GI */
|
/* Parse out channel width set and short GI */
|
||||||
ht_cap = l_get_u8(data++);
|
ht_cap = l_get_u8(data++);
|
||||||
|
|
||||||
support_40mhz = util_is_bit_set(ht_cap, 1);
|
support_40mhz = test_bit(&ht_cap, 1);
|
||||||
short_gi_20mhz = util_is_bit_set(ht_cap, 5);
|
short_gi_20mhz = test_bit(&ht_cap, 5);
|
||||||
short_gi_40mhz = util_is_bit_set(ht_cap, 6);
|
short_gi_40mhz = test_bit(&ht_cap, 6);
|
||||||
|
|
||||||
data += 2;
|
data += 2;
|
||||||
|
|
||||||
@ -1868,10 +1868,8 @@ static int ie_parse_ht_capability(struct ie_tlv_iter *iter, int32_t rssi,
|
|||||||
*/
|
*/
|
||||||
for (i = 31; i >= 0; i--) {
|
for (i = 31; i >= 0; i--) {
|
||||||
uint64_t drate;
|
uint64_t drate;
|
||||||
uint8_t byte = i / 8;
|
|
||||||
uint8_t bit = i % 8;
|
|
||||||
|
|
||||||
if (!util_is_bit_set(data[byte], bit))
|
if (!test_bit(data, i))
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
if (!support_40mhz)
|
if (!support_40mhz)
|
||||||
@ -1979,8 +1977,8 @@ static int ie_parse_vht_capability(struct ie_tlv_iter *vht_iter,
|
|||||||
|
|
||||||
ht_cap = l_get_u8(data);
|
ht_cap = l_get_u8(data);
|
||||||
|
|
||||||
short_gi_20mhz = util_is_bit_set(ht_cap, 5);
|
short_gi_20mhz = test_bit(&ht_cap, 5);
|
||||||
short_gi_40mhz = util_is_bit_set(ht_cap, 6);
|
short_gi_40mhz = test_bit(&ht_cap, 6);
|
||||||
|
|
||||||
/* now move onto VHT */
|
/* now move onto VHT */
|
||||||
len = ie_tlv_iter_get_length(vht_iter);
|
len = ie_tlv_iter_get_length(vht_iter);
|
||||||
@ -2418,16 +2416,16 @@ int ie_parse_neighbor_report(struct ie_tlv_iter *iter,
|
|||||||
|
|
||||||
memcpy(info->addr, data + 0, 6);
|
memcpy(info->addr, data + 0, 6);
|
||||||
|
|
||||||
info->ht = util_is_bit_set(data[8], 3);
|
info->ht = test_bit(data + 8, 3);
|
||||||
info->md = util_is_bit_set(data[8], 2);
|
info->md = test_bit(data + 8, 2);
|
||||||
info->immediate_block_ack = util_is_bit_set(data[8], 1);
|
info->immediate_block_ack = test_bit(data + 8, 1);
|
||||||
info->delayed_block_ack = util_is_bit_set(data[8], 0);
|
info->delayed_block_ack = test_bit(data + 8, 0);
|
||||||
info->rm = util_is_bit_set(data[9], 7);
|
info->rm = test_bit(data + 9, 7);
|
||||||
info->apsd = util_is_bit_set(data[9], 6);
|
info->apsd = test_bit(data + 9, 6);
|
||||||
info->qos = util_is_bit_set(data[9], 5);
|
info->qos = test_bit(data + 9, 5);
|
||||||
info->spectrum_mgmt = util_is_bit_set(data[9], 4);
|
info->spectrum_mgmt = test_bit(data + 9, 4);
|
||||||
info->key_scope = util_is_bit_set(data[9], 3);
|
info->key_scope = test_bit(data + 9, 3);
|
||||||
info->security = util_is_bit_set(data[9], 2);
|
info->security = test_bit(data + 9, 2);
|
||||||
info->reachable = bit_field(data[9], 0, 2);
|
info->reachable = bit_field(data[9], 0, 2);
|
||||||
|
|
||||||
info->oper_class = data[10];
|
info->oper_class = data[10];
|
||||||
@ -2561,8 +2559,8 @@ int ie_parse_hs20_indication(struct ie_tlv_iter *iter, uint8_t *version_out,
|
|||||||
|
|
||||||
hs20_config = l_get_u8(data + 4);
|
hs20_config = l_get_u8(data + 4);
|
||||||
|
|
||||||
pps_mo_present = util_is_bit_set(hs20_config, 1);
|
pps_mo_present = test_bit(&hs20_config, 1);
|
||||||
domain_id_present = util_is_bit_set(hs20_config, 2);
|
domain_id_present = test_bit(&hs20_config, 2);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Hotspot 2.0 Spec - Section 3.1.1
|
* Hotspot 2.0 Spec - Section 3.1.1
|
||||||
|
@ -29,6 +29,7 @@
|
|||||||
|
|
||||||
#include <ell/ell.h>
|
#include <ell/ell.h>
|
||||||
|
|
||||||
|
#include "ell/useful.h"
|
||||||
#include "src/module.h"
|
#include "src/module.h"
|
||||||
#include "src/mpdu.h"
|
#include "src/mpdu.h"
|
||||||
#include "src/netdev.h"
|
#include "src/netdev.h"
|
||||||
@ -432,7 +433,7 @@ static void rrm_handle_beacon_scan(struct rrm_state *rrm,
|
|||||||
.freqs = freqs,
|
.freqs = freqs,
|
||||||
.flush = true,
|
.flush = true,
|
||||||
.duration = beacon->duration,
|
.duration = beacon->duration,
|
||||||
.duration_mandatory = util_is_bit_set(beacon->info.mode, 4),
|
.duration_mandatory = test_bit(&beacon->info.mode, 4),
|
||||||
};
|
};
|
||||||
enum scan_band band = scan_oper_class_to_band(NULL, beacon->oper_class);
|
enum scan_band band = scan_oper_class_to_band(NULL, beacon->oper_class);
|
||||||
uint32_t freq;
|
uint32_t freq;
|
||||||
@ -522,7 +523,7 @@ static void rrm_handle_beacon_request(struct rrm_state *rrm,
|
|||||||
* At least for the time being, we will not support autonomous
|
* At least for the time being, we will not support autonomous
|
||||||
* reporting, so decline any request to do so.
|
* reporting, so decline any request to do so.
|
||||||
*/
|
*/
|
||||||
if (util_is_bit_set(beacon->info.mode, 1))
|
if (test_bit(&beacon->info.mode, 1))
|
||||||
goto reject_refused;
|
goto reject_refused;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@ -532,7 +533,7 @@ static void rrm_handle_beacon_request(struct rrm_state *rrm,
|
|||||||
* must reject this request.
|
* must reject this request.
|
||||||
*/
|
*/
|
||||||
if (!wiphy_has_ext_feature(wiphy, NL80211_EXT_FEATURE_SET_SCAN_DWELL)
|
if (!wiphy_has_ext_feature(wiphy, NL80211_EXT_FEATURE_SET_SCAN_DWELL)
|
||||||
&& util_is_bit_set(beacon->info.mode, 4))
|
&& test_bit(&beacon->info.mode, 4))
|
||||||
goto reject_incapable;
|
goto reject_incapable;
|
||||||
|
|
||||||
/* advance to beacon request */
|
/* advance to beacon request */
|
||||||
|
@ -300,7 +300,7 @@ static void scan_build_attr_ie(struct l_genl_msg *msg,
|
|||||||
iov[iov_elems].iov_len = ext_capa[1] + 2;
|
iov[iov_elems].iov_len = ext_capa[1] + 2;
|
||||||
iov_elems++;
|
iov_elems++;
|
||||||
|
|
||||||
if (util_is_bit_set(ext_capa[2 + 3], 7)) {
|
if (test_bit(&ext_capa[2 + 3], 7)) {
|
||||||
/* Order 12 - Interworking */
|
/* Order 12 - Interworking */
|
||||||
interworking[0] = IE_TYPE_INTERWORKING;
|
interworking[0] = IE_TYPE_INTERWORKING;
|
||||||
interworking[1] = 1;
|
interworking[1] = 1;
|
||||||
|
@ -33,6 +33,7 @@
|
|||||||
|
|
||||||
#include <ell/ell.h>
|
#include <ell/ell.h>
|
||||||
|
|
||||||
|
#include "ell/useful.h"
|
||||||
#include "src/util.h"
|
#include "src/util.h"
|
||||||
|
|
||||||
const char *util_ssid_to_utf8(size_t len, const uint8_t *ssid)
|
const char *util_ssid_to_utf8(size_t len, const uint8_t *ssid)
|
||||||
@ -155,7 +156,7 @@ bool util_string_to_address(const char *str, uint8_t *out_addr)
|
|||||||
bool util_is_group_address(const uint8_t *addr)
|
bool util_is_group_address(const uint8_t *addr)
|
||||||
{
|
{
|
||||||
/* 802.11-2016 section 9.2.2 */
|
/* 802.11-2016 section 9.2.2 */
|
||||||
return util_is_bit_set(addr[0], 0);
|
return test_bit(addr, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
bool util_is_broadcast_address(const uint8_t *addr)
|
bool util_is_broadcast_address(const uint8_t *addr)
|
||||||
|
@ -43,12 +43,6 @@ bool util_is_valid_sta_address(const uint8_t *addr);
|
|||||||
const char *util_get_domain(const char *identity);
|
const char *util_get_domain(const char *identity);
|
||||||
const char *util_get_username(const char *identity);
|
const char *util_get_username(const char *identity);
|
||||||
|
|
||||||
static inline bool util_is_bit_set(const uint8_t oct, int bit)
|
|
||||||
{
|
|
||||||
int mask = 1 << bit;
|
|
||||||
return oct & mask ? true : false;
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Returns either true_value or false_value (depending if mask is 0xFF or 0x00
|
* Returns either true_value or false_value (depending if mask is 0xFF or 0x00
|
||||||
* respectively).
|
* respectively).
|
||||||
|
@ -429,7 +429,7 @@ bool wiphy_rrm_capable(struct wiphy *wiphy)
|
|||||||
bool wiphy_has_ext_feature(struct wiphy *wiphy, uint32_t feature)
|
bool wiphy_has_ext_feature(struct wiphy *wiphy, uint32_t feature)
|
||||||
{
|
{
|
||||||
return feature < sizeof(wiphy->ext_features) * 8 &&
|
return feature < sizeof(wiphy->ext_features) * 8 &&
|
||||||
util_is_bit_set(wiphy->ext_features[feature >> 3], feature & 7);
|
test_bit(wiphy->ext_features, feature);
|
||||||
}
|
}
|
||||||
|
|
||||||
uint8_t wiphy_get_max_num_ssids_per_scan(struct wiphy *wiphy)
|
uint8_t wiphy_get_max_num_ssids_per_scan(struct wiphy *wiphy)
|
||||||
|
Loading…
Reference in New Issue
Block a user