dbus: add a SET_ADMIN_STATE flag to SetManaged()

This flag will make that, at the same time that the device is moved to
managed/unmanaged, it's admin state is set to up/down. Many users want
to have a way to have their devices in a DOWN admin state when they are
not using them. Because of the complex activation process, NM wants to
have its devices in UP state all the time. However, it is not a problem
to have it DOWN if we are not managing it.
This commit is contained in:
Íñigo Huguet 2026-02-13 15:41:27 +01:00
parent 01ab011baa
commit 121c2691fd
2 changed files with 15 additions and 4 deletions

View file

@ -14943,6 +14943,13 @@ set_managed(NMDevice *self, gboolean managed, NMDeviceManagedFlags flags, GError
if (managed_old != managed)
_notify(self, PROP_MANAGED);
if (flags & NM_DEVICE_MANAGED_FLAGS_SET_ADMIN_STATE) {
nm_platform_link_change_flags(nm_device_get_platform(self),
nm_device_get_ifindex(self),
IFF_UP,
managed);
}
return TRUE;
}

View file

@ -1253,16 +1253,20 @@ typedef enum /*< flags >*/ {
* This option only makes sense together with %NM_DEVICE_MANAGED_FLAGS_TO_DISK.
* @NM_DEVICE_MANAGED_FLAGS_CLEAR_DISK: to clear the managed flag from disk. Implies
* %NM_DEVICE_MANAGED_FLAGS_TO_DISK.
* @NM_DEVICE_MANAGED_FLAGS_SET_ADMIN_STATE: to set the administrative state of the
* device to up if the managed state is TRUE, and down if the managed state is FALSE.
* If the flag is not set, the administrative state is not changed.
*
* Flags for the SetManaged() D-Bus call of a device and nm_device_set_managed_async().
*
* Since: 1.58
*/
typedef enum /*< flags >*/ {
NM_DEVICE_MANAGED_FLAGS_NONE = 0,
NM_DEVICE_MANAGED_FLAGS_TO_DISK = 0x1,
NM_DEVICE_MANAGED_FLAGS_BY_MAC = 0x2,
NM_DEVICE_MANAGED_FLAGS_CLEAR_DISK = 0x4,
NM_DEVICE_MANAGED_FLAGS_NONE = 0,
NM_DEVICE_MANAGED_FLAGS_TO_DISK = 0x1,
NM_DEVICE_MANAGED_FLAGS_BY_MAC = 0x2,
NM_DEVICE_MANAGED_FLAGS_CLEAR_DISK = 0x4,
NM_DEVICE_MANAGED_FLAGS_SET_ADMIN_STATE = 0x8,
} NMDeviceManagedFlags;
/**