diff mbox

propagate scan failures over d-bus

Message ID 5345c555.5YPAVilexNP1elC0%quiche@chromium.org
State Accepted
Headers show

Commit Message

Mukesh Agrawal April 9, 2014, 10:10 p.m. UTC
If we receive a scan request via D-Bus, and wpa_supplicant_scan_trigger
fails, return the failure to the caller over D-Bus.

Signed-hostap: mukesh agrawal <quiche@chromium.org>
---
 wpa_supplicant/dbus/dbus_new.h          |  7 +++++--
 wpa_supplicant/dbus/dbus_new_handlers.c | 31 +++++++++++++++++++++++++++++--
 2 files changed, 34 insertions(+), 4 deletions(-)

Comments

Dan Williams April 10, 2014, 2:06 p.m. UTC | #1
On Wed, 2014-04-09 at 15:10 -0700, quiche@chromium.org wrote:
> If we receive a scan request via D-Bus, and wpa_supplicant_scan_trigger
> fails, return the failure to the caller over D-Bus.

Looks good!

Dan

> Signed-hostap: mukesh agrawal <quiche@chromium.org>
> ---
>  wpa_supplicant/dbus/dbus_new.h          |  7 +++++--
>  wpa_supplicant/dbus/dbus_new_handlers.c | 31 +++++++++++++++++++++++++++++--
>  2 files changed, 34 insertions(+), 4 deletions(-)
> 
> diff --git a/wpa_supplicant/dbus/dbus_new.h b/wpa_supplicant/dbus/dbus_new.h
> index f8092a8..58d98d1 100644
> --- a/wpa_supplicant/dbus/dbus_new.h
> +++ b/wpa_supplicant/dbus/dbus_new.h
> @@ -88,8 +88,8 @@ enum wpas_dbus_bss_prop {
>  #define	WPAS_DBUS_NEW_IFACE_P2P_GROUPMEMBER \
>  	WPAS_DBUS_NEW_INTERFACE ".GroupMember"
>  
> -/* Errors */
> -#define WPAS_DBUS_ERROR_UNKNOWN_ERROR \
> +/* Top-level Errors */
> +#define WPAS_DBUS_ERROR_UNKNOWN_ERROR           \
>  	WPAS_DBUS_NEW_INTERFACE ".UnknownError"
>  #define WPAS_DBUS_ERROR_INVALID_ARGS \
>  	WPAS_DBUS_NEW_INTERFACE ".InvalidArgs"
> @@ -116,6 +116,9 @@ enum wpas_dbus_bss_prop {
>  #define WPAS_DBUS_ERROR_BLOB_UNKNOWN \
>  	WPAS_DBUS_NEW_INTERFACE ".BlobUnknown"
>  
> +/* Interface-level errors */
> +#define WPAS_DBUS_ERROR_IFACE_SCAN_ERROR \
> +	WPAS_DBUS_NEW_IFACE_INTERFACE ".ScanError"
>  
>  #ifdef CONFIG_CTRL_IFACE_DBUS_NEW
>  
> diff --git a/wpa_supplicant/dbus/dbus_new_handlers.c b/wpa_supplicant/dbus/dbus_new_handlers.c
> index 4d5e109..ef63328 100644
> --- a/wpa_supplicant/dbus/dbus_new_handlers.c
> +++ b/wpa_supplicant/dbus/dbus_new_handlers.c
> @@ -125,6 +125,27 @@ DBusMessage * wpas_dbus_error_invalid_args(DBusMessage *message,
>  }
>  
> 
> +/**
> + * wpas_dbus_error_scan_error - Return a new ScanError error message
> + * @message: Pointer to incoming dbus message this error refers to
> + * @error: Optional string to be used as the error message
> + * Returns: a dbus error message
> + *
> + * Convenience function to create and return a scan error
> + */
> +DBusMessage * wpas_dbus_error_scan_error(DBusMessage *message,
> +                                         const char *error)
> +{
> +	DBusMessage *reply;
> +
> +	reply = dbus_message_new_error(message,
> +                                       WPAS_DBUS_ERROR_IFACE_SCAN_ERROR,
> +                                       error);
> +
> +	return reply;
> +}
> +
> +
>  static const char *dont_quote[] = {
>  	"key_mgmt", "proto", "pairwise", "auth_alg", "group", "eap",
>  	"opensc_engine_path", "pkcs11_engine_path", "pkcs11_module_path",
> @@ -1221,7 +1242,10 @@ DBusMessage * wpas_dbus_handler_scan(DBusMessage *message,
>  				"passive scan");
>  			goto out;
>  		} else if (params.freqs && params.freqs[0]) {
> -			wpa_supplicant_trigger_scan(wpa_s, &params);
> +			if (wpa_supplicant_trigger_scan(wpa_s, &params)) {
> +				reply = wpas_dbus_error_scan_error(
> +				message, "Scan request rejected");
> +			}
>  		} else {
>  			wpa_s->scan_req = 2;
>  			wpa_supplicant_req_scan(wpa_s, 0, 0);
> @@ -1231,7 +1255,10 @@ DBusMessage * wpas_dbus_handler_scan(DBusMessage *message,
>  			/* Add wildcard ssid */
>  			params.num_ssids++;
>  		}
> -		wpa_supplicant_trigger_scan(wpa_s, &params);
> +		if (wpa_supplicant_trigger_scan(wpa_s, &params)) {
> +			reply = wpas_dbus_error_scan_error(
> +				message, "Scan request rejected");
> +		}
>  	} else {
>  		wpa_printf(MSG_DEBUG, "wpas_dbus_handler_scan[dbus]: "
>  			   "Unknown scan type: %s", type);
Jouni Malinen April 13, 2014, 10:06 p.m. UTC | #2
On Wed, Apr 09, 2014 at 03:10:29PM -0700, quiche@chromium.org wrote:
> If we receive a scan request via D-Bus, and wpa_supplicant_scan_trigger
> fails, return the failure to the caller over D-Bus.

Thanks, applied.
diff mbox

Patch

diff --git a/wpa_supplicant/dbus/dbus_new.h b/wpa_supplicant/dbus/dbus_new.h
index f8092a8..58d98d1 100644
--- a/wpa_supplicant/dbus/dbus_new.h
+++ b/wpa_supplicant/dbus/dbus_new.h
@@ -88,8 +88,8 @@  enum wpas_dbus_bss_prop {
 #define	WPAS_DBUS_NEW_IFACE_P2P_GROUPMEMBER \
 	WPAS_DBUS_NEW_INTERFACE ".GroupMember"
 
-/* Errors */
-#define WPAS_DBUS_ERROR_UNKNOWN_ERROR \
+/* Top-level Errors */
+#define WPAS_DBUS_ERROR_UNKNOWN_ERROR           \
 	WPAS_DBUS_NEW_INTERFACE ".UnknownError"
 #define WPAS_DBUS_ERROR_INVALID_ARGS \
 	WPAS_DBUS_NEW_INTERFACE ".InvalidArgs"
@@ -116,6 +116,9 @@  enum wpas_dbus_bss_prop {
 #define WPAS_DBUS_ERROR_BLOB_UNKNOWN \
 	WPAS_DBUS_NEW_INTERFACE ".BlobUnknown"
 
+/* Interface-level errors */
+#define WPAS_DBUS_ERROR_IFACE_SCAN_ERROR \
+	WPAS_DBUS_NEW_IFACE_INTERFACE ".ScanError"
 
 #ifdef CONFIG_CTRL_IFACE_DBUS_NEW
 
diff --git a/wpa_supplicant/dbus/dbus_new_handlers.c b/wpa_supplicant/dbus/dbus_new_handlers.c
index 4d5e109..ef63328 100644
--- a/wpa_supplicant/dbus/dbus_new_handlers.c
+++ b/wpa_supplicant/dbus/dbus_new_handlers.c
@@ -125,6 +125,27 @@  DBusMessage * wpas_dbus_error_invalid_args(DBusMessage *message,
 }
 
 
+/**
+ * wpas_dbus_error_scan_error - Return a new ScanError error message
+ * @message: Pointer to incoming dbus message this error refers to
+ * @error: Optional string to be used as the error message
+ * Returns: a dbus error message
+ *
+ * Convenience function to create and return a scan error
+ */
+DBusMessage * wpas_dbus_error_scan_error(DBusMessage *message,
+                                         const char *error)
+{
+	DBusMessage *reply;
+
+	reply = dbus_message_new_error(message,
+                                       WPAS_DBUS_ERROR_IFACE_SCAN_ERROR,
+                                       error);
+
+	return reply;
+}
+
+
 static const char *dont_quote[] = {
 	"key_mgmt", "proto", "pairwise", "auth_alg", "group", "eap",
 	"opensc_engine_path", "pkcs11_engine_path", "pkcs11_module_path",
@@ -1221,7 +1242,10 @@  DBusMessage * wpas_dbus_handler_scan(DBusMessage *message,
 				"passive scan");
 			goto out;
 		} else if (params.freqs && params.freqs[0]) {
-			wpa_supplicant_trigger_scan(wpa_s, &params);
+			if (wpa_supplicant_trigger_scan(wpa_s, &params)) {
+				reply = wpas_dbus_error_scan_error(
+				message, "Scan request rejected");
+			}
 		} else {
 			wpa_s->scan_req = 2;
 			wpa_supplicant_req_scan(wpa_s, 0, 0);
@@ -1231,7 +1255,10 @@  DBusMessage * wpas_dbus_handler_scan(DBusMessage *message,
 			/* Add wildcard ssid */
 			params.num_ssids++;
 		}
-		wpa_supplicant_trigger_scan(wpa_s, &params);
+		if (wpa_supplicant_trigger_scan(wpa_s, &params)) {
+			reply = wpas_dbus_error_scan_error(
+				message, "Scan request rejected");
+		}
 	} else {
 		wpa_printf(MSG_DEBUG, "wpas_dbus_handler_scan[dbus]: "
 			   "Unknown scan type: %s", type);