# sd_bus_set_server

## 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
    


## SYNOPSIS



           **#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_**);**
    
           **int sd_bus_set_monitor(sd_bus ***_bus_**, int** _b_**);**
    
           **int sd_bus_is_monitor(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_randomize(3) 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_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.
    
           **sd_bus_is_bus_client()** returns whether the client mode is
           enabled/disabled for the given bus object.
    
           **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.**sd_bus_is_monitor()** returns whether the monitor mode is
           enabled/disabled for the given bus object.
    


## RETURN VALUE



           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.
    
           **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.
    
       **Errors**
           Returned errors may indicate the following problems:
    
           **-ECHILD**
               The bus connection has been created in a different process,
               library or module instance.
    
               Added in version 246.
    
           **-EPERM**
               The bus connection has already been started.
    
               Added in version 246.
    
           **-ENOPKG**
               The bus cannot be resolved.
    
               Added in version 246.
    
           **-EINVAL**
               A required parameter was **NULL** or _b_ was zero and _id_ did not
               equal **SD_ID128_NULL**.
    
               Added in version 246.
    
           **-ENOTCONN**
               The bus is not connected.
    
               Added in version 246.
    


## NOTES



           Functions described here are available as a shared library, which
           can be compiled against and linked to with the
           **libsystemd pkg-config**(1) file.
    
           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.
    


## NOTES



            1. The D-Bus specification
               https://dbus.freedesktop.org/doc/dbus-specification.html#bus-messages-become-monitor
    


* * *