Add user configured vendor IEs to default scan IEs
Add user configured vendor IEs for Probe Request frames to default scan IEs so that these IEs will be included in the Probe Request frames for the scans issued also by components other than wpa_supplicant. Signed-off-by: Jouni Malinen <jouni@codeaurora.org>
This commit is contained in:
parent
581dfcc413
commit
ea77568d8f
2 changed files with 22 additions and 3 deletions
|
@ -9784,8 +9784,7 @@ static int wpas_ctrl_vendor_elem_add(struct wpa_supplicant *wpa_s, char *cmd)
|
||||||
|
|
||||||
if (wpa_s->vendor_elem[frame] == NULL) {
|
if (wpa_s->vendor_elem[frame] == NULL) {
|
||||||
wpa_s->vendor_elem[frame] = buf;
|
wpa_s->vendor_elem[frame] = buf;
|
||||||
wpas_vendor_elem_update(wpa_s);
|
goto update_ies;
|
||||||
return 0;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (wpabuf_resize(&wpa_s->vendor_elem[frame], len) < 0) {
|
if (wpabuf_resize(&wpa_s->vendor_elem[frame], len) < 0) {
|
||||||
|
@ -9795,8 +9794,14 @@ static int wpas_ctrl_vendor_elem_add(struct wpa_supplicant *wpa_s, char *cmd)
|
||||||
|
|
||||||
wpabuf_put_buf(wpa_s->vendor_elem[frame], buf);
|
wpabuf_put_buf(wpa_s->vendor_elem[frame], buf);
|
||||||
wpabuf_free(buf);
|
wpabuf_free(buf);
|
||||||
|
|
||||||
|
update_ies:
|
||||||
wpas_vendor_elem_update(wpa_s);
|
wpas_vendor_elem_update(wpa_s);
|
||||||
|
|
||||||
|
if (frame == VENDOR_ELEM_PROBE_REQ ||
|
||||||
|
frame == VENDOR_ELEM_PROBE_REQ_P2P)
|
||||||
|
wpa_supplicant_set_default_scan_ies(wpa_s);
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -521,7 +521,7 @@ void wpa_supplicant_set_default_scan_ies(struct wpa_supplicant *wpa_s)
|
||||||
{
|
{
|
||||||
struct wpabuf *default_ies = NULL;
|
struct wpabuf *default_ies = NULL;
|
||||||
u8 ext_capab[18];
|
u8 ext_capab[18];
|
||||||
int ext_capab_len;
|
int ext_capab_len, frame_id;
|
||||||
enum wpa_driver_if_type type = WPA_IF_STATION;
|
enum wpa_driver_if_type type = WPA_IF_STATION;
|
||||||
|
|
||||||
#ifdef CONFIG_P2P
|
#ifdef CONFIG_P2P
|
||||||
|
@ -545,6 +545,20 @@ void wpa_supplicant_set_default_scan_ies(struct wpa_supplicant *wpa_s)
|
||||||
wpas_mbo_scan_ie(wpa_s, default_ies);
|
wpas_mbo_scan_ie(wpa_s, default_ies);
|
||||||
#endif /* CONFIG_MBO */
|
#endif /* CONFIG_MBO */
|
||||||
|
|
||||||
|
if (type == WPA_IF_P2P_CLIENT)
|
||||||
|
frame_id = VENDOR_ELEM_PROBE_REQ_P2P;
|
||||||
|
else
|
||||||
|
frame_id = VENDOR_ELEM_PROBE_REQ;
|
||||||
|
|
||||||
|
if (wpa_s->vendor_elem[frame_id]) {
|
||||||
|
size_t len;
|
||||||
|
|
||||||
|
len = wpabuf_len(wpa_s->vendor_elem[frame_id]);
|
||||||
|
if (len > 0 && wpabuf_resize(&default_ies, len) == 0)
|
||||||
|
wpabuf_put_buf(default_ies,
|
||||||
|
wpa_s->vendor_elem[frame_id]);
|
||||||
|
}
|
||||||
|
|
||||||
if (default_ies)
|
if (default_ies)
|
||||||
wpa_drv_set_default_scan_ies(wpa_s, wpabuf_head(default_ies),
|
wpa_drv_set_default_scan_ies(wpa_s, wpabuf_head(default_ies),
|
||||||
wpabuf_len(default_ies));
|
wpabuf_len(default_ies));
|
||||||
|
|
Loading…
Reference in a new issue