From de5c91ea0f3870a922acbda228ccc4e62041c4cd Mon Sep 17 00:00:00 2001 From: Dan Williams Date: Tue, 1 Apr 2014 14:45:00 -0500 Subject: [PATCH] core: split user managed preference (unmanaged specs) out from internal management We'll want to track internal management separately in the future, so split out user management (eg, whether the device has been explicitly marked unmanaged by the user). --- src/devices/nm-device.h | 6 ++++-- src/nm-manager.c | 14 +++++--------- 2 files changed, 9 insertions(+), 11 deletions(-) diff --git a/src/devices/nm-device.h b/src/devices/nm-device.h index 6a6a4e165a..a253fd425c 100644 --- a/src/devices/nm-device.h +++ b/src/devices/nm-device.h @@ -299,13 +299,15 @@ RfKillType nm_device_get_rfkill_type (NMDevice *device); * NMUnmanagedFlags: * @NM_UNMANAGED_NONE: placeholder value * @NM_UNMANAGED_DEFAULT: %TRUE when unmanaged by default (ie, Generic devices) - * @NM_UNMANAGED_INTERNAL: %TRUE when unmanaged by internal decision (ie, for - * devices in unmanaged specs or when NM is sleeping) + * @NM_UNMANAGED_INTERNAL: %TRUE when unmanaged by internal decision (ie, + * because NM is sleeping or not managed for some other reason) + * @NM_UNMANAGED_USER: %TRUE when unmanaged by user decision (via unmanaged-specs) */ typedef enum { NM_UNMANAGED_NONE = 0x00, NM_UNMANAGED_DEFAULT = 0x01, NM_UNMANAGED_INTERNAL = 0x02, + NM_UNMANAGED_USER = 0x04, /* Boundary value */ __NM_UNMANAGED_LAST, diff --git a/src/nm-manager.c b/src/nm-manager.c index 3857da6c3f..ea0663f5be 100644 --- a/src/nm-manager.c +++ b/src/nm-manager.c @@ -1203,7 +1203,7 @@ system_unmanaged_devices_changed_cb (NMSettings *settings, unmanaged = nm_device_spec_match_list (device, unmanaged_specs); nm_device_set_unmanaged (device, - NM_UNMANAGED_INTERNAL, + NM_UNMANAGED_USER, unmanaged, unmanaged ? NM_DEVICE_STATE_REASON_NOW_UNMANAGED : NM_DEVICE_STATE_REASON_NOW_MANAGED); @@ -1845,8 +1845,10 @@ add_device (NMManager *self, NMDevice *device, gboolean generate_con) unmanaged_specs = nm_settings_get_unmanaged_specs (priv->settings); user_unmanaged = nm_device_spec_match_list (device, unmanaged_specs); + nm_device_set_initial_unmanaged_flag (device, NM_UNMANAGED_USER, user_unmanaged); + sleeping = manager_sleeping (self); - nm_device_set_initial_unmanaged_flag (device, NM_UNMANAGED_INTERNAL, sleeping || user_unmanaged); + nm_device_set_initial_unmanaged_flag (device, NM_UNMANAGED_INTERNAL, sleeping); path = g_strdup_printf ("/org/freedesktop/NetworkManager/Devices/%d", devcount++); nm_device_set_path (device, path); @@ -3594,7 +3596,6 @@ static void do_sleep_wake (NMManager *self) { NMManagerPrivate *priv = NM_MANAGER_GET_PRIVATE (self); - const GSList *unmanaged_specs; GSList *iter; if (manager_sleeping (self)) { @@ -3613,8 +3614,6 @@ do_sleep_wake (NMManager *self) } else { nm_log_info (LOGD_SUSPEND, "waking up and re-enabling..."); - unmanaged_specs = nm_settings_get_unmanaged_specs (priv->settings); - /* Ensure rfkill state is up-to-date since we don't respond to state * changes during sleep. */ @@ -3647,10 +3646,7 @@ do_sleep_wake (NMManager *self) g_object_set (G_OBJECT (device), NM_DEVICE_AUTOCONNECT, TRUE, NULL); - if (nm_device_spec_match_list (device, unmanaged_specs)) - nm_device_set_unmanaged (device, NM_UNMANAGED_INTERNAL, TRUE, NM_DEVICE_STATE_REASON_NOW_UNMANAGED); - else - nm_device_set_unmanaged (device, NM_UNMANAGED_INTERNAL, FALSE, NM_DEVICE_STATE_REASON_NOW_MANAGED); + nm_device_set_unmanaged (device, NM_UNMANAGED_INTERNAL, FALSE, NM_DEVICE_STATE_REASON_NOW_MANAGED); } }