summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDan Williams <dcbw@redhat.com>2010-05-22 11:27:05 -0700
committerDan Williams <dcbw@redhat.com>2010-05-22 11:28:07 -0700
commit00eefd8d43427a70f99d032c70a55daf5d77735d (patch)
tree4f759fbe48262ce1b16080b7e2744a5246e12c3e
parent5ca1a9d546be81b54e57d525b54ff92597de6115 (diff)
downloadNetworkManager-00eefd8d43427a70f99d032c70a55daf5d77735d.tar.gz
libnm-glib: add nm_client_networking_get_enabled() (rh #589108) (bgo #346615)
Forgot this in the last commit.
-rw-r--r--libnm-glib/nm-client.c47
1 files changed, 47 insertions, 0 deletions
diff --git a/libnm-glib/nm-client.c b/libnm-glib/nm-client.c
index 4a235ea238..4797f1c092 100644
--- a/libnm-glib/nm-client.c
+++ b/libnm-glib/nm-client.c
@@ -58,6 +58,7 @@ typedef struct {
GPtrArray *devices;
GPtrArray *active_connections;
+ gboolean have_networking_enabled;
gboolean networking_enabled;
gboolean wireless_enabled;
gboolean wireless_hw_enabled;
@@ -94,11 +95,28 @@ static void client_device_added_proxy (DBusGProxy *proxy, char *path, gpointer u
static void client_device_removed_proxy (DBusGProxy *proxy, char *path, gpointer user_data);
static void
+handle_net_enabled_changed (GObject *object,
+ GParamSpec *pspec,
+ GValue *value,
+ gpointer user_data)
+{
+ NMClientPrivate *priv = NM_CLIENT_GET_PRIVATE (object);
+
+ /* Update the cache flag when it changes */
+ priv->have_networking_enabled = TRUE;
+}
+
+static void
nm_client_init (NMClient *client)
{
NMClientPrivate *priv = NM_CLIENT_GET_PRIVATE (client);
priv->state = NM_STATE_UNKNOWN;
+
+ g_signal_connect (client,
+ "notify::" NM_CLIENT_NETWORKING_ENABLED,
+ G_CALLBACK (handle_net_enabled_changed),
+ client);
}
static void
@@ -919,6 +937,35 @@ nm_client_get_state (NMClient *client)
}
/**
+ * nm_client_networking_get_enabled:
+ * @client: a #NMClient
+ *
+ * Whether networking is enabled or disabled.
+ *
+ * Returns: %TRUE if networking is disabled, %FALSE if networking is enabled
+ **/
+gboolean
+nm_client_networking_get_enabled (NMClient *client)
+{
+ NMClientPrivate *priv;
+
+ g_return_val_if_fail (NM_IS_CLIENT (client), FALSE);
+
+ priv = NM_CLIENT_GET_PRIVATE (client);
+ if (!priv->have_networking_enabled) {
+ priv = NM_CLIENT_GET_PRIVATE (client);
+ if (!priv->networking_enabled) {
+ priv->networking_enabled = _nm_object_get_boolean_property (NM_OBJECT (client),
+ NM_DBUS_INTERFACE,
+ "NetworkingEnabled");
+ priv->have_networking_enabled = TRUE;
+ }
+ }
+
+ return priv->networking_enabled;
+}
+
+/**
* nm_client_networking_set_enabled:
* @client: a #NMClient
* @enabled: %TRUE to set networking enabled, %FALSE to set networking disabled