|
@@ -32,6 +32,7 @@
|
|
|
#include "blacklist.h"
|
|
|
#include "bss.h"
|
|
|
#include "scan.h"
|
|
|
+#include "p2p/p2p.h"
|
|
|
#include "p2p_supplicant.h"
|
|
|
#include "wps_supplicant.h"
|
|
|
|
|
@@ -691,6 +692,16 @@ int wpas_wps_start_pbc(struct wpa_supplicant *wpa_s, const u8 *bssid,
|
|
|
return -1;
|
|
|
ssid->temporary = 1;
|
|
|
ssid->p2p_group = p2p_group;
|
|
|
+ if (p2p_group && wpa_s->go_params && wpa_s->go_params->ssid_len) {
|
|
|
+ ssid->ssid = os_zalloc(wpa_s->go_params->ssid_len + 1);
|
|
|
+ if (ssid->ssid) {
|
|
|
+ ssid->ssid_len = wpa_s->go_params->ssid_len;
|
|
|
+ os_memcpy(ssid->ssid, wpa_s->go_params->ssid,
|
|
|
+ ssid->ssid_len);
|
|
|
+ wpa_hexdump_ascii(MSG_DEBUG, "WPS: Use specific AP "
|
|
|
+ "SSID", ssid->ssid, ssid->ssid_len);
|
|
|
+ }
|
|
|
+ }
|
|
|
wpa_config_set(ssid, "phase1", "\"pbc=1\"", 0);
|
|
|
if (wpa_s->wps_fragment_size)
|
|
|
ssid->eap.fragment_size = wpa_s->wps_fragment_size;
|
|
@@ -714,6 +725,16 @@ int wpas_wps_start_pin(struct wpa_supplicant *wpa_s, const u8 *bssid,
|
|
|
return -1;
|
|
|
ssid->temporary = 1;
|
|
|
ssid->p2p_group = p2p_group;
|
|
|
+ if (p2p_group && wpa_s->go_params && wpa_s->go_params->ssid_len) {
|
|
|
+ ssid->ssid = os_zalloc(wpa_s->go_params->ssid_len + 1);
|
|
|
+ if (ssid->ssid) {
|
|
|
+ ssid->ssid_len = wpa_s->go_params->ssid_len;
|
|
|
+ os_memcpy(ssid->ssid, wpa_s->go_params->ssid,
|
|
|
+ ssid->ssid_len);
|
|
|
+ wpa_hexdump_ascii(MSG_DEBUG, "WPS: Use specific AP "
|
|
|
+ "SSID", ssid->ssid, ssid->ssid_len);
|
|
|
+ }
|
|
|
+ }
|
|
|
if (pin)
|
|
|
os_snprintf(val, sizeof(val), "\"pin=%s dev_pw_id=%u\"",
|
|
|
pin, dev_pw_id);
|