P2P: Add P2P configuration and callbacks in hostapd code
[libeap.git] / wpa_supplicant / ctrl_iface.c
index f025548..68973d3 100644 (file)
@@ -82,8 +82,12 @@ static int wpa_supplicant_ctrl_iface_set(struct wpa_supplicant *wpa_s,
                        ret = -1;
        } else if (os_strcasecmp(cmd, "wps_fragment_size") == 0) {
                wpa_s->wps_fragment_size = atoi(value);
-       } else
-               ret = -1;
+       } else {
+               value[-1] = '=';
+               ret = wpa_config_process_global(wpa_s->conf, cmd, -1);
+               if (ret == 0)
+                       wpa_supplicant_update_config(wpa_s);
+       }
 
        return ret;
 }
@@ -179,7 +183,7 @@ static int wpa_supplicant_ctrl_iface_wps_pbc(struct wpa_supplicant *wpa_s,
                return wpa_supplicant_ap_wps_pbc(wpa_s, _bssid);
 #endif /* CONFIG_AP */
 
-       return wpas_wps_start_pbc(wpa_s, _bssid);
+       return wpas_wps_start_pbc(wpa_s, _bssid, 0);
 }
 
 
@@ -210,7 +214,7 @@ static int wpa_supplicant_ctrl_iface_wps_pin(struct wpa_supplicant *wpa_s,
 #endif /* CONFIG_AP */
 
        if (pin) {
-               ret = wpas_wps_start_pin(wpa_s, _bssid, pin);
+               ret = wpas_wps_start_pin(wpa_s, _bssid, pin, 0);
                if (ret < 0)
                        return -1;
                ret = os_snprintf(buf, buflen, "%s", pin);
@@ -219,7 +223,7 @@ static int wpa_supplicant_ctrl_iface_wps_pin(struct wpa_supplicant *wpa_s,
                return ret;
        }
 
-       ret = wpas_wps_start_pin(wpa_s, _bssid, NULL);
+       ret = wpas_wps_start_pin(wpa_s, _bssid, NULL, 0);
        if (ret < 0)
                return -1;
 
@@ -550,6 +554,15 @@ static int wpa_supplicant_ctrl_iface_status(struct wpa_supplicant *wpa_s,
                                ret = os_snprintf(pos, end - pos,
                                                  "mode=AP\n");
                                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:
                                ret = 0;
                                break;
@@ -664,10 +677,12 @@ static int wpa_supplicant_ctrl_iface_list_networks(
                if (ret < 0 || ret >= end - pos)
                        return pos - buf;
                pos += ret;
-               ret = os_snprintf(pos, end - pos, "\t%s%s",
+               ret = os_snprintf(pos, end - pos, "\t%s%s%s",
                                  ssid == wpa_s->current_ssid ?
                                  "[CURRENT]" : "",
-                                 ssid->disabled ? "[DISABLED]" : "");
+                                 ssid->disabled ? "[DISABLED]" : "",
+                                 ssid->disabled == 2 ? "[P2P-PERSISTENT]" :
+                                 "");
                if (ret < 0 || ret >= end - pos)
                        return pos - buf;
                pos += ret;
@@ -975,6 +990,11 @@ static int wpa_supplicant_ctrl_iface_select_network(
                                   "network id=%d", id);
                        return -1;
                }
+               if (ssid->disabled == 2) {
+                       wpa_printf(MSG_DEBUG, "CTRL_IFACE: Cannot use "
+                                  "SELECT_NETWORK with persistent P2P group");
+                       return -1;
+               }
        }
 
        wpa_supplicant_select_network(wpa_s, ssid);
@@ -1003,6 +1023,11 @@ static int wpa_supplicant_ctrl_iface_enable_network(
                                   "network id=%d", id);
                        return -1;
                }
+               if (ssid->disabled == 2) {
+                       wpa_printf(MSG_DEBUG, "CTRL_IFACE: Cannot use "
+                                  "ENABLE_NETWORK with persistent P2P group");
+                       return -1;
+               }
        }
        wpa_supplicant_enable_network(wpa_s, ssid);
 
@@ -1030,6 +1055,12 @@ static int wpa_supplicant_ctrl_iface_disable_network(
                                   "network id=%d", id);
                        return -1;
                }
+               if (ssid->disabled == 2) {
+                       wpa_printf(MSG_DEBUG, "CTRL_IFACE: Cannot use "
+                                  "DISABLE_NETWORK with persistent P2P "
+                                  "group");
+                       return -1;
+               }
        }
        wpa_supplicant_disable_network(wpa_s, ssid);