P2P: Add global configuration parameters for P2P
This commit is contained in:
parent
2c5d725c65
commit
e3768e7c94
4 changed files with 85 additions and 0 deletions
|
@ -1688,6 +1688,8 @@ void wpa_config_free(struct wpa_config *config)
|
||||||
struct wpa_config_blob *blob, *prevblob;
|
struct wpa_config_blob *blob, *prevblob;
|
||||||
#endif /* CONFIG_NO_CONFIG_BLOBS */
|
#endif /* CONFIG_NO_CONFIG_BLOBS */
|
||||||
struct wpa_ssid *ssid, *prev = NULL;
|
struct wpa_ssid *ssid, *prev = NULL;
|
||||||
|
int i;
|
||||||
|
|
||||||
ssid = config->ssid;
|
ssid = config->ssid;
|
||||||
while (ssid) {
|
while (ssid) {
|
||||||
prev = ssid;
|
prev = ssid;
|
||||||
|
@ -1717,7 +1719,10 @@ void wpa_config_free(struct wpa_config *config)
|
||||||
os_free(config->model_number);
|
os_free(config->model_number);
|
||||||
os_free(config->serial_number);
|
os_free(config->serial_number);
|
||||||
os_free(config->device_type);
|
os_free(config->device_type);
|
||||||
|
for (i = 0; i < MAX_SEC_DEVICE_TYPES; i++)
|
||||||
|
os_free(config->sec_device_type[i]);
|
||||||
os_free(config->config_methods);
|
os_free(config->config_methods);
|
||||||
|
os_free(config->p2p_ssid_postfix);
|
||||||
os_free(config->pssid);
|
os_free(config->pssid);
|
||||||
os_free(config);
|
os_free(config);
|
||||||
}
|
}
|
||||||
|
@ -2132,6 +2137,7 @@ struct wpa_config * wpa_config_alloc_empty(const char *ctrl_interface,
|
||||||
config->eapol_version = DEFAULT_EAPOL_VERSION;
|
config->eapol_version = DEFAULT_EAPOL_VERSION;
|
||||||
config->ap_scan = DEFAULT_AP_SCAN;
|
config->ap_scan = DEFAULT_AP_SCAN;
|
||||||
config->fast_reauth = DEFAULT_FAST_REAUTH;
|
config->fast_reauth = DEFAULT_FAST_REAUTH;
|
||||||
|
config->p2p_go_intent = DEFAULT_P2P_GO_INTENT;
|
||||||
config->bss_max_count = DEFAULT_BSS_MAX_COUNT;
|
config->bss_max_count = DEFAULT_BSS_MAX_COUNT;
|
||||||
|
|
||||||
if (ctrl_interface)
|
if (ctrl_interface)
|
||||||
|
@ -2309,6 +2315,29 @@ static int wpa_config_process_os_version(const struct global_parse_data *data,
|
||||||
|
|
||||||
#endif /* CONFIG_WPS */
|
#endif /* CONFIG_WPS */
|
||||||
|
|
||||||
|
#ifdef CONFIG_P2P
|
||||||
|
static int wpa_config_process_sec_device_type(
|
||||||
|
const struct global_parse_data *data,
|
||||||
|
struct wpa_config *config, int line, const char *pos)
|
||||||
|
{
|
||||||
|
int idx;
|
||||||
|
|
||||||
|
for (idx = 0; idx < MAX_SEC_DEVICE_TYPES; idx++)
|
||||||
|
if (config->sec_device_type[idx] == NULL)
|
||||||
|
break;
|
||||||
|
if (idx == MAX_SEC_DEVICE_TYPES) {
|
||||||
|
wpa_printf(MSG_ERROR, "Line %d: too many sec_device_type "
|
||||||
|
"items", line);
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
config->sec_device_type[idx] = os_strdup(pos);
|
||||||
|
if (config->sec_device_type[idx] == NULL)
|
||||||
|
return -1;
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
#endif /* CONFIG_P2P */
|
||||||
|
|
||||||
|
|
||||||
#ifdef OFFSET
|
#ifdef OFFSET
|
||||||
#undef OFFSET
|
#undef OFFSET
|
||||||
|
@ -2356,6 +2385,16 @@ static const struct global_parse_data global_fields[] = {
|
||||||
{ STR(config_methods), CFG_CHANGED_CONFIG_METHODS },
|
{ STR(config_methods), CFG_CHANGED_CONFIG_METHODS },
|
||||||
{ INT_RANGE(wps_cred_processing, 0, 2), 0 },
|
{ INT_RANGE(wps_cred_processing, 0, 2), 0 },
|
||||||
#endif /* CONFIG_WPS */
|
#endif /* CONFIG_WPS */
|
||||||
|
#ifdef CONFIG_P2P
|
||||||
|
{ FUNC(sec_device_type), CFG_CHANGED_SEC_DEVICE_TYPE },
|
||||||
|
{ INT(p2p_listen_reg_class), 0 },
|
||||||
|
{ INT(p2p_listen_channel), 0 },
|
||||||
|
{ INT(p2p_oper_reg_class), 0 },
|
||||||
|
{ INT(p2p_oper_channel), 0 },
|
||||||
|
{ INT_RANGE(p2p_go_intent, 0, 15), 0 },
|
||||||
|
{ STR(p2p_ssid_postfix), CFG_CHANGED_P2P_SSID_POSTFIX },
|
||||||
|
{ INT_RANGE(persistent_reconnect, 0, 1), 0 },
|
||||||
|
#endif /* CONFIG_P2P */
|
||||||
{ FUNC(country), CFG_CHANGED_COUNTRY },
|
{ FUNC(country), CFG_CHANGED_COUNTRY },
|
||||||
{ INT(bss_max_count), 0 },
|
{ INT(bss_max_count), 0 },
|
||||||
{ INT_RANGE(filter_ssids, 0, 1), 0 }
|
{ INT_RANGE(filter_ssids, 0, 1), 0 }
|
||||||
|
|
|
@ -22,6 +22,7 @@
|
||||||
#define DEFAULT_AP_SCAN 1
|
#define DEFAULT_AP_SCAN 1
|
||||||
#endif /* CONFIG_NO_SCAN_PROCESSING */
|
#endif /* CONFIG_NO_SCAN_PROCESSING */
|
||||||
#define DEFAULT_FAST_REAUTH 1
|
#define DEFAULT_FAST_REAUTH 1
|
||||||
|
#define DEFAULT_P2P_GO_INTENT 7
|
||||||
#define DEFAULT_BSS_MAX_COUNT 200
|
#define DEFAULT_BSS_MAX_COUNT 200
|
||||||
|
|
||||||
#include "config_ssid.h"
|
#include "config_ssid.h"
|
||||||
|
@ -33,6 +34,8 @@
|
||||||
#define CFG_CHANGED_OS_VERSION BIT(3)
|
#define CFG_CHANGED_OS_VERSION BIT(3)
|
||||||
#define CFG_CHANGED_UUID BIT(4)
|
#define CFG_CHANGED_UUID BIT(4)
|
||||||
#define CFG_CHANGED_COUNTRY BIT(5)
|
#define CFG_CHANGED_COUNTRY BIT(5)
|
||||||
|
#define CFG_CHANGED_SEC_DEVICE_TYPE BIT(6)
|
||||||
|
#define CFG_CHANGED_P2P_SSID_POSTFIX BIT(7)
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* struct wpa_config - wpa_supplicant configuration data
|
* struct wpa_config - wpa_supplicant configuration data
|
||||||
|
@ -343,6 +346,21 @@ struct wpa_config {
|
||||||
*/
|
*/
|
||||||
int wps_cred_processing;
|
int wps_cred_processing;
|
||||||
|
|
||||||
|
#define MAX_SEC_DEVICE_TYPES 5
|
||||||
|
/**
|
||||||
|
* sec_device_type - Secondary Device Types (P2P)
|
||||||
|
* See device_type for the format used with these.
|
||||||
|
*/
|
||||||
|
char *sec_device_type[MAX_SEC_DEVICE_TYPES];
|
||||||
|
|
||||||
|
int p2p_listen_reg_class;
|
||||||
|
int p2p_listen_channel;
|
||||||
|
int p2p_oper_reg_class;
|
||||||
|
int p2p_oper_channel;
|
||||||
|
int p2p_go_intent;
|
||||||
|
char *p2p_ssid_postfix;
|
||||||
|
int persistent_reconnect;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* bss_max_count - Maximum number of BSS entries to keep in memory
|
* bss_max_count - Maximum number of BSS entries to keep in memory
|
||||||
*/
|
*/
|
||||||
|
|
|
@ -654,6 +654,26 @@ static void wpa_config_write_global(FILE *f, struct wpa_config *config)
|
||||||
fprintf(f, "wps_cred_processing=%d\n",
|
fprintf(f, "wps_cred_processing=%d\n",
|
||||||
config->wps_cred_processing);
|
config->wps_cred_processing);
|
||||||
#endif /* CONFIG_WPS */
|
#endif /* CONFIG_WPS */
|
||||||
|
#ifdef CONFIG_P2P
|
||||||
|
if (config->p2p_listen_reg_class)
|
||||||
|
fprintf(f, "p2p_listen_reg_class=%u\n",
|
||||||
|
config->p2p_listen_reg_class);
|
||||||
|
if (config->p2p_listen_channel)
|
||||||
|
fprintf(f, "p2p_listen_channel=%u\n",
|
||||||
|
config->p2p_listen_channel);
|
||||||
|
if (config->p2p_oper_reg_class)
|
||||||
|
fprintf(f, "p2p_oper_reg_class=%u\n",
|
||||||
|
config->p2p_oper_reg_class);
|
||||||
|
if (config->p2p_oper_channel)
|
||||||
|
fprintf(f, "p2p_oper_channel=%u\n", config->p2p_oper_channel);
|
||||||
|
if (config->p2p_go_intent != DEFAULT_P2P_GO_INTENT)
|
||||||
|
fprintf(f, "p2p_go_intent=%u\n", config->p2p_go_intent);
|
||||||
|
if (config->p2p_ssid_postfix)
|
||||||
|
fprintf(f, "p2p_ssid_postfix=%s\n", config->p2p_ssid_postfix);
|
||||||
|
if (config->persistent_reconnect)
|
||||||
|
fprintf(f, "persistent_reconnect=%u\n",
|
||||||
|
config->persistent_reconnect);
|
||||||
|
#endif /* CONFIG_P2P */
|
||||||
if (config->country[0] && config->country[1]) {
|
if (config->country[0] && config->country[1]) {
|
||||||
fprintf(f, "country=%c%c\n",
|
fprintf(f, "country=%c%c\n",
|
||||||
config->country[0], config->country[1]);
|
config->country[0], config->country[1]);
|
||||||
|
|
|
@ -256,6 +256,10 @@ static int wpa_config_read_global(struct wpa_config *config, HKEY hk)
|
||||||
wpa_config_read_reg_dword(hk, TEXT("wps_cred_processing"),
|
wpa_config_read_reg_dword(hk, TEXT("wps_cred_processing"),
|
||||||
&config->wps_cred_processing);
|
&config->wps_cred_processing);
|
||||||
#endif /* CONFIG_WPS */
|
#endif /* CONFIG_WPS */
|
||||||
|
#ifdef CONFIG_P2P
|
||||||
|
config->p2p_ssid_postfix = wpa_config_read_reg_string(
|
||||||
|
hk, TEXT("p2p_ssid_postfix"));
|
||||||
|
#endif /* CONFIG_P2P */
|
||||||
|
|
||||||
wpa_config_read_reg_dword(hk, TEXT("bss_max_count"),
|
wpa_config_read_reg_dword(hk, TEXT("bss_max_count"),
|
||||||
(int *) &config->bss_max_count);
|
(int *) &config->bss_max_count);
|
||||||
|
@ -587,6 +591,10 @@ static int wpa_config_write_global(struct wpa_config *config, HKEY hk)
|
||||||
wpa_config_write_reg_dword(hk, TEXT("wps_cred_processing"),
|
wpa_config_write_reg_dword(hk, TEXT("wps_cred_processing"),
|
||||||
config->wps_cred_processing, 0);
|
config->wps_cred_processing, 0);
|
||||||
#endif /* CONFIG_WPS */
|
#endif /* CONFIG_WPS */
|
||||||
|
#ifdef CONFIG_P2P
|
||||||
|
wpa_config_write_reg_string(hk, "p2p_ssid_postfix",
|
||||||
|
config->p2p_ssid_postfix);
|
||||||
|
#endif /* CONFIG_P2P */
|
||||||
|
|
||||||
wpa_config_write_reg_dword(hk, TEXT("bss_max_count"),
|
wpa_config_write_reg_dword(hk, TEXT("bss_max_count"),
|
||||||
config->bss_max_count,
|
config->bss_max_count,
|
||||||
|
|
Loading…
Add table
Reference in a new issue