diff options
author | Jiří Klimeš <jklimes@redhat.com> | 2015-08-18 12:44:21 +0200 |
---|---|---|
committer | Jiří Klimeš <jklimes@redhat.com> | 2015-08-21 09:50:55 +0200 |
commit | d80f1fee87a3c65dd9428b64e4ebc52c3b9e2e6f (patch) | |
tree | 4691c8827ba690918e6f71f082a24a54dc8a4fe7 | |
parent | b19f3d9ac24b6ca28e523071db5fede744c884c1 (diff) | |
download | NetworkManager-d80f1fee87a3c65dd9428b64e4ebc52c3b9e2e6f.tar.gz |
wifi: also support locking connections to a channel within band (bgo #627571)
https://bugzilla.gnome.org/show_bug.cgi?id=627571
(cherry picked from commit c0f6725146bb2fed77a466c38f434f1811febcff)
-rw-r--r-- | src/supplicant-manager/nm-supplicant-config.c | 34 |
1 files changed, 24 insertions, 10 deletions
diff --git a/src/supplicant-manager/nm-supplicant-config.c b/src/supplicant-manager/nm-supplicant-config.c index fc41760f8e..c4c725c147 100644 --- a/src/supplicant-manager/nm-supplicant-config.c +++ b/src/supplicant-manager/nm-supplicant-config.c @@ -343,6 +343,7 @@ nm_supplicant_config_add_setting_wireless (NMSupplicantConfig * self, NMSupplicantConfigPrivate *priv; gboolean is_adhoc, is_ap; const char *mode, *band; + guint32 channel; GBytes *ssid; const char *bssid; @@ -413,22 +414,35 @@ nm_supplicant_config_add_setting_wireless (NMSupplicantConfig * self, } band = nm_setting_wireless_get_band (setting); + channel = nm_setting_wireless_get_channel (setting); if (band) { - const char *freqs = NULL; + if (channel) { + guint32 freq; + char *str_freq; + + freq = nm_utils_wifi_channel_to_freq (channel, band); + str_freq = g_strdup_printf ("%u", freq); + if (!nm_supplicant_config_add_option (self, "freq_list", str_freq, -1, FALSE)) { + g_free (str_freq); + nm_log_warn (LOGD_SUPPLICANT, "Error adding frequency list to supplicant config."); + return FALSE; + } + g_free (str_freq); + } else { + const char *freqs = NULL; - if (!strcmp (band, "a")) - freqs = wifi_freqs_to_string (FALSE); - else if (!strcmp (band, "bg")) - freqs = wifi_freqs_to_string (TRUE); + if (!strcmp (band, "a")) + freqs = wifi_freqs_to_string (FALSE); + else if (!strcmp (band, "bg")) + freqs = wifi_freqs_to_string (TRUE); - if (freqs && !nm_supplicant_config_add_option (self, "freq_list", freqs, strlen (freqs), FALSE)) { - nm_log_warn (LOGD_SUPPLICANT, "Error adding frequency list/band to supplicant config."); - return FALSE; + if (freqs && !nm_supplicant_config_add_option (self, "freq_list", freqs, strlen (freqs), FALSE)) { + nm_log_warn (LOGD_SUPPLICANT, "Error adding frequency list/band to supplicant config."); + return FALSE; + } } } - // FIXME: channel config item - return TRUE; } |