summaryrefslogtreecommitdiff
path: root/src/nm-dbus-manager.h
diff options
context:
space:
mode:
authorDan Williams <dcbw@redhat.com>2012-10-04 22:26:18 -0500
committerDan Williams <dcbw@redhat.com>2013-04-08 10:55:37 -0500
commitc9335a497bb3d51ad8a5ed15e3f016c42efbb39d (patch)
tree8cf6c1a3e570c5cd03775ea29eb0a8125c13eecc /src/nm-dbus-manager.h
parent496534b9f44486e5ebfdd1475c67ce3bd9505f27 (diff)
core: add a root-only private D-Bus socket
For cases where NM may run without a bus daemon in root-only environments, like an initramfs. For disconnection, since private connection just get a disconnect message instead of NameOwnerChanged signals broadcast by a bus daemon, just synthesize the NameOwnerChanged signals using our fake owner name. It's just easier to do this rather than modify any code that cares about disconnects. Note that the new private socket is only enabled if built with dbus-glib >= 0.100 as there are bugs in previous versions in the implementation of dbus_g_proxy_new_for_peer() which clients must use to talk to the private socket.
Diffstat (limited to 'src/nm-dbus-manager.h')
-rw-r--r--src/nm-dbus-manager.h16
1 files changed, 14 insertions, 2 deletions
diff --git a/src/nm-dbus-manager.h b/src/nm-dbus-manager.h
index f6e47e1494..b0f9f44e25 100644
--- a/src/nm-dbus-manager.h
+++ b/src/nm-dbus-manager.h
@@ -40,8 +40,10 @@ typedef gboolean (* NMDBusSignalHandlerFunc) (DBusConnection * connection,
#define NM_IS_DBUS_MANAGER_CLASS(k) (G_TYPE_CHECK_CLASS_TYPE ((k), NM_TYPE_DBUS_MANAGER))
#define NM_DBUS_MANAGER_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), NM_TYPE_DBUS_MANAGER, NMDBusManagerClass))
-#define NM_DBUS_MANAGER_DBUS_CONNECTION_CHANGED "dbus-connection-changed"
-#define NM_DBUS_MANAGER_NAME_OWNER_CHANGED "name-owner-changed"
+#define NM_DBUS_MANAGER_DBUS_CONNECTION_CHANGED "dbus-connection-changed"
+#define NM_DBUS_MANAGER_NAME_OWNER_CHANGED "name-owner-changed"
+#define NM_DBUS_MANAGER_PRIVATE_CONNECTION_NEW "private-connection-new"
+#define NM_DBUS_MANAGER_PRIVATE_CONNECTION_DISCONNECTED "private-connection-disconnected"
typedef struct {
GObject parent;
@@ -58,6 +60,12 @@ typedef struct {
const char *name,
const char *old_owner,
const char *new_owner);
+
+ void (*private_connection_new) (NMDBusManager *mgr,
+ DBusGConnection *connection);
+
+ void (*private_connection_disconnected) (NMDBusManager *mgr,
+ DBusGConnection *connection);
} NMDBusManagerClass;
GType nm_dbus_manager_get_type (void);
@@ -82,6 +90,10 @@ void nm_dbus_manager_register_object (NMDBusManager *self,
void nm_dbus_manager_unregister_object (NMDBusManager *self, gpointer object);
+void nm_dbus_manager_private_server_register (NMDBusManager *self,
+ const char *path,
+ const char *tag);
+
#if !HAVE_DBUS_GLIB_GMI_GET_CONNECTION
DBusGConnection *dbus_g_method_invocation_get_g_connection (DBusGMethodInvocation *context);
#endif