NM_DEVICE_STATE_ACTIVATED state.
</tp:docstring>
</property>
- <property name="Managed" type="b" access="read">
+ <property name="Managed" type="b" access="readwrite">
<tp:docstring>
- Whether or not this device is managed by NetworkManager.
+ Whether or not this device is managed by NetworkManager. Setting this
+ property has a similar effect to configuring the device as unmanaged
+ via the keyfile.unmanaged-devices setting in NetworkManager.conf.
+ Changes to this value are not persistent and lost after NetworkManager
+ restart.
</tp:docstring>
</property>
<property name="Autoconnect" type="b" access="readwrite">
char * physical_port_id;
guint dev_id;
+ gboolean managed_touched_by_user;
NMUnmanagedFlags unmanaged_flags;
gboolean is_nm_owned; /* whether the device is a device owned and created by NM */
DeleteOnDeactivateData *delete_on_deactivate_data; /* data for scheduled cleanup when deleting link (g_idle_add) */
priv = NM_DEVICE_GET_PRIVATE (self);
+ if (priv->managed_touched_by_user)
+ return;
+
unmanaged = nm_device_spec_match_list (self, unmanaged_specs);
nm_device_set_unmanaged (self,
NM_UNMANAGED_USER,
NMDevicePrivate *priv = NM_DEVICE_GET_PRIVATE (self);
const char *hw_addr, *p;
guint count;
+ gboolean val_bool;
switch (prop_id) {
case PROP_UDI:
case PROP_IP4_ADDRESS:
priv->ip4_address = g_value_get_uint (value);
break;
+ case PROP_MANAGED:
+ val_bool = g_value_get_boolean (value);
+ priv->managed_touched_by_user = TRUE;
+ nm_device_set_unmanaged (self,
+ NM_UNMANAGED_USER | (val_bool ? NM_UNMANAGED_DEFAULT : NM_UNMANAGED_NONE),
+ !val_bool,
+ NM_DEVICE_STATE_REASON_USER_REQUESTED);
+ break;
case PROP_AUTOCONNECT:
nm_device_set_autoconnect (self, g_value_get_boolean (value));
break;
(object_class, PROP_MANAGED,
g_param_spec_boolean (NM_DEVICE_MANAGED, "", "",
FALSE,
- G_PARAM_READABLE |
+ G_PARAM_READWRITE |
G_PARAM_STATIC_STRINGS));
g_object_class_install_property
#define NM_AUDIT_OP_DEVICE_AUTOCONNECT "device-autoconnect"
#define NM_AUDIT_OP_DEVICE_DISCONNECT "device-disconnect"
#define NM_AUDIT_OP_DEVICE_DELETE "device-delete"
+#define NM_AUDIT_OP_DEVICE_MANAGED "device-managed"
GType nm_audit_manager_get_type (void);
NMAuditManager *nm_audit_manager_get (void);
glib_propname = NM_DEVICE_AUTOCONNECT;
permission = NM_AUTH_PERMISSION_NETWORK_CONTROL;
audit_op = NM_AUDIT_OP_DEVICE_AUTOCONNECT;
+ } else if (!strcmp (propname, "Managed")) {
+ glib_propname = NM_DEVICE_MANAGED;
+ permission = NM_AUTH_PERMISSION_NETWORK_CONTROL;
+ audit_op = NM_AUDIT_OP_DEVICE_MANAGED;
} else
return message;
interface_type = NMDBUS_TYPE_DEVICE_SKELETON;