diff options
author | Lubomir Rintel <lkundrak@v3.sk> | 2017-03-02 20:14:05 +0000 |
---|---|---|
committer | Lubomir Rintel <lkundrak@v3.sk> | 2017-03-23 16:44:16 +0100 |
commit | 456a5c42ce226aab8e8e19e2ab3ead3dae66e168 (patch) | |
tree | c64118c8467f48fce5864de4034858e22d9fe250 | |
parent | 13f96b85738f548ffb4976717923b6aacb597e3f (diff) | |
download | NetworkManager-lr/log-hints.tar.gz |
cli: advise the user to consult logs when a connection fails to activatelr/log-hints
Error: Connection activation failed: no valid VPN secrets.
Hint: use 'journalctl -xe NM_CONNECTION=0dd048e5-e84b-4e96-9142-61b3e73f1c69 + NM_DEVICE=eth0' to get more details.
-rw-r--r-- | clients/cli/connections.c | 36 |
1 files changed, 36 insertions, 0 deletions
diff --git a/clients/cli/connections.c b/clients/cli/connections.c index fecec0d403..cd847a3148 100644 --- a/clients/cli/connections.c +++ b/clients/cli/connections.c @@ -2162,6 +2162,39 @@ active_connection_state_reason_to_string (NMActiveConnectionStateReason reason) g_return_val_if_reached (_("Invalid reason")); } +#if SYSTEMD_JOURNAL +static void +active_connection_hint (NmCli *nmc, NMActiveConnection *active) +{ + NMRemoteConnection *connection; + GString *hint; + const GPtrArray *devices; + int i; + + connection = nm_active_connection_get_connection (active); + g_return_if_fail (connection); + + hint = g_string_new ("journalctl -xe "); + g_string_append_printf (hint, "NM_CONNECTION=%s", + nm_connection_get_uuid (NM_CONNECTION (connection))); + + devices = nm_active_connection_get_devices (active); + for (i = 0; i < devices->len; i++) { + g_string_append_printf (hint, " + NM_DEVICE=%s", + nm_device_get_iface (NM_DEVICE (g_ptr_array_index (devices, i)))); + } + + g_string_append (nmc->return_text, "\n"); + g_string_append_printf (nmc->return_text, _("Hint: use '%s' to get more details."), hint->str); + g_string_free (hint, TRUE); +} +#else +static void +active_connection_hint (NmCli *nmc, NMActiveConnection *active) +{ +} +#endif + static void check_activated (ActivateConnectionInfo *info) { @@ -2192,6 +2225,7 @@ check_activated (ActivateConnectionInfo *info) if (dev_state == NM_DEVICE_STATE_FAILED || dev_state == NM_DEVICE_STATE_DISCONNECTED) { g_string_printf (nmc->return_text, _("Error: Connection activation failed: %s"), nmc_device_reason_to_string (dev_reason)); + active_connection_hint (nmc, active); nmc->return_value = NMC_RESULT_ERROR_CON_ACTIVATION; activate_connection_info_finish (info); } else { @@ -2201,6 +2235,7 @@ check_activated (ActivateConnectionInfo *info) } else { g_string_printf (nmc->return_text, _("Error: Connection activation failed: %s"), active_connection_state_reason_to_string (ac_reason)); + active_connection_hint (nmc, active); nmc->return_value = NMC_RESULT_ERROR_CON_ACTIVATION; activate_connection_info_finish (info); } @@ -2337,6 +2372,7 @@ activate_connection_cb (GObject *client, GAsyncResult *result, gpointer user_dat g_string_printf (nmc->return_text, _("Error: Connection activation failed: %s"), error->message); g_error_free (error); + active_connection_hint (nmc, active); nmc->return_value = NMC_RESULT_ERROR_CON_ACTIVATION; activate_connection_info_finish (info); } else { |