summary refs log tree commit diff
path: root/src/nm-bus-manager.c
diff options
context:
space:
mode:
authorMichael Biebl <biebl@debian.org>2017-01-17 20:25:09 +0100
committerMichael Biebl <biebl@debian.org>2017-01-17 20:25:09 +0100
commit58f8be580039b0575b197b9573a1c92745d96d30 (patch)
tree2c226233f623a0dcb529be0eb8cdf97e4a2ae0c0 /src/nm-bus-manager.c
parent45cb5bb3c0e6edb887cf69b417fcaf7053814a9b (diff)
New upstream version 1.5.90 upstream/1.5.90
Diffstat (limited to 'src/nm-bus-manager.c')
-rw-r--r--src/nm-bus-manager.c217
1 files changed, 112 insertions, 105 deletions
diff --git a/src/nm-bus-manager.c b/src/nm-bus-manager.c
index 270792ef..ca07e3d9 100644
--- a/src/nm-bus-manager.c
+++ b/src/nm-bus-manager.c
@@ -21,6 +21,8 @@
 
 #include "nm-default.h"
 
+#include "nm-bus-manager.h"
+
 #include <unistd.h>
 #include <sys/stat.h>
 #include <sys/types.h>
@@ -28,39 +30,29 @@
 #include <string.h>
 
 #include "nm-dbus-interface.h"
-#include "nm-bus-manager.h"
 #include "nm-core-internal.h"
 #include "nm-dbus-compat.h"
 #include "nm-exported-object.h"
 #include "NetworkManagerUtils.h"
 
-#define _NMLOG_DOMAIN       LOGD_CORE
-#define _NMLOG_PREFIX_NAME  "bus-manager"
-#define _NMLOG(level, ...) \
-    G_STMT_START { \
-        nm_log ((level), _NMLOG_DOMAIN, \
-                "%s" _NM_UTILS_MACRO_FIRST(__VA_ARGS__), \
-                _NMLOG_PREFIX_NAME": " \
-                _NM_UTILS_MACRO_REST(__VA_ARGS__)); \
-    } G_STMT_END
+/* The base path for our GDBusObjectManagerServers.  They do not contain
+ * "NetworkManager" because GDBusObjectManagerServer requires that all
+ * exported objects be *below* the base path, and eg the Manager object
+ * is the base path already.
+ */
+#define OBJECT_MANAGER_SERVER_BASE_PATH "/org/freedesktop"
+
+/*****************************************************************************/
 
 enum {
 	DBUS_CONNECTION_CHANGED = 0,
 	PRIVATE_CONNECTION_NEW,
 	PRIVATE_CONNECTION_DISCONNECTED,
-	NUMBER_OF_SIGNALS
+	NUMBER_OF_SIGNALS,
 };
 
 static guint signals[NUMBER_OF_SIGNALS];
 
-G_DEFINE_TYPE(NMBusManager, nm_bus_manager, G_TYPE_OBJECT)
-
-#define NM_BUS_MANAGER_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), \
-                                        NM_TYPE_BUS_MANAGER, \
-                                        NMBusManagerPrivate))
-
-typedef struct _PrivateServer PrivateServer;
-
 typedef struct {
 	GDBusConnection *connection;
 	GDBusObjectManagerServer *obj_manager;
@@ -74,16 +66,31 @@ typedef struct {
 	guint reconnect_id;
 } NMBusManagerPrivate;
 
+struct _NMBusManager {
+	GObject parent;
+	NMBusManagerPrivate _priv;
+};
+
+struct _NMBusManagerClass {
+	GObjectClass parent;
+};
+
+G_DEFINE_TYPE(NMBusManager, nm_bus_manager, G_TYPE_OBJECT)
+
+#define NM_BUS_MANAGER_GET_PRIVATE(self) _NM_GET_PRIVATE (self, NMBusManager, NM_IS_BUS_MANAGER)
+
+/*****************************************************************************/
+
+#define _NMLOG_DOMAIN      LOGD_CORE
+#define _NMLOG(level, ...) __NMLOG_DEFAULT (level, _NMLOG_DOMAIN, "bus-manager", __VA_ARGS__)
+
+/*****************************************************************************/
+
 static gboolean nm_bus_manager_init_bus (NMBusManager *self);
 static void nm_bus_manager_cleanup (NMBusManager *self);
 static void start_reconnection_timeout (NMBusManager *self);
 
-/* The base path for our GDBusObjectManagerServers.  They do not contain
- * "NetworkManager" because GDBusObjectManagerServer requires that all
- * exported objects be *below* the base path, and eg the Manager object
- * is the base path already.
- */
-#define OBJECT_MANAGER_SERVER_BASE_PATH "/org/freedesktop"
+/*****************************************************************************/
 
 NM_DEFINE_SINGLETON_REGISTER (NMBusManager);
 
@@ -113,9 +120,9 @@ nm_bus_manager_setup (NMBusManager *instance)
 	_LOGD ("setup %s singleton (%p)", "NMBusManager", singleton_instance);
 }
 
-/**************************************************************/
+/*****************************************************************************/
 
-struct _PrivateServer {
+typedef struct {
 	const char *tag;
 	GQuark detail;
 	char *address;
@@ -133,7 +140,7 @@ struct _PrivateServer {
 	GHashTable *obj_managers;
 
 	NMBusManager *manager;
-};
+} PrivateServer;
 
 typedef struct {
 	GDBusConnection *connection;
@@ -382,7 +389,7 @@ private_server_get_connection_by_owner (PrivateServer *s, const char *owner)
 	return NULL;
 }
 
-/**************************************************************/
+/*****************************************************************************/
 
 static gboolean
 _bus_get_unix_pid (NMBusManager *self,
@@ -616,82 +623,7 @@ nm_bus_manager_get_unix_user (NMBusManager *self,
 	return TRUE;
 }
 
-/**************************************************************/
-
-static void
-nm_bus_manager_init (NMBusManager *self)
-{
-	NMBusManagerPrivate *priv = NM_BUS_MANAGER_GET_PRIVATE (self);
-
-	priv->obj_manager = g_dbus_object_manager_server_new (OBJECT_MANAGER_SERVER_BASE_PATH);
-}
-
-static void
-nm_bus_manager_dispose (GObject *object)
-{
-	NMBusManager *self = NM_BUS_MANAGER (object);
-	NMBusManagerPrivate *priv = NM_BUS_MANAGER_GET_PRIVATE (self);
-	GList *exported, *iter;
-
-	g_slist_free_full (priv->private_servers, private_server_free);
-	priv->private_servers = NULL;
-
-	nm_bus_manager_cleanup (self);
-
-	if (priv->obj_manager) {
-		/* The ObjectManager owns the last reference to many exported
-		 * objects, and when that reference is dropped the objects unregister
-		 * themselves via nm_bus_manager_unregister_object().  By that time
-		 * priv->obj_manager is already NULL and that prints warnings.  Unregister
-		 * them before clearing the ObjectManager instead.
-		 */
-		exported = g_dbus_object_manager_get_objects ((GDBusObjectManager *) priv->obj_manager);
-		for (iter = exported; iter; iter = iter->next) {
-			nm_bus_manager_unregister_object (self, iter->data);
-			g_object_unref (iter->data);
-		}
-		g_list_free (exported);
-		g_clear_object (&priv->obj_manager);
-	}
-
-	nm_clear_g_source (&priv->reconnect_id);
-
-	G_OBJECT_CLASS (nm_bus_manager_parent_class)->dispose (object);
-}
-
-static void
-nm_bus_manager_class_init (NMBusManagerClass *klass)
-{
-	GObjectClass *object_class = G_OBJECT_CLASS (klass);
-
-	g_type_class_add_private (klass, sizeof (NMBusManagerPrivate));
-
-	object_class->dispose = nm_bus_manager_dispose;
-
-	signals[DBUS_CONNECTION_CHANGED] =
-		g_signal_new (NM_BUS_MANAGER_DBUS_CONNECTION_CHANGED,
-		              G_OBJECT_CLASS_TYPE (object_class),
-		              G_SIGNAL_RUN_LAST,
-		              G_STRUCT_OFFSET (NMBusManagerClass, dbus_connection_changed),
-		              NULL, NULL, NULL,
-		              G_TYPE_NONE, 1, G_TYPE_POINTER);
-
-	signals[PRIVATE_CONNECTION_NEW] =
-		g_signal_new (NM_BUS_MANAGER_PRIVATE_CONNECTION_NEW,
-		              G_OBJECT_CLASS_TYPE (object_class),
-		              G_SIGNAL_RUN_LAST | G_SIGNAL_DETAILED,
-		              0, NULL, NULL, NULL,
-		              G_TYPE_NONE, 2, G_TYPE_DBUS_CONNECTION, G_TYPE_DBUS_OBJECT_MANAGER_SERVER);
-
-	signals[PRIVATE_CONNECTION_DISCONNECTED] =
-		g_signal_new (NM_BUS_MANAGER_PRIVATE_CONNECTION_DISCONNECTED,
-		              G_OBJECT_CLASS_TYPE (object_class),
-		              G_SIGNAL_RUN_LAST | G_SIGNAL_DETAILED,
-		              G_STRUCT_OFFSET (NMBusManagerClass, private_connection_disconnected),
-		              NULL, NULL, NULL,
-		              G_TYPE_NONE, 1, G_TYPE_POINTER);
-}
-
+/*****************************************************************************/
 
 /* Only cleanup a specific dbus connection, not all our private data */
 static void
@@ -1005,3 +937,78 @@ nm_bus_manager_new_proxy (NMBusManager *self,
 	}
 	return proxy;
 }
+
+/*****************************************************************************/
+
+static void
+nm_bus_manager_init (NMBusManager *self)
+{
+	NMBusManagerPrivate *priv = NM_BUS_MANAGER_GET_PRIVATE (self);
+
+	priv->obj_manager = g_dbus_object_manager_server_new (OBJECT_MANAGER_SERVER_BASE_PATH);
+}
+
+static void
+dispose (GObject *object)
+{
+	NMBusManager *self = NM_BUS_MANAGER (object);
+	NMBusManagerPrivate *priv = NM_BUS_MANAGER_GET_PRIVATE (self);
+	GList *exported, *iter;
+
+	g_slist_free_full (priv->private_servers, private_server_free);
+	priv->private_servers = NULL;
+
+	nm_bus_manager_cleanup (self);
+
+	if (priv->obj_manager) {
+		/* The ObjectManager owns the last reference to many exported
+		 * objects, and when that reference is dropped the objects unregister
+		 * themselves via nm_bus_manager_unregister_object().  By that time
+		 * priv->obj_manager is already NULL and that prints warnings.  Unregister
+		 * them before clearing the ObjectManager instead.
+		 */
+		exported = g_dbus_object_manager_get_objects ((GDBusObjectManager *) priv->obj_manager);
+		for (iter = exported; iter; iter = iter->next) {
+			nm_bus_manager_unregister_object (self, iter->data);
+			g_object_unref (iter->data);
+		}
+		g_list_free (exported);
+		g_clear_object (&priv->obj_manager);
+	}
+
+	nm_clear_g_source (&priv->reconnect_id);
+
+	G_OBJECT_CLASS (nm_bus_manager_parent_class)->dispose (object);
+}
+
+static void
+nm_bus_manager_class_init (NMBusManagerClass *klass)
+{
+	GObjectClass *object_class = G_OBJECT_CLASS (klass);
+
+	object_class->dispose = dispose;
+
+	signals[DBUS_CONNECTION_CHANGED] =
+	    g_signal_new (NM_BUS_MANAGER_DBUS_CONNECTION_CHANGED,
+	                  G_OBJECT_CLASS_TYPE (object_class),
+	                  G_SIGNAL_RUN_LAST,
+	                  0, NULL, NULL, NULL,
+	                  G_TYPE_NONE, 1, G_TYPE_POINTER);
+
+	signals[PRIVATE_CONNECTION_NEW] =
+	    g_signal_new (NM_BUS_MANAGER_PRIVATE_CONNECTION_NEW,
+	                  G_OBJECT_CLASS_TYPE (object_class),
+	                  G_SIGNAL_RUN_LAST | G_SIGNAL_DETAILED,
+	                  0, NULL, NULL, NULL,
+	                  G_TYPE_NONE, 2, G_TYPE_DBUS_CONNECTION, G_TYPE_DBUS_OBJECT_MANAGER_SERVER);
+
+	signals[PRIVATE_CONNECTION_DISCONNECTED] =
+	    g_signal_new (NM_BUS_MANAGER_PRIVATE_CONNECTION_DISCONNECTED,
+	                  G_OBJECT_CLASS_TYPE (object_class),
+	                  G_SIGNAL_RUN_LAST | G_SIGNAL_DETAILED,
+	                  0, NULL, NULL, NULL,
+	                  G_TYPE_NONE, 1, G_TYPE_POINTER);
+}
+
+
+