|
@@ -5264,6 +5264,7 @@ static void wpas_ctrl_scan(struct wpa_supplicant *wpa_s, char *params,
|
|
|
}
|
|
|
|
|
|
wpa_s->manual_scan_passive = 0;
|
|
|
+ wpa_s->manual_scan_use_id = 0;
|
|
|
|
|
|
if (params) {
|
|
|
if (os_strncasecmp(params, "TYPE=ONLY", 9) == 0)
|
|
@@ -5278,6 +5279,10 @@ static void wpas_ctrl_scan(struct wpa_supplicant *wpa_s, char *params,
|
|
|
pos = os_strstr(params, "passive=");
|
|
|
if (pos)
|
|
|
wpa_s->manual_scan_passive = !!atoi(pos + 8);
|
|
|
+
|
|
|
+ pos = os_strstr(params, "use_id=");
|
|
|
+ if (pos)
|
|
|
+ wpa_s->manual_scan_use_id = atoi(pos + 7);
|
|
|
} else {
|
|
|
os_free(wpa_s->manual_scan_freqs);
|
|
|
wpa_s->manual_scan_freqs = NULL;
|
|
@@ -5293,11 +5298,25 @@ static void wpas_ctrl_scan(struct wpa_supplicant *wpa_s, char *params,
|
|
|
wpa_s->after_wps = 0;
|
|
|
wpa_s->known_wps_freq = 0;
|
|
|
wpa_supplicant_req_scan(wpa_s, 0, 0);
|
|
|
+ if (wpa_s->manual_scan_use_id) {
|
|
|
+ wpa_s->manual_scan_id++;
|
|
|
+ wpa_dbg(wpa_s, MSG_DEBUG, "Assigned scan id %u",
|
|
|
+ wpa_s->manual_scan_id);
|
|
|
+ *reply_len = os_snprintf(reply, reply_size, "%u\n",
|
|
|
+ wpa_s->manual_scan_id);
|
|
|
+ }
|
|
|
} else if (wpa_s->sched_scanning) {
|
|
|
wpa_printf(MSG_DEBUG, "Stop ongoing sched_scan to allow requested full scan to proceed");
|
|
|
wpa_supplicant_cancel_sched_scan(wpa_s);
|
|
|
wpa_s->scan_req = MANUAL_SCAN_REQ;
|
|
|
wpa_supplicant_req_scan(wpa_s, 0, 0);
|
|
|
+ if (wpa_s->manual_scan_use_id) {
|
|
|
+ wpa_s->manual_scan_id++;
|
|
|
+ *reply_len = os_snprintf(reply, reply_size, "%u\n",
|
|
|
+ wpa_s->manual_scan_id);
|
|
|
+ wpa_dbg(wpa_s, MSG_DEBUG, "Assigned scan id %u",
|
|
|
+ wpa_s->manual_scan_id);
|
|
|
+ }
|
|
|
} else {
|
|
|
wpa_printf(MSG_DEBUG, "Ongoing scan action - reject new request");
|
|
|
*reply_len = os_snprintf(reply, reply_size, "FAIL-BUSY\n");
|