Prevent wpa_supplicant from automatically associating to our hidden blocks
authorSamuel Ortiz <sameo@linux.intel.com>
Fri, 11 Jun 2010 22:06:37 +0000 (00:06 +0200)
committerSamuel Ortiz <sameo@linux.intel.com>
Fri, 11 Jun 2010 22:23:32 +0000 (00:23 +0200)
wpa_supplicant will never match a network block with an invalid BSSID
and an actual scan results, and thus will not select the latter for
association.

plugins/supplicant.c

index 156257e..8fe3d63 100644 (file)
@@ -368,6 +368,7 @@ static int set_hidden_network(struct supplicant_task *task, const char *netpath,
        DBusMessageIter array, dict;
        DBusError error;
        dbus_uint32_t scan_ssid = 1;
+       const char *invalid_address = "ff:ff:ff:ff:ff:ff";
 
        message = dbus_message_new_method_call(SUPPLICANT_NAME, netpath,
                                        SUPPLICANT_INTF ".Network", "set");
@@ -386,6 +387,13 @@ static int set_hidden_network(struct supplicant_task *task, const char *netpath,
        connman_dbus_dict_append_fixed_array(&dict, "ssid",
                                        DBUS_TYPE_BYTE, &ssid, ssid_len);
 
+       /*
+        * We're setting an invalid BSSID to prevent wpa_s from associating
+        * automatically to this block once it's found.
+        */
+       connman_dbus_dict_append_basic(&dict, "bssid",
+                                       DBUS_TYPE_STRING, &invalid_address);
+
        connman_dbus_dict_close(&array, &dict);
 
        dbus_error_init(&error);