chiark / gitweb /
Add language fallback map
[elogind.git] / man / systemd.socket.xml
1 <?xml version='1.0'?> <!--*-nxml-*-->
2 <?xml-stylesheet type="text/xsl" href="http://docbook.sourceforge.net/release/xsl/current/xhtml/docbook.xsl"?>
3 <!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook XML V4.2//EN"
4   "http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd">
5
6 <!--
7   This file is part of systemd.
8
9   Copyright 2010 Lennart Poettering
10
11   systemd is free software; you can redistribute it and/or modify it
12   under the terms of the GNU Lesser General Public License as published by
13   the Free Software Foundation; either version 2.1 of the License, or
14   (at your option) any later version.
15
16   systemd is distributed in the hope that it will be useful, but
17   WITHOUT ANY WARRANTY; without even the implied warranty of
18   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
19   Lesser General Public License for more details.
20
21   You should have received a copy of the GNU Lesser General Public License
22   along with systemd; If not, see <http://www.gnu.org/licenses/>.
23 -->
24
25 <refentry id="systemd.socket">
26   <refentryinfo>
27     <title>systemd.socket</title>
28     <productname>systemd</productname>
29
30     <authorgroup>
31       <author>
32         <contrib>Developer</contrib>
33         <firstname>Lennart</firstname>
34         <surname>Poettering</surname>
35         <email>lennart@poettering.net</email>
36       </author>
37     </authorgroup>
38   </refentryinfo>
39
40   <refmeta>
41     <refentrytitle>systemd.socket</refentrytitle>
42     <manvolnum>5</manvolnum>
43   </refmeta>
44
45   <refnamediv>
46     <refname>systemd.socket</refname>
47     <refpurpose>Socket unit configuration</refpurpose>
48   </refnamediv>
49
50   <refsynopsisdiv>
51     <para><filename><replaceable>socket</replaceable>.socket</filename></para>
52   </refsynopsisdiv>
53
54   <refsect1>
55     <title>Description</title>
56
57     <para>A unit configuration file whose name ends in
58     <literal>.socket</literal> encodes information about an IPC or
59     network socket or a file system FIFO controlled and supervised by
60     systemd, for socket-based activation.</para>
61
62     <para>This man page lists the configuration options specific to
63     this unit type. See
64     <citerefentry><refentrytitle>systemd.unit</refentrytitle><manvolnum>5</manvolnum></citerefentry>
65     for the common options of all unit configuration files. The common
66     configuration items are configured in the generic [Unit] and
67     [Install] sections. The socket specific configuration options are
68     configured in the [Socket] section.</para>
69
70     <para>Additional options are listed in
71     <citerefentry><refentrytitle>systemd.exec</refentrytitle><manvolnum>5</manvolnum></citerefentry>,
72     which define the execution environment the
73     <option>ExecStartPre=</option>, <option>ExecStartPost=</option>,
74     <option>ExecStopPre=</option> and <option>ExecStopPost=</option>
75     commands are executed in, and in
76     <citerefentry><refentrytitle>systemd.kill</refentrytitle><manvolnum>5</manvolnum></citerefentry>,
77     which define the way the processes are terminated, and in
78     <citerefentry><refentrytitle>systemd.resource-control</refentrytitle><manvolnum>5</manvolnum></citerefentry>,
79     which configure resource control settings for the processes of the
80     socket.</para>
81
82     <para>For each socket file, a matching service file must exist,
83     describing the service to start on incoming traffic on the socket
84     (see
85     <citerefentry><refentrytitle>systemd.service</refentrytitle><manvolnum>5</manvolnum></citerefentry>
86     for more information about .service files). The name of the
87     .service unit is by default the same as the name of the .socket
88     unit, but can be altered with the <option>Service=</option> option
89     described below. Depending on the setting of the
90     <option>Accept=</option> option described below, this .service
91     unit must either be named like the .socket unit, but with the
92     suffix replaced, unless overridden with <option>Service=</option>;
93     or it must be a template unit named the same way. Example: a
94     socket file <filename>foo.socket</filename> needs a matching
95     service <filename>foo.service</filename> if
96     <option>Accept=false</option> is set. If
97     <option>Accept=true</option> is set, a service template file
98     <filename>foo@.service</filename> must exist from which services
99     are instantiated for each incoming connection.</para>
100
101     <para>Unless <varname>DefaultDependencies=</varname> is set to
102     <option>false</option>, socket units will implicitly have
103     dependencies of type <varname>Requires=</varname> and
104     <varname>After=</varname> on <filename>sysinit.target</filename>
105     as well as dependencies of type <varname>Conflicts=</varname> and
106     <varname>Before=</varname> on
107     <filename>shutdown.target</filename>. These ensure that socket
108     units pull in basic system initialization, and are terminated
109     cleanly prior to system shutdown. Only sockets involved with early
110     boot or late system shutdown should disable this option.</para>
111
112     <para>Socket units will have a <varname>Before=</varname>
113     dependency on the service which they trigger added implicitly. No
114     implicit <varname>WantedBy=</varname> or
115     <varname>RequiredBy=</varname> dependency from the socket to the
116     service is added. This means that the service may be started
117     without the socket, in which case it must be able to open sockets
118     by itself. To prevent this, an explicit
119     <varname>Requires=</varname> dependency may be added.</para>
120
121     <para>Socket units may be used to implement on-demand starting of
122     services, as well as parallelized starting of services. See the
123     blog stories linked at the end for an introduction.</para>
124
125     <para>Note that the daemon software configured for socket
126     activation with socket units needs to be able to accept sockets
127     from systemd, either via systemd's native socket passing interface
128     (see
129     <citerefentry><refentrytitle>sd_listen_fds</refentrytitle><manvolnum>3</manvolnum></citerefentry>
130     for details) or via the traditional
131     <citerefentry><refentrytitle>inetd</refentrytitle><manvolnum>8</manvolnum></citerefentry>-style
132     socket passing (i.e. sockets passed in via standard input and
133     output, using <varname>StandardInput=socket</varname> in the
134     service file).</para>
135   </refsect1>
136
137   <refsect1>
138     <title>Options</title>
139
140     <para>Socket files must include a [Socket] section, which carries
141     information about the socket or FIFO it supervises. A number of
142     options that may be used in this section are shared with other
143     unit types. These options are documented in
144     <citerefentry><refentrytitle>systemd.exec</refentrytitle><manvolnum>5</manvolnum></citerefentry>
145     and
146     <citerefentry><refentrytitle>systemd.kill</refentrytitle><manvolnum>5</manvolnum></citerefentry>.
147     The options specific to the [Socket] section of socket units are
148     the following:</para>
149
150     <variablelist class='unit-directives'>
151       <varlistentry>
152         <term><varname>ListenStream=</varname></term>
153         <term><varname>ListenDatagram=</varname></term>
154         <term><varname>ListenSequentialPacket=</varname></term>
155         <listitem><para>Specifies an address to listen on for a stream
156         (<constant>SOCK_STREAM</constant>), datagram
157         (<constant>SOCK_DGRAM</constant>), or sequential packet
158         (<constant>SOCK_SEQPACKET</constant>) socket, respectively.
159         The address can be written in various formats:</para>
160
161         <para>If the address starts with a slash
162         (<literal>/</literal>), it is read as file system socket in
163         the <constant>AF_UNIX</constant> socket family.</para>
164
165         <para>If the address starts with an at symbol
166         (<literal>@</literal>), it is read as abstract namespace
167         socket in the <constant>AF_UNIX</constant> family. The
168         <literal>@</literal> is replaced with a
169         <constant>NUL</constant> character before binding. For
170         details, see
171         <citerefentry project='man-pages'><refentrytitle>unix</refentrytitle><manvolnum>7</manvolnum></citerefentry>.</para>
172
173         <para>If the address string is a single number, it is read as
174         port number to listen on via IPv6. Depending on the value of
175         <varname>BindIPv6Only=</varname> (see below) this might result
176         in the service being available via both IPv6 and IPv4
177         (default) or just via IPv6.
178         </para>
179
180         <para>If the address string is a string in the format
181         v.w.x.y:z, it is read as IPv4 specifier for listening on an
182         address v.w.x.y on a port z.</para>
183
184         <para>If the address string is a string in the format [x]:y,
185         it is read as IPv6 address x on a port y. Note that this might
186         make the service available via IPv4, too, depending on the
187         <varname>BindIPv6Only=</varname> setting (see below).
188         </para>
189
190         <para>Note that <constant>SOCK_SEQPACKET</constant> (i.e.
191         <varname>ListenSequentialPacket=</varname>) is only available
192         for <constant>AF_UNIX</constant> sockets.
193         <constant>SOCK_STREAM</constant> (i.e.
194         <varname>ListenStream=</varname>) when used for IP sockets
195         refers to TCP sockets, <constant>SOCK_DGRAM</constant> (i.e.
196         <varname>ListenDatagram=</varname>) to UDP.</para>
197
198         <para>These options may be specified more than once in which
199         case incoming traffic on any of the sockets will trigger
200         service activation, and all listed sockets will be passed to
201         the service, regardless of whether there is incoming traffic
202         on them or not. If the empty string is assigned to any of
203         these options, the list of addresses to listen on is reset,
204         all prior uses of any of these options will have no
205         effect.</para>
206
207         <para>It is also possible to have more than one socket unit
208         for the same service when using <varname>Service=</varname>,
209         and the service will receive all the sockets configured in all
210         the socket units. Sockets configured in one unit are passed in
211         the order of configuration, but no ordering between socket
212         units is specified.</para>
213
214         <para>If an IP address is used here, it is often desirable to
215         listen on it before the interface it is configured on is up
216         and running, and even regardless of whether it will be up and
217         running at any point. To deal with this, it is recommended to
218         set the <varname>FreeBind=</varname> option described
219         below.</para></listitem>
220       </varlistentry>
221
222       <varlistentry>
223         <term><varname>ListenFIFO=</varname></term>
224         <listitem><para>Specifies a file system FIFO to listen on.
225         This expects an absolute file system path as argument.
226         Behavior otherwise is very similar to the
227         <varname>ListenDatagram=</varname> directive
228         above.</para></listitem>
229       </varlistentry>
230
231       <varlistentry>
232         <term><varname>ListenSpecial=</varname></term>
233         <listitem><para>Specifies a special file in the file system to
234         listen on. This expects an absolute file system path as
235         argument. Behavior otherwise is very similar to the
236         <varname>ListenFIFO=</varname> directive above. Use this to
237         open character device nodes as well as special files in
238         <filename>/proc</filename> and
239         <filename>/sys</filename>.</para></listitem>
240       </varlistentry>
241
242       <varlistentry>
243         <term><varname>ListenNetlink=</varname></term>
244         <listitem><para>Specifies a Netlink family to create a socket
245         for to listen on. This expects a short string referring to the
246         <constant>AF_NETLINK</constant> family name (such as
247         <varname>audit</varname> or <varname>kobject-uevent</varname>)
248         as argument, optionally suffixed by a whitespace followed by a
249         multicast group integer. Behavior otherwise is very similar to
250         the <varname>ListenDatagram=</varname> directive
251         above.</para></listitem>
252       </varlistentry>
253
254       <varlistentry>
255         <term><varname>ListenMessageQueue=</varname></term>
256         <listitem><para>Specifies a POSIX message queue name to listen
257         on. This expects a valid message queue name (i.e. beginning
258         with /). Behavior otherwise is very similar to the
259         <varname>ListenFIFO=</varname> directive above. On Linux
260         message queue descriptors are actually file descriptors and
261         can be inherited between processes.</para></listitem>
262       </varlistentry>
263
264       <varlistentry>
265         <term><varname>BindIPv6Only=</varname></term>
266         <listitem><para>Takes a one of <option>default</option>,
267         <option>both</option> or <option>ipv6-only</option>. Controls
268         the IPV6_V6ONLY socket option (see
269         <citerefentry><refentrytitle>ipv6</refentrytitle><manvolnum>7</manvolnum></citerefentry>
270         for details). If <option>both</option>, IPv6 sockets bound
271         will be accessible via both IPv4 and IPv6. If
272         <option>ipv6-only</option>, they will be accessible via IPv6
273         only. If <option>default</option> (which is the default,
274         surprise!), the system wide default setting is used, as
275         controlled by
276         <filename>/proc/sys/net/ipv6/bindv6only</filename>, which in
277         turn defaults to the equivalent of
278         <option>both</option>.</para>
279         </listitem>
280       </varlistentry>
281
282       <varlistentry>
283         <term><varname>Backlog=</varname></term>
284         <listitem><para>Takes an unsigned integer argument. Specifies
285         the number of connections to queue that have not been accepted
286         yet. This setting matters only for stream and sequential
287         packet sockets. See
288         <citerefentry><refentrytitle>listen</refentrytitle><manvolnum>2</manvolnum></citerefentry>
289         for details. Defaults to SOMAXCONN (128).</para></listitem>
290       </varlistentry>
291
292       <varlistentry>
293         <term><varname>BindToDevice=</varname></term>
294         <listitem><para>Specifies a network interface name to bind
295         this socket to. If set, traffic will only be accepted from the
296         specified network interfaces. This controls the
297         SO_BINDTODEVICE socket option (see
298         <citerefentry><refentrytitle>socket</refentrytitle><manvolnum>7</manvolnum></citerefentry>
299         for details). If this option is used, an automatic dependency
300         from this socket unit on the network interface device unit
301         (<citerefentry><refentrytitle>systemd.device</refentrytitle><manvolnum>5</manvolnum></citerefentry>
302         is created.</para></listitem>
303       </varlistentry>
304
305       <varlistentry>
306         <term><varname>SocketUser=</varname></term>
307         <term><varname>SocketGroup=</varname></term>
308
309         <listitem><para>Takes a UNIX user/group name. When specified,
310         all AF_UNIX sockets and FIFO nodes in the file system are
311         owned by the specified user and group. If unset (the default),
312         the nodes are owned by the root user/group (if run in system
313         context) or the invoking user/group (if run in user context).
314         If only a user is specified but no group, then the group is
315         derived from the user's default group.</para></listitem>
316       </varlistentry>
317
318       <varlistentry>
319         <term><varname>SocketMode=</varname></term>
320         <listitem><para>If listening on a file system socket or FIFO,
321         this option specifies the file system access mode used when
322         creating the file node. Takes an access mode in octal
323         notation. Defaults to 0666.</para></listitem>
324       </varlistentry>
325
326       <varlistentry>
327         <term><varname>DirectoryMode=</varname></term>
328         <listitem><para>If listening on a file system socket or FIFO,
329         the parent directories are automatically created if needed.
330         This option specifies the file system access mode used when
331         creating these directories. Takes an access mode in octal
332         notation. Defaults to 0755.</para></listitem>
333       </varlistentry>
334
335       <varlistentry>
336         <term><varname>Accept=</varname></term>
337         <listitem><para>Takes a boolean argument. If true, a service
338         instance is spawned for each incoming connection and only the
339         connection socket is passed to it. If false, all listening
340         sockets themselves are passed to the started service unit, and
341         only one service unit is spawned for all connections (also see
342         above). This value is ignored for datagram sockets and FIFOs
343         where a single service unit unconditionally handles all
344         incoming traffic. Defaults to <option>false</option>. For
345         performance reasons, it is recommended to write new daemons
346         only in a way that is suitable for
347         <option>Accept=false</option>. A daemon listening on an
348         <constant>AF_UNIX</constant> socket may, but does not need to,
349         call
350         <citerefentry><refentrytitle>close</refentrytitle><manvolnum>2</manvolnum></citerefentry>
351         on the received socket before exiting. However, it must not
352         unlink the socket from a file system. It should not invoke
353         <citerefentry><refentrytitle>shutdown</refentrytitle><manvolnum>2</manvolnum></citerefentry>
354         on sockets it got with <varname>Accept=false</varname>, but it
355         may do so for sockets it got with
356         <varname>Accept=true</varname> set. Setting
357         <varname>Accept=true</varname> is mostly useful to allow
358         daemons designed for usage with
359         <citerefentry><refentrytitle>inetd</refentrytitle><manvolnum>8</manvolnum></citerefentry>
360         to work unmodified with systemd socket
361         activation.</para></listitem>
362       </varlistentry>
363
364       <varlistentry>
365         <term><varname>MaxConnections=</varname></term>
366         <listitem><para>The maximum number of connections to
367         simultaneously run services instances for, when
368         <option>Accept=true</option> is set. If more concurrent
369         connections are coming in, they will be refused until at least
370         one existing connection is terminated. This setting has no
371         effect on sockets configured with
372         <option>Accept=false</option> or datagram sockets. Defaults to
373         64.</para></listitem>
374       </varlistentry>
375
376       <varlistentry>
377         <term><varname>KeepAlive=</varname></term>
378         <listitem><para>Takes a boolean argument. If true, the TCP/IP
379         stack will send a keep alive message after 2h (depending on
380         the configuration of
381         <filename>/proc/sys/net/ipv4/tcp_keepalive_time</filename>)
382         for all TCP streams accepted on this socket. This controls the
383         SO_KEEPALIVE socket option (see
384         <citerefentry><refentrytitle>socket</refentrytitle><manvolnum>7</manvolnum></citerefentry>
385         and the <ulink
386         url="http://www.tldp.org/HOWTO/html_single/TCP-Keepalive-HOWTO/">TCP
387         Keepalive HOWTO</ulink> for details.) Defaults to
388         <option>false</option>.</para></listitem>
389       </varlistentry>
390
391       <varlistentry>
392         <term><varname>KeepAliveTimeSec=</varname></term>
393         <listitem><para>Takes time (in seconds) as argument . The connection needs to remain
394         idle before TCP starts sending keepalive probes. This controls the TCP_KEEPIDLE
395         socket option (see
396         <citerefentry><refentrytitle>socket</refentrytitle><manvolnum>7</manvolnum></citerefentry>
397         and the <ulink
398         url="http://www.tldp.org/HOWTO/html_single/TCP-Keepalive-HOWTO/">TCP
399         Keepalive HOWTO</ulink> for details.)
400         Defaults value is 7200 seconds (2 hours).</para></listitem>
401       </varlistentry>
402
403       <varlistentry>
404         <term><varname>KeepAliveIntervalSec=</varname></term>
405         <listitem><para>Takes time (in seconds) as argument between
406         individual keepalive probes, if the socket option SO_KEEPALIVE
407         has been set on this socket seconds as argument. This controls
408         the TCP_KEEPINTVL socket option (see
409         <citerefentry><refentrytitle>socket</refentrytitle><manvolnum>7</manvolnum></citerefentry>
410         and the <ulink
411         url="http://www.tldp.org/HOWTO/html_single/TCP-Keepalive-HOWTO/">TCP
412         Keepalive HOWTO</ulink> for details.) Defaults value is 75
413         seconds.</para></listitem>
414       </varlistentry>
415
416       <varlistentry>
417         <term><varname>KeepAliveProbes=</varname></term>
418         <listitem><para>Takes integer as argument. It's the number of
419         unacknowledged probes to send before considering the
420         connection dead and notifying the application layer. This
421         controls the TCP_KEEPCNT socket option (see
422         <citerefentry><refentrytitle>socket</refentrytitle><manvolnum>7</manvolnum></citerefentry>
423         and the <ulink
424         url="http://www.tldp.org/HOWTO/html_single/TCP-Keepalive-HOWTO/">TCP
425         Keepalive HOWTO</ulink> for details.) Defaults value is
426         9.</para></listitem>
427       </varlistentry>
428
429       <varlistentry>
430         <term><varname>NoDelay=</varname></term>
431         <listitem><para>Takes a boolean argument. TCP Nagle's
432         algorithm works by combining a number of small outgoing
433         messages, and sending them all at once. This controls the
434         TCP_NODELAY socket option (see
435         <citerefentry><refentrytitle>tcp</refentrytitle><manvolnum>7</manvolnum></citerefentry>
436         Defaults to <option>false</option>.</para></listitem>
437       </varlistentry>
438
439       <varlistentry>
440         <term><varname>Priority=</varname></term>
441         <listitem><para>Takes an integer argument controlling the
442         priority for all traffic sent from this socket. This controls
443         the SO_PRIORITY socket option (see
444         <citerefentry><refentrytitle>socket</refentrytitle><manvolnum>7</manvolnum></citerefentry>
445         for details.).</para></listitem>
446       </varlistentry>
447
448       <varlistentry>
449         <term><varname>DeferAcceptSec=</varname></term>
450
451         <listitem><para>Takes time (in seconds) as argument. If set,
452         the listening process will be awakened only when data arrives
453         on the socket, and not immediately when connection is
454         established. When this option is set, the
455         <constant>TCP_DEFER_ACCEPT</constant> socket option will be
456         used (see
457         <citerefentry><refentrytitle>tcp</refentrytitle><manvolnum>7</manvolnum></citerefentry>),
458         and the kernel will ignore initial ACK packets without any
459         data. The argument specifies the approximate amount of time
460         the kernel should wait for incoming data before falling back
461         to the normal behaviour of honouring empty ACK packets. This
462         option is beneficial for protocols where the client sends the
463         data first (e.g. HTTP, in contrast to SMTP), because the
464         server process will not be woken up unnecessarily before it
465         can take any action.
466         </para>
467
468         <para>If the client also uses the
469         <constant>TCP_DEFER_ACCEPT</constant> option, the latency of
470         the initial connection may be reduced, because the kernel will
471         send data in the final packet establishing the connection (the
472         third packet in the "three-way handshake").</para>
473
474         <para>Disabled by default.</para>
475         </listitem>
476       </varlistentry>
477
478       <varlistentry>
479         <term><varname>ReceiveBuffer=</varname></term>
480         <term><varname>SendBuffer=</varname></term>
481         <listitem><para>Takes an integer argument controlling the
482         receive or send buffer sizes of this socket, respectively.
483         This controls the SO_RCVBUF and SO_SNDBUF socket options (see
484         <citerefentry><refentrytitle>socket</refentrytitle><manvolnum>7</manvolnum></citerefentry>
485         for details.). The usual suffixes K, M, G are supported and
486         are understood to the base of 1024.</para></listitem>
487       </varlistentry>
488
489       <varlistentry>
490         <term><varname>IPTOS=</varname></term>
491         <listitem><para>Takes an integer argument controlling the IP
492         Type-Of-Service field for packets generated from this socket.
493         This controls the IP_TOS socket option (see
494         <citerefentry><refentrytitle>ip</refentrytitle><manvolnum>7</manvolnum></citerefentry>
495         for details.). Either a numeric string or one of
496         <option>low-delay</option>, <option>throughput</option>,
497         <option>reliability</option> or <option>low-cost</option> may
498         be specified.</para></listitem>
499       </varlistentry>
500
501       <varlistentry>
502         <term><varname>IPTTL=</varname></term>
503         <listitem><para>Takes an integer argument controlling the IPv4
504         Time-To-Live/IPv6 Hop-Count field for packets generated from
505         this socket. This sets the IP_TTL/IPV6_UNICAST_HOPS socket
506         options (see
507         <citerefentry><refentrytitle>ip</refentrytitle><manvolnum>7</manvolnum></citerefentry>
508         and
509         <citerefentry><refentrytitle>ipv6</refentrytitle><manvolnum>7</manvolnum></citerefentry>
510         for details.)</para></listitem>
511       </varlistentry>
512
513       <varlistentry>
514         <term><varname>Mark=</varname></term>
515         <listitem><para>Takes an integer value. Controls the firewall
516         mark of packets generated by this socket. This can be used in
517         the firewall logic to filter packets from this socket. This
518         sets the SO_MARK socket option. See
519         <citerefentry><refentrytitle>iptables</refentrytitle><manvolnum>8</manvolnum></citerefentry>
520         for details.</para></listitem>
521       </varlistentry>
522
523       <varlistentry>
524         <term><varname>ReusePort=</varname></term>
525         <listitem><para>Takes a boolean value. If true, allows
526         multiple
527         <citerefentry><refentrytitle>bind</refentrytitle><manvolnum>2</manvolnum></citerefentry>s
528         to this TCP or UDP port. This controls the SO_REUSEPORT socket
529         option. See
530         <citerefentry><refentrytitle>socket</refentrytitle><manvolnum>7</manvolnum></citerefentry>
531         for details.</para></listitem>
532       </varlistentry>
533
534       <varlistentry>
535         <term><varname>SmackLabel=</varname></term>
536         <term><varname>SmackLabelIPIn=</varname></term>
537         <term><varname>SmackLabelIPOut=</varname></term>
538         <listitem><para>Takes a string value. Controls the extended
539         attributes <literal>security.SMACK64</literal>,
540         <literal>security.SMACK64IPIN</literal> and
541         <literal>security.SMACK64IPOUT</literal>, respectively, i.e.
542         the security label of the FIFO, or the security label for the
543         incoming or outgoing connections of the socket, respectively.
544         See <ulink
545         url="https://www.kernel.org/doc/Documentation/security/Smack.txt">Smack.txt</ulink>
546         for details.</para></listitem>
547       </varlistentry>
548
549       <varlistentry>
550         <term><varname>SELinuxContextFromNet=</varname></term>
551          <listitem><para>Takes a boolean argument. When true, systemd
552          will attempt to figure out the SELinux label used for the
553          instantiated service from the information handed by the peer
554          over the network. Note that only the security level is used
555          from the information provided by the peer. Other parts of the
556          resulting SELinux context originate from either the target
557          binary that is effectively triggered by socket unit or from
558          the value of the <varname>SELinuxContext=</varname> option.
559          This configuration option only affects sockets with
560          <varname>Accept=</varname> mode set to
561          <literal>true</literal>. Also note that this option is useful
562          only when MLS/MCS SELinux policy is deployed. Defaults to
563          <literal>false</literal>. </para></listitem>
564       </varlistentry>
565
566       <varlistentry>
567         <term><varname>PipeSize=</varname></term>
568         <listitem><para>Takes a size in bytes. Controls the pipe
569         buffer size of FIFOs configured in this socket unit. See
570         <citerefentry><refentrytitle>fcntl</refentrytitle><manvolnum>2</manvolnum></citerefentry>
571         for details. The usual suffixes K, M, G are supported and are
572         understood to the base of 1024.</para></listitem>
573       </varlistentry>
574
575       <varlistentry>
576         <term><varname>MessageQueueMaxMessages=</varname>,
577         <varname>MessageQueueMessageSize=</varname></term>
578         <listitem><para>These two settings take integer values and
579         control the mq_maxmsg field or the mq_msgsize field,
580         respectively, when creating the message queue. Note that
581         either none or both of these variables need to be set. See
582         <citerefentry><refentrytitle>mq_setattr</refentrytitle><manvolnum>3</manvolnum></citerefentry>
583         for details.</para></listitem>
584       </varlistentry>
585
586       <varlistentry>
587         <term><varname>FreeBind=</varname></term>
588         <listitem><para>Takes a boolean value. Controls whether the
589         socket can be bound to non-local IP addresses. This is useful
590         to configure sockets listening on specific IP addresses before
591         those IP addresses are successfully configured on a network
592         interface. This sets the IP_FREEBIND socket option. For
593         robustness reasons it is recommended to use this option
594         whenever you bind a socket to a specific IP address. Defaults
595         to <option>false</option>.</para></listitem>
596       </varlistentry>
597
598       <varlistentry>
599         <term><varname>Transparent=</varname></term>
600         <listitem><para>Takes a boolean value. Controls the
601         IP_TRANSPARENT socket option. Defaults to
602         <option>false</option>.</para></listitem>
603       </varlistentry>
604
605       <varlistentry>
606         <term><varname>Broadcast=</varname></term>
607         <listitem><para>Takes a boolean value. This controls the
608         SO_BROADCAST socket option, which allows broadcast datagrams
609         to be sent from this socket. Defaults to
610         <option>false</option>.</para></listitem>
611       </varlistentry>
612
613       <varlistentry>
614         <term><varname>PassCredentials=</varname></term>
615         <listitem><para>Takes a boolean value. This controls the
616         SO_PASSCRED socket option, which allows
617         <constant>AF_UNIX</constant> sockets to receive the
618         credentials of the sending process in an ancillary message.
619         Defaults to <option>false</option>.</para></listitem>
620       </varlistentry>
621
622       <varlistentry>
623         <term><varname>PassSecurity=</varname></term>
624         <listitem><para>Takes a boolean value. This controls the
625         SO_PASSSEC socket option, which allows
626         <constant>AF_UNIX</constant> sockets to receive the security
627         context of the sending process in an ancillary message.
628         Defaults to <option>false</option>.</para></listitem>
629       </varlistentry>
630
631       <varlistentry>
632         <term><varname>TCPCongestion=</varname></term>
633         <listitem><para>Takes a string value. Controls the TCP
634         congestion algorithm used by this socket. Should be one of
635         "westwood", "veno", "cubic", "lp" or any other available
636         algorithm supported by the IP stack. This setting applies only
637         to stream sockets.</para></listitem>
638       </varlistentry>
639
640       <varlistentry>
641         <term><varname>ExecStartPre=</varname></term>
642         <term><varname>ExecStartPost=</varname></term>
643         <listitem><para>Takes one or more command lines, which are
644         executed before or after the listening sockets/FIFOs are
645         created and bound, respectively. The first token of the
646         command line must be an absolute filename, then followed by
647         arguments for the process. Multiple command lines may be
648         specified following the same scheme as used for
649         <varname>ExecStartPre=</varname> of service unit
650         files.</para></listitem>
651       </varlistentry>
652
653       <varlistentry>
654         <term><varname>ExecStopPre=</varname></term>
655         <term><varname>ExecStopPost=</varname></term>
656         <listitem><para>Additional commands that are executed before
657         or after the listening sockets/FIFOs are closed and removed,
658         respectively. Multiple command lines may be specified
659         following the same scheme as used for
660         <varname>ExecStartPre=</varname> of service unit
661         files.</para></listitem>
662       </varlistentry>
663
664       <varlistentry>
665         <term><varname>TimeoutSec=</varname></term>
666         <listitem><para>Configures the time to wait for the commands
667         specified in <varname>ExecStartPre=</varname>,
668         <varname>ExecStartPost=</varname>,
669         <varname>ExecStopPre=</varname> and
670         <varname>ExecStopPost=</varname> to finish. If a command does
671         not exit within the configured time, the socket will be
672         considered failed and be shut down again. All commands still
673         running will be terminated forcibly via
674         <constant>SIGTERM</constant>, and after another delay of this
675         time with <constant>SIGKILL</constant>. (See
676         <option>KillMode=</option> in
677         <citerefentry><refentrytitle>systemd.kill</refentrytitle><manvolnum>5</manvolnum></citerefentry>.)
678         Takes a unit-less value in seconds, or a time span value such
679         as "5min 20s". Pass <literal>0</literal> to disable the
680         timeout logic. Defaults to
681         <varname>DefaultTimeoutStartSec=</varname> from the manager
682         configuration file (see
683         <citerefentry><refentrytitle>systemd-system.conf</refentrytitle><manvolnum>5</manvolnum></citerefentry>).
684         </para></listitem>
685       </varlistentry>
686
687       <varlistentry>
688         <term><varname>Service=</varname></term>
689         <listitem><para>Specifies the service unit name to activate on
690         incoming traffic. This setting is only allowed for sockets
691         with <varname>Accept=no</varname>. It defaults to the service
692         that bears the same name as the socket (with the suffix
693         replaced). In most cases, it should not be necessary to use
694         this option.</para></listitem>
695       </varlistentry>
696
697       <varlistentry>
698         <term><varname>RemoveOnStop=</varname></term>
699         <listitem><para>Takes a boolean argument. If enabled, any file
700         nodes created by this socket unit are removed when it is
701         stopped. This applies to AF_UNIX sockets in the file system,
702         POSIX message queues, FIFOs, as well as any symlinks to them
703         configured with <varname>Symlinks=</varname>. Normally, it
704         should not be necessary to use this option, and is not
705         recommended as services might continue to run after the socket
706         unit has been terminated and it should still be possible to
707         communicate with them via their file system node. Defaults to
708         off.</para></listitem>
709       </varlistentry>
710
711       <varlistentry>
712         <term><varname>Symlinks=</varname></term>
713         <listitem><para>Takes a list of file system paths. The
714         specified paths will be created as symlinks to the AF_UNIX
715         socket path or FIFO path of this socket unit. If this setting
716         is used, only one AF_UNIX socket in the file system or one
717         FIFO may be configured for the socket unit. Use this option to
718         manage one or more symlinked alias names for a socket, binding
719         their lifecycle together. Defaults to the empty
720         list.</para></listitem>
721       </varlistentry>
722
723     </variablelist>
724
725     <para>Check
726     <citerefentry><refentrytitle>systemd.exec</refentrytitle><manvolnum>5</manvolnum></citerefentry>
727     and
728     <citerefentry><refentrytitle>systemd.kill</refentrytitle><manvolnum>5</manvolnum></citerefentry>
729     for more settings.</para>
730
731   </refsect1>
732
733   <refsect1>
734       <title>See Also</title>
735       <para>
736         <citerefentry><refentrytitle>systemd</refentrytitle><manvolnum>1</manvolnum></citerefentry>,
737         <citerefentry><refentrytitle>systemctl</refentrytitle><manvolnum>1</manvolnum></citerefentry>,
738         <citerefentry><refentrytitle>systemd.unit</refentrytitle><manvolnum>5</manvolnum></citerefentry>,
739         <citerefentry><refentrytitle>systemd.exec</refentrytitle><manvolnum>5</manvolnum></citerefentry>,
740         <citerefentry><refentrytitle>systemd.kill</refentrytitle><manvolnum>5</manvolnum></citerefentry>,
741         <citerefentry><refentrytitle>systemd.resource-control</refentrytitle><manvolnum>5</manvolnum></citerefentry>,
742         <citerefentry><refentrytitle>systemd.service</refentrytitle><manvolnum>5</manvolnum></citerefentry>,
743         <citerefentry><refentrytitle>systemd.directives</refentrytitle><manvolnum>7</manvolnum></citerefentry>
744       </para>
745
746       <para>
747         For more extensive descriptions see the "systemd for Developers" series:
748         <ulink url="http://0pointer.de/blog/projects/socket-activation.html">Socket Activation</ulink>,
749         <ulink url="http://0pointer.de/blog/projects/socket-activation2.html">Socket Activation, part II</ulink>,
750         <ulink url="http://0pointer.de/blog/projects/inetd.html">Converting inetd Services</ulink>,
751         <ulink url="http://0pointer.de/blog/projects/socket-activated-containers.html">Socket Activated Internet Services and OS Containers</ulink>.
752       </para>
753   </refsect1>
754
755 </refentry>