core: merge branch 'th/device-manage-conf'

https://github.com/NetworkManager/NetworkManager/pull/29
This commit is contained in:
Thomas Haller 2017-09-28 14:45:17 +02:00
commit a47c48fd84
4 changed files with 66 additions and 6 deletions

View file

@ -821,7 +821,7 @@ ipv6.ip6-privacy=1
<programlisting>
[device]
match-device=interface-name:eth3
unmanaged=1
managed=1
</programlisting>
</para>
<refsect2>
@ -829,6 +829,19 @@ unmanaged=1
<para>
The following properties can be configured per-device.
<variablelist>
<varlistentry id="managed">
<term><varname>managed</varname></term>
<listitem>
<para>
Whether the device is managed or not. A device can be
marked as managed via udev rules (ENV{NM_UNMANAGED}),
or via setting plugins (keyfile.unmanaged-devices).
This is yet another way. Note that this configuration
can be overruled at runtime via D-Bus. Also, it has
higher priority then udev rules.
</para>
</listitem>
</varlistentry>
<varlistentry id="ignore-carrier">
<term><varname>ignore-carrier</varname></term>
<listitem>

View file

@ -2671,6 +2671,7 @@ device_link_changed (NMDevice *self)
NMDeviceStateReason reason;
nm_device_set_unmanaged_by_user_udev (self);
nm_device_set_unmanaged_by_user_conf (self);
reason = NM_DEVICE_STATE_REASON_NOW_MANAGED;
@ -3309,6 +3310,7 @@ realize_start_setup (NMDevice *self,
nm_device_set_unmanaged_flags (self, NM_UNMANAGED_LOOPBACK, priv->ifindex == 1);
nm_device_set_unmanaged_by_user_udev (self);
nm_device_set_unmanaged_by_user_conf (self);
nm_device_set_unmanaged_flags (self, NM_UNMANAGED_PLATFORM_INIT,
plink && !plink->initialized);
@ -11191,6 +11193,7 @@ NM_UTILS_FLAGS2STR_DEFINE (nm_unmanaged_flags2str, NMUnmanagedFlags,
NM_UTILS_FLAGS2STR (NM_UNMANAGED_USER_EXPLICIT, "user-explicit"),
NM_UTILS_FLAGS2STR (NM_UNMANAGED_BY_DEFAULT, "by-default"),
NM_UTILS_FLAGS2STR (NM_UNMANAGED_USER_SETTINGS, "user-settings"),
NM_UTILS_FLAGS2STR (NM_UNMANAGED_USER_CONF, "user-conf"),
NM_UTILS_FLAGS2STR (NM_UNMANAGED_USER_UDEV, "user-udev"),
NM_UTILS_FLAGS2STR (NM_UNMANAGED_EXTERNAL_DOWN, "external-down"),
NM_UTILS_FLAGS2STR (NM_UNMANAGED_IS_SLAVE, "is-slave"),
@ -11283,11 +11286,19 @@ _get_managed_by_flags(NMUnmanagedFlags flags, NMUnmanagedFlags mask, gboolean fo
if (NM_FLAGS_ANY (mask, NM_UNMANAGED_USER_UDEV)) {
/* configuration from udev or nm-config overwrites the by-default flag
* which is based on the device type. */
flags &= ~NM_UNMANAGED_BY_DEFAULT;
* which is based on the device type.
* configuration from udev overwrites external-down */
flags &= ~( NM_UNMANAGED_BY_DEFAULT
| NM_UNMANAGED_EXTERNAL_DOWN);
}
/* configuration from udev overwrites external-down */
flags &= ~NM_UNMANAGED_EXTERNAL_DOWN;
if (NM_FLAGS_ANY (mask, NM_UNMANAGED_USER_CONF)) {
/* configuration from NetworkManager.conf overwrites the by-default flag
* which is based on the device type.
* It also overwrites the udev configuration and external-down */
flags &= ~( NM_UNMANAGED_BY_DEFAULT
|| NM_UNMANAGED_USER_UDEV
|| NM_UNMANAGED_EXTERNAL_DOWN);
}
if ( NM_FLAGS_HAS (mask, NM_UNMANAGED_IS_SLAVE)
@ -11299,9 +11310,9 @@ _get_managed_by_flags(NMUnmanagedFlags flags, NMUnmanagedFlags mask, gboolean fo
if (NM_FLAGS_HAS (mask, NM_UNMANAGED_USER_EXPLICIT)) {
/* if the device is managed by user-decision, certain other flags
* are ignored. */
flags &= ~( NM_UNMANAGED_BY_DEFAULT
| NM_UNMANAGED_USER_UDEV
| NM_UNMANAGED_USER_CONF
| NM_UNMANAGED_EXTERNAL_DOWN);
}
@ -11607,6 +11618,35 @@ nm_device_set_unmanaged_by_user_udev (NMDevice *self)
NM_DEVICE_STATE_REASON_USER_REQUESTED);
}
void
nm_device_set_unmanaged_by_user_conf (NMDevice *self)
{
gboolean value;
NMUnmanFlagOp set_op;
value = nm_config_data_get_device_config_boolean (NM_CONFIG_GET_DATA,
NM_CONFIG_KEYFILE_KEY_DEVICE_MANAGED,
self,
-1,
TRUE);
switch (value) {
case TRUE:
set_op = NM_UNMAN_FLAG_OP_SET_MANAGED;
break;
case FALSE:
set_op = NM_UNMAN_FLAG_OP_SET_UNMANAGED;
break;
default:
set_op = NM_UNMAN_FLAG_OP_FORGET;
break;
}
nm_device_set_unmanaged_by_flags (self,
NM_UNMANAGED_USER_CONF,
set_op,
NM_DEVICE_STATE_REASON_USER_REQUESTED);
}
void
nm_device_set_unmanaged_by_quitting (NMDevice *self)
{

View file

@ -580,6 +580,10 @@ void nm_device_copy_ip6_dns_config (NMDevice *self, NMDevice *from_device);
* the settings plugins, such as NM_CONTROLLED=no in ifcfg-rh), it cannot
* be overruled and is authorative. That is because users may depend on
* dropping a ifcfg-rh file to ensure the device is unmanaged.
* @NM_UNMANAGED_USER_CONF: %TRUE when unmanaged by user decision via
* the NetworkManager.conf ("unmanaged" in the [device] section).
* Contray to @NM_UNMANAGED_USER_SETTINGS, this can be overwritten via
* D-Bus.
* @NM_UNMANAGED_BY_DEFAULT: %TRUE for certain device types where we unmanage
* them by default
* @NM_UNMANAGED_USER_UDEV: %TRUE when unmanaged by user decision (via UDev rule)
@ -604,6 +608,7 @@ typedef enum { /*< skip >*/
/* These flags can be non-effective and be overwritten
* by other flags. */
NM_UNMANAGED_BY_DEFAULT = (1LL << 8),
NM_UNMANAGED_USER_CONF = (1LL << 9),
NM_UNMANAGED_USER_UDEV = (1LL << 10),
NM_UNMANAGED_EXTERNAL_DOWN = (1LL << 11),
NM_UNMANAGED_IS_SLAVE = (1LL << 12),
@ -634,6 +639,7 @@ void nm_device_set_unmanaged_by_flags_queue (NMDevice *self,
NMDeviceStateReason reason);
void nm_device_set_unmanaged_by_user_settings (NMDevice *self);
void nm_device_set_unmanaged_by_user_udev (NMDevice *self);
void nm_device_set_unmanaged_by_user_conf (NMDevice *self);
void nm_device_set_unmanaged_by_quitting (NMDevice *device);
gboolean nm_device_is_nm_owned (NMDevice *device);

View file

@ -75,6 +75,7 @@
#define NM_CONFIG_KEYFILE_KEY_IFUPDOWN_MANAGED "managed"
#define NM_CONFIG_KEYFILE_KEY_AUDIT "audit"
#define NM_CONFIG_KEYFILE_KEY_DEVICE_MANAGED "managed"
#define NM_CONFIG_KEYFILE_KEY_DEVICE_IGNORE_CARRIER "ignore-carrier"
#define NM_CONFIG_KEYFILE_KEY_DEVICE_SRIOV_NUM_VFS "sriov-num-vfs"