summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDan Williams <dcbw@redhat.com>2014-04-01 14:45:00 -0500
committerDan Williams <dcbw@redhat.com>2014-04-07 09:52:07 -0500
commitde5c91ea0f3870a922acbda228ccc4e62041c4cd (patch)
tree76870bd04f62797f254731a4e4093c52a8e02c21
parent6c299bc19be01a0ed0e4c89f1b8141fdfc338818 (diff)
downloadNetworkManager-de5c91ea0f3870a922acbda228ccc4e62041c4cd.tar.gz
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).
-rw-r--r--src/devices/nm-device.h6
-rw-r--r--src/nm-manager.c14
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);
}
}