summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorThomas Haller <thaller@redhat.com>2019-10-04 16:18:51 +0200
committerThomas Haller <thaller@redhat.com>2019-10-16 08:56:00 +0200
commit9f8aacf62a2135775454f256d438d77db2735baa (patch)
treed3f47fd585c5e0f05859c3f873aa130aed664a41
parentc85f6c7e850ee2c99732081311a59e7c1e3b9453 (diff)
downloadNetworkManager-9f8aacf62a2135775454f256d438d77db2735baa.tar.gz
libnm: implement nm_client_networking_set_enabled() by using GDBusConnection directly
-rw-r--r--libnm/nm-client.c14
-rw-r--r--libnm/nm-manager.c39
-rw-r--r--libnm/nm-manager.h5
3 files changed, 43 insertions, 15 deletions
diff --git a/libnm/nm-client.c b/libnm/nm-client.c
index cfab54774c..8c15bf4c29 100644
--- a/libnm/nm-client.c
+++ b/libnm/nm-client.c
@@ -330,14 +330,22 @@ nm_client_networking_get_enabled (NMClient *client)
gboolean
nm_client_networking_set_enabled (NMClient *client, gboolean enable, GError **error)
{
+ const char *name_owner;
+
g_return_val_if_fail (NM_IS_CLIENT (client), FALSE);
/* FIXME(libnm-async-api): add nm_client_networking_set_enabled_async(). */
- if (!_nm_client_check_nm_running (client, error))
+
+ name_owner = _nm_client_get_dbus_name_owner (client);
+ if (!name_owner) {
+ _nm_object_set_error_nm_not_running (error);
return FALSE;
+ }
- return nm_manager_networking_set_enabled (NM_CLIENT_GET_PRIVATE (client)->manager,
- enable, error);
+ return _nm_manager_networking_set_enabled (_nm_client_get_dbus_connection (client),
+ name_owner,
+ enable,
+ error);
}
/**
diff --git a/libnm/nm-manager.c b/libnm/nm-manager.c
index 5bea380eb0..830184c384 100644
--- a/libnm/nm-manager.c
+++ b/libnm/nm-manager.c
@@ -470,18 +470,31 @@ nm_manager_networking_get_enabled (NMManager *manager)
}
gboolean
-nm_manager_networking_set_enabled (NMManager *manager, gboolean enable, GError **error)
+_nm_manager_networking_set_enabled (GDBusConnection *dbus_connection,
+ const char *name_owner,
+ gboolean enable,
+ GError **error)
{
- gboolean ret;
+ gs_unref_variant GVariant *ret = NULL;
- g_return_val_if_fail (NM_IS_MANAGER (manager), FALSE);
+ ret = g_dbus_connection_call_sync (dbus_connection,
+ name_owner,
+ NM_DBUS_PATH,
+ NM_DBUS_INTERFACE,
+ "Enable",
+ g_variant_new ("(b)", enable),
+ G_VARIANT_TYPE ("()"),
+ G_DBUS_CALL_FLAGS_NONE,
+ NM_DBUS_DEFAULT_TIMEOUT_MSEC,
+ NULL,
+ error);
+ if (!ret) {
+ if (error)
+ g_dbus_error_strip_remote_error (*error);
+ return FALSE;
+ }
- ret = nmdbus_manager_call_enable_sync (NM_MANAGER_GET_PRIVATE (manager)->proxy,
- enable,
- NULL, error);
- if (error && *error)
- g_dbus_error_strip_remote_error (*error);
- return ret;
+ return TRUE;
}
gboolean
@@ -1640,12 +1653,18 @@ set_property (GObject *object, guint prop_id,
{
NMManagerPrivate *priv = NM_MANAGER_GET_PRIVATE (object);
gboolean b;
+ const char *name_owner;
switch (prop_id) {
case PROP_NETWORKING_ENABLED:
b = g_value_get_boolean (value);
if (priv->networking_enabled != b) {
- nm_manager_networking_set_enabled (NM_MANAGER (object), b, NULL);
+ if ((name_owner = _nm_object_get_dbus_name_owner (object))) {
+ _nm_manager_networking_set_enabled (_nm_object_get_dbus_connection (object),
+ name_owner,
+ b,
+ NULL);
+ }
/* Let the property value flip when we get the change signal from NM */
}
break;
diff --git a/libnm/nm-manager.h b/libnm/nm-manager.h
index 717d59e045..062224b172 100644
--- a/libnm/nm-manager.h
+++ b/libnm/nm-manager.h
@@ -84,8 +84,9 @@ gboolean nm_manager_get_startup (NMManager *manager);
gboolean nm_manager_networking_get_enabled (NMManager *manager);
_NM_DEPRECATED_SYNC_METHOD_INTERNAL
-gboolean nm_manager_networking_set_enabled (NMManager *manager,
- gboolean enabled,
+gboolean _nm_manager_networking_set_enabled (GDBusConnection *dbus_connection,
+ const char *name_owner,
+ gboolean enable,
GError **error);
gboolean nm_manager_wireless_get_enabled (NMManager *manager);