about summary refs log tree commit diff
path: root/libnm/nm-remote-connection.c
diff options
context:
space:
mode:
Diffstat (limited to 'libnm/nm-remote-connection.c')
-rw-r--r--libnm/nm-remote-connection.c839
1 files changed, 0 insertions, 839 deletions
diff --git a/libnm/nm-remote-connection.c b/libnm/nm-remote-connection.c
deleted file mode 100644
index b5b12bf0..00000000
--- a/libnm/nm-remote-connection.c
+++ /dev/null
@@ -1,839 +0,0 @@
-/* SPDX-License-Identifier: LGPL-2.1-or-later */
-/*
- * Copyright (C) 2007 - 2008 Novell, Inc.
- * Copyright (C) 2007 - 2011 Red Hat, Inc.
- */
-
-#include "libnm/nm-default-libnm.h"
-
-#include "nm-remote-connection.h"
-
-#include "nm-glib-aux/nm-dbus-aux.h"
-#include "nm-dbus-interface.h"
-#include "nm-utils.h"
-#include "nm-setting-connection.h"
-#include "nm-core-internal.h"
-#include "nm-remote-connection-private.h"
-#include "nm-object-private.h"
-#include "nm-dbus-helpers.h"
-
-/**
- * SECTION:nm-remote-connection
- * @short_description: A connection managed by NetworkManager server
- *
- * A #NMRemoteConnection represents a connection that is exported via
- * NetworkManager D-Bus interface.
- **/
-
-/*****************************************************************************/
-
-NM_GOBJECT_PROPERTIES_DEFINE(NMRemoteConnection,
-                             PROP_UNSAVED,
-                             PROP_FLAGS,
-                             PROP_FILENAME,
-                             PROP_VISIBLE, );
-
-typedef struct {
-    GCancellable *get_settings_cancellable;
-
-    char *  filename;
-    guint32 flags;
-    bool    unsaved;
-
-    bool visible : 1;
-    bool is_initialized : 1;
-} NMRemoteConnectionPrivate;
-
-struct _NMRemoteConnection {
-    NMObject                  parent;
-    NMRemoteConnectionPrivate _priv;
-};
-
-struct _NMRemoteConnectionClass {
-    NMObjectClass parent_class;
-};
-
-static void nm_remote_connection_connection_iface_init(NMConnectionInterface *iface);
-
-G_DEFINE_TYPE_WITH_CODE(NMRemoteConnection,
-                        nm_remote_connection,
-                        NM_TYPE_OBJECT,
-                        G_IMPLEMENT_INTERFACE(NM_TYPE_CONNECTION,
-                                              nm_remote_connection_connection_iface_init);)
-
-#define NM_REMOTE_CONNECTION_GET_PRIVATE(self) \
-    _NM_GET_PRIVATE(self, NMRemoteConnection, NM_IS_REMOTE_CONNECTION, NMObject)
-
-/*****************************************************************************/
-
-/**
- * nm_remote_connection_update2:
- * @connection: the #NMRemoteConnection
- * @settings: (allow-none): optional connection to update the settings.
- * @flags: update-flags
- * @args: (allow-none): optional arguments.
- * @cancellable: a #GCancellable, or %NULL
- * @callback: callback to be called when the commit operation completes
- * @user_data: caller-specific data passed to @callback
- *
- * Asynchronously calls the Update2() D-Bus method.
- *
- * Since: 1.12
- **/
-void
-nm_remote_connection_update2(NMRemoteConnection *   connection,
-                             GVariant *             settings,
-                             NMSettingsUpdate2Flags flags,
-                             GVariant *             args,
-                             GCancellable *         cancellable,
-                             GAsyncReadyCallback    callback,
-                             gpointer               user_data)
-{
-    g_return_if_fail(NM_IS_REMOTE_CONNECTION(connection));
-    g_return_if_fail(!settings || g_variant_is_of_type(settings, NM_VARIANT_TYPE_CONNECTION));
-    g_return_if_fail(!args || g_variant_is_of_type(args, G_VARIANT_TYPE("a{sv}")));
-    g_return_if_fail(!cancellable || G_IS_CANCELLABLE(cancellable));
-
-    if (!settings)
-        settings = g_variant_new_array(G_VARIANT_TYPE("{sa{sv}}"), NULL, 0);
-    if (!args)
-        args = g_variant_new_array(G_VARIANT_TYPE("{sv}"), NULL, 0);
-
-    _nm_client_dbus_call(_nm_object_get_client(connection),
-                         connection,
-                         nm_remote_connection_update2,
-                         cancellable,
-                         callback,
-                         user_data,
-                         _nm_object_get_path(connection),
-                         NM_DBUS_INTERFACE_SETTINGS_CONNECTION,
-                         "Update2",
-                         g_variant_new("(@a{sa{sv}}u@a{sv})", settings, (guint32) flags, args),
-                         G_VARIANT_TYPE("(a{sv})"),
-                         G_DBUS_CALL_FLAGS_NONE,
-                         NM_DBUS_DEFAULT_TIMEOUT_MSEC,
-                         nm_dbus_connection_call_finish_variant_strip_dbus_error_cb);
-}
-
-/**
- * nm_remote_connection_update2_finish:
- * @connection: the #NMRemoteConnection
- * @result: the result passed to the #GAsyncReadyCallback
- * @error: location for a #GError, or %NULL
- *
- * Gets the result of a call to nm_remote_connection_commit_changes_async().
- *
- * Returns: (transfer full): on success, a #GVariant of type "a{sv}" with the result. On failure,
- *   %NULL.
- **/
-GVariant *
-nm_remote_connection_update2_finish(NMRemoteConnection *connection,
-                                    GAsyncResult *      result,
-                                    GError **           error)
-{
-    gs_unref_variant GVariant *ret = NULL;
-    GVariant *                 v_result;
-
-    g_return_val_if_fail(NM_IS_REMOTE_CONNECTION(connection), NULL);
-    g_return_val_if_fail(nm_g_task_is_valid(result, connection, nm_remote_connection_update2),
-                         NULL);
-
-    ret = g_task_propagate_pointer(G_TASK(result), error);
-    if (!ret)
-        return NULL;
-
-    g_variant_get(ret, "(@a{sv})", &v_result);
-
-    return v_result;
-}
-
-/*****************************************************************************/
-
-/**
- * nm_remote_connection_commit_changes:
- * @connection: the #NMRemoteConnection
- * @save_to_disk: whether to persist the changes to disk
- * @cancellable: a #GCancellable, or %NULL
- * @error: location for a #GError, or %NULL
- *
- * Send any local changes to the settings and properties of @connection to
- * NetworkManager. If @save_to_disk is %TRUE, the updated connection will be saved to
- * disk; if %FALSE, then only the in-memory representation will be changed.
- *
- * Returns: %TRUE on success, %FALSE on error, in which case @error will be set.
- *
- * Deprecated: 1.22: Use nm_remote_connection_commit_changes_async() or GDBusConnection.
- **/
-gboolean
-nm_remote_connection_commit_changes(NMRemoteConnection *connection,
-                                    gboolean            save_to_disk,
-                                    GCancellable *      cancellable,
-                                    GError **           error)
-{
-    gs_unref_variant GVariant *ret = NULL;
-
-    g_return_val_if_fail(NM_IS_REMOTE_CONNECTION(connection), FALSE);
-    g_return_val_if_fail(!cancellable || G_IS_CANCELLABLE(cancellable), FALSE);
-
-    ret = _nm_client_dbus_call_sync(
-        _nm_object_get_client(connection),
-        cancellable,
-        _nm_object_get_path(connection),
-        NM_DBUS_INTERFACE_SETTINGS_CONNECTION,
-        "Update2",
-        g_variant_new("(@a{sa{sv}}u@a{sv})",
-                      nm_connection_to_dbus(NM_CONNECTION(connection), NM_CONNECTION_SERIALIZE_ALL),
-                      (guint32)(save_to_disk ? NM_SETTINGS_UPDATE2_FLAG_TO_DISK
-                                             : NM_SETTINGS_UPDATE2_FLAG_IN_MEMORY),
-                      g_variant_new_array(G_VARIANT_TYPE("{sv}"), NULL, 0)),
-        G_VARIANT_TYPE("(a{sv})"),
-        G_DBUS_CALL_FLAGS_NONE,
-        NM_DBUS_DEFAULT_TIMEOUT_MSEC,
-        TRUE,
-        error);
-    if (!ret)
-        return FALSE;
-
-    return TRUE;
-}
-
-/**
- * nm_remote_connection_commit_changes_async:
- * @connection: the #NMRemoteConnection
- * @save_to_disk: whether to save the changes to persistent storage
- * @cancellable: a #GCancellable, or %NULL
- * @callback: callback to be called when the commit operation completes
- * @user_data: caller-specific data passed to @callback
- *
- * Asynchronously sends any local changes to the settings and properties of
- * @connection to NetworkManager. If @save is %TRUE, the updated connection will
- * be saved to disk; if %FALSE, then only the in-memory representation will be
- * changed.
- **/
-void
-nm_remote_connection_commit_changes_async(NMRemoteConnection *connection,
-                                          gboolean            save_to_disk,
-                                          GCancellable *      cancellable,
-                                          GAsyncReadyCallback callback,
-                                          gpointer            user_data)
-{
-    g_return_if_fail(NM_IS_REMOTE_CONNECTION(connection));
-    g_return_if_fail(!cancellable || G_IS_CANCELLABLE(cancellable));
-
-    nm_remote_connection_update2(
-        connection,
-        nm_connection_to_dbus(NM_CONNECTION(connection), NM_CONNECTION_SERIALIZE_ALL),
-        save_to_disk ? NM_SETTINGS_UPDATE2_FLAG_TO_DISK : NM_SETTINGS_UPDATE2_FLAG_IN_MEMORY,
-        NULL,
-        cancellable,
-        callback,
-        user_data);
-}
-
-/**
- * nm_remote_connection_commit_changes_finish:
- * @connection: the #NMRemoteConnection
- * @result: the result passed to the #GAsyncReadyCallback
- * @error: location for a #GError, or %NULL
- *
- * Gets the result of a call to nm_remote_connection_commit_changes_async().
- *
- * Returns: %TRUE on success, %FALSE on error, in which case @error will be set.
- **/
-gboolean
-nm_remote_connection_commit_changes_finish(NMRemoteConnection *connection,
-                                           GAsyncResult *      result,
-                                           GError **           error)
-{
-    gs_unref_variant GVariant *v_result = NULL;
-
-    v_result = nm_remote_connection_update2_finish(connection, result, error);
-    return !!v_result;
-}
-
-/*****************************************************************************/
-
-/**
- * nm_remote_connection_save:
- * @connection: the #NMRemoteConnection
- * @cancellable: a #GCancellable, or %NULL
- * @error: location for a #GError, or %NULL
- *
- * Saves the connection to disk if the connection has changes that have not yet
- * been written to disk, or if the connection has never been saved.
- *
- * Returns: %TRUE on success, %FALSE on error, in which case @error will be set.
- *
- * Deprecated: 1.22: Use nm_remote_connection_save_async() or GDBusConnection.
- **/
-gboolean
-nm_remote_connection_save(NMRemoteConnection *connection, GCancellable *cancellable, GError **error)
-{
-    g_return_val_if_fail(NM_IS_REMOTE_CONNECTION(connection), FALSE);
-    g_return_val_if_fail(!cancellable || G_IS_CANCELLABLE(cancellable), FALSE);
-
-    return _nm_client_dbus_call_sync_void(_nm_object_get_client(connection),
-                                          cancellable,
-                                          _nm_object_get_path(connection),
-                                          NM_DBUS_INTERFACE_SETTINGS_CONNECTION,
-                                          "Save",
-                                          g_variant_new("()"),
-                                          G_DBUS_CALL_FLAGS_NONE,
-                                          NM_DBUS_DEFAULT_TIMEOUT_MSEC,
-                                          TRUE,
-                                          error);
-}
-
-/**
- * nm_remote_connection_save_async:
- * @connection: the #NMRemoteConnection
- * @cancellable: a #GCancellable, or %NULL
- * @callback: callback to be called when the save operation completes
- * @user_data: caller-specific data passed to @callback
- *
- * Saves the connection to disk if the connection has changes that have not yet
- * been written to disk, or if the connection has never been saved.
- **/
-void
-nm_remote_connection_save_async(NMRemoteConnection *connection,
-                                GCancellable *      cancellable,
-                                GAsyncReadyCallback callback,
-                                gpointer            user_data)
-{
-    g_return_if_fail(NM_IS_REMOTE_CONNECTION(connection));
-    g_return_if_fail(!cancellable || G_IS_CANCELLABLE(cancellable));
-
-    _nm_client_dbus_call(_nm_object_get_client(connection),
-                         connection,
-                         nm_remote_connection_save_async,
-                         cancellable,
-                         callback,
-                         user_data,
-                         _nm_object_get_path(connection),
-                         NM_DBUS_INTERFACE_SETTINGS_CONNECTION,
-                         "Save",
-                         g_variant_new("()"),
-                         G_VARIANT_TYPE("()"),
-                         G_DBUS_CALL_FLAGS_NONE,
-                         NM_DBUS_DEFAULT_TIMEOUT_MSEC,
-                         nm_dbus_connection_call_finish_void_strip_dbus_error_cb);
-}
-
-/**
- * nm_remote_connection_save_finish:
- * @connection: the #NMRemoteConnection
- * @result: the result passed to the #GAsyncReadyCallback
- * @error: location for a #GError, or %NULL
- *
- * Gets the result of a call to nm_remote_connection_save_async().
- *
- * Returns: %TRUE on success, %FALSE on error, in which case @error will be set.
- **/
-gboolean
-nm_remote_connection_save_finish(NMRemoteConnection *connection,
-                                 GAsyncResult *      result,
-                                 GError **           error)
-{
-    g_return_val_if_fail(NM_IS_REMOTE_CONNECTION(connection), FALSE);
-    g_return_val_if_fail(nm_g_task_is_valid(result, connection, nm_remote_connection_save_async),
-                         FALSE);
-
-    return g_task_propagate_boolean(G_TASK(result), error);
-}
-
-/*****************************************************************************/
-
-/**
- * nm_remote_connection_delete:
- * @connection: the #NMRemoteConnection
- * @cancellable: a #GCancellable, or %NULL
- * @error: location for a #GError, or %NULL
- *
- * Deletes the connection.
- *
- * Returns: %TRUE on success, %FALSE on error, in which case @error will be set.
- *
- * Deprecated: 1.22: Use nm_remote_connection_delete_async() or GDBusConnection.
- **/
-gboolean
-nm_remote_connection_delete(NMRemoteConnection *connection,
-                            GCancellable *      cancellable,
-                            GError **           error)
-{
-    g_return_val_if_fail(NM_IS_REMOTE_CONNECTION(connection), FALSE);
-
-    return _nm_client_dbus_call_sync_void(_nm_object_get_client(connection),
-                                          cancellable,
-                                          _nm_object_get_path(connection),
-                                          NM_DBUS_INTERFACE_SETTINGS_CONNECTION,
-                                          "Delete",
-                                          g_variant_new("()"),
-                                          G_DBUS_CALL_FLAGS_NONE,
-                                          NM_DBUS_DEFAULT_TIMEOUT_MSEC,
-                                          TRUE,
-                                          error);
-}
-
-/**
- * nm_remote_connection_delete_async:
- * @connection: the #NMRemoteConnection
- * @cancellable: a #GCancellable, or %NULL
- * @callback: callback to be called when the delete operation completes
- * @user_data: caller-specific data passed to @callback
- *
- * Asynchronously deletes the connection.
- **/
-void
-nm_remote_connection_delete_async(NMRemoteConnection *connection,
-                                  GCancellable *      cancellable,
-                                  GAsyncReadyCallback callback,
-                                  gpointer            user_data)
-{
-    g_return_if_fail(NM_IS_REMOTE_CONNECTION(connection));
-    g_return_if_fail(!cancellable || G_IS_CANCELLABLE(cancellable));
-
-    _nm_client_dbus_call(_nm_object_get_client(connection),
-                         connection,
-                         nm_remote_connection_delete_async,
-                         cancellable,
-                         callback,
-                         user_data,
-                         _nm_object_get_path(connection),
-                         NM_DBUS_INTERFACE_SETTINGS_CONNECTION,
-                         "Delete",
-                         g_variant_new("()"),
-                         G_VARIANT_TYPE("()"),
-                         G_DBUS_CALL_FLAGS_NONE,
-                         NM_DBUS_DEFAULT_TIMEOUT_MSEC,
-                         nm_dbus_connection_call_finish_void_strip_dbus_error_cb);
-}
-
-/**
- * nm_remote_connection_delete_finish:
- * @connection: the #NMRemoteConnection
- * @result: the result passed to the #GAsyncReadyCallback
- * @error: location for a #GError, or %NULL
- *
- * Gets the result of a call to nm_remote_connection_delete_async().
- *
- * Returns: %TRUE on success, %FALSE on error, in which case @error will be set.
- **/
-gboolean
-nm_remote_connection_delete_finish(NMRemoteConnection *connection,
-                                   GAsyncResult *      result,
-                                   GError **           error)
-{
-    g_return_val_if_fail(NM_IS_REMOTE_CONNECTION(connection), FALSE);
-    g_return_val_if_fail(nm_g_task_is_valid(result, connection, nm_remote_connection_delete_async),
-                         FALSE);
-
-    return g_task_propagate_boolean(G_TASK(result), error);
-}
-
-/**
- * nm_remote_connection_get_secrets:
- * @connection: the #NMRemoteConnection
- * @setting_name: the #NMSetting object name to get secrets for
- * @cancellable: a #GCancellable, or %NULL
- * @error: location for a #GError, or %NULL
- *
- * Request the connection's secrets. Note that this is a blocking D-Bus call,
- * not a simple property accessor.
- *
- * Returns: (transfer full): a #GVariant of type %NM_VARIANT_TYPE_CONNECTION containing
- * @connection's secrets, or %NULL on error.
- *
- * Deprecated: 1.22: Use nm_remote_connection_get_secrets_async() or GDBusConnection.
- **/
-GVariant *
-nm_remote_connection_get_secrets(NMRemoteConnection *connection,
-                                 const char *        setting_name,
-                                 GCancellable *      cancellable,
-                                 GError **           error)
-{
-    gs_unref_variant GVariant *ret = NULL;
-    GVariant *                 secrets;
-
-    g_return_val_if_fail(NM_IS_REMOTE_CONNECTION(connection), NULL);
-    g_return_val_if_fail(setting_name, NULL);
-    g_return_val_if_fail(!cancellable || G_IS_CANCELLABLE(cancellable), NULL);
-
-    ret = _nm_client_dbus_call_sync(_nm_object_get_client(connection),
-                                    cancellable,
-                                    _nm_object_get_path(connection),
-                                    NM_DBUS_INTERFACE_SETTINGS_CONNECTION,
-                                    "GetSecrets",
-                                    g_variant_new("(s)", setting_name),
-                                    G_VARIANT_TYPE("(a{sa{sv}})"),
-                                    G_DBUS_CALL_FLAGS_NONE,
-                                    NM_DBUS_DEFAULT_TIMEOUT_MSEC,
-                                    TRUE,
-                                    error);
-    if (!ret)
-        return NULL;
-
-    g_variant_get(ret, "(@a{sa{sv}})", &secrets);
-
-    return secrets;
-}
-
-/**
- * nm_remote_connection_get_secrets_async:
- * @connection: the #NMRemoteConnection
- * @setting_name: the #NMSetting object name to get secrets for
- * @cancellable: a #GCancellable, or %NULL
- * @callback: callback to be called when the secret request completes
- * @user_data: caller-specific data passed to @callback
- *
- * Asynchronously requests the connection's secrets.
- **/
-void
-nm_remote_connection_get_secrets_async(NMRemoteConnection *connection,
-                                       const char *        setting_name,
-                                       GCancellable *      cancellable,
-                                       GAsyncReadyCallback callback,
-                                       gpointer            user_data)
-{
-    g_return_if_fail(NM_IS_REMOTE_CONNECTION(connection));
-    g_return_if_fail(setting_name);
-    g_return_if_fail(!cancellable || G_IS_CANCELLABLE(cancellable));
-
-    _nm_client_dbus_call(_nm_object_get_client(connection),
-                         connection,
-                         nm_remote_connection_get_secrets_async,
-                         cancellable,
-                         callback,
-                         user_data,
-                         _nm_object_get_path(connection),
-                         NM_DBUS_INTERFACE_SETTINGS_CONNECTION,
-                         "GetSecrets",
-                         g_variant_new("(s)", setting_name),
-                         G_VARIANT_TYPE("(a{sa{sv}})"),
-                         G_DBUS_CALL_FLAGS_NONE,
-                         NM_DBUS_DEFAULT_TIMEOUT_MSEC,
-                         nm_dbus_connection_call_finish_variant_strip_dbus_error_cb);
-}
-
-/**
- * nm_remote_connection_get_secrets_finish:
- * @connection: the #NMRemoteConnection
- * @result: the result passed to the #GAsyncReadyCallback
- * @error: location for a #GError, or %NULL
- *
- * Gets the result of a call to nm_remote_connection_get_secrets_async().
- *
- * Returns: (transfer full): a #GVariant of type %NM_VARIANT_TYPE_CONNECTION
- *   containing @connection's secrets, or %NULL on error.
- **/
-GVariant *
-nm_remote_connection_get_secrets_finish(NMRemoteConnection *connection,
-                                        GAsyncResult *      result,
-                                        GError **           error)
-{
-    gs_unref_variant GVariant *ret = NULL;
-    GVariant *                 secrets;
-
-    g_return_val_if_fail(NM_IS_REMOTE_CONNECTION(connection), NULL);
-    g_return_val_if_fail(
-        nm_g_task_is_valid(result, connection, nm_remote_connection_get_secrets_async),
-        FALSE);
-
-    ret = g_task_propagate_pointer(G_TASK(result), error);
-    if (!ret)
-        return NULL;
-
-    g_variant_get(ret, "(@a{sa{sv}})", &secrets);
-
-    return secrets;
-}
-
-/**
- * nm_remote_connection_get_unsaved:
- * @connection: the #NMRemoteConnection
- *
- * Returns: %TRUE if the remote connection contains changes that have not
- * been saved to disk, %FALSE if the connection is the same as its on-disk
- * representation.
- **/
-gboolean
-nm_remote_connection_get_unsaved(NMRemoteConnection *connection)
-{
-    g_return_val_if_fail(NM_IS_REMOTE_CONNECTION(connection), FALSE);
-
-    return NM_REMOTE_CONNECTION_GET_PRIVATE(connection)->unsaved;
-}
-
-/**
- * nm_remote_connection_get_flags:
- * @connection: the #NMRemoteConnection
- *
- * Returns: the flags of the connection of type #NMSettingsConnectionFlags.
- *
- * Since: 1.12
- **/
-NMSettingsConnectionFlags
-nm_remote_connection_get_flags(NMRemoteConnection *connection)
-{
-    g_return_val_if_fail(NM_IS_REMOTE_CONNECTION(connection), FALSE);
-
-    return (NMSettingsConnectionFlags) NM_REMOTE_CONNECTION_GET_PRIVATE(connection)->flags;
-}
-
-/**
- * nm_remote_connection_get_filename:
- * @connection: the #NMRemoteConnection
- *
- * Returns: file that stores the connection in case the connection is file-backed.
- *
- * Since: 1.12
- **/
-const char *
-nm_remote_connection_get_filename(NMRemoteConnection *connection)
-{
-    g_return_val_if_fail(NM_IS_REMOTE_CONNECTION(connection), NULL);
-
-    return NM_REMOTE_CONNECTION_GET_PRIVATE(connection)->filename;
-}
-
-/**
- * nm_remote_connection_get_visible:
- * @connection: the #NMRemoteConnection
- *
- * Checks if the connection is visible to the current user.  If the
- * connection is not visible then it is essentially useless; it will
- * not contain any settings, and operations such as
- * nm_remote_connection_save() and nm_remote_connection_delete() will
- * always fail. (#NMRemoteSettings will not normally return
- * non-visible connections to callers, but it is possible for a
- * connection's visibility to change after you already have a
- * reference to it.)
- *
- * Returns: %TRUE if the remote connection is visible to the current
- * user, %FALSE if not.
- **/
-gboolean
-nm_remote_connection_get_visible(NMRemoteConnection *connection)
-{
-    g_return_val_if_fail(NM_IS_REMOTE_CONNECTION(connection), FALSE);
-
-    return NM_REMOTE_CONNECTION_GET_PRIVATE(connection)->visible;
-}
-
-/*****************************************************************************/
-
-GCancellable *
-_nm_remote_settings_get_settings_prepare(NMRemoteConnection *self)
-{
-    NMRemoteConnectionPrivate *priv = NM_REMOTE_CONNECTION_GET_PRIVATE(self);
-
-    nm_clear_g_cancellable(&priv->get_settings_cancellable);
-    priv->get_settings_cancellable = g_cancellable_new();
-    return priv->get_settings_cancellable;
-}
-
-void
-_nm_remote_settings_get_settings_commit(NMRemoteConnection *self, GVariant *settings)
-{
-    NMRemoteConnectionPrivate *priv    = NM_REMOTE_CONNECTION_GET_PRIVATE(self);
-    GError *                   error   = NULL;
-    gboolean                   visible = FALSE;
-    gboolean                   changed = FALSE;
-
-    g_clear_object(&priv->get_settings_cancellable);
-
-    if (!priv->is_initialized) {
-        changed              = TRUE;
-        priv->is_initialized = TRUE;
-    }
-
-    if (settings) {
-        if (!_nm_connection_replace_settings((NMConnection *) self,
-                                             settings,
-                                             NM_SETTING_PARSE_FLAGS_BEST_EFFORT,
-                                             &error)) {
-            NML_NMCLIENT_LOG_E(_nm_object_get_client(self),
-                               "[%s] failure to update settings: %s",
-                               _nm_object_get_path(self),
-                               error->message);
-            g_clear_error(&error);
-        } else
-            visible = TRUE;
-    } else
-        nm_connection_clear_settings(NM_CONNECTION(self));
-
-    if (priv->visible != visible) {
-        priv->visible = visible;
-        _nm_client_queue_notify_object(_nm_object_get_client(self),
-                                       self,
-                                       obj_properties[PROP_VISIBLE]);
-        changed = TRUE;
-    }
-
-    if (changed)
-        _nm_client_notify_object_changed(_nm_object_get_client(self), _nm_object_get_dbobj(self));
-}
-
-/*****************************************************************************/
-
-static gboolean
-is_ready(NMObject *nmobj)
-{
-    NMRemoteConnectionPrivate *priv = NM_REMOTE_CONNECTION_GET_PRIVATE(nmobj);
-
-    if (!priv->is_initialized)
-        return FALSE;
-
-    return NM_OBJECT_CLASS(nm_remote_connection_parent_class)->is_ready(nmobj);
-}
-
-/*****************************************************************************/
-
-static void
-register_client(NMObject *nmobj, NMClient *client, NMLDBusObject *dbobj)
-{
-    NM_OBJECT_CLASS(nm_remote_connection_parent_class)->register_client(nmobj, client, dbobj);
-    nm_connection_set_path(NM_CONNECTION(nmobj), dbobj->dbus_path->str);
-    _nm_client_get_settings_call(client, dbobj);
-}
-
-static void
-unregister_client(NMObject *nmobj, NMClient *client, NMLDBusObject *dbobj)
-{
-    nm_clear_g_cancellable(&NM_REMOTE_CONNECTION_GET_PRIVATE(nmobj)->get_settings_cancellable);
-    NM_OBJECT_CLASS(nm_remote_connection_parent_class)->unregister_client(nmobj, client, dbobj);
-}
-
-/*****************************************************************************/
-
-static void
-get_property(GObject *object, guint prop_id, GValue *value, GParamSpec *pspec)
-{
-    switch (prop_id) {
-    case PROP_UNSAVED:
-        g_value_set_boolean(value, NM_REMOTE_CONNECTION_GET_PRIVATE(object)->unsaved);
-        break;
-    case PROP_FLAGS:
-        g_value_set_uint(value, NM_REMOTE_CONNECTION_GET_PRIVATE(object)->flags);
-        break;
-    case PROP_FILENAME:
-        g_value_set_string(value, NM_REMOTE_CONNECTION_GET_PRIVATE(object)->filename);
-        break;
-    case PROP_VISIBLE:
-        g_value_set_boolean(value, NM_REMOTE_CONNECTION_GET_PRIVATE(object)->visible);
-        break;
-    default:
-        G_OBJECT_WARN_INVALID_PROPERTY_ID(object, prop_id, pspec);
-        break;
-    }
-}
-
-/*****************************************************************************/
-
-static void
-nm_remote_connection_init(NMRemoteConnection *self)
-{}
-
-static void
-dispose(GObject *object)
-{
-    NMRemoteConnectionPrivate *priv = NM_REMOTE_CONNECTION_GET_PRIVATE(object);
-
-    nm_clear_g_free(&priv->filename);
-
-    G_OBJECT_CLASS(nm_remote_connection_parent_class)->dispose(object);
-}
-
-const NMLDBusMetaIface _nml_dbus_meta_iface_nm_settings_connection = NML_DBUS_META_IFACE_INIT_PROP(
-    NM_DBUS_INTERFACE_SETTINGS_CONNECTION,
-    nm_remote_connection_get_type,
-    NML_DBUS_META_INTERFACE_PRIO_INSTANTIATE_30,
-    NML_DBUS_META_IFACE_DBUS_PROPERTIES(
-        NML_DBUS_META_PROPERTY_INIT_S("Filename",
-                                      PROP_FILENAME,
-                                      NMRemoteConnection,
-                                      _priv.filename),
-        NML_DBUS_META_PROPERTY_INIT_U("Flags", PROP_FLAGS, NMRemoteConnection, _priv.flags),
-        NML_DBUS_META_PROPERTY_INIT_B("Unsaved",
-                                      PROP_UNSAVED,
-                                      NMRemoteConnection,
-                                      _priv.unsaved), ), );
-
-static void
-nm_remote_connection_class_init(NMRemoteConnectionClass *klass)
-{
-    GObjectClass * object_class    = G_OBJECT_CLASS(klass);
-    NMObjectClass *nm_object_class = NM_OBJECT_CLASS(klass);
-
-    object_class->get_property = get_property;
-    object_class->dispose      = dispose;
-
-    nm_object_class->is_ready          = is_ready;
-    nm_object_class->register_client   = register_client;
-    nm_object_class->unregister_client = unregister_client;
-
-    /**
-     * NMRemoteConnection:unsaved:
-     *
-     * %TRUE if the remote connection contains changes that have not been saved
-     * to disk, %FALSE if the connection is the same as its on-disk representation.
-     **/
-    obj_properties[PROP_UNSAVED] = g_param_spec_boolean(NM_REMOTE_CONNECTION_UNSAVED,
-                                                        "",
-                                                        "",
-                                                        FALSE,
-                                                        G_PARAM_READABLE | G_PARAM_STATIC_STRINGS);
-
-    /**
-     * NMRemoteConnection:flags:
-     *
-     * The flags of the connection as unsigned integer. The values
-     * correspond to the #NMSettingsConnectionFlags enum.
-     *
-     * Since: 1.12
-     **/
-    obj_properties[PROP_FLAGS] = g_param_spec_uint(NM_REMOTE_CONNECTION_FLAGS,
-                                                   "",
-                                                   "",
-                                                   0,
-                                                   G_MAXUINT32,
-                                                   0,
-                                                   G_PARAM_READABLE | G_PARAM_STATIC_STRINGS);
-
-    /**
-     * NMRemoteConnection:filename:
-     *
-     * File that stores the connection in case the connection is
-     * file-backed.
-     *
-     * Since: 1.12
-     **/
-    obj_properties[PROP_FILENAME] = g_param_spec_string(NM_REMOTE_CONNECTION_FILENAME,
-                                                        "",
-                                                        "",
-                                                        NULL,
-                                                        G_PARAM_READABLE | G_PARAM_STATIC_STRINGS);
-
-    /**
-     * NMRemoteConnection:visible:
-     *
-     * %TRUE if the remote connection is visible to the current user, %FALSE if
-     * not.  If the connection is not visible then it is essentially useless; it
-     * will not contain any settings, and operations such as
-     * nm_remote_connection_save() and nm_remote_connection_delete() will always
-     * fail. (#NMRemoteSettings will not normally return non-visible connections
-     * to callers, but it is possible for a connection's visibility to change
-     * after you already have a reference to it.)
-     **/
-    obj_properties[PROP_VISIBLE] = g_param_spec_boolean(NM_REMOTE_CONNECTION_VISIBLE,
-                                                        "",
-                                                        "",
-                                                        FALSE,
-                                                        G_PARAM_READABLE | G_PARAM_STATIC_STRINGS);
-
-    _nml_dbus_meta_class_init_with_properties(object_class,
-                                              &_nml_dbus_meta_iface_nm_settings_connection);
-}
-
-static void
-nm_remote_connection_connection_iface_init(NMConnectionInterface *iface)
-{}