P2P: Add dynamic network config block parameters for P2P
This commit is contained in:
parent
62281bc690
commit
2c5d725c65
5 changed files with 41 additions and 2 deletions
|
@ -182,6 +182,8 @@ int wpa_supplicant_create_ap(struct wpa_supplicant *wpa_s,
|
||||||
params.mode = IEEE80211_MODE_IBSS;
|
params.mode = IEEE80211_MODE_IBSS;
|
||||||
break;
|
break;
|
||||||
case WPAS_MODE_AP:
|
case WPAS_MODE_AP:
|
||||||
|
case WPAS_MODE_P2P_GO:
|
||||||
|
case WPAS_MODE_P2P_GROUP_FORMATION:
|
||||||
params.mode = IEEE80211_MODE_AP;
|
params.mode = IEEE80211_MODE_AP;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
|
@ -1493,7 +1493,7 @@ static const struct parse_data ssid_fields[] = {
|
||||||
{ STRe(pac_file) },
|
{ STRe(pac_file) },
|
||||||
{ INTe(fragment_size) },
|
{ INTe(fragment_size) },
|
||||||
#endif /* IEEE8021X_EAPOL */
|
#endif /* IEEE8021X_EAPOL */
|
||||||
{ INT_RANGE(mode, 0, 2) },
|
{ INT_RANGE(mode, 0, 4) },
|
||||||
{ INT_RANGE(proactive_key_caching, 0, 1) },
|
{ INT_RANGE(proactive_key_caching, 0, 1) },
|
||||||
{ INT_RANGE(disabled, 0, 1) },
|
{ INT_RANGE(disabled, 0, 1) },
|
||||||
{ STR(id_str) },
|
{ STR(id_str) },
|
||||||
|
|
|
@ -109,6 +109,9 @@ struct wpa_ssid {
|
||||||
*
|
*
|
||||||
* If set, this network block is used only when associating with the AP
|
* If set, this network block is used only when associating with the AP
|
||||||
* using the configured BSSID
|
* using the configured BSSID
|
||||||
|
*
|
||||||
|
* If this is a persistent P2P group (disabled == 2), this is the GO
|
||||||
|
* Device Address.
|
||||||
*/
|
*/
|
||||||
u8 bssid[ETH_ALEN];
|
u8 bssid[ETH_ALEN];
|
||||||
|
|
||||||
|
@ -273,6 +276,11 @@ struct wpa_ssid {
|
||||||
*
|
*
|
||||||
* 2 = AP (access point)
|
* 2 = AP (access point)
|
||||||
*
|
*
|
||||||
|
* 3 = P2P Group Owner (can be set in the configuration file)
|
||||||
|
*
|
||||||
|
* 4 = P2P Group Formation (used internally; not in configuration
|
||||||
|
* files)
|
||||||
|
*
|
||||||
* Note: IBSS can only be used with key_mgmt NONE (plaintext and
|
* Note: IBSS can only be used with key_mgmt NONE (plaintext and
|
||||||
* static WEP) and key_mgmt=WPA-NONE (fixed group key TKIP/CCMP). In
|
* static WEP) and key_mgmt=WPA-NONE (fixed group key TKIP/CCMP). In
|
||||||
* addition, ap_scan has to be set to 2 for IBSS. WPA-None requires
|
* addition, ap_scan has to be set to 2 for IBSS. WPA-None requires
|
||||||
|
@ -284,6 +292,8 @@ struct wpa_ssid {
|
||||||
WPAS_MODE_INFRA = 0,
|
WPAS_MODE_INFRA = 0,
|
||||||
WPAS_MODE_IBSS = 1,
|
WPAS_MODE_IBSS = 1,
|
||||||
WPAS_MODE_AP = 2,
|
WPAS_MODE_AP = 2,
|
||||||
|
WPAS_MODE_P2P_GO = 3,
|
||||||
|
WPAS_MODE_P2P_GROUP_FORMATION = 4,
|
||||||
} mode;
|
} mode;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -292,6 +302,8 @@ struct wpa_ssid {
|
||||||
* 0 = this network can be used (default).
|
* 0 = this network can be used (default).
|
||||||
* 1 = this network block is disabled (can be enabled through
|
* 1 = this network block is disabled (can be enabled through
|
||||||
* ctrl_iface, e.g., with wpa_cli or wpa_gui).
|
* ctrl_iface, e.g., with wpa_cli or wpa_gui).
|
||||||
|
* 2 = this network block includes parameters for a persistent P2P
|
||||||
|
* group (can be used with P2P ctrl_iface commands)
|
||||||
*/
|
*/
|
||||||
int disabled;
|
int disabled;
|
||||||
|
|
||||||
|
@ -373,6 +385,21 @@ struct wpa_ssid {
|
||||||
* considered when selecting a BSS.
|
* considered when selecting a BSS.
|
||||||
*/
|
*/
|
||||||
int *freq_list;
|
int *freq_list;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* p2p_group - Network generated as a P2P group (used internally)
|
||||||
|
*/
|
||||||
|
int p2p_group;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* p2p_persistent_group - Whether this is a persistent group
|
||||||
|
*/
|
||||||
|
int p2p_persistent_group;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* temporary - Whether this network is temporary and not to be saved
|
||||||
|
*/
|
||||||
|
int temporary;
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif /* CONFIG_SSID_H */
|
#endif /* CONFIG_SSID_H */
|
||||||
|
|
|
@ -554,6 +554,15 @@ static int wpa_supplicant_ctrl_iface_status(struct wpa_supplicant *wpa_s,
|
||||||
ret = os_snprintf(pos, end - pos,
|
ret = os_snprintf(pos, end - pos,
|
||||||
"mode=AP\n");
|
"mode=AP\n");
|
||||||
break;
|
break;
|
||||||
|
case WPAS_MODE_P2P_GO:
|
||||||
|
ret = os_snprintf(pos, end - pos,
|
||||||
|
"mode=P2P GO\n");
|
||||||
|
break;
|
||||||
|
case WPAS_MODE_P2P_GROUP_FORMATION:
|
||||||
|
ret = os_snprintf(pos, end - pos,
|
||||||
|
"mode=P2P GO - group "
|
||||||
|
"formation\n");
|
||||||
|
break;
|
||||||
default:
|
default:
|
||||||
ret = 0;
|
ret = 0;
|
||||||
break;
|
break;
|
||||||
|
|
|
@ -1005,7 +1005,8 @@ void wpa_supplicant_associate(struct wpa_supplicant *wpa_s,
|
||||||
int assoc_failed = 0;
|
int assoc_failed = 0;
|
||||||
struct wpa_ssid *old_ssid;
|
struct wpa_ssid *old_ssid;
|
||||||
|
|
||||||
if (ssid->mode == WPAS_MODE_AP) {
|
if (ssid->mode == WPAS_MODE_AP || ssid->mode == WPAS_MODE_P2P_GO ||
|
||||||
|
ssid->mode == WPAS_MODE_P2P_GROUP_FORMATION) {
|
||||||
#ifdef CONFIG_AP
|
#ifdef CONFIG_AP
|
||||||
if (!(wpa_s->drv_flags & WPA_DRIVER_FLAGS_AP)) {
|
if (!(wpa_s->drv_flags & WPA_DRIVER_FLAGS_AP)) {
|
||||||
wpa_printf(MSG_INFO, "Driver does not support AP "
|
wpa_printf(MSG_INFO, "Driver does not support AP "
|
||||||
|
|
Loading…
Reference in a new issue