Allow passive scan to be requested with SCAN passive=1
This allows external programs to request wpa_supplicant to execute a passive scan (i.e., do not send any Probe Request frames). Signed-hostap: Jouni Malinen <j@w1.fi>
This commit is contained in:
parent
3ae3ec2727
commit
88c2d48860
3 changed files with 10 additions and 0 deletions
|
@ -5263,6 +5263,8 @@ static void wpas_ctrl_scan(struct wpa_supplicant *wpa_s, char *params,
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
wpa_s->manual_scan_passive = 0;
|
||||||
|
|
||||||
if (params) {
|
if (params) {
|
||||||
if (os_strncasecmp(params, "TYPE=ONLY", 9) == 0)
|
if (os_strncasecmp(params, "TYPE=ONLY", 9) == 0)
|
||||||
wpa_s->scan_res_handler = scan_only_handler;
|
wpa_s->scan_res_handler = scan_only_handler;
|
||||||
|
@ -5272,6 +5274,10 @@ static void wpas_ctrl_scan(struct wpa_supplicant *wpa_s, char *params,
|
||||||
*reply_len = -1;
|
*reply_len = -1;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
pos = os_strstr(params, "passive=");
|
||||||
|
if (pos)
|
||||||
|
wpa_s->manual_scan_passive = !!atoi(pos + 8);
|
||||||
} else {
|
} else {
|
||||||
os_free(wpa_s->manual_scan_freqs);
|
os_free(wpa_s->manual_scan_freqs);
|
||||||
wpa_s->manual_scan_freqs = NULL;
|
wpa_s->manual_scan_freqs = NULL;
|
||||||
|
|
|
@ -698,6 +698,9 @@ static void wpa_supplicant_scan(void *eloop_ctx, void *timeout_ctx)
|
||||||
wpa_dbg(wpa_s, MSG_DEBUG, "Include wildcard SSID in "
|
wpa_dbg(wpa_s, MSG_DEBUG, "Include wildcard SSID in "
|
||||||
"the scan request");
|
"the scan request");
|
||||||
params.num_ssids++;
|
params.num_ssids++;
|
||||||
|
} else if (wpa_s->last_scan_req == MANUAL_SCAN_REQ &&
|
||||||
|
wpa_s->manual_scan_passive && params.num_ssids == 0) {
|
||||||
|
wpa_dbg(wpa_s, MSG_DEBUG, "Use passive scan based on manual request");
|
||||||
} else {
|
} else {
|
||||||
wpa_s->prev_scan_ssid = WILDCARD_SSID_SCAN;
|
wpa_s->prev_scan_ssid = WILDCARD_SSID_SCAN;
|
||||||
params.num_ssids++;
|
params.num_ssids++;
|
||||||
|
|
|
@ -482,6 +482,7 @@ struct wpa_supplicant {
|
||||||
int scan_runs; /* number of scan runs since WPS was started */
|
int scan_runs; /* number of scan runs since WPS was started */
|
||||||
int *next_scan_freqs;
|
int *next_scan_freqs;
|
||||||
int *manual_scan_freqs;
|
int *manual_scan_freqs;
|
||||||
|
unsigned int manual_scan_passive:1;
|
||||||
int scan_interval; /* time in sec between scans to find suitable AP */
|
int scan_interval; /* time in sec between scans to find suitable AP */
|
||||||
int normal_scans; /* normal scans run before sched_scan */
|
int normal_scans; /* normal scans run before sched_scan */
|
||||||
int scan_for_connection; /* whether the scan request was triggered for
|
int scan_for_connection; /* whether the scan request was triggered for
|
||||||
|
|
Loading…
Reference in a new issue