summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorThomas Haller <thaller@redhat.com>2017-06-05 17:32:39 +0200
committerThomas Haller <thaller@redhat.com>2017-06-05 17:32:39 +0200
commit14529f5b4635f8b856b7698a2eebc687b31c516e (patch)
tree53efba761ab60f8ebea13e2bbeca8341b37760a9
parentde0da1df32fc29a3a89afb549c7d9e8ff016fc09 (diff)
parent8870b7ab129463f10bd34da71555ff19ecdb307f (diff)
downloadNetworkManager-14529f5b4635f8b856b7698a2eebc687b31c516e.tar.gz
wifi: merge branch 'th/wifi-ap-hidden'
https://github.com/NetworkManager/NetworkManager/pull/22
-rw-r--r--src/devices/wifi/nm-device-wifi.c43
1 files changed, 30 insertions, 13 deletions
diff --git a/src/devices/wifi/nm-device-wifi.c b/src/devices/wifi/nm-device-wifi.c
index 6153f5d93c..633bcd6aae 100644
--- a/src/devices/wifi/nm-device-wifi.c
+++ b/src/devices/wifi/nm-device-wifi.c
@@ -791,15 +791,18 @@ complete_connection (NMDevice *device,
NMSettingWireless *s_wifi;
const char *setting_mac;
char *str_ssid = NULL;
- NMWifiAP *ap = NULL;
+ NMWifiAP *ap;
const GByteArray *ssid = NULL;
GByteArray *tmp_ssid = NULL;
GBytes *setting_ssid = NULL;
gboolean hidden = FALSE;
const char *perm_hw_addr;
+ const char *mode;
s_wifi = nm_connection_get_setting_wireless (connection);
+ mode = s_wifi ? nm_setting_wireless_get_mode (s_wifi) : NULL;
+
if (!specific_object) {
/* If not given a specific object, we need at minimum an SSID */
if (!s_wifi) {
@@ -819,19 +822,29 @@ complete_connection (NMDevice *device,
return FALSE;
}
- /* Find a compatible AP in the scan list */
- ap = find_first_compatible_ap (self, connection, FALSE);
+ if (!nm_streq0 (mode, NM_SETTING_WIRELESS_MODE_AP)) {
+ /* Find a compatible AP in the scan list */
+ ap = find_first_compatible_ap (self, connection, FALSE);
- /* If we still don't have an AP, then the WiFI settings needs to be
- * fully specified by the client. Might not be able to find an AP
- * if the network isn't broadcasting the SSID for example.
- */
- if (!ap) {
+ /* If we still don't have an AP, then the WiFI settings needs to be
+ * fully specified by the client. Might not be able to find an AP
+ * if the network isn't broadcasting the SSID for example.
+ */
+ if (!ap) {
+ if (!nm_setting_verify (NM_SETTING (s_wifi), connection, error))
+ return FALSE;
+
+ hidden = TRUE;
+ }
+ } else {
if (!nm_setting_verify (NM_SETTING (s_wifi), connection, error))
return FALSE;
-
- hidden = TRUE;
+ ap = NULL;
}
+ } else if (nm_streq0 (mode, NM_SETTING_WIRELESS_MODE_AP)) {
+ if (!nm_setting_verify (NM_SETTING (s_wifi), connection, error))
+ return FALSE;
+ ap = NULL;
} else {
ap = get_ap_by_path (self, specific_object);
if (!ap) {
@@ -1364,8 +1377,12 @@ hidden_filter_func (NMSettings *settings,
if (!nm_connection_is_type (NM_CONNECTION (connection), NM_SETTING_WIRELESS_SETTING_NAME))
return FALSE;
- s_wifi = (NMSettingWireless *) nm_connection_get_setting_wireless (NM_CONNECTION (connection));
- return s_wifi ? nm_setting_wireless_get_hidden (s_wifi) : FALSE;
+ s_wifi = nm_connection_get_setting_wireless (NM_CONNECTION (connection));
+ if (!s_wifi)
+ return FALSE;
+ if (nm_streq0 (nm_setting_wireless_get_mode (s_wifi), NM_SETTING_WIRELESS_MODE_AP))
+ return FALSE;
+ return nm_setting_wireless_get_hidden (s_wifi);
}
static GPtrArray *
@@ -1488,7 +1505,7 @@ request_wireless_scan (NMDeviceWifi *self, gboolean force_if_scanning, GVariant
? nm_utils_ssid_to_utf8 (ssid->data, ssid->len)
: NULL;
_LOGD (LOGD_WIFI, "wifi-scan: (%u) probe scanning SSID %s%s%s",
- i, NM_PRINT_FMT_QUOTED (foo, "\"", foo, "\"", "<hidden>"));
+ i, NM_PRINT_FMT_QUOTED (foo, "\"", foo, "\"", "*any*"));
g_free (foo);
}
} else