sd_bus_set_server
systemd
sd_bus_set_server
3
sd_bus_set_server
sd_bus_is_server
sd_bus_get_bus_id
sd_bus_set_bus_client
sd_bus_is_bus_client
Configure direct connection mode for a bus object
#include <systemd/sd-bus.h>
int sd_bus_set_server
sd_bus *bus
int b
sd_id128_t id
int sd_bus_is_server
sd_bus *bus
int sd_bus_get_bus_id
sd_bus *bus
sd_id128_t *id
int sd_bus_set_bus_client
sd_bus *bus
int b
int sd_bus_is_bus_client
sd_bus *bus
Description
sd_bus_set_server() configures the bus object as a server for direct D-Bus
connections. b enables/disables the server mode. If zero, the server mode is
disabled. Otherwise, the server mode is enabled. Configuring a bus object as a server is required to
allow establishing direct connections between two peers without going via the D-Bus daemon.
id must contain a 128-bit integer id for the server. If clients add a guid field
to their D-Bus address string, the server id must match this guid or the D-Bus authentication handshake
will fail. If no specific id is defined for the server,
sd_id128_randomize3
can be used to generate a random id instead.
sd_bus_is_server() returns whether the server mode is enabled for the given
bus object.
sd_bus_get_bus_id() stores the D-Bus server id configured using
sd_bus_set_server() (for server bus objects) or received during D-Bus authentication
(for client bus objects) in id.
sd_bus_set_bus_client() configures the bus object as a D-Bus daemon client.
b enables/disables the client mode. If zero, the client mode is disabled and the
bus object should connect directly to a D-Bus server. Otherwise, the client mode is enabled and the bus
object should connect to a D-Bus daemon. When connecting to an existing bus using any of the functions in
the sd_bus_open3
family of functions or any of the functions in the
sd_bus_default3 family
of functions, the bus object is automatically configured as a bus client. However, when connecting to a
D-Bus daemon by calling
sd_bus_set_address3
followed by
sd_bus_start3, the bus
object should be manually configured as a bus client using sd_bus_set_bus_client().
By default, a bus object is not configured as a D-Bus daemon client.
sd_bus_is_bus_client() returns whether the client mode is enabled/disabled for
the given bus object.
Return Value
On success, sd_bus_set_server(),
sd_bus_get_bus_id() and sd_bus_set_bus_client() return a
non-negative integer. On failure, they return a negative errno-style error code.
sd_bus_is_server() and sd_bus_is_bus_client() return a
positive integer when the server or client mode is enabled, respectively. Otherwise, they return zero.
Errors
Returned errors may indicate the following problems:
-ECHILD
The bus connection has been created in a different process.
-EPERM
The bus connection has already been started.
-ENOPKG
The bus cannot be resolved.
-EINVAL
A required parameter was NULL or
b was zero and id did not equal
SD_ID128_NULL.
-ENOTCONN
The bus is not connected.
See Also
systemd1,
sd-bus3