mirror of
https://git.kernel.org/pub/scm/network/wireless/iwd.git
synced 2024-12-22 13:02:44 +01:00
p2putil: Add WFD IEs when building P2P Action frames
This commit is contained in:
parent
b924b1da61
commit
8b64fa97f0
@ -2238,7 +2238,8 @@ static uint8_t *p2p_build_action_frame(bool public, uint8_t frame_subtype,
|
||||
uint8_t dialog_token,
|
||||
struct p2p_attr_builder *p2p_attrs,
|
||||
const struct wsc_p2p_attrs *wsc_attrs,
|
||||
size_t *out_len)
|
||||
const uint8_t *wfd_ie,
|
||||
size_t wfd_ie_len, size_t *out_len)
|
||||
{
|
||||
uint8_t *p2p_ie, *wsc_ie, *ret;
|
||||
size_t p2p_ie_len, wsc_ie_len;
|
||||
@ -2267,7 +2268,7 @@ static uint8_t *p2p_build_action_frame(bool public, uint8_t frame_subtype,
|
||||
wsc_ie = NULL;
|
||||
|
||||
*out_len = (public ? 8 : 7) + (p2p_ie ? p2p_ie_len : 0) +
|
||||
(wsc_ie ? wsc_ie_len : 0);
|
||||
(wsc_ie ? wsc_ie_len : 0) + (wfd_ie ? wfd_ie_len : 0);
|
||||
ret = l_malloc(*out_len);
|
||||
|
||||
if (public) {
|
||||
@ -2292,8 +2293,12 @@ static uint8_t *p2p_build_action_frame(bool public, uint8_t frame_subtype,
|
||||
if (wsc_ie) {
|
||||
memcpy(ret + pos, wsc_ie, wsc_ie_len);
|
||||
l_free(wsc_ie);
|
||||
pos += wsc_ie_len;
|
||||
}
|
||||
|
||||
if (wfd_ie)
|
||||
memcpy(ret + pos, wfd_ie, wfd_ie_len);
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
@ -2323,7 +2328,7 @@ uint8_t *p2p_build_go_negotiation_req(const struct p2p_go_negotiation_req *data,
|
||||
|
||||
return p2p_build_action_frame(true, P2P_ACTION_GO_NEGOTIATION_REQ,
|
||||
data->dialog_token, builder, &wsc_attrs,
|
||||
out_len);
|
||||
data->wfd, data->wfd_size, out_len);
|
||||
}
|
||||
|
||||
/* Section 4.2.9.3 */
|
||||
@ -2353,7 +2358,7 @@ uint8_t *p2p_build_go_negotiation_resp(
|
||||
|
||||
return p2p_build_action_frame(true, P2P_ACTION_GO_NEGOTIATION_RESP,
|
||||
data->dialog_token, builder, &wsc_attrs,
|
||||
out_len);
|
||||
data->wfd, data->wfd_size, out_len);
|
||||
}
|
||||
|
||||
/* Section 4.2.9.4 */
|
||||
@ -2374,7 +2379,7 @@ uint8_t *p2p_build_go_negotiation_confirmation(
|
||||
|
||||
return p2p_build_action_frame(true, P2P_ACTION_GO_NEGOTIATION_CONFIRM,
|
||||
data->dialog_token, builder, NULL,
|
||||
out_len);
|
||||
data->wfd, data->wfd_size, out_len);
|
||||
}
|
||||
|
||||
/* Section 4.2.9.5 */
|
||||
@ -2404,7 +2409,8 @@ uint8_t *p2p_build_invitation_req(const struct p2p_invitation_req *data,
|
||||
return p2p_build_action_frame(true, P2P_ACTION_INVITATION_REQ,
|
||||
data->dialog_token, builder,
|
||||
data->device_password_id ?
|
||||
&wsc_attrs : NULL, out_len);
|
||||
&wsc_attrs : NULL,
|
||||
data->wfd, data->wfd_size, out_len);
|
||||
}
|
||||
|
||||
/* Section 4.2.9.6 */
|
||||
@ -2428,7 +2434,7 @@ uint8_t *p2p_build_invitation_resp(const struct p2p_invitation_resp *data,
|
||||
|
||||
return p2p_build_action_frame(true, P2P_ACTION_INVITATION_RESP,
|
||||
data->dialog_token, builder, NULL,
|
||||
out_len);
|
||||
data->wfd, data->wfd_size, out_len);
|
||||
}
|
||||
|
||||
/* Section 4.2.9.7 */
|
||||
@ -2447,7 +2453,7 @@ uint8_t *p2p_build_device_disc_req(
|
||||
return p2p_build_action_frame(true,
|
||||
P2P_ACTION_DEVICE_DISCOVERABILITY_REQ,
|
||||
data->dialog_token, builder, NULL,
|
||||
out_len);
|
||||
NULL, 0, out_len);
|
||||
}
|
||||
|
||||
/* Section 4.2.9.8 */
|
||||
@ -2463,7 +2469,7 @@ uint8_t *p2p_build_device_disc_resp(
|
||||
return p2p_build_action_frame(true,
|
||||
P2P_ACTION_DEVICE_DISCOVERABILITY_RESP,
|
||||
data->dialog_token, builder, NULL,
|
||||
out_len);
|
||||
NULL, 0, out_len);
|
||||
}
|
||||
|
||||
/* Section 4.2.9.9 */
|
||||
@ -2507,7 +2513,7 @@ uint8_t *p2p_build_provision_disc_req(
|
||||
|
||||
return p2p_build_action_frame(true, P2P_ACTION_PROVISION_DISCOVERY_REQ,
|
||||
data->dialog_token, builder, &wsc_attrs,
|
||||
out_len);
|
||||
data->wfd, data->wfd_size, out_len);
|
||||
}
|
||||
|
||||
/* Section 4.2.9.10 */
|
||||
@ -2553,7 +2559,7 @@ uint8_t *p2p_build_provision_disc_resp(
|
||||
|
||||
return p2p_build_action_frame(true, P2P_ACTION_PROVISION_DISCOVERY_RESP,
|
||||
data->dialog_token, builder, &wsc_attrs,
|
||||
out_len);
|
||||
data->wfd, data->wfd_size, out_len);
|
||||
}
|
||||
|
||||
/* Section 4.2.10.2 */
|
||||
@ -2567,7 +2573,7 @@ uint8_t *p2p_build_notice_of_absence(const struct p2p_notice_of_absence *data,
|
||||
&data->notice_of_absence);
|
||||
|
||||
return p2p_build_action_frame(false, P2P_ACTION_NOTICE_OF_ABSENCE,
|
||||
0, builder, NULL, out_len);
|
||||
0, builder, NULL, NULL, 0, out_len);
|
||||
}
|
||||
|
||||
/* Section 4.2.10.3 */
|
||||
@ -2581,7 +2587,7 @@ uint8_t *p2p_build_presence_req(const struct p2p_presence_req *data,
|
||||
&data->notice_of_absence);
|
||||
|
||||
return p2p_build_action_frame(false, P2P_ACTION_PRESENCE_REQ,
|
||||
0, builder, NULL, out_len);
|
||||
0, builder, NULL, NULL, 0, out_len);
|
||||
}
|
||||
|
||||
/* Section 4.2.10.4 */
|
||||
@ -2596,12 +2602,12 @@ uint8_t *p2p_build_presence_resp(const struct p2p_presence_resp *data,
|
||||
&data->notice_of_absence);
|
||||
|
||||
return p2p_build_action_frame(false, P2P_ACTION_PRESENCE_RESP,
|
||||
0, builder, NULL, out_len);
|
||||
0, builder, NULL, NULL, 0, out_len);
|
||||
}
|
||||
|
||||
/* Section 4.2.10.5 */
|
||||
uint8_t *p2p_build_go_disc_req(size_t *out_len)
|
||||
{
|
||||
return p2p_build_action_frame(false, P2P_ACTION_GO_DISCOVERABILITY_REQ,
|
||||
0, NULL, NULL, out_len);
|
||||
0, NULL, NULL, NULL, 0, out_len);
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user