Propagate scan failures over D-Bus
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>
This commit is contained in:
parent
aed1c0564f
commit
e9b32dae1a
2 changed files with 33 additions and 3 deletions
|
@ -83,7 +83,7 @@ enum wpas_dbus_bss_prop {
|
||||||
#define WPAS_DBUS_NEW_IFACE_P2P_GROUPMEMBER \
|
#define WPAS_DBUS_NEW_IFACE_P2P_GROUPMEMBER \
|
||||||
WPAS_DBUS_NEW_INTERFACE ".GroupMember"
|
WPAS_DBUS_NEW_INTERFACE ".GroupMember"
|
||||||
|
|
||||||
/* Errors */
|
/* Top-level Errors */
|
||||||
#define WPAS_DBUS_ERROR_UNKNOWN_ERROR \
|
#define WPAS_DBUS_ERROR_UNKNOWN_ERROR \
|
||||||
WPAS_DBUS_NEW_INTERFACE ".UnknownError"
|
WPAS_DBUS_NEW_INTERFACE ".UnknownError"
|
||||||
#define WPAS_DBUS_ERROR_INVALID_ARGS \
|
#define WPAS_DBUS_ERROR_INVALID_ARGS \
|
||||||
|
@ -120,6 +120,9 @@ enum wpas_dbus_bss_prop {
|
||||||
#define WPAS_DBUS_ERROR_SUBSCRIPTION_EPERM \
|
#define WPAS_DBUS_ERROR_SUBSCRIPTION_EPERM \
|
||||||
WPAS_DBUS_NEW_INTERFACE ".SubscriptionNotYou"
|
WPAS_DBUS_NEW_INTERFACE ".SubscriptionNotYou"
|
||||||
|
|
||||||
|
/* Interface-level errors */
|
||||||
|
#define WPAS_DBUS_ERROR_IFACE_SCAN_ERROR \
|
||||||
|
WPAS_DBUS_NEW_IFACE_INTERFACE ".ScanError"
|
||||||
|
|
||||||
void wpas_dbus_subscribe_noc(struct wpas_dbus_priv *priv);
|
void wpas_dbus_subscribe_noc(struct wpas_dbus_priv *priv);
|
||||||
void wpas_dbus_unsubscribe_noc(struct wpas_dbus_priv *priv);
|
void wpas_dbus_unsubscribe_noc(struct wpas_dbus_priv *priv);
|
||||||
|
|
|
@ -116,6 +116,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[] = {
|
static const char *dont_quote[] = {
|
||||||
"key_mgmt", "proto", "pairwise", "auth_alg", "group", "eap",
|
"key_mgmt", "proto", "pairwise", "auth_alg", "group", "eap",
|
||||||
"opensc_engine_path", "pkcs11_engine_path", "pkcs11_module_path",
|
"opensc_engine_path", "pkcs11_engine_path", "pkcs11_module_path",
|
||||||
|
@ -1330,7 +1351,10 @@ DBusMessage * wpas_dbus_handler_scan(DBusMessage *message,
|
||||||
"passive scan");
|
"passive scan");
|
||||||
goto out;
|
goto out;
|
||||||
} else if (params.freqs && params.freqs[0]) {
|
} else if (params.freqs && params.freqs[0]) {
|
||||||
wpa_supplicant_trigger_scan(wpa_s, ¶ms);
|
if (wpa_supplicant_trigger_scan(wpa_s, ¶ms)) {
|
||||||
|
reply = wpas_dbus_error_scan_error(
|
||||||
|
message, "Scan request rejected");
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
wpa_s->scan_req = MANUAL_SCAN_REQ;
|
wpa_s->scan_req = MANUAL_SCAN_REQ;
|
||||||
wpa_supplicant_req_scan(wpa_s, 0, 0);
|
wpa_supplicant_req_scan(wpa_s, 0, 0);
|
||||||
|
@ -1343,7 +1367,10 @@ DBusMessage * wpas_dbus_handler_scan(DBusMessage *message,
|
||||||
#ifdef CONFIG_AUTOSCAN
|
#ifdef CONFIG_AUTOSCAN
|
||||||
autoscan_deinit(wpa_s);
|
autoscan_deinit(wpa_s);
|
||||||
#endif /* CONFIG_AUTOSCAN */
|
#endif /* CONFIG_AUTOSCAN */
|
||||||
wpa_supplicant_trigger_scan(wpa_s, ¶ms);
|
if (wpa_supplicant_trigger_scan(wpa_s, ¶ms)) {
|
||||||
|
reply = wpas_dbus_error_scan_error(
|
||||||
|
message, "Scan request rejected");
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
wpa_printf(MSG_DEBUG, "wpas_dbus_handler_scan[dbus]: "
|
wpa_printf(MSG_DEBUG, "wpas_dbus_handler_scan[dbus]: "
|
||||||
"Unknown scan type: %s", type);
|
"Unknown scan type: %s", type);
|
||||||
|
|
Loading…
Reference in a new issue