diff options
author | Dan Williams <dcbw@redhat.com> | 2012-10-04 22:26:18 -0500 |
---|---|---|
committer | Dan Williams <dcbw@redhat.com> | 2013-04-08 10:55:37 -0500 |
commit | c9335a497bb3d51ad8a5ed15e3f016c42efbb39d (patch) | |
tree | 8cf6c1a3e570c5cd03775ea29eb0a8125c13eecc /src/nm-dbus-manager.h | |
parent | 496534b9f44486e5ebfdd1475c67ce3bd9505f27 (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.h | 16 |
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 |