nl80211: Delete Beacon information on deinit in wpa_supplicant AP mode
[wpasupplicant] / wpa_supplicant / ctrl_iface_dbus_handlers.c
index 62751ad..56bad32 100644 (file)
@@ -17,6 +17,7 @@
 #include "common.h"
 #include "config.h"
 #include "wpa_supplicant_i.h"
+#include "driver_i.h"
 #include "ctrl_iface_dbus.h"
 #include "ctrl_iface_dbus_handlers.h"
 #include "eap_peer/eap_methods.h"
@@ -153,7 +154,7 @@ DBusMessage * wpas_dbus_global_add_interface(DBusMessage *message,
         * Try to get the wpa_supplicant record for this iface, return
         * an error if we already control it.
         */
-       if (wpa_supplicant_get_iface(global, iface.ifname) != 0) {
+       if (wpa_supplicant_get_iface(global, iface.ifname) != NULL) {
                reply = dbus_message_new_error(message,
                                               WPAS_ERROR_EXISTS_ERROR,
                                               "wpa_supplicant already "
@@ -420,6 +421,14 @@ DBusMessage * wpas_dbus_bssid_properties(DBusMessage *message,
                        goto error;
        }
 
+       ie = wpa_scan_get_vendor_ie(res, WPS_IE_VENDOR_TYPE);
+       if (ie) {
+               if (!wpa_dbus_dict_append_byte_array(&iter_dict, "wpsie",
+                                                    (const char *) ie,
+                                                    ie[1] + 2))
+                       goto error;
+       }
+
        if (res->freq) {
                if (!wpa_dbus_dict_append_int32(&iter_dict, "frequency",
                                                res->freq))
@@ -428,11 +437,14 @@ DBusMessage * wpas_dbus_bssid_properties(DBusMessage *message,
        if (!wpa_dbus_dict_append_uint16(&iter_dict, "capabilities",
                                         res->caps))
                goto error;
-       if (!wpa_dbus_dict_append_int32(&iter_dict, "quality", res->qual))
+       if (!(res->flags & WPA_SCAN_QUAL_INVALID) &&
+           !wpa_dbus_dict_append_int32(&iter_dict, "quality", res->qual))
                goto error;
-       if (!wpa_dbus_dict_append_int32(&iter_dict, "noise", res->noise))
+       if (!(res->flags & WPA_SCAN_NOISE_INVALID) &&
+           !wpa_dbus_dict_append_int32(&iter_dict, "noise", res->noise))
                goto error;
-       if (!wpa_dbus_dict_append_int32(&iter_dict, "level", res->level))
+       if (!(res->flags & WPA_SCAN_LEVEL_INVALID) &&
+           !wpa_dbus_dict_append_int32(&iter_dict, "level", res->level))
                goto error;
        if (!wpa_dbus_dict_append_int32(&iter_dict, "maxrate",
                                        wpa_scan_get_max_rate(res) * 500000))
@@ -1279,7 +1291,7 @@ DBusMessage * wpas_dbus_iface_get_state(DBusMessage *message,
 /**
  * wpas_dbus_iface_set_blobs - Store named binary blobs (ie, for certificates)
  * @message: Pointer to incoming dbus message
- * @global: %wpa_supplicant global data structure
+ * @wpa_s: %wpa_supplicant data structure
  * Returns: A dbus message containing a UINT32 indicating success (1) or
  *          failure (0)
  *
@@ -1362,7 +1374,7 @@ DBusMessage * wpas_dbus_iface_set_blobs(DBusMessage *message,
 /**
  * wpas_dbus_iface_remove_blob - Remove named binary blobs
  * @message: Pointer to incoming dbus message
- * @global: %wpa_supplicant global data structure
+ * @wpa_s: %wpa_supplicant data structure
  * Returns: A dbus message containing a UINT32 indicating success (1) or
  *          failure (0)
  *