mirror of
https://git.kernel.org/pub/scm/network/wireless/iwd.git
synced 2024-11-22 14:49:24 +01:00
wscutil: Use a utility for building authorized_macs
Add the wfa_build_authorized_macs function (wfa_ prefix following the wfa_extract_ naming) and use it in wsc_build_probe_response. The logic is changed slightly to treat the first 6-zeros address in the array as the end of the array.
This commit is contained in:
parent
1449b8fbc4
commit
8c1bf5385e
@ -2094,6 +2094,20 @@ static void build_wsc_state(struct wsc_attr_builder *builder,
|
||||
wsc_attr_builder_put_u8(builder, 1); \
|
||||
wsc_attr_builder_put_u8(builder, 0x20)
|
||||
|
||||
static void wfa_build_authorized_macs(struct wsc_attr_builder *builder,
|
||||
const uint8_t authorized_macs[static 30])
|
||||
{
|
||||
int count;
|
||||
|
||||
for (count = 1; count < 5; count++)
|
||||
if (util_mem_is_zero(authorized_macs + count * 6, 6))
|
||||
break;
|
||||
|
||||
wsc_attr_builder_put_u8(builder, WSC_WFA_EXTENSION_AUTHORIZED_MACS);
|
||||
wsc_attr_builder_put_u8(builder, count * 6);
|
||||
wsc_attr_builder_put_bytes(builder, authorized_macs, count * 6);
|
||||
}
|
||||
|
||||
uint8_t *wsc_build_credential(const struct wsc_credential *in, size_t *out_len)
|
||||
{
|
||||
struct wsc_attr_builder *builder;
|
||||
@ -2204,21 +2218,9 @@ uint8_t *wsc_build_probe_response(
|
||||
|
||||
START_WFA_VENDOR_EXTENSION();
|
||||
|
||||
if (!util_mem_is_zero(probe_response->authorized_macs, 30)) {
|
||||
int count;
|
||||
|
||||
for (count = 1; count < 5; count++)
|
||||
if (util_mem_is_zero(probe_response->authorized_macs +
|
||||
count * 6, 30 - count * 6))
|
||||
break;
|
||||
|
||||
wsc_attr_builder_put_u8(builder,
|
||||
WSC_WFA_EXTENSION_AUTHORIZED_MACS);
|
||||
wsc_attr_builder_put_u8(builder, count * 6);
|
||||
wsc_attr_builder_put_bytes(builder,
|
||||
probe_response->authorized_macs,
|
||||
count * 6);
|
||||
}
|
||||
if (!util_mem_is_zero(probe_response->authorized_macs, 6))
|
||||
wfa_build_authorized_macs(builder,
|
||||
probe_response->authorized_macs);
|
||||
|
||||
if (probe_response->reg_config_methods) {
|
||||
wsc_attr_builder_put_u8(builder,
|
||||
|
Loading…
Reference in New Issue
Block a user