diff options
author | Thomas Haller <thaller@redhat.com> | 2015-05-18 17:37:05 +0200 |
---|---|---|
committer | Thomas Haller <thaller@redhat.com> | 2015-06-05 16:52:49 +0200 |
commit | 39f2b51abb70100f62c42b77e55cf3e386b9c49a (patch) | |
tree | f401ee263cc19eaed4b0a3bc6cb696434b0afffa | |
parent | 57958b93b62a29053ca0f7d4e2b2844a50627d21 (diff) | |
download | NetworkManager-39f2b51abb70100f62c42b77e55cf3e386b9c49a.tar.gz |
core: add option to suppress error logging if nm_utils_modprobe() fails
We don't want error logging for nm_platform_link_add() which
tries to load the bonding module. Later we will run tests as non-root,
where modprobe will fail. Logging an error would break the tests.
-rw-r--r-- | src/NetworkManagerUtils.c | 23 | ||||
-rw-r--r-- | src/NetworkManagerUtils.h | 2 | ||||
-rw-r--r-- | src/devices/nm-device.c | 2 | ||||
-rw-r--r-- | src/platform/nm-linux-platform.c | 2 | ||||
-rw-r--r-- | src/ppp-manager/nm-ppp-manager.c | 2 |
5 files changed, 23 insertions, 8 deletions
diff --git a/src/NetworkManagerUtils.c b/src/NetworkManagerUtils.c index cc1cef4677..fdaa31cd77 100644 --- a/src/NetworkManagerUtils.c +++ b/src/NetworkManagerUtils.c @@ -303,8 +303,19 @@ nm_spawn_process (const char *args, GError **error) return status; } +static const char * +_trunk_first_line (char *str) +{ + char *s; + + s = strchr (str, '\n'); + if (s) + s[0] = '\0'; + return str; +} + int -nm_utils_modprobe (GError **error, const char *arg1, ...) +nm_utils_modprobe (GError **error, gboolean suppress_error_logging, const char *arg1, ...) { gs_unref_ptrarray GPtrArray *argv = NULL; int exit_status; @@ -312,6 +323,8 @@ nm_utils_modprobe (GError **error, const char *arg1, ...) #define ARGV_TO_STR(argv) (_log_str ? _log_str : (_log_str = g_strjoinv (" ", (char **) argv->pdata))) GError *local = NULL; va_list ap; + NMLogLevel llevel = suppress_error_logging ? LOGL_DEBUG : LOGL_ERR; + gs_free char *std_out = NULL, *std_err = NULL; g_return_val_if_fail (!error || !*error, -1); g_return_val_if_fail (arg1, -1); @@ -329,12 +342,14 @@ nm_utils_modprobe (GError **error, const char *arg1, ...) g_ptr_array_add (argv, NULL); nm_log_dbg (LOGD_CORE, "modprobe: '%s'", ARGV_TO_STR (argv)); - if (!g_spawn_sync (NULL, (char **) argv->pdata, NULL, 0, NULL, NULL, NULL, NULL, &exit_status, &local)) { - nm_log_err (LOGD_CORE, "modprobe: '%s' failed: %s", ARGV_TO_STR (argv), local->message); + if (!g_spawn_sync (NULL, (char **) argv->pdata, NULL, 0, NULL, NULL, &std_out, &std_err, &exit_status, &local)) { + nm_log (llevel, LOGD_CORE, "modprobe: '%s' failed: %s", ARGV_TO_STR (argv), local->message); g_propagate_error (error, local); return -1; } else if (exit_status != 0) - nm_log_err (LOGD_CORE, "modprobe: '%s' exited with error %d", ARGV_TO_STR (argv), exit_status); + nm_log (llevel, LOGD_CORE, "modprobe: '%s' exited with error %d%s%s%s%s%s%s", ARGV_TO_STR (argv), exit_status, + std_out&&*std_out ? " (" : "", std_out&&*std_out ? _trunk_first_line (std_out) : "", std_out&&*std_out ? ")" : "", + std_err&&*std_err ? " (" : "", std_err&&*std_err ? _trunk_first_line (std_err) : "", std_err&&*std_err ? ")" : ""); return exit_status; } diff --git a/src/NetworkManagerUtils.h b/src/NetworkManagerUtils.h index c7b1e13627..7624715264 100644 --- a/src/NetworkManagerUtils.h +++ b/src/NetworkManagerUtils.h @@ -51,7 +51,7 @@ nm_utils_ip6_route_metric_normalize (guint32 metric) int nm_spawn_process (const char *args, GError **error); -int nm_utils_modprobe (GError **error, const char *arg1, ...) G_GNUC_NULL_TERMINATED; +int nm_utils_modprobe (GError **error, gboolean suppress_error_loggin, const char *arg1, ...) G_GNUC_NULL_TERMINATED; /** * str_if_set: diff --git a/src/devices/nm-device.c b/src/devices/nm-device.c index ee767ebcab..9e3a10bf0a 100644 --- a/src/devices/nm-device.c +++ b/src/devices/nm-device.c @@ -5294,7 +5294,7 @@ share_init (void) } for (iter = modules; *iter; iter++) - nm_utils_modprobe (NULL, *iter, NULL); + nm_utils_modprobe (NULL, FALSE, *iter, NULL); return TRUE; } diff --git a/src/platform/nm-linux-platform.c b/src/platform/nm-linux-platform.c index 3ae29dafab..64f33af5dd 100644 --- a/src/platform/nm-linux-platform.c +++ b/src/platform/nm-linux-platform.c @@ -2439,7 +2439,7 @@ link_add (NMPlatform *platform, * bond0 automatically. */ if (!g_file_test ("/sys/class/net/bonding_masters", G_FILE_TEST_EXISTS)) - nm_utils_modprobe (NULL, "bonding", "max_bonds=0", NULL); + nm_utils_modprobe (NULL, TRUE, "bonding", "max_bonds=0", NULL); } debug ("link: add link '%s' of type '%s' (%d)", diff --git a/src/ppp-manager/nm-ppp-manager.c b/src/ppp-manager/nm-ppp-manager.c index d410ebfab9..c13672976f 100644 --- a/src/ppp-manager/nm-ppp-manager.c +++ b/src/ppp-manager/nm-ppp-manager.c @@ -1071,7 +1071,7 @@ nm_ppp_manager_start (NMPPPManager *manager, /* Make sure /dev/ppp exists (bgo #533064) */ if (stat ("/dev/ppp", &st) || !S_ISCHR (st.st_mode)) - nm_utils_modprobe (NULL, "ppp_generic", NULL); + nm_utils_modprobe (NULL, FALSE, "ppp_generic", NULL); connection = nm_act_request_get_connection (req); g_assert (connection); |