summaryrefslogtreecommitdiff
path: root/libnm-glib
diff options
context:
space:
mode:
authorJiří Klimeš <jklimes@redhat.com>2012-05-14 17:09:36 +0200
committerJiří Klimeš <jklimes@redhat.com>2012-05-22 18:30:53 +0200
commite0329b44c4433e41745f0068f06d4083006ec9df (patch)
tree437907f23f5b8defeee4257d7ea6fce60ba4e6c4 /libnm-glib
parentd1cbeebfc624cdc3ad3fb4131c9ef9c1a508e7b1 (diff)
downloadNetworkManager-e0329b44c4433e41745f0068f06d4083006ec9df.tar.gz
libnm-glib: add 'autoconnect' property for devices
Diffstat (limited to 'libnm-glib')
-rw-r--r--libnm-glib/libnm-glib.ver2
-rw-r--r--libnm-glib/nm-device.c68
-rw-r--r--libnm-glib/nm-device.h3
3 files changed, 73 insertions, 0 deletions
diff --git a/libnm-glib/libnm-glib.ver b/libnm-glib/libnm-glib.ver
index 7de80c7901..f2e5cb376d 100644
--- a/libnm-glib/libnm-glib.ver
+++ b/libnm-glib/libnm-glib.ver
@@ -89,6 +89,7 @@ global:
nm_device_ethernet_new;
nm_device_filter_connections;
nm_device_get_active_connection;
+ nm_device_get_autoconnect;
nm_device_get_capabilities;
nm_device_get_device_type;
nm_device_get_dhcp4_config;
@@ -125,6 +126,7 @@ global:
nm_device_olpc_mesh_get_hw_address;
nm_device_olpc_mesh_get_type;
nm_device_olpc_mesh_new;
+ nm_device_set_autoconnect;
nm_device_vlan_error_get_type;
nm_device_vlan_error_quark;
nm_device_vlan_get_carrier;
diff --git a/libnm-glib/nm-device.c b/libnm-glib/nm-device.c
index 6f79d81e52..9656deaabd 100644
--- a/libnm-glib/nm-device.c
+++ b/libnm-glib/nm-device.c
@@ -71,6 +71,7 @@ typedef struct {
NMDeviceCapabilities capabilities;
gboolean managed;
gboolean firmware_missing;
+ gboolean autoconnect;
NMIP4Config *ip4_config;
NMDHCP4Config *dhcp4_config;
NMIP6Config *ip6_config;
@@ -92,6 +93,7 @@ enum {
PROP_DRIVER,
PROP_CAPABILITIES,
PROP_MANAGED,
+ PROP_AUTOCONNECT,
PROP_FIRMWARE_MISSING,
PROP_IP4_CONFIG,
PROP_DHCP4_CONFIG,
@@ -154,6 +156,7 @@ register_properties (NMDevice *device)
{ NM_DEVICE_DRIVER, &priv->driver },
{ NM_DEVICE_CAPABILITIES, &priv->capabilities },
{ NM_DEVICE_MANAGED, &priv->managed },
+ { NM_DEVICE_AUTOCONNECT, &priv->autoconnect },
{ NM_DEVICE_FIRMWARE_MISSING, &priv->firmware_missing },
{ NM_DEVICE_IP4_CONFIG, &priv->ip4_config, NULL, NM_TYPE_IP4_CONFIG },
{ NM_DEVICE_DHCP4_CONFIG, &priv->dhcp4_config, NULL, NM_TYPE_DHCP4_CONFIG },
@@ -326,6 +329,9 @@ get_property (GObject *object,
case PROP_MANAGED:
g_value_set_boolean (value, nm_device_get_managed (device));
break;
+ case PROP_AUTOCONNECT:
+ g_value_set_boolean (value, nm_device_get_autoconnect (device));
+ break;
case PROP_FIRMWARE_MISSING:
g_value_set_boolean (value, nm_device_get_firmware_missing (device));
break;
@@ -375,12 +381,18 @@ set_property (GObject *object,
{
NMDevice *self = NM_DEVICE (object);
NMDevicePrivate *priv = NM_DEVICE_GET_PRIVATE (self);
+ gboolean b;
switch (prop_id) {
case PROP_DEVICE_TYPE:
/* Construct only */
priv->device_type = g_value_get_uint (value);
break;
+ case PROP_AUTOCONNECT:
+ b = g_value_get_boolean (value);
+ if (priv->autoconnect != b)
+ nm_device_set_autoconnect (NM_DEVICE (object), b);
+ break;
default:
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
break;
@@ -500,6 +512,19 @@ nm_device_class_init (NMDeviceClass *device_class)
G_PARAM_READABLE));
/**
+ * NMDevice:autoconnect:
+ *
+ * Whether the device can auto-activate a connection.
+ **/
+ g_object_class_install_property
+ (object_class, PROP_AUTOCONNECT,
+ g_param_spec_boolean (NM_DEVICE_AUTOCONNECT,
+ "Autoconnect",
+ "Autoconnect",
+ TRUE,
+ G_PARAM_READWRITE));
+
+ /**
* NMDevice:firmware-missing:
*
* When %TRUE indicates the device is likely missing firmware required
@@ -918,6 +943,49 @@ nm_device_get_managed (NMDevice *device)
}
/**
+ * nm_device_get_autoconnect:
+ * @device: a #NMDevice
+ *
+ * Whether the #NMDevice can be autoconnected.
+ *
+ * Returns: %TRUE if the device is allowed to be autoconnected
+ **/
+gboolean
+nm_device_get_autoconnect (NMDevice *device)
+{
+ g_return_val_if_fail (NM_IS_DEVICE (device), FALSE);
+
+ _nm_object_ensure_inited (NM_OBJECT (device));
+ return NM_DEVICE_GET_PRIVATE (device)->autoconnect;
+}
+
+/**
+ * nm_device_set_autoconnect:
+ * @device: a #NMDevice
+ * @autoconnect: %TRUE to enable autoconnecting
+ *
+ * Enables or disables automatic activation of the #NMDevice.
+ **/
+void
+nm_device_set_autoconnect (NMDevice *device, gboolean autoconnect)
+{
+ GValue value = {0,};
+
+ g_return_if_fail (NM_IS_DEVICE (device));
+
+ g_value_init (&value, G_TYPE_BOOLEAN);
+ g_value_set_boolean (&value, autoconnect);
+
+
+ NM_DEVICE_GET_PRIVATE (device)->autoconnect = autoconnect;
+
+ _nm_object_set_property (NM_OBJECT (device),
+ NM_DBUS_INTERFACE_DEVICE,
+ "Autoconnect",
+ &value);
+}
+
+/**
* nm_device_get_firmware_missing:
* @device: a #NMDevice
*
diff --git a/libnm-glib/nm-device.h b/libnm-glib/nm-device.h
index 50301dc93a..63049c65e0 100644
--- a/libnm-glib/nm-device.h
+++ b/libnm-glib/nm-device.h
@@ -52,6 +52,7 @@ G_BEGIN_DECLS
#define NM_DEVICE_DRIVER "driver"
#define NM_DEVICE_CAPABILITIES "capabilities"
#define NM_DEVICE_MANAGED "managed"
+#define NM_DEVICE_AUTOCONNECT "autoconnect"
#define NM_DEVICE_FIRMWARE_MISSING "firmware-missing"
#define NM_DEVICE_IP4_CONFIG "ip4-config"
#define NM_DEVICE_DHCP4_CONFIG "dhcp4-config"
@@ -100,6 +101,8 @@ const char * nm_device_get_udi (NMDevice *device);
const char * nm_device_get_driver (NMDevice *device);
NMDeviceCapabilities nm_device_get_capabilities (NMDevice *device);
gboolean nm_device_get_managed (NMDevice *device);
+gboolean nm_device_get_autoconnect (NMDevice *device);
+void nm_device_set_autoconnect (NMDevice *device, gboolean autoconnect);
gboolean nm_device_get_firmware_missing (NMDevice *device);
NMIP4Config * nm_device_get_ip4_config (NMDevice *device);
NMDHCP4Config * nm_device_get_dhcp4_config (NMDevice *device);