diff options
-rw-r--r-- | introspection/nm-manager.xml | 2 | ||||
-rw-r--r-- | src/nm-checkpoint-manager.c | 13 | ||||
-rw-r--r-- | src/nm-checkpoint.c | 26 |
3 files changed, 11 insertions, 30 deletions
diff --git a/introspection/nm-manager.xml b/introspection/nm-manager.xml index 0537e86533..1c29936285 100644 --- a/introspection/nm-manager.xml +++ b/introspection/nm-manager.xml @@ -209,7 +209,7 @@ <!-- CheckpointCreate: - @devices: a list of device paths for which a checkpoint should be created. An empty list means all managed devices. + @devices: a list of device paths for which a checkpoint should be created. An empty list means all devices. @rollback_timeout: the time in seconds until NetworkManager will automatically rollback to the checkpoint. Set to zero for infinite. @flags: optional flags that influence the creation. @checkpoint: on success, returns the path of the checkpoint. diff --git a/src/nm-checkpoint-manager.c b/src/nm-checkpoint-manager.c index 254dc31e3d..49e8b89595 100644 --- a/src/nm-checkpoint-manager.c +++ b/src/nm-checkpoint-manager.c @@ -145,19 +145,27 @@ nm_checkpoint_manager_create (NMCheckpointManager *self, NMCheckpointCreateFlags flags, GError **error) { + NMManager *manager; NMCheckpoint *checkpoint; const char * const *path; gs_unref_ptrarray GPtrArray *devices = NULL; NMDevice *device; const char *checkpoint_path; + gs_free const char **device_paths_free = NULL; guint i; g_return_val_if_fail (self, FALSE); g_return_val_if_fail (!error || !*error, FALSE); + manager = GET_MANAGER (self); + + if (!device_paths || !device_paths[0]) { + device_paths_free = nm_manager_get_device_paths (manager); + device_paths = (const char *const *) device_paths_free; + } devices = g_ptr_array_new (); for (path = device_paths; *path; path++) { - device = nm_manager_get_device_by_path (GET_MANAGER (self), *path); + device = nm_manager_get_device_by_path (manager, *path); if (!device) { g_set_error (error, NM_MANAGER_ERROR, NM_MANAGER_ERROR_UNKNOWN_DEVICE, "device %s does not exist", *path); @@ -178,8 +186,7 @@ nm_checkpoint_manager_create (NMCheckpointManager *self, } } - checkpoint = nm_checkpoint_new (GET_MANAGER (self), devices, - rollback_timeout, error); + checkpoint = nm_checkpoint_new (manager, devices, rollback_timeout, error); if (!checkpoint) return NULL; diff --git a/src/nm-checkpoint.c b/src/nm-checkpoint.c index 22360250bb..2d9e1f9455 100644 --- a/src/nm-checkpoint.c +++ b/src/nm-checkpoint.c @@ -288,29 +288,6 @@ nm_checkpoint_init (NMCheckpoint *self) NULL, device_checkpoint_destroy); } -static void -get_all_devices (NMManager *manager, GPtrArray *devices) -{ - const GSList *list, *iter; - NMDevice *dev; - - list = nm_manager_get_devices (manager); - - for (iter = list; iter; iter = g_slist_next (iter)) { - dev = iter->data; - - if (!nm_device_is_real (dev)) - continue; - if (nm_device_get_state (dev) <= NM_DEVICE_STATE_UNMANAGED) - continue; - /* We never touch assumed connections, unless told explicitly */ - if (nm_device_uses_assumed_connection (dev)) - continue; - - g_ptr_array_add (devices, dev); - } -} - NMCheckpoint * nm_checkpoint_new (NMManager *manager, GPtrArray *devices, guint32 rollback_timeout, GError **error) @@ -325,9 +302,6 @@ nm_checkpoint_new (NMManager *manager, GPtrArray *devices, guint32 rollback_time g_return_val_if_fail (devices, NULL); g_return_val_if_fail (!error || !*error, NULL); - if (!devices->len) - get_all_devices (manager, devices); - if (!devices->len) { g_set_error_literal (error, NM_MANAGER_ERROR, |