]> git.ipfire.org Git - thirdparty/hostap.git/commitdiff
D-Bus: Add a dbus handler for expected disconnection
authorNingyuan Wang <nywang@google.com>
Tue, 29 Sep 2015 21:13:33 +0000 (14:13 -0700)
committerJouni Malinen <j@w1.fi>
Mon, 12 Oct 2015 15:03:11 +0000 (18:03 +0300)
Add a global D-Bus handler ExpectDisconnect for setting
wpa_s->own_disconnect_req flag. This flag will prevent wpa_supplicant
from adding blacklists and requesting incomplete scan upon the incoming
disconnection. This is mainly meant for a case where suspend/resume is
used and some external component knows about that and can provide the
information to wpa_supplicant before the disconnection happens.

Signed-off-by: Ningyuan Wang <nywang@google.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 9430632541a20529135cde6efd3e93e9d2ee5ada..437f9fc0e662c6a69af588550e71f9d1812f4975 100644 (file)
@@ -97,6 +97,11 @@ registered in the bus with fi.w1.wpa_supplicant1 name.
          <dd>Getting an interface object path failed for an unknown reason.</dd>
        </dl>
       </li>
+
+      <li>
+       <h3>ExpectDisconnect ( ) --> nothing</h3>
+       <p>Notify wpa_supplicant of an externally triggered disconnection, e.g., due to system suspend.</p>
+      </li>
     </ul>
 
 \subsection dbus_main_properties Properties
index 67d0e2877a478ba5f683ca0c463b5fc9305dd931..9b04ee1c7e3b7c85d8d67fe8caf580ebe4bd4394 100644 (file)
@@ -2172,6 +2172,12 @@ static const struct wpa_dbus_method_desc wpas_dbus_global_methods[] = {
                  END_ARGS
          }
        },
+       { "ExpectDisconnect", WPAS_DBUS_NEW_INTERFACE,
+         (WPADBusMethodHandler) wpas_dbus_handler_expect_disconnect,
+         {
+               END_ARGS
+         }
+       },
        { NULL, NULL, NULL, { END_ARGS } }
 };
 
index 67562a547172ff614893e68cc75dd075614b954d..57dc25bfeaa02f2c285503289d933b0c9778b19c 100644 (file)
@@ -1579,6 +1579,27 @@ DBusMessage * wpas_dbus_handler_reassociate(DBusMessage *message,
 }
 
 
+/**
+ * wpas_dbus_handler_expect_disconnect - ExpectDisconnect
+ * @message: Pointer to incoming dbus message
+ * @global: %wpa_supplicant global data structure
+ * Returns: NULL
+ *
+ * Handler function for notifying system there will be a expected disconnect.
+ * This will prevent wpa_supplicant from adding blacklists upon next disconnect..
+ */
+DBusMessage * wpas_dbus_handler_expect_disconnect(DBusMessage *message,
+                                                 struct wpa_global *global)
+{
+       struct wpa_supplicant *wpa_s = global->ifaces;
+
+       for (; wpa_s; wpa_s = wpa_s->next)
+               if (wpa_s->wpa_state >= WPA_ASSOCIATED)
+                       wpa_s->own_disconnect_req = 1;
+       return NULL;
+}
+
+
 /**
  * wpas_dbus_handler_reattach - Reattach to current AP
  * @message: Pointer to incoming dbus message
index 50f72ec507bf3e4acabee0cd5c05ef5f2fae51e2..1be81df585064a084e31c046712e1b214955275f 100644 (file)
@@ -50,6 +50,9 @@ DBusMessage * wpas_dbus_handler_remove_interface(DBusMessage *message,
 DBusMessage * wpas_dbus_handler_get_interface(DBusMessage *message,
                                              struct wpa_global *global);
 
+DBusMessage * wpas_dbus_handler_expect_disconnect(DBusMessage *message,
+                                                 struct wpa_global *global);
+
 dbus_bool_t wpas_dbus_getter_debug_level(DBusMessageIter *iter,
                                         DBusError *error,
                                         void *user_data);