device: allow modifying Managed property
https://bugzilla.redhat.com/show_bug.cgi?id=1114685 https://bugzilla.gnome.org/show_bug.cgi?id=746566 Related: https://bugzilla.gnome.org/show_bug.cgi?id=680909 Related: https://bugzilla.gnome.org/show_bug.cgi?id=731014 Based-on-patch-by: Lubomir Rintel <lkundrak@v3.sk>
This commit is contained in:
@@ -96,9 +96,13 @@
|
|||||||
NM_DEVICE_STATE_ACTIVATED state.
|
NM_DEVICE_STATE_ACTIVATED state.
|
||||||
</tp:docstring>
|
</tp:docstring>
|
||||||
</property>
|
</property>
|
||||||
<property name="Managed" type="b" access="read">
|
<property name="Managed" type="b" access="readwrite">
|
||||||
<tp:docstring>
|
<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>
|
</tp:docstring>
|
||||||
</property>
|
</property>
|
||||||
<property name="Autoconnect" type="b" access="readwrite">
|
<property name="Autoconnect" type="b" access="readwrite">
|
||||||
|
@@ -215,6 +215,7 @@ typedef struct {
|
|||||||
char * physical_port_id;
|
char * physical_port_id;
|
||||||
guint dev_id;
|
guint dev_id;
|
||||||
|
|
||||||
|
gboolean managed_touched_by_user;
|
||||||
NMUnmanagedFlags unmanaged_flags;
|
NMUnmanagedFlags unmanaged_flags;
|
||||||
gboolean is_nm_owned; /* whether the device is a device owned and created by NM */
|
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) */
|
DeleteOnDeactivateData *delete_on_deactivate_data; /* data for scheduled cleanup when deleting link (g_idle_add) */
|
||||||
@@ -7768,6 +7769,9 @@ nm_device_set_unmanaged_by_device_spec (NMDevice *self, const GSList *unmanaged_
|
|||||||
|
|
||||||
priv = NM_DEVICE_GET_PRIVATE (self);
|
priv = NM_DEVICE_GET_PRIVATE (self);
|
||||||
|
|
||||||
|
if (priv->managed_touched_by_user)
|
||||||
|
return;
|
||||||
|
|
||||||
unmanaged = nm_device_spec_match_list (self, unmanaged_specs);
|
unmanaged = nm_device_spec_match_list (self, unmanaged_specs);
|
||||||
nm_device_set_unmanaged (self,
|
nm_device_set_unmanaged (self,
|
||||||
NM_UNMANAGED_USER,
|
NM_UNMANAGED_USER,
|
||||||
@@ -9362,6 +9366,7 @@ set_property (GObject *object, guint prop_id,
|
|||||||
NMDevicePrivate *priv = NM_DEVICE_GET_PRIVATE (self);
|
NMDevicePrivate *priv = NM_DEVICE_GET_PRIVATE (self);
|
||||||
const char *hw_addr, *p;
|
const char *hw_addr, *p;
|
||||||
guint count;
|
guint count;
|
||||||
|
gboolean val_bool;
|
||||||
|
|
||||||
switch (prop_id) {
|
switch (prop_id) {
|
||||||
case PROP_UDI:
|
case PROP_UDI:
|
||||||
@@ -9399,6 +9404,14 @@ set_property (GObject *object, guint prop_id,
|
|||||||
case PROP_IP4_ADDRESS:
|
case PROP_IP4_ADDRESS:
|
||||||
priv->ip4_address = g_value_get_uint (value);
|
priv->ip4_address = g_value_get_uint (value);
|
||||||
break;
|
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:
|
case PROP_AUTOCONNECT:
|
||||||
nm_device_set_autoconnect (self, g_value_get_boolean (value));
|
nm_device_set_autoconnect (self, g_value_get_boolean (value));
|
||||||
break;
|
break;
|
||||||
@@ -9750,7 +9763,7 @@ nm_device_class_init (NMDeviceClass *klass)
|
|||||||
(object_class, PROP_MANAGED,
|
(object_class, PROP_MANAGED,
|
||||||
g_param_spec_boolean (NM_DEVICE_MANAGED, "", "",
|
g_param_spec_boolean (NM_DEVICE_MANAGED, "", "",
|
||||||
FALSE,
|
FALSE,
|
||||||
G_PARAM_READABLE |
|
G_PARAM_READWRITE |
|
||||||
G_PARAM_STATIC_STRINGS));
|
G_PARAM_STATIC_STRINGS));
|
||||||
|
|
||||||
g_object_class_install_property
|
g_object_class_install_property
|
||||||
|
@@ -60,6 +60,7 @@ typedef struct {
|
|||||||
#define NM_AUDIT_OP_DEVICE_AUTOCONNECT "device-autoconnect"
|
#define NM_AUDIT_OP_DEVICE_AUTOCONNECT "device-autoconnect"
|
||||||
#define NM_AUDIT_OP_DEVICE_DISCONNECT "device-disconnect"
|
#define NM_AUDIT_OP_DEVICE_DISCONNECT "device-disconnect"
|
||||||
#define NM_AUDIT_OP_DEVICE_DELETE "device-delete"
|
#define NM_AUDIT_OP_DEVICE_DELETE "device-delete"
|
||||||
|
#define NM_AUDIT_OP_DEVICE_MANAGED "device-managed"
|
||||||
|
|
||||||
GType nm_audit_manager_get_type (void);
|
GType nm_audit_manager_get_type (void);
|
||||||
NMAuditManager *nm_audit_manager_get (void);
|
NMAuditManager *nm_audit_manager_get (void);
|
||||||
|
@@ -4578,6 +4578,10 @@ prop_filter (GDBusConnection *connection,
|
|||||||
glib_propname = NM_DEVICE_AUTOCONNECT;
|
glib_propname = NM_DEVICE_AUTOCONNECT;
|
||||||
permission = NM_AUTH_PERMISSION_NETWORK_CONTROL;
|
permission = NM_AUTH_PERMISSION_NETWORK_CONTROL;
|
||||||
audit_op = NM_AUDIT_OP_DEVICE_AUTOCONNECT;
|
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
|
} else
|
||||||
return message;
|
return message;
|
||||||
interface_type = NMDBUS_TYPE_DEVICE_SKELETON;
|
interface_type = NMDBUS_TYPE_DEVICE_SKELETON;
|
||||||
|
Reference in New Issue
Block a user