[gnome-initial-setup] network: switch from libnm-glib to libnm
- From: Rui Matos <rtcm src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-initial-setup] network: switch from libnm-glib to libnm
- Date: Thu, 23 Feb 2017 12:34:43 +0000 (UTC)
commit c1d702360dbe9075e6ab2215bc01d5c9fd3451ed
Author: Lubomir Rintel <lkundrak v3 sk>
Date: Thu Jan 12 17:28:52 2017 +0100
network: switch from libnm-glib to libnm
https://bugzilla.gnome.org/show_bug.cgi?id=777179
configure.ac | 11 +-
.../pages/network/gis-network-page.c | 115 ++++++++++-------
.../pages/network/network-dialogs.c | 133 ++++++++++----------
.../pages/network/network-dialogs.h | 13 +--
4 files changed, 143 insertions(+), 129 deletions(-)
---
diff --git a/configure.ac b/configure.ac
index d016017..1a58d02 100644
--- a/configure.ac
+++ b/configure.ac
@@ -18,7 +18,8 @@ AC_DEFINE_UNQUOTED(GETTEXT_PACKAGE, "$GETTEXT_PACKAGE", [gettext package])
AM_GLIB_GNU_GETTEXT
-NETWORK_MANAGER_REQUIRED_VERSION=0.9.6.4
+LIBNM_REQUIRED_VERSION=1.2
+LIBNMA_REQUIRED_VERSION=1.0
GLIB_REQUIRED_VERSION=2.46.0
GTK_REQUIRED_VERSION=3.11.3
PANGO_REQUIRED_VERSION=1.32.5
@@ -30,10 +31,8 @@ GEOCLUE_REQUIRED_VERSION=2.3.1
PACKAGEKIT_REQUIRED_VERSION=1.1.4
PKG_CHECK_MODULES(INITIAL_SETUP,
- NetworkManager >= $NETWORK_MANAGER_REQUIRED_VERSION
- libnm-glib >= $NETWORK_MANAGER_REQUIRED_VERSION
- libnm-util >= $NETWORK_MANAGER_REQUIRED_VERSION
- libnm-gtk >= $NETWORK_MANAGER_REQUIRED_VERSION
+ libnm >= $LIBNM_REQUIRED_VERSION
+ libnma >= $LIBNMA_REQUIRED_VERSION
polkit-gobject-1 >= $POLKIT_REQUIRED_VERSION
accountsservice
gnome-desktop-3.0 >= $GNOME_DESKTOP_REQUIRED_VERSION
@@ -53,6 +52,8 @@ PKG_CHECK_MODULES(INITIAL_SETUP,
pwquality
webkit2gtk-4.0)
+INITIAL_SETUP_CFLAGS="$INITIAL_SETUP_CFLAGS -DNM_VERSION_MIN_REQUIRED=NM_VERSION_1_2"
+INITIAL_SETUP_CFLAGS="$INITIAL_SETUP_CFLAGS -DNM_VERSION_MAX_ALLOWED=NM_VERSION_1_2"
AC_ARG_ENABLE(software-sources,
[AS_HELP_STRING([--enable-software-sources],
diff --git a/gnome-initial-setup/pages/network/gis-network-page.c
b/gnome-initial-setup/pages/network/gis-network-page.c
index f6da124..0beae26 100644
--- a/gnome-initial-setup/pages/network/gis-network-page.c
+++ b/gnome-initial-setup/pages/network/gis-network-page.c
@@ -30,14 +30,6 @@
#include <glib/gi18n.h>
#include <gio/gio.h>
-#include <gtk/gtk.h>
-
-#include <nm-client.h>
-#include <nm-device-wifi.h>
-#include <nm-access-point.h>
-#include <nm-utils.h>
-#include <nm-remote-settings.h>
-
#include "network-dialogs.h"
typedef enum {
@@ -57,7 +49,6 @@ struct _GisNetworkPagePrivate {
GtkWidget *turn_on_switch;
NMClient *nm_client;
- NMRemoteSettings *nm_settings;
NMDevice *nm_device;
gboolean refreshing;
GtkSizeGroup *icons;
@@ -71,8 +62,8 @@ G_DEFINE_TYPE_WITH_PRIVATE (GisNetworkPage, gis_network_page, GIS_TYPE_PAGE);
static GPtrArray *
get_strongest_unique_aps (const GPtrArray *aps)
{
- const GByteArray *ssid;
- const GByteArray *ssid_tmp;
+ GBytes *ssid;
+ GBytes *ssid_tmp;
GPtrArray *unique = NULL;
gboolean add_ap;
guint i;
@@ -98,7 +89,8 @@ get_strongest_unique_aps (const GPtrArray *aps)
ssid_tmp = nm_access_point_get_ssid (ap_tmp);
/* is this the same type and data? */
- if (nm_utils_same_ssid (ssid, ssid_tmp, TRUE)) {
+ if (nm_utils_same_ssid (g_bytes_get_data (ssid, NULL), g_bytes_get_size (ssid),
+ g_bytes_get_data (ssid_tmp, NULL), g_bytes_get_size (ssid_tmp), TRUE)) {
/* the new access point is stronger */
if (nm_access_point_get_strength (ap) >
nm_access_point_get_strength (ap_tmp)) {
@@ -187,7 +179,8 @@ static void
add_access_point (GisNetworkPage *page, NMAccessPoint *ap, NMAccessPoint *active)
{
GisNetworkPagePrivate *priv = gis_network_page_get_instance_private (page);
- const GByteArray *ssid;
+ GBytes *ssid;
+ GBytes *ssid_active = NULL;
gchar *ssid_text;
const gchar *object_path;
gboolean activated, activating;
@@ -203,10 +196,12 @@ add_access_point (GisNetworkPage *page, NMAccessPoint *ap, NMAccessPoint *active
if (ssid == NULL)
return;
- ssid_text = nm_utils_ssid_to_utf8 (ssid);
+ ssid_text = nm_utils_ssid_to_utf8 (g_bytes_get_data (ssid, NULL), g_bytes_get_size (ssid));
- if (active &&
- nm_utils_same_ssid (ssid, nm_access_point_get_ssid (active), TRUE)) {
+ if (active)
+ ssid_active = nm_access_point_get_ssid (active);
+ if (ssid_active && nm_utils_same_ssid (g_bytes_get_data (ssid, NULL), g_bytes_get_size (ssid),
+ g_bytes_get_data (ssid_active, NULL), g_bytes_get_size
(ssid_active), TRUE)) {
switch (nm_device_get_state (priv->nm_device))
{
case NM_DEVICE_STATE_PREPARE:
@@ -404,27 +399,45 @@ refresh_wireless_list (GisNetworkPage *page)
}
static void
-connection_activate_cb (NMClient *client,
- NMActiveConnection *connection,
- GError *error,
+connection_activate_cb (GObject *object,
+ GAsyncResult *result,
gpointer user_data)
{
+ NMClient *client = NM_CLIENT (object);
GisNetworkPage *page = GIS_NETWORK_PAGE (user_data);
+ NMActiveConnection *connection;
+ GError *error = NULL;
- if (connection == NULL) {
+ connection = nm_client_activate_connection_finish (client, result, &error);
+ if (connection) {
+ g_object_unref (connection);
+ } else {
/* failed to activate */
+ g_warning ("Failed to activate a connection: %s", error->message);
+ g_error_free (error);
refresh_wireless_list (page);
}
}
static void
-connection_add_activate_cb (NMClient *client,
- NMActiveConnection *connection,
- const char *path,
- GError *error,
+connection_add_activate_cb (GObject *object,
+ GAsyncResult *result,
gpointer user_data)
{
- connection_activate_cb (client, connection, error, user_data);
+ NMClient *client = NM_CLIENT (object);
+ GisNetworkPage *page = GIS_NETWORK_PAGE (user_data);
+ NMActiveConnection *connection;
+ GError *error = NULL;
+
+ connection = nm_client_add_and_activate_connection_finish (client, result, &error);
+ if (connection) {
+ g_object_unref (connection);
+ } else {
+ /* failed to activate */
+ g_warning ("Failed to add and activate a connection: %s", error->message);
+ g_error_free (error);
+ refresh_wireless_list (page);
+ }
}
static void
@@ -432,8 +445,7 @@ connect_to_hidden_network (GisNetworkPage *page)
{
GisNetworkPagePrivate *priv = gis_network_page_get_instance_private (page);
cc_network_panel_connect_to_hidden_network (gtk_widget_get_toplevel (GTK_WIDGET (page)),
- priv->nm_client,
- priv->nm_settings);
+ priv->nm_client);
}
static void
@@ -443,13 +455,15 @@ row_activated (GtkListBox *box,
{
GisNetworkPagePrivate *priv = gis_network_page_get_instance_private (page);
gchar *object_path;
- GSList *list, *filtered, *l;
+ const GPtrArray *list;
+ GPtrArray *filtered;
NMConnection *connection;
NMConnection *connection_to_activate;
NMSettingWireless *setting;
- const GByteArray *ssid_target;
- const GByteArray *ssid;
+ GBytes *ssid;
+ GBytes *ssid_target;
GtkWidget *child;
+ int i;
if (priv->refreshing)
return;
@@ -463,13 +477,13 @@ row_activated (GtkListBox *box,
goto out;
}
- list = nm_remote_settings_list_connections (priv->nm_settings);
+ list = nm_client_get_connections (priv->nm_client);
filtered = nm_device_filter_connections (priv->nm_device, list);
connection_to_activate = NULL;
- for (l = filtered; l; l = l->next) {
- connection = NM_CONNECTION (l->data);
+ for (i = 0; i < filtered->len; i++) {
+ connection = NM_CONNECTION (filtered->pdata[i]);
setting = nm_connection_get_setting_wireless (connection);
if (!NM_IS_SETTING_WIRELESS (setting))
continue;
@@ -478,26 +492,28 @@ row_activated (GtkListBox *box,
if (ssid == NULL)
continue;
- if (nm_utils_same_ssid (ssid, ssid_target, TRUE)) {
+ if (nm_utils_same_ssid (g_bytes_get_data (ssid, NULL), g_bytes_get_size (ssid),
+ g_bytes_get_data (ssid_target, NULL), g_bytes_get_size (ssid_target), TRUE)) {
connection_to_activate = connection;
break;
}
}
- g_slist_free (list);
- g_slist_free (filtered);
+ g_ptr_array_unref (filtered);
if (connection_to_activate != NULL) {
- nm_client_activate_connection (priv->nm_client,
- connection_to_activate,
- priv->nm_device, NULL,
- connection_activate_cb, page);
+ nm_client_activate_connection_async (priv->nm_client,
+ connection_to_activate,
+ priv->nm_device, NULL,
+ NULL,
+ connection_activate_cb, page);
goto out;
}
- nm_client_add_and_activate_connection (priv->nm_client,
- NULL,
- priv->nm_device, object_path,
- connection_add_activate_cb, page);
+ nm_client_add_and_activate_connection_async (priv->nm_client,
+ NULL,
+ priv->nm_device, object_path,
+ NULL,
+ connection_add_activate_cb, page);
out:
refresh_wireless_list (page);
@@ -555,12 +571,19 @@ gis_network_page_constructed (GObject *object)
NMDevice *device;
guint i;
gboolean visible = FALSE;
+ GError *error = NULL;
G_OBJECT_CLASS (gis_network_page_parent_class)->constructed (object);
priv->icons = gtk_size_group_new (GTK_SIZE_GROUP_HORIZONTAL);
- priv->nm_client = nm_client_new ();
+ priv->nm_client = nm_client_new (NULL, &error);
+ if (!priv->nm_client) {
+ g_warning ("Can't create NetworkManager client, hiding network page: %s",
+ error->message);
+ g_error_free (error);
+ goto out;
+ }
g_object_bind_property (priv->nm_client, "wireless-enabled",
priv->turn_on_switch, "active",
@@ -593,7 +616,6 @@ gis_network_page_constructed (GObject *object)
}
visible = TRUE;
- priv->nm_settings = nm_remote_settings_new (NULL);
g_signal_connect (priv->nm_device, "notify::state",
G_CALLBACK (device_state_changed), page);
@@ -622,7 +644,6 @@ gis_network_page_dispose (GObject *object)
GisNetworkPagePrivate *priv = gis_network_page_get_instance_private (page);
g_clear_object (&priv->nm_client);
- g_clear_object (&priv->nm_settings);
g_clear_object (&priv->nm_device);
g_clear_object (&priv->icons);
diff --git a/gnome-initial-setup/pages/network/network-dialogs.c
b/gnome-initial-setup/pages/network/network-dialogs.c
index 81f0da8..09490e6 100644
--- a/gnome-initial-setup/pages/network/network-dialogs.c
+++ b/gnome-initial-setup/pages/network/network-dialogs.c
@@ -20,26 +20,17 @@
* Copyright 2008 - 2011 Red Hat, Inc.
*/
-#include <nm-utils.h>
-#include <nm-connection.h>
-#include <nm-setting-gsm.h>
-#include <nm-setting-cdma.h>
-#include <nm-setting-serial.h>
-#include <nm-device-modem.h>
-#include <nm-device-wifi.h>
-
-#include "network-dialogs.h"
-#include "nm-wifi-dialog.h"
-#include "nm-mobile-wizard.h"
+#include <gtk/gtk.h>
+#include <NetworkManager.h>
+#include <nma-wifi-dialog.h>
+#include <nma-mobile-wizard.h>
typedef struct {
NMClient *client;
- NMRemoteSettings *settings;
} WirelessDialogClosure;
typedef struct {
NMClient *client;
- NMRemoteSettings *settings;
NMDevice *device;
} MobileDialogClosure;
@@ -49,7 +40,6 @@ wireless_dialog_closure_closure_notify (gpointer data,
{
WirelessDialogClosure *closure = data;
g_object_unref (closure->client);
- g_object_unref (closure->settings);
g_slice_free (WirelessDialogClosure, data);
}
@@ -59,7 +49,6 @@ mobile_dialog_closure_free (gpointer data)
{
MobileDialogClosure *closure = data;
g_object_unref (closure->client);
- g_object_unref (closure->settings);
g_object_unref (closure->device);
g_slice_free (MobileDialogClosure, data);
@@ -82,24 +71,39 @@ wifi_can_create_wifi_network (NMClient *client)
}
static void
-activate_existing_cb (NMClient *client,
- NMActiveConnection *active,
- GError *error,
+activate_existing_cb (GObject *object,
+ GAsyncResult *result,
gpointer user_data)
{
- if (error)
+ NMClient *client = NM_CLIENT (object);
+ NMActiveConnection *connection;
+ GError *error = NULL;
+
+ connection = nm_client_activate_connection_finish (client, result, &error);
+ if (connection) {
+ g_object_unref (connection);
+ } else {
g_warning ("Failed to activate connection: (%d) %s", error->code, error->message);
+ g_error_free (error);
+ }
}
static void
-activate_new_cb (NMClient *client,
- NMActiveConnection *active,
- const char *connection_path,
- GError *error,
+activate_new_cb (GObject *object,
+ GAsyncResult *result,
gpointer user_data)
{
- if (error)
+ NMClient *client = NM_CLIENT (object);
+ NMActiveConnection *connection;
+ GError *error = NULL;
+
+ connection = nm_client_add_and_activate_connection_finish (client, result, &error);
+ if (connection) {
+ g_object_unref (connection);
+ } else {
g_warning ("Failed to add new connection: (%d) %s", error->code, error->message);
+ g_error_free (error);
+ }
}
static void
@@ -112,7 +116,8 @@ wireless_dialog_response_cb (GtkDialog *foo,
NMConnection *connection, *fuzzy_match = NULL;
NMDevice *device;
NMAccessPoint *ap;
- GSList *all, *iter;
+ const GPtrArray *all;
+ int i;
if (response != GTK_RESPONSE_OK)
goto done;
@@ -125,24 +130,24 @@ wireless_dialog_response_cb (GtkDialog *foo,
g_assert (device);
/* Find a similar connection and use that instead */
- all = nm_remote_settings_list_connections (closure->settings);
- for (iter = all; iter; iter = g_slist_next (iter)) {
+ all = nm_client_get_connections (closure->client);
+ for (i = 0; i < all->len; i++) {
if (nm_connection_compare (connection,
- NM_CONNECTION (iter->data),
+ NM_CONNECTION (all->pdata[i]),
(NM_SETTING_COMPARE_FLAG_FUZZY |
NM_SETTING_COMPARE_FLAG_IGNORE_ID))) {
- fuzzy_match = NM_CONNECTION (iter->data);
+ fuzzy_match = NM_CONNECTION (all->pdata[i]);
break;
}
}
- g_slist_free (all);
if (fuzzy_match) {
- nm_client_activate_connection (closure->client,
- fuzzy_match,
- device,
- ap ? nm_object_get_path (NM_OBJECT (ap)) : NULL,
- activate_existing_cb,
- NULL);
+ nm_client_activate_connection_async (closure->client,
+ fuzzy_match,
+ device,
+ ap ? nm_object_get_path (NM_OBJECT (ap)) : NULL,
+ NULL,
+ activate_existing_cb,
+ NULL);
} else {
NMSetting *s_con;
NMSettingWireless *s_wifi;
@@ -163,12 +168,13 @@ wireless_dialog_response_cb (GtkDialog *foo,
g_object_set (G_OBJECT (s_con), NM_SETTING_CONNECTION_AUTOCONNECT, FALSE, NULL);
}
- nm_client_add_and_activate_connection (closure->client,
- connection,
- device,
- ap ? nm_object_get_path (NM_OBJECT (ap)) : NULL,
- activate_new_cb,
- NULL);
+ nm_client_add_and_activate_connection_async (closure->client,
+ connection,
+ device,
+ ap ? nm_object_get_path (NM_OBJECT (ap)) : NULL,
+ NULL,
+ activate_new_cb,
+ NULL);
}
/* Balance nma_wifi_dialog_get_connection() */
@@ -182,7 +188,6 @@ done:
static void
show_wireless_dialog (GtkWidget *toplevel,
NMClient *client,
- NMRemoteSettings *settings,
GtkWidget *dialog)
{
WirelessDialogClosure *closure;
@@ -197,7 +202,6 @@ show_wireless_dialog (GtkWidget *toplevel,
closure = g_slice_new (WirelessDialogClosure);
closure->client = g_object_ref (client);
- closure->settings = g_object_ref (settings);
g_signal_connect_data (dialog, "response",
G_CALLBACK (wireless_dialog_response_cb),
closure, wireless_dialog_closure_closure_notify, 0);
@@ -209,29 +213,26 @@ show_wireless_dialog (GtkWidget *toplevel,
void
cc_network_panel_create_wifi_network (GtkWidget *toplevel,
- NMClient *client,
- NMRemoteSettings *settings)
+ NMClient *client)
{
if (wifi_can_create_wifi_network (client)) {
- show_wireless_dialog (toplevel, client, settings,
- nma_wifi_dialog_new_for_create (client, settings));
+ show_wireless_dialog (toplevel, client,
+ nma_wifi_dialog_new_for_create (client));
}
}
void
cc_network_panel_connect_to_hidden_network (GtkWidget *toplevel,
- NMClient *client,
- NMRemoteSettings *settings)
+ NMClient *client)
{
g_debug ("connect to hidden wifi");
- show_wireless_dialog (toplevel, client, settings,
- nma_wifi_dialog_new_for_other (client, settings));
+ show_wireless_dialog (toplevel, client,
+ nma_wifi_dialog_new_for_hidden (client));
}
void
cc_network_panel_connect_to_8021x_network (GtkWidget *toplevel,
NMClient *client,
- NMRemoteSettings *settings,
NMDevice *device,
const gchar *arg_access_point)
{
@@ -264,7 +265,7 @@ cc_network_panel_connect_to_8021x_network (GtkWidget *toplevel,
return;
}
- connection = nm_connection_new ();
+ connection = nm_simple_connection_new ();
/* Need a UUID for the "always ask" stuff in the Dialog of Doom */
s_con = (NMSettingConnection *) nm_setting_connection_new ();
@@ -277,7 +278,6 @@ cc_network_panel_connect_to_8021x_network (GtkWidget *toplevel,
nm_connection_add_setting (connection, NM_SETTING (s_wifi));
g_object_set (s_wifi,
NM_SETTING_WIRELESS_SSID, nm_access_point_get_ssid (ap),
- NM_SETTING_WIRELESS_SEC, NM_SETTING_WIRELESS_SECURITY_SETTING_NAME,
NULL);
s_wsec = (NMSettingWirelessSecurity *) nm_setting_wireless_security_new ();
@@ -289,8 +289,8 @@ cc_network_panel_connect_to_8021x_network (GtkWidget *toplevel,
g_object_set (s_8021x, NM_SETTING_802_1X_PHASE2_AUTH, "mschapv2", NULL);
nm_connection_add_setting (connection, NM_SETTING (s_8021x));
- dialog = nma_wifi_dialog_new (client, settings, connection, device, ap, FALSE);
- show_wireless_dialog (toplevel, client, settings, dialog);
+ dialog = nma_wifi_dialog_new (client, connection, device, ap, FALSE);
+ show_wireless_dialog (toplevel, client, dialog);
}
static void
@@ -306,12 +306,13 @@ connect_3g (NMConnection *connection,
/* Ask NM to add the new connection and activate it; NM will fill in the
* missing details based on the specific object and the device.
*/
- nm_client_add_and_activate_connection (closure->client,
- connection,
- closure->device,
- "/",
- activate_new_cb,
- NULL);
+ nm_client_add_and_activate_connection_async (closure->client,
+ connection,
+ closure->device,
+ "/",
+ NULL,
+ activate_new_cb,
+ NULL);
}
mobile_dialog_closure_free (closure);
@@ -335,7 +336,7 @@ cdma_mobile_wizard_done (NMAMobileWizard *wizard,
goto done;
}
- connection = nm_connection_new ();
+ connection = nm_simple_connection_new ();
setting = nm_setting_cdma_new ();
g_object_set (setting,
@@ -397,7 +398,7 @@ gsm_mobile_wizard_done (NMAMobileWizard *wizard,
goto done;
}
- connection = nm_connection_new ();
+ connection = nm_simple_connection_new ();
setting = nm_setting_gsm_new ();
g_object_set (setting,
@@ -464,7 +465,6 @@ show_wizard_idle_cb (NMAMobileWizard *wizard)
void
cc_network_panel_connect_to_3g_network (GtkWidget *toplevel,
NMClient *client,
- NMRemoteSettings *settings,
NMDevice *device)
{
MobileDialogClosure *closure;
@@ -481,7 +481,6 @@ cc_network_panel_connect_to_3g_network (GtkWidget *toplevel,
closure = g_slice_new (MobileDialogClosure);
closure->client = g_object_ref (client);
- closure->settings = g_object_ref (settings);
closure->device = g_object_ref (device);
caps = nm_device_modem_get_current_capabilities (NM_DEVICE_MODEM (device));
diff --git a/gnome-initial-setup/pages/network/network-dialogs.h
b/gnome-initial-setup/pages/network/network-dialogs.h
index ddbf392..0f02a52 100644
--- a/gnome-initial-setup/pages/network/network-dialogs.h
+++ b/gnome-initial-setup/pages/network/network-dialogs.h
@@ -20,29 +20,22 @@
#ifndef _NETWORK_DIALOGS_H
#define _NETWORK_DIALOGS_H
-#include <nm-client.h>
-#include <nm-remote-settings.h>
-#include <nm-device.h>
-#include <nm-access-point.h>
+#include <NetworkManager.h>
#include <gtk/gtk.h>
void cc_network_panel_create_wifi_network (GtkWidget *toplevel,
- NMClient *client,
- NMRemoteSettings *settings);
+ NMClient *client);
void cc_network_panel_connect_to_hidden_network (GtkWidget *toplevel,
- NMClient *client,
- NMRemoteSettings *settings);
+ NMClient *client);
void cc_network_panel_connect_to_8021x_network (GtkWidget *toplevel,
NMClient *client,
- NMRemoteSettings *settings,
NMDevice *device,
const gchar *arg_access_point);
void cc_network_panel_connect_to_3g_network (GtkWidget *toplevel,
NMClient *client,
- NMRemoteSettings *settings,
NMDevice *device);
#endif /* _NETWORK_DIALOGS_H */
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]