summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJiří Klimeš <jklimes@redhat.com>2015-08-18 12:44:21 +0200
committerJiří Klimeš <jklimes@redhat.com>2015-08-21 09:32:09 +0200
commitc0f6725146bb2fed77a466c38f434f1811febcff (patch)
treeade634be52fc8552addcd849fd32beb671c7987d
parent3c122235dc537362c80cc4a6c279a869330fdcaf (diff)
downloadNetworkManager-c0f6725146bb2fed77a466c38f434f1811febcff.tar.gz
wifi: also support locking connections to a channel within band (bgo #627571)
https://bugzilla.gnome.org/show_bug.cgi?id=627571
-rw-r--r--src/supplicant-manager/nm-supplicant-config.c34
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 4c7cff4f8b..86fd1814ca 100644
--- a/src/supplicant-manager/nm-supplicant-config.c
+++ b/src/supplicant-manager/nm-supplicant-config.c
@@ -341,6 +341,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;
@@ -411,22 +412,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;
}