| SD_BUS_SET_SERVER(3) | sd_bus_set_server | SD_BUS_SET_SERVER(3) |
.SH "NAME" sd_bus_set_server, sd_bus_is_server, sd_bus_get_bus_id,
sd_bus_set_bus_client, sd_bus_is_bus_client, sd_bus_set_monitor,
sd_bus_is_monitor - Configure connection mode for a bus object
.SH "SYNOPSIS"
#include <systemd/sd-bus.h>
.HP 528u int sd_bus_set_server(sd_bus *bus,
int b, sd_id128_t id);
.HP 504u int sd_bus_is_server(sd_bus *bus);
.HP 528u int sd_bus_get_bus_id(sd_bus *bus,
sd_id128_t *id);
.HP 624u int sd_bus_set_bus_client(sd_bus *bus,
int b);
.HP 600u int
sd_bus_is_bus_client(sd_bus *bus);
.HP 552u int sd_bus_set_monitor(sd_bus *bus,
int b);
.HP 528u int sd_bus_is_monitor(sd_bus *bus);
.SH "DESCRIPTION"
.PP 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_randomize(3) can be used to generate
a random id instead.
.PP sd_bus_is_server() returns whether the server mode is enabled for
the given bus object.
.PP 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.
.PP 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_open(3) family of functions or any
of the functions in the sd_bus_default(3) 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_address(3)
followed by sd_bus_start(3), 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.
.PP sd_bus_is_bus_client() returns whether the client mode is
enabled/disabled for the given bus object.
.PP sd_bus_set_monitor() configures the bus object as a D-Bus monitor
object. b enables/disables the monitor mode. If zero, the monitor
mode is disabled. If non-zero, the monitor mode is enabled. When the monitor
mode is enabled, no messages may be sent via the bus object and it may not
expose any objects on the bus. To start monitoring messages, call the
org.freedesktop.DBus.Monitoring.BecomeMonitor method of the D-Bus
daemon and pass a list of matches indicating which messages to intercept.
See The D-Bus specification[1] for more information.
.PP sd_bus_is_monitor() returns whether the monitor mode is
enabled/disabled for the given bus object.
.SH "RETURN VALUE"
.PP On success, sd_bus_set_server(), sd_bus_get_bus_id(),
sd_bus_set_bus_client() and sd_bus_set_monitor() return a
non-negative integer. On failure, they return a negative errno-style error
code.
.PP sd_bus_is_server(), sd_bus_is_bus_client() and
sd_bus_is_monitor() return a positive integer when the server or
client mode is enabled, respectively. Otherwise, they return zero.
.SS "Errors"
.PP Returned errors may indicate the following problems:
.PP -ECHILD
The bus connection has been created in a different process, library or module
instance.
Added in version 246.
.RE
.PP -EPERM
The bus connection has already been started.
Added in version 246.
.RE
.PP -ENOPKG
The bus cannot be resolved.
Added in version 246.
.RE
.PP -EINVAL
A required parameter was NULL or b was zero and id did
not equal SD_ID128_NULL.
Added in version 246.
.RE
.PP -ENOTCONN
The bus is not connected.
Added in version 246.
.RE
.SH "NOTES"
.PP Functions described here are available as a shared library, which can be
compiled against and linked to with the
libsystemd pkg-config(1) file.
.PP All functions listed here are thread-agnostic and only a single thread
may operate on a given object at any given time. Different threads may
access the same object at different times. Multiple independent objects may
be used from different threads in parallel.
.PP The code described here uses getenv(3), which is declared to be
not multi-thread-safe. This means that the code calling the functions
described here must not call setenv(3) from a parallel thread. It is
recommended to only do calls to setenv() from an early phase of the
program when no other threads have been started.
.SH "HISTORY"
.PP sd_bus_set_server(), sd_bus_is_server(),
sd_bus_get_bus_id(), sd_bus_set_bus_client(),
sd_bus_is_bus_client(), sd_bus_set_monitor(), and
sd_bus_is_monitor() were added in version 246.
.SH "SEE ALSO"
.PP systemd(1), sd-bus(3)
NOTES
- 1.
- The D-Bus specification
| systemd 262.2 |