summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorThomas Haller <thaller@redhat.com>2017-06-07 17:04:33 +0200
committerThomas Haller <thaller@redhat.com>2017-06-08 14:28:33 +0200
commit86e89b3cf865af7938858dd9d89a5661c2851f0f (patch)
treeeaaba749d25d1a14d720c73fc24e57e1a12a9a84
parent7bf55da9bcd7499193bd77e05b930716271a952b (diff)
downloadNetworkManager-th/assume-master-rh1452062-nm-1.8.tar.gz
device: suppress logging and return error reason from nm_device_generate_connection()th/assume-master-rh1452062-nm-1.8
Don't log in a function that basically just inspects state, without mutating it. Instead, pass the reason why a connection could not be generated to the caller so that we have one sensible log message. (cherry picked from commit cb5c1b280d0869918a979095557104e5ed82b6f9)
-rw-r--r--src/devices/nm-device.c56
-rw-r--r--src/devices/nm-device.h3
-rw-r--r--src/nm-manager.c6
3 files changed, 37 insertions, 28 deletions
diff --git a/src/devices/nm-device.c b/src/devices/nm-device.c
index 70de678c44..f473684c35 100644
--- a/src/devices/nm-device.c
+++ b/src/devices/nm-device.c
@@ -4111,29 +4111,37 @@ nm_device_master_update_slave_connection (NMDevice *self,
}
NMConnection *
-nm_device_generate_connection (NMDevice *self, NMDevice *master, gboolean *out_maybe_later)
+nm_device_generate_connection (NMDevice *self,
+ NMDevice *master,
+ gboolean *out_maybe_later,
+ GError **error)
{
NMDeviceClass *klass = NM_DEVICE_GET_CLASS (self);
NMDevicePrivate *priv = NM_DEVICE_GET_PRIVATE (self);
const char *ifname = nm_device_get_iface (self);
- NMConnection *connection;
+ gs_unref_object NMConnection *connection = NULL;
NMSetting *s_con;
NMSetting *s_ip4;
NMSetting *s_ip6;
char uuid[37];
const char *ip4_method, *ip6_method;
- GError *error = NULL;
+ GError *local = NULL;
const NMPlatformLink *pllink;
NM_SET_OUT (out_maybe_later, FALSE);
/* If update_connection() is not implemented, just fail. */
- if (!klass->update_connection)
+ if (!klass->update_connection) {
+ g_set_error (error, NM_DEVICE_ERROR, NM_DEVICE_ERROR_FAILED,
+ "device class %s does not support generating a connection",
+ G_OBJECT_TYPE_NAME (self));
return NULL;
+ }
/* Return NULL if device is unconfigured. */
if (!device_has_config (self)) {
- _LOGD (LOGD_DEVICE, "device has no existing configuration");
+ g_set_error (error, NM_DEVICE_ERROR, NM_DEVICE_ERROR_FAILED,
+ "device has no existing configuration");
return NULL;
}
@@ -4156,12 +4164,11 @@ nm_device_generate_connection (NMDevice *self, NMDevice *master, gboolean *out_m
if (!nm_device_master_update_slave_connection (master,
self,
connection,
- &error))
- {
- _LOGE (LOGD_DEVICE, "master device '%s' failed to update slave connection: %s",
- nm_device_get_iface (master), error->message);
- g_error_free (error);
- g_object_unref (connection);
+ &local)) {
+ g_set_error (error, NM_DEVICE_ERROR, NM_DEVICE_ERROR_FAILED,
+ "master device '%s' failed to update slave connection: %s",
+ nm_device_get_iface (master), local->message);
+ g_error_free (local);
return NULL;
}
} else {
@@ -4174,7 +4181,6 @@ nm_device_generate_connection (NMDevice *self, NMDevice *master, gboolean *out_m
pllink = nm_platform_link_get (nm_device_get_platform (self), priv->ifindex);
if (pllink && pllink->inet6_token.id) {
- _LOGD (LOGD_IP6, "IPv6 tokenized identifier present");
g_object_set (s_ip6,
NM_SETTING_IP6_CONFIG_ADDR_GEN_MODE, NM_IN6_ADDR_GEN_MODE_EUI64,
NM_SETTING_IP6_CONFIG_TOKEN, nm_utils_inet6_interface_identifier_to_token (pllink->inet6_token, NULL),
@@ -4184,11 +4190,11 @@ nm_device_generate_connection (NMDevice *self, NMDevice *master, gboolean *out_m
klass->update_connection (self, connection);
- /* Check the connection in case of update_connection() bug. */
- if (!nm_connection_verify (connection, &error)) {
- _LOGE (LOGD_DEVICE, "Generated connection does not verify: %s", error->message);
- g_clear_error (&error);
- g_object_unref (connection);
+ if (!nm_connection_verify (connection, &local)) {
+ g_set_error (error, NM_DEVICE_ERROR, NM_DEVICE_ERROR_FAILED,
+ "generated connection does not verify: %s",
+ local->message);
+ g_error_free (local);
return NULL;
}
@@ -4201,28 +4207,28 @@ nm_device_generate_connection (NMDevice *self, NMDevice *master, gboolean *out_m
&& g_strcmp0 (ip6_method, NM_SETTING_IP6_CONFIG_METHOD_IGNORE) == 0
&& !nm_setting_connection_get_master (NM_SETTING_CONNECTION (s_con))
&& !priv->slaves) {
- _LOGD (LOGD_DEVICE, "ignoring generated connection (no IP and not in master-slave relationship)");
NM_SET_OUT (out_maybe_later, TRUE);
- g_object_unref (connection);
- connection = NULL;
+ g_set_error_literal (error, NM_DEVICE_ERROR, NM_DEVICE_ERROR_FAILED,
+ "ignoring generated connection (no IP and not in master-slave relationship)");
+ return NULL;
}
/* Ignore any IPv6LL-only, not master connections without slaves,
* unless they are in the assume-ipv6ll-only list.
*/
- if ( connection
- && g_strcmp0 (ip4_method, NM_SETTING_IP4_CONFIG_METHOD_DISABLED) == 0
+ if ( g_strcmp0 (ip4_method, NM_SETTING_IP4_CONFIG_METHOD_DISABLED) == 0
&& g_strcmp0 (ip6_method, NM_SETTING_IP6_CONFIG_METHOD_LINK_LOCAL) == 0
&& !nm_setting_connection_get_master (NM_SETTING_CONNECTION (s_con))
&& !priv->slaves
&& !nm_config_data_get_assume_ipv6ll_only (NM_CONFIG_GET_DATA, self)) {
_LOGD (LOGD_DEVICE, "ignoring generated connection (IPv6LL-only and not in master-slave relationship)");
NM_SET_OUT (out_maybe_later, TRUE);
- g_object_unref (connection);
- connection = NULL;
+ g_set_error_literal (error, NM_DEVICE_ERROR, NM_DEVICE_ERROR_FAILED,
+ "ignoring generated connection (IPv6LL-only and not in master-slave relationship)");
+ return NULL;
}
- return connection;
+ return g_steal_pointer (&connection);
}
gboolean
diff --git a/src/devices/nm-device.h b/src/devices/nm-device.h
index ecb2770db3..86fffc095f 100644
--- a/src/devices/nm-device.h
+++ b/src/devices/nm-device.h
@@ -498,7 +498,8 @@ gboolean nm_device_has_carrier (NMDevice *dev);
NMConnection * nm_device_generate_connection (NMDevice *self,
NMDevice *master,
- gboolean *out_maybe_later);
+ gboolean *out_maybe_later,
+ GError **error);
gboolean nm_device_master_update_slave_connection (NMDevice *master,
NMDevice *slave,
diff --git a/src/nm-manager.c b/src/nm-manager.c
index e3b7651317..3beca3fa09 100644
--- a/src/nm-manager.c
+++ b/src/nm-manager.c
@@ -1786,11 +1786,13 @@ get_existing_connection (NMManager *self,
* update_connection() implemented, otherwise nm_device_generate_connection()
* returns NULL.
*/
- connection = nm_device_generate_connection (device, master, &maybe_later);
+ connection = nm_device_generate_connection (device, master, &maybe_later, &error);
if (!connection) {
if (!maybe_later)
nm_device_assume_state_reset (device);
- _LOG2D (LOGD_DEVICE, device, "assume: don't assume due to failure to generate connection");
+ _LOG2D (LOGD_DEVICE, device, "assume: cannot generate connection: %s",
+ error->message);
+ g_error_free (error);
return NULL;
}