diff options
author | Dan Williams <dcbw@redhat.com> | 2016-02-08 17:00:03 -0600 |
---|---|---|
committer | Dan Williams <dcbw@redhat.com> | 2016-02-11 14:38:05 -0600 |
commit | 05a14d0818d638e686c424f1162dd3d781d40ed0 (patch) | |
tree | 846e81adff405f84111c0199b4acd151b03f5855 | |
parent | b81e8ca537849ba9a7fc69f9833cd2d4b84b7e24 (diff) | |
download | NetworkManager-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.c | 19 |
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); |