[PATCH 3/7] Adding AutoScan interface method to set or unset autoscan parameters
Tomasz Bursztyka
tomasz.bursztyka
Tue Jun 26 01:05:48 PDT 2012
Signed-hostap: Tomasz Bursztyka <tomasz.bursztyka at linux.intel.com>
---
doc/dbus.doxygen | 16 +++++++++++
wpa_supplicant/dbus/dbus_new.c | 9 ++++++
wpa_supplicant/dbus/dbus_new_handlers.c | 44 +++++++++++++++++++++++++++++++
wpa_supplicant/dbus/dbus_new_handlers.h | 5 +++
4 files changed, 74 insertions(+), 0 deletions(-)
diff --git a/doc/dbus.doxygen b/doc/dbus.doxygen
index b298dd8..478dcc5 100644
--- a/doc/dbus.doxygen
+++ b/doc/dbus.doxygen
@@ -316,6 +316,22 @@ fi.w1.wpa_supplicant1.CreateInterface.
<dd>A blob with the specified name doesn't exist.</dd>
</dl>
</li>
+ <li>
+ <h3>AutoScan ( s : arg ) --> nothing</h3>
+ <p>Set autoscan parameters for the interface.</p>
+ <h4>Arguments</h4>
+ <dl>
+ <dt>s : arg</dt>
+ <dd>Autoscan parameter line or empty to unset autoscan.</dd>
+ </dl>
+ <h4>Possible errors</h4>
+ <dl>
+ <dt>fi.w1.wpa_supplicant1.NoMemory</dt>
+ <dd>Needed memory was not possible to get allocated.</dd>
+ <dt>fi.w1.wpa_supplicant1.InvalidArgs</dt>
+ <dd>Invalid entries were found in the passed argument.</dd>
+ </dl>
+ </li>
</ul>
\subsection dbus_interface_properties Properties
diff --git a/wpa_supplicant/dbus/dbus_new.c b/wpa_supplicant/dbus/dbus_new.c
index f7393d9..a8e87d5 100644
--- a/wpa_supplicant/dbus/dbus_new.c
+++ b/wpa_supplicant/dbus/dbus_new.c
@@ -1920,6 +1920,15 @@ static const struct wpa_dbus_method_desc wpas_dbus_global_methods[] = {
END_ARGS
}
},
+#ifdef CONFIG_AUTOSCAN
+ { "AutoScan", WPAS_DBUS_NEW_IFACE_INTERFACE,
+ (WPADBusMethodHandler) &wpas_dbus_handler_autoscan,
+ {
+ { "arg", "s", ARG_IN },
+ END_ARGS
+ }
+ },
+#endif /* CONFIG_AUTOSCAN */
{ NULL, NULL, NULL, { END_ARGS } }
};
diff --git a/wpa_supplicant/dbus/dbus_new_handlers.c b/wpa_supplicant/dbus/dbus_new_handlers.c
index 1c7592d..2d2c6dd 100644
--- a/wpa_supplicant/dbus/dbus_new_handlers.c
+++ b/wpa_supplicant/dbus/dbus_new_handlers.c
@@ -1810,6 +1810,50 @@ DBusMessage * wpas_dbus_handler_flush_bss(DBusMessage *message,
return NULL;
}
+#ifdef CONFIG_AUTOSCAN
+/**
+ * wpas_dbus_handler_autoscan - Set autoscan parameters for the interface
+ * @message: Pointer to incoming dbus message
+ * @wpa_s: wpa_supplicant structure for a network interface
+ * Returns: NULL
+ *
+ * Handler function for "AutoScan" method call of network interface.
+ */
+DBusMessage * wpas_dbus_handler_autoscan(DBusMessage *message,
+ struct wpa_supplicant *wpa_s)
+{
+ DBusMessage *reply = NULL;
+ enum wpa_states state = wpa_s->wpa_state;
+ char *arg;
+
+ dbus_message_get_args(message, NULL, DBUS_TYPE_STRING, &arg,
+ DBUS_TYPE_INVALID);
+
+ if (wpa_s->conf->autoscan != NULL) {
+ os_free(wpa_s->conf->autoscan);
+ wpa_s->conf->autoscan = NULL;
+ }
+
+ if (arg != NULL && os_strlen(arg) > 0) {
+ wpa_s->conf->autoscan = os_strdup(arg);
+ if (wpa_s->conf->autoscan == NULL) {
+ reply = dbus_message_new_error(message,
+ DBUS_ERROR_NO_MEMORY,
+ NULL);
+ }
+
+ if (state == WPA_DISCONNECTED || state == WPA_INACTIVE)
+ autoscan_init(wpa_s);
+ } else if (os_strlen(arg) == 0)
+ autoscan_deinit(wpa_s);
+ else
+ reply = dbus_message_new_error(message,
+ DBUS_ERROR_INVALID_ARGS,
+ NULL);
+
+ return reply;
+}
+#endif /* CONFIG_AUTOSCAN */
/**
* wpas_dbus_getter_capabilities - Return interface capabilities
diff --git a/wpa_supplicant/dbus/dbus_new_handlers.h b/wpa_supplicant/dbus/dbus_new_handlers.h
index d78aa20..c8b8a94 100644
--- a/wpa_supplicant/dbus/dbus_new_handlers.h
+++ b/wpa_supplicant/dbus/dbus_new_handlers.h
@@ -124,6 +124,11 @@ DBusMessage * wpas_dbus_handler_remove_blob(DBusMessage *message,
DBusMessage * wpas_dbus_handler_flush_bss(DBusMessage *message,
struct wpa_supplicant *wpa_s);
+#ifdef CONFIG_AUTOSCAN
+DBusMessage * wpas_dbus_handler_autoscan(DBusMessage *message,
+ struct wpa_supplicant *wpa_s);
+#endif /* CONFIG_AUTOSCAN */
+
dbus_bool_t wpas_dbus_getter_capabilities(DBusMessageIter *iter,
DBusError *error, void *user_data);
--
1.7.8.6
More information about the Hostap
mailing list