device: do cleanup type removed if sys-iface-state is REMOVED

When the state is DISCONNECTED is being set from a
configuring/configured state we might want to always DECONFIGURE the
interface (ifindex, ip addresses, routes..) except if the
sys-iface-state is REMOVED in that case we would like to remove it.
This commit is contained in:
Fernando Fernandez Mancera 2023-01-24 12:30:45 +01:00
parent c739ebaf4b
commit 3d18c9c841

View file

@ -16105,8 +16105,11 @@ _set_state_full(NMDevice *self, NMDeviceState state, NMDeviceStateReason reason,
* userspace IPv6LL enabled.
*/
_dev_addrgenmode6_set(self, NM_IN6_ADDR_GEN_MODE_NONE);
if (priv->sys_iface_state == NM_DEVICE_SYS_IFACE_STATE_REMOVED) {
nm_device_cleanup(self, reason, CLEANUP_TYPE_REMOVED);
} else
nm_device_cleanup(self, reason, CLEANUP_TYPE_DECONFIGURE);
nm_device_cleanup(self, reason, CLEANUP_TYPE_DECONFIGURE);
} else if (old_state < NM_DEVICE_STATE_DISCONNECTED) {
if (priv->sys_iface_state == NM_DEVICE_SYS_IFACE_STATE_MANAGED) {
/* Ensure IPv6 is set up as it may not have been done when