From 65771b80a6dbaa6dedb9edea9445bc00f9259da3 Mon Sep 17 00:00:00 2001 From: Francesco Giudici Date: Fri, 15 Jul 2016 14:38:00 +0200 Subject: [PATCH] cli: improve devices vs connection compatibility check report error message on device compatibility failures --- clients/cli/connections.c | 19 ++++++++++++------- libnm/nm-device-ethernet.c | 4 ++-- 2 files changed, 14 insertions(+), 9 deletions(-) diff --git a/clients/cli/connections.c b/clients/cli/connections.c index 09f0c00c32..46a3864918 100644 --- a/clients/cli/connections.c +++ b/clients/cli/connections.c @@ -1927,17 +1927,22 @@ find_device_for_connection (NmCli *nmc, if (iface) { const char *dev_iface = nm_device_get_iface (dev); - if ( !g_strcmp0 (dev_iface, iface) - && nm_device_connection_compatible (dev, connection, NULL)) { - found_device = dev; + if (!nm_streq0 (dev_iface, iface)) + continue; + + if (!nm_device_connection_compatible (dev, connection, error)) { + g_prefix_error (error, _("device '%s' not compatible with connection '%s':"), + iface, nm_setting_connection_get_id (s_con)); + return FALSE; } + } else { - if (nm_device_connection_compatible (dev, connection, NULL)) { - found_device = dev; - } + if (!nm_device_connection_compatible (dev, connection, NULL)) + continue; } - if (found_device && ap && !strcmp (con_type, NM_SETTING_WIRELESS_SETTING_NAME) && NM_IS_DEVICE_WIFI (dev)) { + found_device = dev; + if (ap && !strcmp (con_type, NM_SETTING_WIRELESS_SETTING_NAME) && NM_IS_DEVICE_WIFI (dev)) { char *bssid_up = g_ascii_strup (ap, -1); const GPtrArray *aps = nm_device_wifi_get_access_points (NM_DEVICE_WIFI (dev)); found_device = NULL; /* Mark as not found; set to the device again later, only if AP matches */ diff --git a/libnm/nm-device-ethernet.c b/libnm/nm-device-ethernet.c index 88a7c43248..65d28d0332 100644 --- a/libnm/nm-device-ethernet.c +++ b/libnm/nm-device-ethernet.c @@ -228,8 +228,8 @@ connection_compatible (NMDevice *device, NMConnection *connection, GError **erro s_mac = nm_setting_wired_get_mac_address (s_wired); if (perm_addr) { if (!nm_utils_hwaddr_valid (perm_addr, ETH_ALEN)) { - g_set_error_literal (error, NM_DEVICE_ERROR, NM_DEVICE_ERROR_FAILED, - _("Invalid device MAC address.")); + g_set_error (error, NM_DEVICE_ERROR, NM_DEVICE_ERROR_FAILED, + _("Invalid device MAC address %s."), perm_addr); return FALSE; } if (try_mac && s_mac && !nm_utils_hwaddr_matches (s_mac, -1, perm_addr, -1)) {