]> git.ipfire.org Git - thirdparty/hostap.git/commitdiff
D-Bus: Add AutoScan interface method to set/unset autoscan parameters
authorTomasz Bursztyka <tomasz.bursztyka@linux.intel.com>
Tue, 26 Jun 2012 16:05:09 +0000 (19:05 +0300)
committerJouni Malinen <j@w1.fi>
Tue, 26 Jun 2012 16:05:09 +0000 (19:05 +0300)
Signed-hostap: Tomasz Bursztyka <tomasz.bursztyka@linux.intel.com>

doc/dbus.doxygen
wpa_supplicant/dbus/dbus_new.c
wpa_supplicant/dbus/dbus_new_handlers.c
wpa_supplicant/dbus/dbus_new_handlers.h

index b298dd87937e9f1e1873db879f933f57648b4400..a737ed73d27bef12255c43c653cb6c5ef92b34af 100644 (file)
@@ -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
index f7393d9343079f535ff5817267002e422718fb77..a8e87d5a7cdf715005bbe94e34e491774bc192d7 100644 (file)
@@ -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 } }
 };
 
index 1c7592dcf56ff79e097959436d4f195803ec5f2a..4ac6716d073e83291741c0410a78916398db4c8d 100644 (file)
@@ -1811,6 +1811,52 @@ DBusMessage * wpas_dbus_handler_flush_bss(DBusMessage *message,
 }
 
 
+#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 (arg != NULL && os_strlen(arg) > 0) {
+               char *tmp;
+               tmp = os_strdup(arg);
+               if (tmp == NULL) {
+                       reply = dbus_message_new_error(message,
+                                                      DBUS_ERROR_NO_MEMORY,
+                                                      NULL);
+               } else {
+                       os_free(wpa_s->conf->autoscan);
+                       wpa_s->conf->autoscan = tmp;
+                       if (state == WPA_DISCONNECTED || state == WPA_INACTIVE)
+                               autoscan_init(wpa_s);
+               }
+       } else if (arg != NULL && os_strlen(arg) == 0) {
+               os_free(wpa_s->conf->autoscan);
+               wpa_s->conf->autoscan = NULL;
+               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
  * @iter: Pointer to incoming dbus message iter
index d78aa208464fed8c6b0a6bfca94545ad1f184aea..8cba72406d10830f878367383c2b9e03be108672 100644 (file)
@@ -124,6 +124,9 @@ DBusMessage * wpas_dbus_handler_remove_blob(DBusMessage *message,
 DBusMessage * wpas_dbus_handler_flush_bss(DBusMessage *message,
                                          struct wpa_supplicant *wpa_s);
 
+DBusMessage * wpas_dbus_handler_autoscan(DBusMessage *message,
+                                        struct wpa_supplicant *wpa_s);
+
 dbus_bool_t wpas_dbus_getter_capabilities(DBusMessageIter *iter,
                                          DBusError *error, void *user_data);