core: propagate the user-requested reason for act-request disconnection
Summary
Let NMActRequest translate the USER_REQUESTED device state reason to USER_DISCONNECTED active connection state reason, in case of disconnection.
This is an API change, but the previous behavior of reporting generic
uninformative reasons seems a bug. See for example
nmc_activation_get_effective_state()
, which inspects the AC state
reason and in case it's generic (DEVICE_DISCONNECTED), it considers
the device state instead.
Purpose
If the device is being disconnected for a user request, at the moment the active connection goes to state DEACTIVATED through the following transitions, independently of the reason for the disconnection:
- state: DEACTIVATING, reason: UNKNOWN
- state: DEACTIVATED, reason: DEVICE_DISCONNECTED
For VPNs, a disconnection is always user-initiated, and the active connection states emitted are:
- state: DEACTIVATING, reason: USER_DISCONNECTED
- state: DEACTIVATED, reason: USER_DISCONNECTED
This difference poses problems for clients that want to handle device and VPNs in the same way, especially because WireGuard is implemented as a device, but is logically a VPN.
Closes #1405 (closed)