cli: fix showing active state for nmcli con show with fields

With "connection.multi-connect", a profile can be activated multiple
times on a device with `nmcli connection show`. Also, a profile may be
in the process of deactivating on one device, while activating on
another one. So, in general it's possible that `nmcli connection show`
lists the same profile on multiple lines (reflecting their multiple
activation states).

If the user requests no fields that are part of the activation state,
then the active connections are ignored. For example with `nmcli
-f UUID,NAME connection show`. In that case, each profile is listed only
once.

On the other hand, with `nmcli -g UUID,NAME,DEVICE connection show` the
user again requested also to see the activation state, and a profile can
appear multiple times.

To handle that, we need to consider which fields were requested.

There was a bug where the "ACTIVE" field was not treated as part of the
activation state. That results in `nmcli -f UUID,NAME,ACTIVE connection
show` always returning "no". Fix that.

Fixes: a1b25a47b0 ('cli: rework printing of `nmcli connection` for multiple active connections')

https://gitlab.freedesktop.org/NetworkManager/NetworkManager/-/issues/547

https://gitlab.freedesktop.org/NetworkManager/NetworkManager/-/merge_requests/642
This commit is contained in:
Thomas Haller 2020-10-08 17:41:19 +02:00
parent 4eb8491a38
commit 4eb3b5b9dd
No known key found for this signature in database
GPG key ID: 29C2366E4DFC5728

View file

@ -2180,6 +2180,7 @@ do_connections_show(const NMCCommand *cmd, NmCli *nmc, int argc, const char *con
if (NM_IN_SET(info->info_type,
NMC_GENERIC_INFO_TYPE_CON_SHOW_DEVICE,
NMC_GENERIC_INFO_TYPE_CON_SHOW_STATE,
NMC_GENERIC_INFO_TYPE_CON_SHOW_ACTIVE,
NMC_GENERIC_INFO_TYPE_CON_SHOW_ACTIVE_PATH)) {
show_active_fields = TRUE;
break;