summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJiří Klimeš <jklimes@redhat.com>2014-10-01 11:02:16 +0200
committerJiří Klimeš <jklimes@redhat.com>2014-10-01 11:53:07 +0200
commit7e67fd2b2499d735504d49fd0b16402197847df4 (patch)
tree2bfc166ddbfcbfae50e6d1f983dbd228651996dc
parent8919a8572a2af2c70adff9992b56c464195fa367 (diff)
downloadNetworkManager-7e67fd2b2499d735504d49fd0b16402197847df4.tar.gz
libnm: return errors in nm_client_networking_set_enabled()
and do not print an error in the library. The caller can decide what to do on an error.
-rw-r--r--clients/cli/general.c2
-rw-r--r--libnm/nm-client.c33
-rw-r--r--libnm/nm-client.h6
-rw-r--r--libnm/tests/test-nm-client.c2
4 files changed, 24 insertions, 19 deletions
diff --git a/clients/cli/general.c b/clients/cli/general.c
index b9adb3fe8e..381a330ca2 100644
--- a/clients/cli/general.c
+++ b/clients/cli/general.c
@@ -777,7 +777,7 @@ do_networking (NmCli *nmc, int argc, char **argv)
}
nmc->get_client (nmc); /* create NMClient */
- nm_client_networking_set_enabled (nmc->client, enable_flag);
+ nm_client_networking_set_enabled (nmc->client, enable_flag, NULL);
} else {
usage_networking ();
g_string_printf (nmc->return_text, _("Error: 'networking' command '%s' is not valid."), *argv);
diff --git a/libnm/nm-client.c b/libnm/nm-client.c
index 175e5008a4..43165be95a 100644
--- a/libnm/nm-client.c
+++ b/libnm/nm-client.c
@@ -16,7 +16,7 @@
* Boston, MA 02110-1301 USA.
*
* Copyright 2007 - 2008 Novell, Inc.
- * Copyright 2007 - 2013 Red Hat, Inc.
+ * Copyright 2007 - 2014 Red Hat, Inc.
*/
#include <string.h>
@@ -1214,27 +1214,30 @@ nm_client_networking_get_enabled (NMClient *client)
* nm_client_networking_set_enabled:
* @client: a #NMClient
* @enabled: %TRUE to set networking enabled, %FALSE to set networking disabled
+ * @error: (allow-none): return location for a #GError, or %NULL
*
* Enables or disables networking. When networking is disabled, all controlled
* interfaces are disconnected and deactivated. When networking is enabled,
* all controlled interfaces are available for activation.
+ *
+ * Returns: %TRUE on success, %FALSE otherwise
**/
-void
-nm_client_networking_set_enabled (NMClient *client, gboolean enable)
+gboolean
+nm_client_networking_set_enabled (NMClient *client, gboolean enable, GError **error)
{
- GError *err = NULL;
-
- g_return_if_fail (NM_IS_CLIENT (client));
-
- if (!nm_client_get_nm_running (client))
- return;
+ g_return_val_if_fail (NM_IS_CLIENT (client), FALSE);
- if (!nmdbus_manager_call_enable_sync (NM_CLIENT_GET_PRIVATE (client)->manager_proxy,
- enable,
- NULL, &err)) {
- g_warning ("Error enabling/disabling networking: %s", err->message);
- g_error_free (err);
+ if (!nm_client_get_nm_running (client)) {
+ g_set_error_literal (error,
+ NM_CLIENT_ERROR,
+ NM_CLIENT_ERROR_MANAGER_NOT_RUNNING,
+ "NetworkManager is not running");
+ return FALSE;
}
+
+ return nmdbus_manager_call_enable_sync (NM_CLIENT_GET_PRIVATE (client)->manager_proxy,
+ enable,
+ NULL, error);
}
/**
@@ -1969,7 +1972,7 @@ set_property (GObject *object, guint prop_id,
case PROP_NETWORKING_ENABLED:
b = g_value_get_boolean (value);
if (priv->networking_enabled != b) {
- nm_client_networking_set_enabled (NM_CLIENT (object), b);
+ nm_client_networking_set_enabled (NM_CLIENT (object), b, NULL);
/* Let the property value flip when we get the change signal from NM */
}
break;
diff --git a/libnm/nm-client.h b/libnm/nm-client.h
index 76f59f1f28..ccd7a6db95 100644
--- a/libnm/nm-client.h
+++ b/libnm/nm-client.h
@@ -16,7 +16,7 @@
* Boston, MA 02110-1301 USA.
*
* Copyright 2007 - 2008 Novell, Inc.
- * Copyright 2007 - 2012 Red Hat, Inc.
+ * Copyright 2007 - 2014 Red Hat, Inc.
*/
#ifndef __NM_CLIENT_H__
@@ -212,7 +212,9 @@ gboolean nm_client_deactivate_connection_finish (NMClient *client,
GError **error);
gboolean nm_client_networking_get_enabled (NMClient *client);
-void nm_client_networking_set_enabled (NMClient *client, gboolean enabled);
+gboolean nm_client_networking_set_enabled (NMClient *client,
+ gboolean enabled,
+ GError **error);
gboolean nm_client_wireless_get_enabled (NMClient *client);
void nm_client_wireless_set_enabled (NMClient *client, gboolean enabled);
diff --git a/libnm/tests/test-nm-client.c b/libnm/tests/test-nm-client.c
index 92de6f87cb..8f370df5de 100644
--- a/libnm/tests/test-nm-client.c
+++ b/libnm/tests/test-nm-client.c
@@ -806,7 +806,7 @@ test_client_nm_running (void)
g_assert (!nm_client_networking_get_enabled (client1));
/* This will have no effect, but it shouldn't cause any warnings either. */
- nm_client_networking_set_enabled (client1, TRUE);
+ nm_client_networking_set_enabled (client1, TRUE, NULL);
g_assert (!nm_client_networking_get_enabled (client1));
/* OTOH, this should result in an error */