]> git.ipfire.org Git - thirdparty/hostap.git/commitdiff
wpa_supplicant: Add DBus "Reassociate" command
authorPaul Stewart <pstew@chromium.org>
Thu, 9 Aug 2012 10:54:36 +0000 (13:54 +0300)
committerJouni Malinen <j@w1.fi>
Thu, 9 Aug 2012 10:54:36 +0000 (13:54 +0300)
Create a DBus command to reassociate, similar to the
ctrl-interface "reassociate" command.

Signed-hostap: Paul Stewart <pstew@chromium.org>

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

index e2b1e49c1a569b4a84761b998441a8a2c8cf467c..4eeb93a4acca3e0b35f5f7b2f60c5bc3c52326ea 100644 (file)
@@ -2384,6 +2384,12 @@ static const struct wpa_dbus_method_desc wpas_dbus_interface_methods[] = {
                  END_ARGS
          }
        },
+       { "Reassociate", WPAS_DBUS_NEW_IFACE_INTERFACE,
+         (WPADBusMethodHandler) &wpas_dbus_handler_reassociate,
+         {
+                 END_ARGS
+         }
+       },
        { "RemoveNetwork", WPAS_DBUS_NEW_IFACE_INTERFACE,
          (WPADBusMethodHandler) &wpas_dbus_handler_remove_network,
          {
index c28ba30b8754d3b0da5b5b4fd40df1c824613e15..cbe821a1b3c936cd25747b1dc5c696b48849255b 100644 (file)
@@ -1404,6 +1404,33 @@ err:
 }
 
 
+/**
+ * wpas_dbus_handler_reassociate - Reassociate to current AP
+ * @message: Pointer to incoming dbus message
+ * @wpa_s: wpa_supplicant structure for a network interface
+ * Returns: NotConnected DBus error message if not connected
+ * or NULL otherwise.
+ *
+ * Handler function for "Reassociate" method call of network interface.
+ */
+DBusMessage * wpas_dbus_handler_reassociate(DBusMessage *message,
+                                           struct wpa_supplicant *wpa_s)
+{
+       if (wpa_s->current_ssid != NULL) {
+               wpa_s->normal_scans = 0;
+               wpa_supplicant_reinit_autoscan(wpa_s);
+               wpa_s->disconnected = 0;
+               wpa_s->reassociate = 1;
+               wpa_supplicant_req_scan(wpa_s, 0, 0);
+
+               return NULL;
+       }
+
+       return dbus_message_new_error(message, WPAS_DBUS_ERROR_NOT_CONNECTED,
+                                     "This interface is not connected");
+}
+
+
 /**
  * wpas_dbus_handler_remove_network - Remove a configured network
  * @message: Pointer to incoming dbus message
index cff218f3a7bc7c341f19cfaecaee071872385659..178a76b7fb55bb719ecc9dd248bf55d3700a59d5 100644 (file)
@@ -94,6 +94,9 @@ dbus_bool_t set_network_properties(struct wpa_supplicant *wpa_s,
 DBusMessage * wpas_dbus_handler_add_network(DBusMessage *message,
                                            struct wpa_supplicant *wpa_s);
 
+DBusMessage * wpas_dbus_handler_reassociate(DBusMessage *message,
+                                           struct wpa_supplicant *wpa_s);
+
 DBusMessage * wpas_dbus_handler_remove_network(DBusMessage *message,
                                               struct wpa_supplicant *wpa_s);