Skip to content

core: propagate the user-requested reason for act-request disconnection

Beniamino Galvani requested to merge bg/deactivate-reason into main

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)

Edited by Íñigo Huguet

Merge request reports