Parcourir la source

D-Bus: Add Signal to notify WPS PBC Overlap event

Signed-off-by: Saurav Babu <saurav.babu@samsung.com>
Saurav Babu il y a 9 ans
Parent
commit
0a7b2a02eb
3 fichiers modifiés avec 18 ajouts et 0 suppressions
  1. 1 0
      wpa_supplicant/events.c
  2. 16 0
      wpa_supplicant/wps_supplicant.c
  3. 1 0
      wpa_supplicant/wps_supplicant.h

+ 1 - 0
wpa_supplicant/events.c

@@ -1201,6 +1201,7 @@ int wpa_supplicant_connect(struct wpa_supplicant *wpa_s,
 #endif /* CONFIG_P2P */
 #endif /* CONFIG_P2P */
 
 
 #ifdef CONFIG_WPS
 #ifdef CONFIG_WPS
+		wpas_wps_pbc_overlap(wpa_s);
 		wpas_wps_cancel(wpa_s);
 		wpas_wps_cancel(wpa_s);
 #endif /* CONFIG_WPS */
 #endif /* CONFIG_WPS */
 		return -1;
 		return -1;

+ 16 - 0
wpa_supplicant/wps_supplicant.c

@@ -1248,6 +1248,22 @@ int wpas_wps_start_pin(struct wpa_supplicant *wpa_s, const u8 *bssid,
 }
 }
 
 
 
 
+void wpas_wps_pbc_overlap(struct wpa_supplicant *wpa_s)
+{
+	union wps_event_data data;
+
+	os_memset(&data, 0, sizeof(data));
+	data.fail.config_error = WPS_CFG_MULTIPLE_PBC_DETECTED;
+	data.fail.error_indication = WPS_EI_NO_ERROR;
+	/*
+	 * Call wpas_notify_wps_event_fail() directly instead of through
+	 * wpa_supplicant_wps_event() which would end up registering unnecessary
+	 * timeouts (those are only for the case where the failure happens
+	 * during an EAP-WSC exchange).
+	 */
+	wpas_notify_wps_event_fail(wpa_s, &data.fail);
+}
+
 /* Cancel the wps pbc/pin requests */
 /* Cancel the wps pbc/pin requests */
 int wpas_wps_cancel(struct wpa_supplicant *wpa_s)
 int wpas_wps_cancel(struct wpa_supplicant *wpa_s)
 {
 {

+ 1 - 0
wpa_supplicant/wps_supplicant.h

@@ -33,6 +33,7 @@ int wpas_wps_start_pbc(struct wpa_supplicant *wpa_s, const u8 *bssid,
 		       int p2p_group);
 		       int p2p_group);
 int wpas_wps_start_pin(struct wpa_supplicant *wpa_s, const u8 *bssid,
 int wpas_wps_start_pin(struct wpa_supplicant *wpa_s, const u8 *bssid,
 		       const char *pin, int p2p_group, u16 dev_pw_id);
 		       const char *pin, int p2p_group, u16 dev_pw_id);
+void wpas_wps_pbc_overlap(struct wpa_supplicant *wpa_s);
 int wpas_wps_cancel(struct wpa_supplicant *wpa_s);
 int wpas_wps_cancel(struct wpa_supplicant *wpa_s);
 int wpas_wps_start_reg(struct wpa_supplicant *wpa_s, const u8 *bssid,
 int wpas_wps_start_reg(struct wpa_supplicant *wpa_s, const u8 *bssid,
 		       const char *pin, struct wps_new_ap_settings *settings);
 		       const char *pin, struct wps_new_ap_settings *settings);