[gnome-control-center] network: Fix WPA Enterprise connection not working
- From: Bastien Nocera <hadess src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-control-center] network: Fix WPA Enterprise connection not working
- Date: Tue, 2 Oct 2012 12:59:46 +0000 (UTC)
commit 75086eb149079ae9f1818774d8b3f73ecab62120
Author: Bastien Nocera <hadess hadess net>
Date: Tue Oct 2 14:55:59 2012 +0200
network: Fix WPA Enterprise connection not working
https://bugzilla.gnome.org/show_bug.cgi?id=685207
panels/network/net-device-wifi.c | 52 +++++++++++++++++++++++++++++++++----
1 files changed, 46 insertions(+), 6 deletions(-)
---
diff --git a/panels/network/net-device-wifi.c b/panels/network/net-device-wifi.c
index 8cbe5a3..fec731d 100644
--- a/panels/network/net-device-wifi.c
+++ b/panels/network/net-device-wifi.c
@@ -1080,6 +1080,28 @@ activate_connection (NetDeviceWifi *device_wifi,
connection_activate_cb, device_wifi);
}
+static gboolean
+is_8021x (NMDevice *device,
+ const char *ap_object_path)
+{
+ NM80211ApSecurityFlags wpa_flags, rsn_flags;
+ NMAccessPoint *ap;
+
+ ap = nm_device_wifi_get_access_point_by_path (NM_DEVICE_WIFI (device),
+ ap_object_path);
+ if (!ap)
+ return FALSE;
+
+ rsn_flags = nm_access_point_get_rsn_flags (ap);
+ if (rsn_flags & NM_802_11_AP_SEC_KEY_MGMT_802_1X)
+ return TRUE;
+
+ wpa_flags = nm_access_point_get_wpa_flags (ap);
+ if (wpa_flags & NM_802_11_AP_SEC_KEY_MGMT_802_1X)
+ return TRUE;
+ return FALSE;
+}
+
static void
wireless_try_to_connect (NetDeviceWifi *device_wifi,
const gchar *ssid_target,
@@ -1147,12 +1169,30 @@ wireless_try_to_connect (NetDeviceWifi *device_wifi,
}
/* create one, as it's missing */
- g_debug ("no existing connection found for %s, creating",
- ssid_target);
- nm_client_add_and_activate_connection (client,
- NULL,
- device, ap_object_path,
- connection_add_activate_cb, device_wifi);
+ g_debug ("no existing connection found for %s, creating", ssid_target);
+
+ if (!is_8021x (device, ap_object_path)) {
+ g_debug ("no existing connection found for %s, creating and activating one", ssid_target);
+ nm_client_add_and_activate_connection (client,
+ NULL,
+ device, ap_object_path,
+ connection_add_activate_cb, device_wifi);
+ } else {
+ CcNetworkPanel *panel;
+ GPtrArray *array;
+
+ g_debug ("no existing connection found for %s, creating", ssid_target);
+ array = g_ptr_array_new ();
+ g_ptr_array_add (array, "connect-8021x-wifi");
+ g_ptr_array_add (array, (gpointer) nm_object_get_path (NM_OBJECT (device)));
+ g_ptr_array_add (array, (gpointer) ap_object_path);
+ g_ptr_array_add (array, NULL);
+
+ panel = net_object_get_panel (NET_OBJECT (device_wifi));
+ g_object_set (G_OBJECT (panel), "argv", array->pdata, NULL);
+
+ g_ptr_array_free (array, FALSE);
+ }
out:
return;
}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]