Move wpa_supplicant specific scan code away from src/drivers
This fits better in wpa_supplicant/scan.c. Couple of remaining scan_helpers.c functions are currently used in driver wrappers, but they can likely be removed in the future.
This commit is contained in:
parent
baac649094
commit
9ba9fa07cc
14 changed files with 224 additions and 204 deletions
|
@ -2272,13 +2272,7 @@ void wpa_supplicant_event(void *ctx, enum wpa_event_type event,
|
|||
union wpa_event_data *data);
|
||||
|
||||
const u8 * wpa_scan_get_ie(const struct wpa_scan_res *res, u8 ie);
|
||||
const u8 * wpa_scan_get_vendor_ie(const struct wpa_scan_res *res,
|
||||
u32 vendor_type);
|
||||
struct wpabuf * wpa_scan_get_vendor_ie_multi(const struct wpa_scan_res *res,
|
||||
u32 vendor_type);
|
||||
int wpa_scan_get_max_rate(const struct wpa_scan_res *res);
|
||||
void wpa_scan_results_free(struct wpa_scan_results *res);
|
||||
void wpa_scan_sort_results(struct wpa_scan_results *res);
|
||||
|
||||
|
||||
/*
|
||||
|
|
|
@ -38,80 +38,6 @@ const u8 * wpa_scan_get_ie(const struct wpa_scan_res *res, u8 ie)
|
|||
}
|
||||
|
||||
|
||||
const u8 * wpa_scan_get_vendor_ie(const struct wpa_scan_res *res,
|
||||
u32 vendor_type)
|
||||
{
|
||||
const u8 *end, *pos;
|
||||
|
||||
pos = (const u8 *) (res + 1);
|
||||
end = pos + res->ie_len;
|
||||
|
||||
while (pos + 1 < end) {
|
||||
if (pos + 2 + pos[1] > end)
|
||||
break;
|
||||
if (pos[0] == WLAN_EID_VENDOR_SPECIFIC && pos[1] >= 4 &&
|
||||
vendor_type == WPA_GET_BE32(&pos[2]))
|
||||
return pos;
|
||||
pos += 2 + pos[1];
|
||||
}
|
||||
|
||||
return NULL;
|
||||
}
|
||||
|
||||
|
||||
struct wpabuf * wpa_scan_get_vendor_ie_multi(const struct wpa_scan_res *res,
|
||||
u32 vendor_type)
|
||||
{
|
||||
struct wpabuf *buf;
|
||||
const u8 *end, *pos;
|
||||
|
||||
buf = wpabuf_alloc(res->ie_len);
|
||||
if (buf == NULL)
|
||||
return NULL;
|
||||
|
||||
pos = (const u8 *) (res + 1);
|
||||
end = pos + res->ie_len;
|
||||
|
||||
while (pos + 1 < end) {
|
||||
if (pos + 2 + pos[1] > end)
|
||||
break;
|
||||
if (pos[0] == WLAN_EID_VENDOR_SPECIFIC && pos[1] >= 4 &&
|
||||
vendor_type == WPA_GET_BE32(&pos[2]))
|
||||
wpabuf_put_data(buf, pos + 2 + 4, pos[1] - 4);
|
||||
pos += 2 + pos[1];
|
||||
}
|
||||
|
||||
if (wpabuf_len(buf) == 0) {
|
||||
wpabuf_free(buf);
|
||||
buf = NULL;
|
||||
}
|
||||
|
||||
return buf;
|
||||
}
|
||||
|
||||
|
||||
int wpa_scan_get_max_rate(const struct wpa_scan_res *res)
|
||||
{
|
||||
int rate = 0;
|
||||
const u8 *ie;
|
||||
int i;
|
||||
|
||||
ie = wpa_scan_get_ie(res, WLAN_EID_SUPP_RATES);
|
||||
for (i = 0; ie && i < ie[1]; i++) {
|
||||
if ((ie[i + 2] & 0x7f) > rate)
|
||||
rate = ie[i + 2] & 0x7f;
|
||||
}
|
||||
|
||||
ie = wpa_scan_get_ie(res, WLAN_EID_EXT_SUPP_RATES);
|
||||
for (i = 0; ie && i < ie[1]; i++) {
|
||||
if ((ie[i + 2] & 0x7f) > rate)
|
||||
rate = ie[i + 2] & 0x7f;
|
||||
}
|
||||
|
||||
return rate;
|
||||
}
|
||||
|
||||
|
||||
void wpa_scan_results_free(struct wpa_scan_results *res)
|
||||
{
|
||||
size_t i;
|
||||
|
@ -124,59 +50,3 @@ void wpa_scan_results_free(struct wpa_scan_results *res)
|
|||
os_free(res->res);
|
||||
os_free(res);
|
||||
}
|
||||
|
||||
|
||||
/* Compare function for sorting scan results. Return >0 if @b is considered
|
||||
* better. */
|
||||
static int wpa_scan_result_compar(const void *a, const void *b)
|
||||
{
|
||||
struct wpa_scan_res **_wa = (void *) a;
|
||||
struct wpa_scan_res **_wb = (void *) b;
|
||||
struct wpa_scan_res *wa = *_wa;
|
||||
struct wpa_scan_res *wb = *_wb;
|
||||
int wpa_a, wpa_b, maxrate_a, maxrate_b;
|
||||
|
||||
/* WPA/WPA2 support preferred */
|
||||
wpa_a = wpa_scan_get_vendor_ie(wa, WPA_IE_VENDOR_TYPE) != NULL ||
|
||||
wpa_scan_get_ie(wa, WLAN_EID_RSN) != NULL;
|
||||
wpa_b = wpa_scan_get_vendor_ie(wb, WPA_IE_VENDOR_TYPE) != NULL ||
|
||||
wpa_scan_get_ie(wb, WLAN_EID_RSN) != NULL;
|
||||
|
||||
if (wpa_b && !wpa_a)
|
||||
return 1;
|
||||
if (!wpa_b && wpa_a)
|
||||
return -1;
|
||||
|
||||
/* privacy support preferred */
|
||||
if ((wa->caps & IEEE80211_CAP_PRIVACY) == 0 &&
|
||||
(wb->caps & IEEE80211_CAP_PRIVACY))
|
||||
return 1;
|
||||
if ((wa->caps & IEEE80211_CAP_PRIVACY) &&
|
||||
(wb->caps & IEEE80211_CAP_PRIVACY) == 0)
|
||||
return -1;
|
||||
|
||||
/* best/max rate preferred if signal level close enough XXX */
|
||||
if ((wa->level && wb->level && abs(wb->level - wa->level) < 5) ||
|
||||
(wa->qual && wb->qual && abs(wb->qual - wa->qual) < 10)) {
|
||||
maxrate_a = wpa_scan_get_max_rate(wa);
|
||||
maxrate_b = wpa_scan_get_max_rate(wb);
|
||||
if (maxrate_a != maxrate_b)
|
||||
return maxrate_b - maxrate_a;
|
||||
}
|
||||
|
||||
/* use freq for channel preference */
|
||||
|
||||
/* all things being equal, use signal level; if signal levels are
|
||||
* identical, use quality values since some drivers may only report
|
||||
* that value and leave the signal level zero */
|
||||
if (wb->level == wa->level)
|
||||
return wb->qual - wa->qual;
|
||||
return wb->level - wa->level;
|
||||
}
|
||||
|
||||
|
||||
void wpa_scan_sort_results(struct wpa_scan_results *res)
|
||||
{
|
||||
qsort(res->res, res->num, sizeof(struct wpa_scan_res *),
|
||||
wpa_scan_result_compar);
|
||||
}
|
||||
|
|
|
@ -19,6 +19,7 @@
|
|||
#include "drivers/driver.h"
|
||||
#include "config_ssid.h"
|
||||
#include "wpa_supplicant_i.h"
|
||||
#include "scan.h"
|
||||
#include "bgscan.h"
|
||||
|
||||
struct bgscan_simple_data {
|
||||
|
|
|
@ -33,6 +33,7 @@
|
|||
#include "ap.h"
|
||||
#include "notify.h"
|
||||
#include "bss.h"
|
||||
#include "scan.h"
|
||||
#include "ctrl_iface.h"
|
||||
|
||||
extern struct wpa_driver_ops *wpa_drivers[];
|
||||
|
|
|
@ -26,6 +26,7 @@
|
|||
#include "../notify.h"
|
||||
#include "../wpas_glue.h"
|
||||
#include "../bss.h"
|
||||
#include "../scan.h"
|
||||
#include "dbus_new_helpers.h"
|
||||
#include "dbus_new.h"
|
||||
#include "dbus_new_handlers.h"
|
||||
|
|
|
@ -26,6 +26,7 @@
|
|||
#include "../notify.h"
|
||||
#include "../wpas_glue.h"
|
||||
#include "../bss.h"
|
||||
#include "../scan.h"
|
||||
#include "dbus_old.h"
|
||||
#include "dbus_old_handlers.h"
|
||||
#include "dbus_dict_helpers.h"
|
||||
|
|
|
@ -39,6 +39,7 @@
|
|||
#include "ap.h"
|
||||
#include "bss.h"
|
||||
#include "mlme.h"
|
||||
#include "scan.h"
|
||||
|
||||
|
||||
static int wpa_supplicant_select_config(struct wpa_supplicant *wpa_s)
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
/*
|
||||
* WPA Supplicant - Scanning
|
||||
* Copyright (c) 2003-2008, Jouni Malinen <j@w1.fi>
|
||||
* Copyright (c) 2003-2010, Jouni Malinen <j@w1.fi>
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License version 2 as
|
||||
|
@ -12,16 +12,19 @@
|
|||
* See README and COPYING for more details.
|
||||
*/
|
||||
|
||||
#include "includes.h"
|
||||
#include "utils/includes.h"
|
||||
|
||||
#include "common.h"
|
||||
#include "eloop.h"
|
||||
#include "utils/common.h"
|
||||
#include "utils/eloop.h"
|
||||
#include "common/ieee802_11_defs.h"
|
||||
#include "config.h"
|
||||
#include "wpa_supplicant_i.h"
|
||||
#include "driver_i.h"
|
||||
#include "mlme.h"
|
||||
#include "wps_supplicant.h"
|
||||
#include "notify.h"
|
||||
#include "bss.h"
|
||||
#include "scan.h"
|
||||
|
||||
|
||||
static void wpa_supplicant_gen_assoc_event(struct wpa_supplicant *wpa_s)
|
||||
|
@ -434,3 +437,176 @@ void wpa_supplicant_notify_scanning(struct wpa_supplicant *wpa_s,
|
|||
}
|
||||
}
|
||||
|
||||
|
||||
static int wpa_scan_get_max_rate(const struct wpa_scan_res *res)
|
||||
{
|
||||
int rate = 0;
|
||||
const u8 *ie;
|
||||
int i;
|
||||
|
||||
ie = wpa_scan_get_ie(res, WLAN_EID_SUPP_RATES);
|
||||
for (i = 0; ie && i < ie[1]; i++) {
|
||||
if ((ie[i + 2] & 0x7f) > rate)
|
||||
rate = ie[i + 2] & 0x7f;
|
||||
}
|
||||
|
||||
ie = wpa_scan_get_ie(res, WLAN_EID_EXT_SUPP_RATES);
|
||||
for (i = 0; ie && i < ie[1]; i++) {
|
||||
if ((ie[i + 2] & 0x7f) > rate)
|
||||
rate = ie[i + 2] & 0x7f;
|
||||
}
|
||||
|
||||
return rate;
|
||||
}
|
||||
|
||||
|
||||
const u8 * wpa_scan_get_vendor_ie(const struct wpa_scan_res *res,
|
||||
u32 vendor_type)
|
||||
{
|
||||
const u8 *end, *pos;
|
||||
|
||||
pos = (const u8 *) (res + 1);
|
||||
end = pos + res->ie_len;
|
||||
|
||||
while (pos + 1 < end) {
|
||||
if (pos + 2 + pos[1] > end)
|
||||
break;
|
||||
if (pos[0] == WLAN_EID_VENDOR_SPECIFIC && pos[1] >= 4 &&
|
||||
vendor_type == WPA_GET_BE32(&pos[2]))
|
||||
return pos;
|
||||
pos += 2 + pos[1];
|
||||
}
|
||||
|
||||
return NULL;
|
||||
}
|
||||
|
||||
|
||||
struct wpabuf * wpa_scan_get_vendor_ie_multi(const struct wpa_scan_res *res,
|
||||
u32 vendor_type)
|
||||
{
|
||||
struct wpabuf *buf;
|
||||
const u8 *end, *pos;
|
||||
|
||||
buf = wpabuf_alloc(res->ie_len);
|
||||
if (buf == NULL)
|
||||
return NULL;
|
||||
|
||||
pos = (const u8 *) (res + 1);
|
||||
end = pos + res->ie_len;
|
||||
|
||||
while (pos + 1 < end) {
|
||||
if (pos + 2 + pos[1] > end)
|
||||
break;
|
||||
if (pos[0] == WLAN_EID_VENDOR_SPECIFIC && pos[1] >= 4 &&
|
||||
vendor_type == WPA_GET_BE32(&pos[2]))
|
||||
wpabuf_put_data(buf, pos + 2 + 4, pos[1] - 4);
|
||||
pos += 2 + pos[1];
|
||||
}
|
||||
|
||||
if (wpabuf_len(buf) == 0) {
|
||||
wpabuf_free(buf);
|
||||
buf = NULL;
|
||||
}
|
||||
|
||||
return buf;
|
||||
}
|
||||
|
||||
|
||||
/* Compare function for sorting scan results. Return >0 if @b is considered
|
||||
* better. */
|
||||
static int wpa_scan_result_compar(const void *a, const void *b)
|
||||
{
|
||||
struct wpa_scan_res **_wa = (void *) a;
|
||||
struct wpa_scan_res **_wb = (void *) b;
|
||||
struct wpa_scan_res *wa = *_wa;
|
||||
struct wpa_scan_res *wb = *_wb;
|
||||
int wpa_a, wpa_b, maxrate_a, maxrate_b;
|
||||
|
||||
/* WPA/WPA2 support preferred */
|
||||
wpa_a = wpa_scan_get_vendor_ie(wa, WPA_IE_VENDOR_TYPE) != NULL ||
|
||||
wpa_scan_get_ie(wa, WLAN_EID_RSN) != NULL;
|
||||
wpa_b = wpa_scan_get_vendor_ie(wb, WPA_IE_VENDOR_TYPE) != NULL ||
|
||||
wpa_scan_get_ie(wb, WLAN_EID_RSN) != NULL;
|
||||
|
||||
if (wpa_b && !wpa_a)
|
||||
return 1;
|
||||
if (!wpa_b && wpa_a)
|
||||
return -1;
|
||||
|
||||
/* privacy support preferred */
|
||||
if ((wa->caps & IEEE80211_CAP_PRIVACY) == 0 &&
|
||||
(wb->caps & IEEE80211_CAP_PRIVACY))
|
||||
return 1;
|
||||
if ((wa->caps & IEEE80211_CAP_PRIVACY) &&
|
||||
(wb->caps & IEEE80211_CAP_PRIVACY) == 0)
|
||||
return -1;
|
||||
|
||||
/* best/max rate preferred if signal level close enough XXX */
|
||||
if ((wa->level && wb->level && abs(wb->level - wa->level) < 5) ||
|
||||
(wa->qual && wb->qual && abs(wb->qual - wa->qual) < 10)) {
|
||||
maxrate_a = wpa_scan_get_max_rate(wa);
|
||||
maxrate_b = wpa_scan_get_max_rate(wb);
|
||||
if (maxrate_a != maxrate_b)
|
||||
return maxrate_b - maxrate_a;
|
||||
}
|
||||
|
||||
/* use freq for channel preference */
|
||||
|
||||
/* all things being equal, use signal level; if signal levels are
|
||||
* identical, use quality values since some drivers may only report
|
||||
* that value and leave the signal level zero */
|
||||
if (wb->level == wa->level)
|
||||
return wb->qual - wa->qual;
|
||||
return wb->level - wa->level;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* wpa_supplicant_get_scan_results - Get scan results
|
||||
* @wpa_s: Pointer to wpa_supplicant data
|
||||
* @info: Information about what was scanned or %NULL if not available
|
||||
* @new_scan: Whether a new scan was performed
|
||||
* Returns: Scan results, %NULL on failure
|
||||
*
|
||||
* This function request the current scan results from the driver and updates
|
||||
* the local BSS list wpa_s->bss. The caller is responsible for freeing the
|
||||
* results with wpa_scan_results_free().
|
||||
*/
|
||||
struct wpa_scan_results *
|
||||
wpa_supplicant_get_scan_results(struct wpa_supplicant *wpa_s,
|
||||
struct scan_info *info, int new_scan)
|
||||
{
|
||||
struct wpa_scan_results *scan_res;
|
||||
size_t i;
|
||||
|
||||
if (wpa_s->drv_flags & WPA_DRIVER_FLAGS_USER_SPACE_MLME)
|
||||
scan_res = ieee80211_sta_get_scan_results(wpa_s);
|
||||
else
|
||||
scan_res = wpa_drv_get_scan_results2(wpa_s);
|
||||
if (scan_res == NULL) {
|
||||
wpa_printf(MSG_DEBUG, "Failed to get scan results");
|
||||
return NULL;
|
||||
}
|
||||
|
||||
qsort(scan_res->res, scan_res->num, sizeof(struct wpa_scan_res *),
|
||||
wpa_scan_result_compar);
|
||||
|
||||
wpa_bss_update_start(wpa_s);
|
||||
for (i = 0; i < scan_res->num; i++)
|
||||
wpa_bss_update_scan_res(wpa_s, scan_res->res[i]);
|
||||
wpa_bss_update_end(wpa_s, info, new_scan);
|
||||
|
||||
return scan_res;
|
||||
}
|
||||
|
||||
|
||||
int wpa_supplicant_update_scan_results(struct wpa_supplicant *wpa_s)
|
||||
{
|
||||
struct wpa_scan_results *scan_res;
|
||||
scan_res = wpa_supplicant_get_scan_results(wpa_s, NULL, 0);
|
||||
if (scan_res == NULL)
|
||||
return -1;
|
||||
wpa_scan_results_free(scan_res);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
|
35
wpa_supplicant/scan.h
Normal file
35
wpa_supplicant/scan.h
Normal file
|
@ -0,0 +1,35 @@
|
|||
/*
|
||||
* WPA Supplicant - Scanning
|
||||
* Copyright (c) 2003-2010, Jouni Malinen <j@w1.fi>
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License version 2 as
|
||||
* published by the Free Software Foundation.
|
||||
*
|
||||
* Alternatively, this software may be distributed under the terms of BSD
|
||||
* license.
|
||||
*
|
||||
* See README and COPYING for more details.
|
||||
*/
|
||||
|
||||
#ifndef SCAN_H
|
||||
#define SCAN_H
|
||||
|
||||
int wpa_supplicant_enabled_networks(struct wpa_config *conf);
|
||||
void wpa_supplicant_req_scan(struct wpa_supplicant *wpa_s, int sec, int usec);
|
||||
void wpa_supplicant_cancel_scan(struct wpa_supplicant *wpa_s);
|
||||
void wpa_supplicant_notify_scanning(struct wpa_supplicant *wpa_s,
|
||||
int scanning);
|
||||
struct wpa_driver_scan_params;
|
||||
int wpa_supplicant_trigger_scan(struct wpa_supplicant *wpa_s,
|
||||
struct wpa_driver_scan_params *params);
|
||||
struct wpa_scan_results *
|
||||
wpa_supplicant_get_scan_results(struct wpa_supplicant *wpa_s,
|
||||
struct scan_info *info, int new_scan);
|
||||
int wpa_supplicant_update_scan_results(struct wpa_supplicant *wpa_s);
|
||||
const u8 * wpa_scan_get_vendor_ie(const struct wpa_scan_res *res,
|
||||
u32 vendor_type);
|
||||
struct wpabuf * wpa_scan_get_vendor_ie_multi(const struct wpa_scan_res *res,
|
||||
u32 vendor_type);
|
||||
|
||||
#endif /* SCAN_H */
|
|
@ -28,6 +28,7 @@
|
|||
#include "notify.h"
|
||||
#include "blacklist.h"
|
||||
#include "bss.h"
|
||||
#include "scan.h"
|
||||
#include "sme.h"
|
||||
|
||||
void sme_authenticate(struct wpa_supplicant *wpa_s,
|
||||
|
|
|
@ -45,6 +45,7 @@
|
|||
#include "notify.h"
|
||||
#include "bgscan.h"
|
||||
#include "bss.h"
|
||||
#include "scan.h"
|
||||
|
||||
const char *wpa_supplicant_version =
|
||||
"wpa_supplicant v" VERSION_STR "\n"
|
||||
|
@ -1566,56 +1567,6 @@ int wpa_supplicant_set_debug_params(struct wpa_global *global, int debug_level,
|
|||
}
|
||||
|
||||
|
||||
/**
|
||||
* wpa_supplicant_get_scan_results - Get scan results
|
||||
* @wpa_s: Pointer to wpa_supplicant data
|
||||
* @info: Information about what was scanned or %NULL if not available
|
||||
* @new_scan: Whether a new scan was performed
|
||||
* Returns: Scan results, %NULL on failure
|
||||
*
|
||||
* This function request the current scan results from the driver and updates
|
||||
* the local BSS list wpa_s->bss. The caller is responsible for freeing the
|
||||
* results with wpa_scan_results_free().
|
||||
*/
|
||||
struct wpa_scan_results *
|
||||
wpa_supplicant_get_scan_results(struct wpa_supplicant *wpa_s,
|
||||
struct scan_info *info, int new_scan)
|
||||
{
|
||||
struct wpa_scan_results *scan_res;
|
||||
size_t i;
|
||||
|
||||
if (wpa_s->drv_flags & WPA_DRIVER_FLAGS_USER_SPACE_MLME)
|
||||
scan_res = ieee80211_sta_get_scan_results(wpa_s);
|
||||
else
|
||||
scan_res = wpa_drv_get_scan_results2(wpa_s);
|
||||
if (scan_res == NULL) {
|
||||
wpa_printf(MSG_DEBUG, "Failed to get scan results");
|
||||
return NULL;
|
||||
}
|
||||
|
||||
wpa_scan_sort_results(scan_res);
|
||||
|
||||
wpa_bss_update_start(wpa_s);
|
||||
for (i = 0; i < scan_res->num; i++)
|
||||
wpa_bss_update_scan_res(wpa_s, scan_res->res[i]);
|
||||
wpa_bss_update_end(wpa_s, info, new_scan);
|
||||
|
||||
return scan_res;
|
||||
}
|
||||
|
||||
|
||||
int wpa_supplicant_update_scan_results(struct wpa_supplicant *wpa_s)
|
||||
{
|
||||
struct wpa_scan_results *scan_res;
|
||||
scan_res = wpa_supplicant_get_scan_results(wpa_s, NULL, 0);
|
||||
if (scan_res == NULL)
|
||||
return -1;
|
||||
wpa_scan_results_free(scan_res);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* wpa_supplicant_get_ssid - Get a pointer to the current network structure
|
||||
* @wpa_s: Pointer to wpa_supplicant data
|
||||
|
|
|
@ -444,10 +444,6 @@ void wpa_supplicant_associate(struct wpa_supplicant *wpa_s,
|
|||
void wpa_supplicant_set_non_wpa_policy(struct wpa_supplicant *wpa_s,
|
||||
struct wpa_ssid *ssid);
|
||||
void wpa_supplicant_initiate_eapol(struct wpa_supplicant *wpa_s);
|
||||
struct wpa_scan_results *
|
||||
wpa_supplicant_get_scan_results(struct wpa_supplicant *wpa_s,
|
||||
struct scan_info *info, int new_scan);
|
||||
int wpa_supplicant_update_scan_results(struct wpa_supplicant *wpa_s);
|
||||
void wpa_clear_keys(struct wpa_supplicant *wpa_s, const u8 *addr);
|
||||
void wpa_supplicant_req_auth_timeout(struct wpa_supplicant *wpa_s,
|
||||
int sec, int usec);
|
||||
|
@ -490,16 +486,6 @@ void wpa_supplicant_terminate_proc(struct wpa_global *global);
|
|||
void wpa_supplicant_rx_eapol(void *ctx, const u8 *src_addr,
|
||||
const u8 *buf, size_t len);
|
||||
|
||||
/* scan.c */
|
||||
int wpa_supplicant_enabled_networks(struct wpa_config *conf);
|
||||
void wpa_supplicant_req_scan(struct wpa_supplicant *wpa_s, int sec, int usec);
|
||||
void wpa_supplicant_cancel_scan(struct wpa_supplicant *wpa_s);
|
||||
void wpa_supplicant_notify_scanning(struct wpa_supplicant *wpa_s,
|
||||
int scanning);
|
||||
struct wpa_driver_scan_params;
|
||||
int wpa_supplicant_trigger_scan(struct wpa_supplicant *wpa_s,
|
||||
struct wpa_driver_scan_params *params);
|
||||
|
||||
/* events.c */
|
||||
void wpa_supplicant_mark_disassoc(struct wpa_supplicant *wpa_s);
|
||||
|
||||
|
|
|
@ -31,6 +31,7 @@
|
|||
#include "wpas_glue.h"
|
||||
#include "wps_supplicant.h"
|
||||
#include "bss.h"
|
||||
#include "scan.h"
|
||||
|
||||
|
||||
#ifndef CONFIG_NO_CONFIG_BLOBS
|
||||
|
|
|
@ -31,6 +31,7 @@
|
|||
#include "notify.h"
|
||||
#include "blacklist.h"
|
||||
#include "bss.h"
|
||||
#include "scan.h"
|
||||
#include "wps_supplicant.h"
|
||||
|
||||
|
||||
|
|
Loading…
Reference in a new issue