mirror of
https://gitlab.freedesktop.org/NetworkManager/NetworkManager.git
synced 2026-01-11 21:30:20 +01:00
device: update the external-down unmanaged flag on port attach/release
A device has the "external-down" unmanaged flag when:
!is-created-by-nm AND (!is-up OR (!has-address AND !is-controller))
When the "is-up" or the "has-address" conditions change, we properly update
the unmanaged flag by calling _dev_unmanaged_check_external_down() in
_dev_l3_cfg_notify_cb(PLATFORM_CHANGE_ON_IDLE).
The "is-controller" condition changes when another link indicates the
current device as controller. We currently don't update the unmanaged flag
when that happens and so it's possible that the device stays unmanaged even
if it has a port. This can be easily reproduced by running this commands:
ip link add veth0 type veth peer name veth1
ip link add vrf0 type vrf table 10
ip link set vrf0 up
ip link set veth0 master vrf0
Sometimes, the device shows as "unmanaged" instead of "connected
(externally)".
Fix this by re-evaluating the "external-down" unmanaged flags on the
controller when a port is attached or detached.
Fixes: c3586ce01a ('device: consider a device with slaves configured')
https://gitlab.freedesktop.org/NetworkManager/NetworkManager/-/merge_requests/2209
This commit is contained in:
parent
892e816a9d
commit
fd3eccfb16
1 changed files with 6 additions and 0 deletions
|
|
@ -7158,6 +7158,9 @@ nm_device_controller_release_port(NMDevice *self,
|
|||
NM_UNMANAGED_IS_PORT,
|
||||
NM_UNMAN_FLAG_OP_FORGET,
|
||||
NM_DEVICE_STATE_REASON_REMOVED);
|
||||
|
||||
/* Once the port is detached, unmanaged-external-down might change */
|
||||
_dev_unmanaged_check_external_down(self, FALSE, FALSE);
|
||||
}
|
||||
|
||||
/*****************************************************************************/
|
||||
|
|
@ -8852,6 +8855,9 @@ nm_device_controller_add_port(NMDevice *self, NMDevice *port, gboolean configure
|
|||
} else
|
||||
g_return_val_if_fail(port_priv->controller == self, FALSE);
|
||||
|
||||
/* Once the port is attached, unmanaged-external-down might change */
|
||||
_dev_unmanaged_check_external_down(self, TRUE, FALSE);
|
||||
|
||||
nm_device_queue_recheck_assume(self);
|
||||
nm_device_queue_recheck_assume(port);
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue