summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDan Williams <dcbw@redhat.com>2016-02-08 17:00:03 -0600
committerDan Williams <dcbw@redhat.com>2016-02-11 14:38:05 -0600
commit05a14d0818d638e686c424f1162dd3d781d40ed0 (patch)
tree846e81adff405f84111c0199b4acd151b03f5855
parentb81e8ca537849ba9a7fc69f9833cd2d4b84b7e24 (diff)
downloadNetworkManager-05a14d0818d638e686c424f1162dd3d781d40ed0.tar.gz
wifi: allow autoconnect on AP/AdHoc mode connections with manual IP configuration
The existing checks assumed that all AP/AdHoc connections would use the shared IP method. But what we really want to check for here is whether the connection is AP/AdHoc. Leave the existing 'shared' check for backwards compatibility. Also move the check above the timestamp check, since the user shouldn't need to manually set a timestamp just to get an AP-mode connection to autoconnect. (cherry picked from commit e2637760f160f8d790438f3ca26df1b888de7909)
-rw-r--r--src/devices/wifi/nm-device-wifi.c19
1 files changed, 13 insertions, 6 deletions
diff --git a/src/devices/wifi/nm-device-wifi.c b/src/devices/wifi/nm-device-wifi.c
index 8ea3b6848e..4198a8a32e 100644
--- a/src/devices/wifi/nm-device-wifi.c
+++ b/src/devices/wifi/nm-device-wifi.c
@@ -1140,13 +1140,25 @@ can_auto_connect (NMDevice *device,
{
NMDeviceWifi *self = NM_DEVICE_WIFI (device);
NMDeviceWifiPrivate *priv = NM_DEVICE_WIFI_GET_PRIVATE (self);
+ NMSettingWireless *s_wifi;
GSList *ap_iter;
- const char *method = NULL;
+ const char *method, *mode;
guint64 timestamp = 0;
if (!NM_DEVICE_CLASS (nm_device_wifi_parent_class)->can_auto_connect (device, connection, specific_object))
return FALSE;
+ s_wifi = nm_connection_get_setting_wireless (connection);
+ g_return_val_if_fail (s_wifi, FALSE);
+
+ /* Always allow autoconnect for shared/Ad-Hoc/AP */
+ method = nm_utils_get_ip_config_method (connection, NM_TYPE_SETTING_IP4_CONFIG);
+ mode = nm_setting_wireless_get_mode (s_wifi);
+ if ( g_strcmp0 (mode, NM_SETTING_WIRELESS_MODE_ADHOC) == 0
+ || g_strcmp0 (mode, NM_SETTING_WIRELESS_MODE_AP) == 0
+ || g_strcmp0 (method, NM_SETTING_IP4_CONFIG_METHOD_SHARED) == 0)
+ return TRUE;
+
/* Don't autoconnect to networks that have been tried at least once
* but haven't been successful, since these are often accidental choices
* from the menu and the user may not know the password.
@@ -1156,11 +1168,6 @@ can_auto_connect (NMDevice *device,
return FALSE;
}
- /* Use the connection if it's a shared connection */
- method = nm_utils_get_ip_config_method (connection, NM_TYPE_SETTING_IP4_CONFIG);
- if (!strcmp (method, NM_SETTING_IP4_CONFIG_METHOD_SHARED))
- return TRUE;
-
for (ap_iter = priv->ap_list; ap_iter; ap_iter = g_slist_next (ap_iter)) {
NMAccessPoint *ap = NM_AP (ap_iter->data);