summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--libnm/libnm.ver6
-rw-r--r--libnm/nm-client.c62
-rw-r--r--libnm/nm-client.h15
-rw-r--r--libnm/nm-libnm-utils.h2
4 files changed, 85 insertions, 0 deletions
diff --git a/libnm/libnm.ver b/libnm/libnm.ver
index fb5a4f64df..ffd6e3dbd5 100644
--- a/libnm/libnm.ver
+++ b/libnm/libnm.ver
@@ -1652,3 +1652,9 @@ global:
nm_setting_gsm_get_auto_config;
nm_setting_ip_config_get_dhcp_hostname_flags;
} libnm_1_20_0;
+
+libnm_1_24_0 {
+global:
+ nm_client_get_instance_flags;
+ nm_client_instance_flags_get_type;
+} libnm_1_22_0;
diff --git a/libnm/nm-client.c b/libnm/nm-client.c
index b10456e274..6b2844a0d7 100644
--- a/libnm/nm-client.c
+++ b/libnm/nm-client.c
@@ -195,6 +195,7 @@ NM_GOBJECT_PROPERTIES_DEFINE (NMClient,
PROP_DBUS_CONNECTION,
PROP_DBUS_NAME_OWNER,
PROP_VERSION,
+ PROP_INSTANCE_FLAGS,
PROP_STATE,
PROP_STARTUP,
PROP_NM_RUNNING,
@@ -290,6 +291,10 @@ typedef struct {
guint dbsid_nm_vpn_connection_state_changed;
guint dbsid_nm_check_permissions;
+ NMClientInstanceFlags instance_flags:3;
+
+ bool instance_flags_constructed:1;
+
bool udev_inited:1;
bool notify_event_lst_changed:1;
bool check_dbobj_visible_all:1;
@@ -3751,6 +3756,22 @@ _request_wait_finish (NMClient *client,
/*****************************************************************************/
/**
+ * nm_client_get_instance_flags:
+ * @self: the #NMClient instance.
+ *
+ * Returns: the #NMClientInstanceFlags flags.
+ *
+ * Since: 1.24
+ */
+NMClientInstanceFlags
+nm_client_get_instance_flags (NMClient *self)
+{
+ g_return_val_if_fail (NM_IS_CLIENT (self), NM_CLIENT_INSTANCE_FLAGS_NONE);
+
+ return NM_CLIENT_GET_PRIVATE (self)->instance_flags;
+}
+
+/**
* nm_client_get_dbus_connection:
* @client: a #NMClient
*
@@ -6929,6 +6950,9 @@ get_property (GObject *object, guint prop_id,
NMClientPrivate *priv = NM_CLIENT_GET_PRIVATE (object);
switch (prop_id) {
+ case PROP_INSTANCE_FLAGS:
+ g_value_set_uint (value, priv->instance_flags);
+ break;
case PROP_DBUS_CONNECTION:
g_value_set_object (value, priv->dbus_connection);
break;
@@ -7041,8 +7065,27 @@ set_property (GObject *object, guint prop_id,
NMClient *self = NM_CLIENT (object);
NMClientPrivate *priv = NM_CLIENT_GET_PRIVATE (self);
gboolean b;
+ guint v_uint;
switch (prop_id) {
+
+ case PROP_INSTANCE_FLAGS:
+ /* construct */
+
+ v_uint = g_value_get_uint (value);
+ g_return_if_fail (!NM_FLAGS_ANY (v_uint, ~((guint) NM_CLIENT_INSTANCE_FLAGS_ALL)));
+ v_uint &= ((guint) NM_CLIENT_INSTANCE_FLAGS_ALL);
+
+ if (!priv->instance_flags_constructed) {
+ priv->instance_flags_constructed = TRUE;
+ priv->instance_flags = v_uint;
+ nm_assert ((guint) priv->instance_flags == v_uint);
+ } else {
+ /* Later, we may want to implement setting some flags not only at construct time.
+ * For now, that is not implemented and resetting flags afterwards has no effect. */
+ }
+ break;
+
case PROP_DBUS_CONNECTION:
/* construct-only */
priv->dbus_connection = g_value_dup_object (value);
@@ -7476,6 +7519,25 @@ nm_client_class_init (NMClientClass *client_class)
G_PARAM_STATIC_STRINGS);
/**
+ * NMClient:instance-flags:
+ *
+ * #NMClientInstanceFlags for the instance. These affect behavior of #NMClient.
+ * This is a construct property and you may only set the flags during
+ * construction.
+ *
+ * Since: 1.24
+ */
+ obj_properties[PROP_INSTANCE_FLAGS] =
+ g_param_spec_uint (NM_CLIENT_INSTANCE_FLAGS, "", "",
+ 0,
+ G_MAXUINT32,
+ 0,
+ G_PARAM_READABLE |
+ G_PARAM_WRITABLE |
+ G_PARAM_CONSTRUCT |
+ G_PARAM_STATIC_STRINGS);
+
+ /**
* NMClient:dbus-name-owner:
*
* The name owner of the NetworkManager D-Bus service.
diff --git a/libnm/nm-client.h b/libnm/nm-client.h
index 6bff58684e..4dc1a16791 100644
--- a/libnm/nm-client.h
+++ b/libnm/nm-client.h
@@ -15,6 +15,16 @@
G_BEGIN_DECLS
+/**
+ * NMClientInstanceFlags:
+ * @NM_CLIENT_INSTANCE_FLAGS_NONE: special value to indicate no flags.
+ *
+ * Since: 1.24
+ */
+typedef enum { /*< flags >*/
+ NM_CLIENT_INSTANCE_FLAGS_NONE = 0,
+} NMClientInstanceFlags;
+
#define NM_TYPE_CLIENT (nm_client_get_type ())
#define NM_CLIENT(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), NM_TYPE_CLIENT, NMClient))
#define NM_CLIENT_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), NM_TYPE_CLIENT, NMClientClass))
@@ -28,6 +38,7 @@ G_BEGIN_DECLS
#define NM_CLIENT_NM_RUNNING "nm-running"
#define NM_CLIENT_DBUS_CONNECTION "dbus-connection"
#define NM_CLIENT_DBUS_NAME_OWNER "dbus-name-owner"
+#define NM_CLIENT_INSTANCE_FLAGS "instance-flags"
_NM_DEPRECATED_SYNC_WRITABLE_PROPERTY
#define NM_CLIENT_NETWORKING_ENABLED "networking-enabled"
@@ -133,6 +144,10 @@ void nm_client_new_async (GCancellable *cancellable,
NMClient *nm_client_new_finish (GAsyncResult *result,
GError **error);
+
+NM_AVAILABLE_IN_1_24
+NMClientInstanceFlags nm_client_get_instance_flags (NMClient *self);
+
NM_AVAILABLE_IN_1_22
GDBusConnection *nm_client_get_dbus_connection (NMClient *client);
diff --git a/libnm/nm-libnm-utils.h b/libnm/nm-libnm-utils.h
index 304c35f4be..5dea53c682 100644
--- a/libnm/nm-libnm-utils.h
+++ b/libnm/nm-libnm-utils.h
@@ -166,6 +166,8 @@ typedef enum {
/*****************************************************************************/
+#define NM_CLIENT_INSTANCE_FLAGS_ALL ((NMClientInstanceFlags) 0x0)
+
typedef struct {
GType (*get_o_type_fcn) (void);