1<?xml version='1.0'?> 2<!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" 3 "http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd"> 4<!-- SPDX-License-Identifier: LGPL-2.1-or-later --> 5 6<refentry id="sd_bus_set_address" 7 xmlns:xi="http://www.w3.org/2001/XInclude"> 8 9 <refentryinfo> 10 <title>sd_bus_set_address</title> 11 <productname>systemd</productname> 12 </refentryinfo> 13 14 <refmeta> 15 <refentrytitle>sd_bus_set_address</refentrytitle> 16 <manvolnum>3</manvolnum> 17 </refmeta> 18 19 <refnamediv> 20 <refname>sd_bus_set_address</refname> 21 <refname>sd_bus_get_address</refname> 22 <refname>sd_bus_set_exec</refname> 23 24 <refpurpose>Set or query the address of the bus connection</refpurpose> 25 </refnamediv> 26 27 <refsynopsisdiv> 28 <funcsynopsis> 29 <funcsynopsisinfo>#include <systemd/sd-bus.h></funcsynopsisinfo> 30 31 <funcprototype> 32 <funcdef>int <function>sd_bus_set_address</function></funcdef> 33 <paramdef>sd_bus *<parameter>bus</parameter></paramdef> 34 <paramdef>const char *<parameter>address</parameter></paramdef> 35 </funcprototype> 36 37 <funcprototype> 38 <funcdef>int <function>sd_bus_get_address</function></funcdef> 39 <paramdef>sd_bus *<parameter>bus</parameter></paramdef> 40 <paramdef>const char **<parameter>address</parameter></paramdef> 41 </funcprototype> 42 43 <funcprototype> 44 <funcdef>int <function>sd_bus_set_exec</function></funcdef> 45 <paramdef>sd_bus *<parameter>bus</parameter></paramdef> 46 <paramdef>const char *<parameter>path</parameter></paramdef> 47 <paramdef>char *const *<parameter>argv</parameter></paramdef> 48 </funcprototype> 49 </funcsynopsis> 50 </refsynopsisdiv> 51 52 <refsect1> 53 <title>Description</title> 54 55 <para><function>sd_bus_set_address()</function> configures a list of addresses of bus brokers to try to 56 connect to from a subsequent 57 <citerefentry><refentrytitle>sd_bus_start</refentrytitle><manvolnum>3</manvolnum></citerefentry> call. 58 The argument is a <literal>;</literal>-separated list of addresses to try. Each item must be one of the 59 following: 60 </para> 61 62 <itemizedlist> 63 <listitem> 64 <para>A unix socket address specified as 65 <literal>unix:guid=<replaceable>guid</replaceable>,path=<replaceable>path</replaceable></literal> or 66 <literal>unix:guid=<replaceable>guid</replaceable>,abstract=<replaceable>path</replaceable></literal>. 67 Exactly one of the <varname>path=</varname> and <varname>abstract=</varname> keys must be present, 68 while <varname>guid=</varname> is optional.</para> 69 </listitem> 70 71 <listitem> 72 <para>A TCP socket address specified as 73 <literal>tcp:[guid=<replaceable>guid</replaceable>,][host=<replaceable>host</replaceable>][,port=<replaceable>port</replaceable>][,family=<replaceable>family</replaceable>]</literal>. 74 One or both of the <varname>host=</varname> and <varname>port=</varname> keys must be present, while 75 the rest is optional. <replaceable>family</replaceable> may be either <option>ipv4</option> or 76 <option>ipv6</option>.</para> 77 </listitem> 78 79 <listitem> 80 <para>An executable to spawn specified as 81 <literal>unixexec:guid=<replaceable>guid</replaceable>,path=<replaceable>path</replaceable>,argv1=<replaceable>argument</replaceable>,argv2=<replaceable>argument</replaceable>,...</literal>. 82 The <varname>path=</varname> key must be present, while <varname>guid=</varname> is optional.</para> 83 </listitem> 84 85 <listitem> 86 <para>A machine (container) to connect to specified as 87 <literal>x-machine-unix:guid=<replaceable>guid</replaceable>,machine=<replaceable>machine</replaceable>,pid=<replaceable>pid</replaceable></literal>. 88 Exactly one of the <varname>machine=</varname> and <varname>pid=</varname> keys must be present, 89 while <varname>guid=</varname> is optional. <parameter>machine</parameter> is the name of a local 90 container. See 91 <citerefentry><refentrytitle>machinectl</refentrytitle><manvolnum>1</manvolnum></citerefentry> for 92 more information about the "machine" concept. <literal>machine=.host</literal> may be used to specify 93 the host machine. A connection to the standard system bus socket inside of the specified machine will 94 be created.</para> 95 </listitem> 96 </itemizedlist> 97 98 <para>In all cases, parameter <parameter>guid</parameter> is an identifier of the remote peer, in the 99 syntax accepted by 100 <citerefentry><refentrytitle>sd_id128_from_string</refentrytitle><manvolnum>3</manvolnum></citerefentry>. 101 If specified, the identifier returned by the peer after the connection is established will be checked and 102 the connection will be rejected in case of a mismatch.</para> 103 104 <para>Note that the addresses passed to <function>sd_bus_set_address()</function> may not be verified 105 immediately. If they are invalid, an error may be returned e.g. from a subsequent call to 106 <citerefentry><refentrytitle>sd_bus_start</refentrytitle><manvolnum>3</manvolnum></citerefentry>. 107 </para> 108 109 <para><function>sd_bus_get_address()</function> returns any previously set addresses. In addition to 110 being explicitly set by <function>sd_bus_set_address()</function>, the address will also be set 111 automatically by 112 <citerefentry><refentrytitle>sd_bus_open</refentrytitle><manvolnum>3</manvolnum></citerefentry> and 113 similar calls, based on environment variables or built-in defaults.</para> 114 115 <para><function>sd_bus_set_exec()</function> is a shorthand function for setting a 116 <literal>unixexec</literal> address that spawns the given executable with the given arguments. 117 If <parameter>argv</parameter> is <constant>NULL</constant>, the given executable is spawned 118 without any extra arguments.</para> 119 </refsect1> 120 121 <refsect1> 122 <title>Return Value</title> 123 124 <para>On success, these functions return a non-negative integer. On failure, they return a negative 125 errno-style error code.</para> 126 127 <refsect2> 128 <title>Errors</title> 129 130 <para>Returned errors may indicate the following problems:</para> 131 132 <variablelist> 133 <varlistentry> 134 <term><constant>-EINVAL</constant></term> 135 136 <listitem><para>The input parameters <parameter>bus</parameter> or <parameter>address</parameter> are <constant>NULL</constant>. 137 </para></listitem> 138 </varlistentry> 139 140 <varlistentry> 141 <term><constant>-ENOPKG</constant></term> 142 143 <listitem><para>The bus object <parameter>bus</parameter> could not be resolved.</para> 144 </listitem> 145 </varlistentry> 146 147 <varlistentry> 148 <term><constant>-EPERM</constant></term> 149 150 <listitem><para>The input parameter <parameter>bus</parameter> is in a wrong state 151 (<function>sd_bus_set_address()</function> may only be called once on a newly-created bus object).</para> 152 </listitem> 153 </varlistentry> 154 155 <varlistentry> 156 <term><constant>-ECHILD</constant></term> 157 158 <listitem><para>The bus object <parameter>bus</parameter> was created in a different 159 process.</para> 160 </listitem> 161 </varlistentry> 162 163 <varlistentry> 164 <term><constant>-ENODATA</constant></term> 165 166 <listitem><para>The bus object <parameter>bus</parameter> has no address configured.</para> 167 </listitem> 168 </varlistentry> 169 </variablelist> 170 </refsect2> 171 </refsect1> 172 173 <xi:include href="libsystemd-pkgconfig.xml" /> 174 175 <refsect1> 176 <title>See Also</title> 177 178 <para> 179 <citerefentry><refentrytitle>systemd</refentrytitle><manvolnum>1</manvolnum></citerefentry>, 180 <citerefentry><refentrytitle>sd-bus</refentrytitle><manvolnum>3</manvolnum></citerefentry>, 181 <citerefentry><refentrytitle>sd_bus_new</refentrytitle><manvolnum>3</manvolnum></citerefentry>, 182 <citerefentry><refentrytitle>sd_bus_start</refentrytitle><manvolnum>3</manvolnum></citerefentry>, 183 <citerefentry><refentrytitle>systemd-machined.service</refentrytitle><manvolnum>8</manvolnum></citerefentry>, 184 <citerefentry><refentrytitle>machinectl</refentrytitle><manvolnum>1</manvolnum></citerefentry> 185 </para> 186 </refsect1> 187 188</refentry> 189