]> git.ipfire.org Git - thirdparty/systemd.git/blame - man/sd_bus_negotiate_fds.xml
verify: use manager_load_startable_unit_or_warn() to load units for verification
[thirdparty/systemd.git] / man / sd_bus_negotiate_fds.xml
CommitLineData
3802a3d3 1<?xml version='1.0'?> <!--*- Mode: nxml; nxml-child-indent: 2; indent-tabs-mode: nil -*-->
ce236b57 2<!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook XML V4.2//EN"
12b42c76 3"http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd">
ce236b57
LP
4
5<!--
572eb058
ZJS
6 SPDX-License-Identifier: LGPL-2.1+
7
5de0ccff 8 This file is part of systemd.
ce236b57 9
5de0ccff 10 Copyright 2014 Lennart Poettering
ce236b57 11
5de0ccff
ZJS
12 systemd is free software; you can redistribute it and/or modify it
13 under the terms of the GNU Lesser General Public License as published by
14 the Free Software Foundation; either version 2.1 of the License, or
15 (at your option) any later version.
ce236b57 16
5de0ccff
ZJS
17 systemd is distributed in the hope that it will be useful, but
18 WITHOUT ANY WARRANTY; without even the implied warranty of
19 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
20 Lesser General Public License for more details.
ce236b57 21
5de0ccff
ZJS
22 You should have received a copy of the GNU Lesser General Public License
23 along with systemd; If not, see <http://www.gnu.org/licenses/>.
ce236b57
LP
24-->
25
48f69d8f 26<refentry id="sd_bus_negotiate_fds">
ce236b57
LP
27
28 <refentryinfo>
faae655d 29 <title>sd_bus_negotiate_fds</title>
ce236b57
LP
30 <productname>systemd</productname>
31
32 <authorgroup>
33 <author>
34 <contrib>Developer</contrib>
35 <firstname>Lennart</firstname>
36 <surname>Poettering</surname>
37 <email>lennart@poettering.net</email>
38 </author>
39 </authorgroup>
40 </refentryinfo>
41
42 <refmeta>
43 <refentrytitle>sd_bus_negotiate_fds</refentrytitle>
44 <manvolnum>3</manvolnum>
45 </refmeta>
46
47 <refnamediv>
48 <refname>sd_bus_negotiate_fds</refname>
02855643 49 <refname>sd_bus_negotiate_timestamp</refname>
ce236b57
LP
50 <refname>sd_bus_negotiate_creds</refname>
51
52 <refpurpose>Control feature negotiation on bus connections</refpurpose>
53 </refnamediv>
54
55 <refsynopsisdiv>
56 <funcsynopsis>
57 <funcsynopsisinfo>#include &lt;systemd/sd-bus.h&gt;</funcsynopsisinfo>
58
59 <funcprototype>
60 <funcdef>int <function>sd_bus_negotiate_fds</function></funcdef>
61 <paramdef>sd_bus *<parameter>bus</parameter></paramdef>
62 <paramdef>int <parameter>b</parameter></paramdef>
63 </funcprototype>
64
65 <funcprototype>
66 <funcdef>int <function>sd_bus_negotiate_timestamp</function></funcdef>
67 <paramdef>sd_bus *<parameter>bus</parameter></paramdef>
68 <paramdef>int <parameter>b</parameter></paramdef>
69 </funcprototype>
70
71 <funcprototype>
72 <funcdef>int <function>sd_bus_negotiate_creds</function></funcdef>
73 <paramdef>sd_bus *<parameter>bus</parameter></paramdef>
74 <paramdef>int <parameter>b</parameter></paramdef>
850df10a 75 <paramdef>uint64_t <parameter>mask</parameter></paramdef>
ce236b57
LP
76 </funcprototype>
77 </funcsynopsis>
78 </refsynopsisdiv>
79
80 <refsect1>
81 <title>Description</title>
82
83 <para><function>sd_bus_negotiate_fds()</function> controls whether
84 file descriptor passing shall be negotiated for the specified bus
b8bde116 85 connection. It takes a bus object and a boolean, which, when true,
850df10a
LP
86 enables file descriptor passing, and, when false, disables
87 it. Note that not all transports and servers support file
88 descriptor passing. In particular, networked transports generally
89 do not support file descriptor passing. To find out whether file
90 descriptor passing is available after negotiation, use
ce236b57
LP
91 <citerefentry><refentrytitle>sd_bus_can_send</refentrytitle><manvolnum>3</manvolnum></citerefentry>
92 and pass <constant>SD_BUS_TYPE_UNIX_FD</constant>. Note that file
93 descriptor passing is always enabled for both sending and
94 receiving or for neither, but never only in one direction. By
b8bde116 95 default, file descriptor passing is negotiated for all
ce236b57
LP
96 connections.</para>
97
ba612f42
ZJS
98 <para><function>sd_bus_negotiate_timestamp()</function> controls whether implicit sender
99 timestamps shall be attached automatically to all incoming messages. Takes a bus object and a
100 boolean, which, when true, enables timestamping, and, when false, disables it. Use
ce236b57
LP
101 <citerefentry><refentrytitle>sd_bus_message_get_monotonic_usec</refentrytitle><manvolnum>3</manvolnum></citerefentry>,
102 <citerefentry><refentrytitle>sd_bus_message_get_realtime_usec</refentrytitle><manvolnum>3</manvolnum></citerefentry>,
ae937639 103 <citerefentry><refentrytitle>sd_bus_message_get_seqnum</refentrytitle><manvolnum>3</manvolnum></citerefentry>
ba612f42
ZJS
104 to query the timestamps of incoming messages. If negotiation is disabled or not supported, these
105 calls will fail with <constant>-ENODATA</constant>. Note that currently no transports support
106 timestamping of messages. By default, message timestamping is not negotiated for
850df10a 107 connections.</para>
ce236b57 108
ba612f42
ZJS
109 <para><function>sd_bus_negotiate_creds()</function> controls whether and which implicit sender
110 credentials shall be attached automatically to all incoming messages. Takes a bus object and a
111 boolean indicating whether to enable or disable the credential parts encoded in the bit mask
112 value argument. Note that not all transports support attaching sender credentials to messages,
113 or do not support all types of sender credential parameters, or might suppress them under
114 certain circumstances for individual messages. Specifically, dbus1 only supports
115 <constant>SD_BUS_CREDS_UNIQUE_NAME</constant>. The sender credentials are suitable for
116 authorization decisions. By default, only <constant>SD_BUS_CREDS_WELL_KNOWN_NAMES</constant> and
117 <constant>SD_BUS_CREDS_UNIQUE_NAME</constant> are enabled. In fact, these two credential fields
118 are always sent along and cannot be turned off.</para>
b5dae4c7
LP
119
120 <para>The <function>sd_bus_negotiate_fds()</function> function may
121 be called only before the connection has been started with
122 <citerefentry><refentrytitle>sd_bus_start</refentrytitle><manvolnum>3</manvolnum></citerefentry>. Both
123 <function>sd_bus_negotiate_timestamp()</function> and
850df10a 124 <function>sd_bus_negotiate_creds()</function> may also be called
b938cb90 125 after a connection has been set up. Note that, when operating on a
b5dae4c7
LP
126 connection that is shared between multiple components of the same
127 program (for example via
a8eaaee7 128 <citerefentry><refentrytitle>sd_bus_default</refentrytitle><manvolnum>3</manvolnum></citerefentry>),
b5dae4c7
LP
129 it is highly recommended to only enable additional per message
130 metadata fields, but never disable them again, in order not to
131 disable functionality needed by other components.</para>
ce236b57
LP
132 </refsect1>
133
134 <refsect1>
135 <title>Return Value</title>
136
dd2b607b 137 <para>On success, these functions return 0 or a
faae655d 138 positive integer. On failure, they return a negative errno-style
ce236b57
LP
139 error code.</para>
140 </refsect1>
141
142 <refsect1>
143 <title>Errors</title>
144
145 <para>Returned errors may indicate the following problems:</para>
146
147 <variablelist>
148 <varlistentry>
8474b70c 149 <term><constant>-EPERM</constant></term>
ce236b57
LP
150
151 <listitem><para>The bus connection has already been started.</para></listitem>
152 </varlistentry>
153 </variablelist>
154 </refsect1>
155
156 <refsect1>
157 <title>Notes</title>
158
850df10a 159 <para><function>sd_bus_negotiate_fds()</function> and the other
ce236b57
LP
160 functions described here are available as a shared library, which
161 can be compiled and linked to with the
5aded369 162 <constant>libsystemd</constant> <citerefentry project='die-net'><refentrytitle>pkg-config</refentrytitle><manvolnum>1</manvolnum></citerefentry>
ce236b57
LP
163 file.</para>
164 </refsect1>
165
166 <refsect1>
167 <title>See Also</title>
168
169 <para>
170 <citerefentry><refentrytitle>systemd</refentrytitle><manvolnum>1</manvolnum></citerefentry>,
171 <citerefentry><refentrytitle>sd-bus</refentrytitle><manvolnum>3</manvolnum></citerefentry>,
172 <citerefentry><refentrytitle>sd_bus_start</refentrytitle><manvolnum>3</manvolnum></citerefentry>,
173 <citerefentry><refentrytitle>sd_bus_message_can_send</refentrytitle><manvolnum>3</manvolnum></citerefentry>,
174 <citerefentry><refentrytitle>sd_bus_message_get_monotonic_usec</refentrytitle><manvolnum>3</manvolnum></citerefentry>,
850df10a
LP
175 <citerefentry><refentrytitle>sd_bus_message_get_realtime_usec</refentrytitle><manvolnum>3</manvolnum></citerefentry>,
176 <citerefentry><refentrytitle>sd_bus_message_get_seqnum</refentrytitle><manvolnum>3</manvolnum></citerefentry>,
4bc5d27b 177 <citerefentry><refentrytitle>sd_bus_message_get_creds</refentrytitle><manvolnum>3</manvolnum></citerefentry>
ce236b57
LP
178 </para>
179 </refsect1>
180
181</refentry>