| line |
stmt |
bran |
cond |
sub |
pod |
time |
code |
|
1
|
|
|
|
|
|
|
# |
|
2
|
|
|
|
|
|
|
# This file is part of Config-Model-Systemd |
|
3
|
|
|
|
|
|
|
# |
|
4
|
|
|
|
|
|
|
# This software is Copyright (c) 2008-2022 by Dominique Dumont. |
|
5
|
|
|
|
|
|
|
# |
|
6
|
|
|
|
|
|
|
# This is free software, licensed under: |
|
7
|
|
|
|
|
|
|
# |
|
8
|
|
|
|
|
|
|
# The GNU Lesser General Public License, Version 2.1, February 1999 |
|
9
|
|
|
|
|
|
|
# |
|
10
|
1
|
|
|
1
|
|
4128
|
use strict; |
|
|
1
|
|
|
1
|
|
2
|
|
|
|
1
|
|
|
|
|
30
|
|
|
|
1
|
|
|
|
|
3544
|
|
|
|
1
|
|
|
|
|
2
|
|
|
|
1
|
|
|
|
|
22
|
|
|
11
|
1
|
|
|
1
|
|
6
|
use warnings; |
|
|
1
|
|
|
1
|
|
2
|
|
|
|
1
|
|
|
|
|
950
|
|
|
|
1
|
|
|
|
|
5
|
|
|
|
1
|
|
|
|
|
2
|
|
|
|
1
|
|
|
|
|
838
|
|
|
12
|
|
|
|
|
|
|
|
|
13
|
|
|
|
|
|
|
return [ |
|
14
|
|
|
|
|
|
|
{ |
|
15
|
|
|
|
|
|
|
'accept' => [ |
|
16
|
|
|
|
|
|
|
'.*', |
|
17
|
|
|
|
|
|
|
{ |
|
18
|
|
|
|
|
|
|
'type' => 'leaf', |
|
19
|
|
|
|
|
|
|
'value_type' => 'uniline', |
|
20
|
|
|
|
|
|
|
'warn' => 'Unexpected systemd parameter. Please contact cme author to update systemd model.' |
|
21
|
|
|
|
|
|
|
} |
|
22
|
|
|
|
|
|
|
], |
|
23
|
|
|
|
|
|
|
'class_description' => 'A unit configuration file whose name ends in |
|
24
|
|
|
|
|
|
|
C<.socket> encodes information about an IPC or |
|
25
|
|
|
|
|
|
|
network socket or a file system FIFO controlled and supervised by |
|
26
|
|
|
|
|
|
|
systemd, for socket-based activation. |
|
27
|
|
|
|
|
|
|
|
|
28
|
|
|
|
|
|
|
This man page lists the configuration options specific to |
|
29
|
|
|
|
|
|
|
this unit type. See |
|
30
|
|
|
|
|
|
|
L<systemd.unit(5)> |
|
31
|
|
|
|
|
|
|
for the common options of all unit configuration files. The common |
|
32
|
|
|
|
|
|
|
configuration items are configured in the generic [Unit] and |
|
33
|
|
|
|
|
|
|
[Install] sections. The socket specific configuration options are |
|
34
|
|
|
|
|
|
|
configured in the [Socket] section. |
|
35
|
|
|
|
|
|
|
|
|
36
|
|
|
|
|
|
|
Additional options are listed in |
|
37
|
|
|
|
|
|
|
L<systemd.exec(5)>, |
|
38
|
|
|
|
|
|
|
which define the execution environment the |
|
39
|
|
|
|
|
|
|
C<ExecStartPre>, C<ExecStartPost>, |
|
40
|
|
|
|
|
|
|
C<ExecStopPre> and C<ExecStopPost> |
|
41
|
|
|
|
|
|
|
commands are executed in, and in |
|
42
|
|
|
|
|
|
|
L<systemd.kill(5)>, |
|
43
|
|
|
|
|
|
|
which define the way the processes are terminated, and in |
|
44
|
|
|
|
|
|
|
L<systemd.resource-control(5)>, |
|
45
|
|
|
|
|
|
|
which configure resource control settings for the processes of the |
|
46
|
|
|
|
|
|
|
socket. |
|
47
|
|
|
|
|
|
|
|
|
48
|
|
|
|
|
|
|
For each socket unit, a matching service unit must exist, |
|
49
|
|
|
|
|
|
|
describing the service to start on incoming traffic on the socket |
|
50
|
|
|
|
|
|
|
(see |
|
51
|
|
|
|
|
|
|
L<systemd.service(5)> |
|
52
|
|
|
|
|
|
|
for more information about .service units). The name of the |
|
53
|
|
|
|
|
|
|
.service unit is by default the same as the name of the .socket |
|
54
|
|
|
|
|
|
|
unit, but can be altered with the C<Service> option |
|
55
|
|
|
|
|
|
|
described below. Depending on the setting of the |
|
56
|
|
|
|
|
|
|
C<Accept> option described below, this .service |
|
57
|
|
|
|
|
|
|
unit must either be named like the .socket unit, but with the |
|
58
|
|
|
|
|
|
|
suffix replaced, unless overridden with C<Service>; |
|
59
|
|
|
|
|
|
|
or it must be a template unit named the same way. Example: a |
|
60
|
|
|
|
|
|
|
socket file C<foo.socket> needs a matching |
|
61
|
|
|
|
|
|
|
service C<foo.service> if |
|
62
|
|
|
|
|
|
|
C<Accept=no> is set. If |
|
63
|
|
|
|
|
|
|
C<Accept=yes> is set, a service template |
|
64
|
|
|
|
|
|
|
C<foo@.service> must exist from which services |
|
65
|
|
|
|
|
|
|
are instantiated for each incoming connection. |
|
66
|
|
|
|
|
|
|
|
|
67
|
|
|
|
|
|
|
No implicit C<WantedBy> or |
|
68
|
|
|
|
|
|
|
C<RequiredBy> dependency from the socket to the |
|
69
|
|
|
|
|
|
|
service is added. This means that the service may be started |
|
70
|
|
|
|
|
|
|
without the socket, in which case it must be able to open sockets |
|
71
|
|
|
|
|
|
|
by itself. To prevent this, an explicit |
|
72
|
|
|
|
|
|
|
C<Requires> dependency may be added. |
|
73
|
|
|
|
|
|
|
|
|
74
|
|
|
|
|
|
|
Socket units may be used to implement on-demand starting of |
|
75
|
|
|
|
|
|
|
services, as well as parallelized starting of services. See the |
|
76
|
|
|
|
|
|
|
blog stories linked at the end for an introduction. |
|
77
|
|
|
|
|
|
|
|
|
78
|
|
|
|
|
|
|
Note that the daemon software configured for socket activation with socket units needs to be able |
|
79
|
|
|
|
|
|
|
to accept sockets from systemd, either via systemd\'s native socket passing interface (see |
|
80
|
|
|
|
|
|
|
L<sd_listen_fds(3)> for |
|
81
|
|
|
|
|
|
|
details about the precise protocol used and the order in which the file descriptors are passed) or via |
|
82
|
|
|
|
|
|
|
traditional L<inetd(8)>-style |
|
83
|
|
|
|
|
|
|
socket passing (i.e. sockets passed in via standard input and output, using |
|
84
|
|
|
|
|
|
|
C<StandardInput=socket> in the service file). |
|
85
|
|
|
|
|
|
|
|
|
86
|
|
|
|
|
|
|
All network sockets allocated through C<.socket> units are allocated in the host\'s network |
|
87
|
|
|
|
|
|
|
namespace (see L<network_namespaces(7)>). This |
|
88
|
|
|
|
|
|
|
does not mean however that the service activated by a configured socket unit has to be part of the host\'s network |
|
89
|
|
|
|
|
|
|
namespace as well. It is supported and even good practice to run services in their own network namespace (for |
|
90
|
|
|
|
|
|
|
example through C<PrivateNetwork>, see |
|
91
|
|
|
|
|
|
|
L<systemd.exec(5)>), receiving only |
|
92
|
|
|
|
|
|
|
the sockets configured through socket-activation from the host\'s namespace. In such a set-up communication within |
|
93
|
|
|
|
|
|
|
the host\'s network namespace is only permitted through the activation sockets passed in while all sockets allocated |
|
94
|
|
|
|
|
|
|
from the service code itself will be associated with the service\'s own namespace, and thus possibly subject to a |
|
95
|
|
|
|
|
|
|
restrictive configuration. |
|
96
|
|
|
|
|
|
|
This configuration class was generated from systemd documentation. |
|
97
|
|
|
|
|
|
|
by L<parse-man.pl|https://github.com/dod38fr/config-model-systemd/contrib/parse-man.pl> |
|
98
|
|
|
|
|
|
|
', |
|
99
|
|
|
|
|
|
|
'copyright' => [ |
|
100
|
|
|
|
|
|
|
'2010-2016 Lennart Poettering and others', |
|
101
|
|
|
|
|
|
|
'2016 Dominique Dumont' |
|
102
|
|
|
|
|
|
|
], |
|
103
|
|
|
|
|
|
|
'element' => [ |
|
104
|
|
|
|
|
|
|
'ListenStream', |
|
105
|
|
|
|
|
|
|
{ |
|
106
|
|
|
|
|
|
|
'cargo' => { |
|
107
|
|
|
|
|
|
|
'type' => 'leaf', |
|
108
|
|
|
|
|
|
|
'value_type' => 'uniline' |
|
109
|
|
|
|
|
|
|
}, |
|
110
|
|
|
|
|
|
|
'description' => 'Specifies an address to listen on for a stream |
|
111
|
|
|
|
|
|
|
(C<SOCK_STREAM>), datagram |
|
112
|
|
|
|
|
|
|
(C<SOCK_DGRAM>), or sequential packet |
|
113
|
|
|
|
|
|
|
(C<SOCK_SEQPACKET>) socket, respectively. |
|
114
|
|
|
|
|
|
|
The address can be written in various formats: |
|
115
|
|
|
|
|
|
|
|
|
116
|
|
|
|
|
|
|
If the address starts with a slash |
|
117
|
|
|
|
|
|
|
(C</>), it is read as file system socket in |
|
118
|
|
|
|
|
|
|
the C<AF_UNIX> socket family. |
|
119
|
|
|
|
|
|
|
|
|
120
|
|
|
|
|
|
|
If the address starts with an at symbol |
|
121
|
|
|
|
|
|
|
(C<@>), it is read as abstract namespace |
|
122
|
|
|
|
|
|
|
socket in the C<AF_UNIX> family. The |
|
123
|
|
|
|
|
|
|
C<@> is replaced with a |
|
124
|
|
|
|
|
|
|
C<NUL> character before binding. For |
|
125
|
|
|
|
|
|
|
details, see |
|
126
|
|
|
|
|
|
|
L<unix(7)>. |
|
127
|
|
|
|
|
|
|
|
|
128
|
|
|
|
|
|
|
If the address string is a single number, it is read as |
|
129
|
|
|
|
|
|
|
port number to listen on via IPv6. Depending on the value of |
|
130
|
|
|
|
|
|
|
C<BindIPv6Only> (see below) this might result |
|
131
|
|
|
|
|
|
|
in the service being available via both IPv6 and IPv4 |
|
132
|
|
|
|
|
|
|
(default) or just via IPv6. |
|
133
|
|
|
|
|
|
|
|
|
134
|
|
|
|
|
|
|
If the address string is a string in the format |
|
135
|
|
|
|
|
|
|
C<v.w.x.y:z>, it is interpreted |
|
136
|
|
|
|
|
|
|
as IPv4 address v.w.x.y and port z. |
|
137
|
|
|
|
|
|
|
|
|
138
|
|
|
|
|
|
|
If the address string is a string in the format |
|
139
|
|
|
|
|
|
|
C<[x]:y>, it is interpreted as |
|
140
|
|
|
|
|
|
|
IPv6 address x and port y. An optional |
|
141
|
|
|
|
|
|
|
interface scope (interface name or number) may be specified after a C<%> symbol: |
|
142
|
|
|
|
|
|
|
C<[x]:y%dev>. |
|
143
|
|
|
|
|
|
|
Interface scopes are only useful with link-local addresses, because the kernel ignores them in other |
|
144
|
|
|
|
|
|
|
cases. Note that if an address is specified as IPv6, it might still make the service available via |
|
145
|
|
|
|
|
|
|
IPv4 too, depending on the C<BindIPv6Only> setting (see below). |
|
146
|
|
|
|
|
|
|
|
|
147
|
|
|
|
|
|
|
If the address string is a string in the format |
|
148
|
|
|
|
|
|
|
C<vsock:x:y>, it is read as CID |
|
149
|
|
|
|
|
|
|
x on a port y address in the |
|
150
|
|
|
|
|
|
|
C<AF_VSOCK> family. The CID is a unique 32-bit integer identifier in |
|
151
|
|
|
|
|
|
|
C<AF_VSOCK> analogous to an IP address. Specifying the CID is optional, and may be |
|
152
|
|
|
|
|
|
|
set to the empty string. |
|
153
|
|
|
|
|
|
|
|
|
154
|
|
|
|
|
|
|
Note that C<SOCK_SEQPACKET> (i.e. |
|
155
|
|
|
|
|
|
|
C<ListenSequentialPacket>) is only available |
|
156
|
|
|
|
|
|
|
for C<AF_UNIX> sockets. |
|
157
|
|
|
|
|
|
|
C<SOCK_STREAM> (i.e. |
|
158
|
|
|
|
|
|
|
C<ListenStream>) when used for IP sockets |
|
159
|
|
|
|
|
|
|
refers to TCP sockets, C<SOCK_DGRAM> (i.e. |
|
160
|
|
|
|
|
|
|
C<ListenDatagram>) to UDP. |
|
161
|
|
|
|
|
|
|
|
|
162
|
|
|
|
|
|
|
These options may be specified more than once, in which |
|
163
|
|
|
|
|
|
|
case incoming traffic on any of the sockets will trigger |
|
164
|
|
|
|
|
|
|
service activation, and all listed sockets will be passed to |
|
165
|
|
|
|
|
|
|
the service, regardless of whether there is incoming traffic |
|
166
|
|
|
|
|
|
|
on them or not. If the empty string is assigned to any of |
|
167
|
|
|
|
|
|
|
these options, the list of addresses to listen on is reset, |
|
168
|
|
|
|
|
|
|
all prior uses of any of these options will have no |
|
169
|
|
|
|
|
|
|
effect. |
|
170
|
|
|
|
|
|
|
|
|
171
|
|
|
|
|
|
|
It is also possible to have more than one socket unit |
|
172
|
|
|
|
|
|
|
for the same service when using C<Service>, |
|
173
|
|
|
|
|
|
|
and the service will receive all the sockets configured in all |
|
174
|
|
|
|
|
|
|
the socket units. Sockets configured in one unit are passed in |
|
175
|
|
|
|
|
|
|
the order of configuration, but no ordering between socket |
|
176
|
|
|
|
|
|
|
units is specified. |
|
177
|
|
|
|
|
|
|
|
|
178
|
|
|
|
|
|
|
If an IP address is used here, it is often desirable to |
|
179
|
|
|
|
|
|
|
listen on it before the interface it is configured on is up |
|
180
|
|
|
|
|
|
|
and running, and even regardless of whether it will be up and |
|
181
|
|
|
|
|
|
|
running at any point. To deal with this, it is recommended to |
|
182
|
|
|
|
|
|
|
set the C<FreeBind> option described |
|
183
|
|
|
|
|
|
|
below.', |
|
184
|
|
|
|
|
|
|
'type' => 'list' |
|
185
|
|
|
|
|
|
|
}, |
|
186
|
|
|
|
|
|
|
'ListenDatagram', |
|
187
|
|
|
|
|
|
|
{ |
|
188
|
|
|
|
|
|
|
'cargo' => { |
|
189
|
|
|
|
|
|
|
'type' => 'leaf', |
|
190
|
|
|
|
|
|
|
'value_type' => 'uniline' |
|
191
|
|
|
|
|
|
|
}, |
|
192
|
|
|
|
|
|
|
'description' => 'Specifies an address to listen on for a stream |
|
193
|
|
|
|
|
|
|
(C<SOCK_STREAM>), datagram |
|
194
|
|
|
|
|
|
|
(C<SOCK_DGRAM>), or sequential packet |
|
195
|
|
|
|
|
|
|
(C<SOCK_SEQPACKET>) socket, respectively. |
|
196
|
|
|
|
|
|
|
The address can be written in various formats: |
|
197
|
|
|
|
|
|
|
|
|
198
|
|
|
|
|
|
|
If the address starts with a slash |
|
199
|
|
|
|
|
|
|
(C</>), it is read as file system socket in |
|
200
|
|
|
|
|
|
|
the C<AF_UNIX> socket family. |
|
201
|
|
|
|
|
|
|
|
|
202
|
|
|
|
|
|
|
If the address starts with an at symbol |
|
203
|
|
|
|
|
|
|
(C<@>), it is read as abstract namespace |
|
204
|
|
|
|
|
|
|
socket in the C<AF_UNIX> family. The |
|
205
|
|
|
|
|
|
|
C<@> is replaced with a |
|
206
|
|
|
|
|
|
|
C<NUL> character before binding. For |
|
207
|
|
|
|
|
|
|
details, see |
|
208
|
|
|
|
|
|
|
L<unix(7)>. |
|
209
|
|
|
|
|
|
|
|
|
210
|
|
|
|
|
|
|
If the address string is a single number, it is read as |
|
211
|
|
|
|
|
|
|
port number to listen on via IPv6. Depending on the value of |
|
212
|
|
|
|
|
|
|
C<BindIPv6Only> (see below) this might result |
|
213
|
|
|
|
|
|
|
in the service being available via both IPv6 and IPv4 |
|
214
|
|
|
|
|
|
|
(default) or just via IPv6. |
|
215
|
|
|
|
|
|
|
|
|
216
|
|
|
|
|
|
|
If the address string is a string in the format |
|
217
|
|
|
|
|
|
|
C<v.w.x.y:z>, it is interpreted |
|
218
|
|
|
|
|
|
|
as IPv4 address v.w.x.y and port z. |
|
219
|
|
|
|
|
|
|
|
|
220
|
|
|
|
|
|
|
If the address string is a string in the format |
|
221
|
|
|
|
|
|
|
C<[x]:y>, it is interpreted as |
|
222
|
|
|
|
|
|
|
IPv6 address x and port y. An optional |
|
223
|
|
|
|
|
|
|
interface scope (interface name or number) may be specified after a C<%> symbol: |
|
224
|
|
|
|
|
|
|
C<[x]:y%dev>. |
|
225
|
|
|
|
|
|
|
Interface scopes are only useful with link-local addresses, because the kernel ignores them in other |
|
226
|
|
|
|
|
|
|
cases. Note that if an address is specified as IPv6, it might still make the service available via |
|
227
|
|
|
|
|
|
|
IPv4 too, depending on the C<BindIPv6Only> setting (see below). |
|
228
|
|
|
|
|
|
|
|
|
229
|
|
|
|
|
|
|
If the address string is a string in the format |
|
230
|
|
|
|
|
|
|
C<vsock:x:y>, it is read as CID |
|
231
|
|
|
|
|
|
|
x on a port y address in the |
|
232
|
|
|
|
|
|
|
C<AF_VSOCK> family. The CID is a unique 32-bit integer identifier in |
|
233
|
|
|
|
|
|
|
C<AF_VSOCK> analogous to an IP address. Specifying the CID is optional, and may be |
|
234
|
|
|
|
|
|
|
set to the empty string. |
|
235
|
|
|
|
|
|
|
|
|
236
|
|
|
|
|
|
|
Note that C<SOCK_SEQPACKET> (i.e. |
|
237
|
|
|
|
|
|
|
C<ListenSequentialPacket>) is only available |
|
238
|
|
|
|
|
|
|
for C<AF_UNIX> sockets. |
|
239
|
|
|
|
|
|
|
C<SOCK_STREAM> (i.e. |
|
240
|
|
|
|
|
|
|
C<ListenStream>) when used for IP sockets |
|
241
|
|
|
|
|
|
|
refers to TCP sockets, C<SOCK_DGRAM> (i.e. |
|
242
|
|
|
|
|
|
|
C<ListenDatagram>) to UDP. |
|
243
|
|
|
|
|
|
|
|
|
244
|
|
|
|
|
|
|
These options may be specified more than once, in which |
|
245
|
|
|
|
|
|
|
case incoming traffic on any of the sockets will trigger |
|
246
|
|
|
|
|
|
|
service activation, and all listed sockets will be passed to |
|
247
|
|
|
|
|
|
|
the service, regardless of whether there is incoming traffic |
|
248
|
|
|
|
|
|
|
on them or not. If the empty string is assigned to any of |
|
249
|
|
|
|
|
|
|
these options, the list of addresses to listen on is reset, |
|
250
|
|
|
|
|
|
|
all prior uses of any of these options will have no |
|
251
|
|
|
|
|
|
|
effect. |
|
252
|
|
|
|
|
|
|
|
|
253
|
|
|
|
|
|
|
It is also possible to have more than one socket unit |
|
254
|
|
|
|
|
|
|
for the same service when using C<Service>, |
|
255
|
|
|
|
|
|
|
and the service will receive all the sockets configured in all |
|
256
|
|
|
|
|
|
|
the socket units. Sockets configured in one unit are passed in |
|
257
|
|
|
|
|
|
|
the order of configuration, but no ordering between socket |
|
258
|
|
|
|
|
|
|
units is specified. |
|
259
|
|
|
|
|
|
|
|
|
260
|
|
|
|
|
|
|
If an IP address is used here, it is often desirable to |
|
261
|
|
|
|
|
|
|
listen on it before the interface it is configured on is up |
|
262
|
|
|
|
|
|
|
and running, and even regardless of whether it will be up and |
|
263
|
|
|
|
|
|
|
running at any point. To deal with this, it is recommended to |
|
264
|
|
|
|
|
|
|
set the C<FreeBind> option described |
|
265
|
|
|
|
|
|
|
below.', |
|
266
|
|
|
|
|
|
|
'type' => 'list' |
|
267
|
|
|
|
|
|
|
}, |
|
268
|
|
|
|
|
|
|
'ListenSequentialPacket', |
|
269
|
|
|
|
|
|
|
{ |
|
270
|
|
|
|
|
|
|
'cargo' => { |
|
271
|
|
|
|
|
|
|
'type' => 'leaf', |
|
272
|
|
|
|
|
|
|
'value_type' => 'uniline' |
|
273
|
|
|
|
|
|
|
}, |
|
274
|
|
|
|
|
|
|
'description' => 'Specifies an address to listen on for a stream |
|
275
|
|
|
|
|
|
|
(C<SOCK_STREAM>), datagram |
|
276
|
|
|
|
|
|
|
(C<SOCK_DGRAM>), or sequential packet |
|
277
|
|
|
|
|
|
|
(C<SOCK_SEQPACKET>) socket, respectively. |
|
278
|
|
|
|
|
|
|
The address can be written in various formats: |
|
279
|
|
|
|
|
|
|
|
|
280
|
|
|
|
|
|
|
If the address starts with a slash |
|
281
|
|
|
|
|
|
|
(C</>), it is read as file system socket in |
|
282
|
|
|
|
|
|
|
the C<AF_UNIX> socket family. |
|
283
|
|
|
|
|
|
|
|
|
284
|
|
|
|
|
|
|
If the address starts with an at symbol |
|
285
|
|
|
|
|
|
|
(C<@>), it is read as abstract namespace |
|
286
|
|
|
|
|
|
|
socket in the C<AF_UNIX> family. The |
|
287
|
|
|
|
|
|
|
C<@> is replaced with a |
|
288
|
|
|
|
|
|
|
C<NUL> character before binding. For |
|
289
|
|
|
|
|
|
|
details, see |
|
290
|
|
|
|
|
|
|
L<unix(7)>. |
|
291
|
|
|
|
|
|
|
|
|
292
|
|
|
|
|
|
|
If the address string is a single number, it is read as |
|
293
|
|
|
|
|
|
|
port number to listen on via IPv6. Depending on the value of |
|
294
|
|
|
|
|
|
|
C<BindIPv6Only> (see below) this might result |
|
295
|
|
|
|
|
|
|
in the service being available via both IPv6 and IPv4 |
|
296
|
|
|
|
|
|
|
(default) or just via IPv6. |
|
297
|
|
|
|
|
|
|
|
|
298
|
|
|
|
|
|
|
If the address string is a string in the format |
|
299
|
|
|
|
|
|
|
C<v.w.x.y:z>, it is interpreted |
|
300
|
|
|
|
|
|
|
as IPv4 address v.w.x.y and port z. |
|
301
|
|
|
|
|
|
|
|
|
302
|
|
|
|
|
|
|
If the address string is a string in the format |
|
303
|
|
|
|
|
|
|
C<[x]:y>, it is interpreted as |
|
304
|
|
|
|
|
|
|
IPv6 address x and port y. An optional |
|
305
|
|
|
|
|
|
|
interface scope (interface name or number) may be specified after a C<%> symbol: |
|
306
|
|
|
|
|
|
|
C<[x]:y%dev>. |
|
307
|
|
|
|
|
|
|
Interface scopes are only useful with link-local addresses, because the kernel ignores them in other |
|
308
|
|
|
|
|
|
|
cases. Note that if an address is specified as IPv6, it might still make the service available via |
|
309
|
|
|
|
|
|
|
IPv4 too, depending on the C<BindIPv6Only> setting (see below). |
|
310
|
|
|
|
|
|
|
|
|
311
|
|
|
|
|
|
|
If the address string is a string in the format |
|
312
|
|
|
|
|
|
|
C<vsock:x:y>, it is read as CID |
|
313
|
|
|
|
|
|
|
x on a port y address in the |
|
314
|
|
|
|
|
|
|
C<AF_VSOCK> family. The CID is a unique 32-bit integer identifier in |
|
315
|
|
|
|
|
|
|
C<AF_VSOCK> analogous to an IP address. Specifying the CID is optional, and may be |
|
316
|
|
|
|
|
|
|
set to the empty string. |
|
317
|
|
|
|
|
|
|
|
|
318
|
|
|
|
|
|
|
Note that C<SOCK_SEQPACKET> (i.e. |
|
319
|
|
|
|
|
|
|
C<ListenSequentialPacket>) is only available |
|
320
|
|
|
|
|
|
|
for C<AF_UNIX> sockets. |
|
321
|
|
|
|
|
|
|
C<SOCK_STREAM> (i.e. |
|
322
|
|
|
|
|
|
|
C<ListenStream>) when used for IP sockets |
|
323
|
|
|
|
|
|
|
refers to TCP sockets, C<SOCK_DGRAM> (i.e. |
|
324
|
|
|
|
|
|
|
C<ListenDatagram>) to UDP. |
|
325
|
|
|
|
|
|
|
|
|
326
|
|
|
|
|
|
|
These options may be specified more than once, in which |
|
327
|
|
|
|
|
|
|
case incoming traffic on any of the sockets will trigger |
|
328
|
|
|
|
|
|
|
service activation, and all listed sockets will be passed to |
|
329
|
|
|
|
|
|
|
the service, regardless of whether there is incoming traffic |
|
330
|
|
|
|
|
|
|
on them or not. If the empty string is assigned to any of |
|
331
|
|
|
|
|
|
|
these options, the list of addresses to listen on is reset, |
|
332
|
|
|
|
|
|
|
all prior uses of any of these options will have no |
|
333
|
|
|
|
|
|
|
effect. |
|
334
|
|
|
|
|
|
|
|
|
335
|
|
|
|
|
|
|
It is also possible to have more than one socket unit |
|
336
|
|
|
|
|
|
|
for the same service when using C<Service>, |
|
337
|
|
|
|
|
|
|
and the service will receive all the sockets configured in all |
|
338
|
|
|
|
|
|
|
the socket units. Sockets configured in one unit are passed in |
|
339
|
|
|
|
|
|
|
the order of configuration, but no ordering between socket |
|
340
|
|
|
|
|
|
|
units is specified. |
|
341
|
|
|
|
|
|
|
|
|
342
|
|
|
|
|
|
|
If an IP address is used here, it is often desirable to |
|
343
|
|
|
|
|
|
|
listen on it before the interface it is configured on is up |
|
344
|
|
|
|
|
|
|
and running, and even regardless of whether it will be up and |
|
345
|
|
|
|
|
|
|
running at any point. To deal with this, it is recommended to |
|
346
|
|
|
|
|
|
|
set the C<FreeBind> option described |
|
347
|
|
|
|
|
|
|
below.', |
|
348
|
|
|
|
|
|
|
'type' => 'list' |
|
349
|
|
|
|
|
|
|
}, |
|
350
|
|
|
|
|
|
|
'ListenFIFO', |
|
351
|
|
|
|
|
|
|
{ |
|
352
|
|
|
|
|
|
|
'cargo' => { |
|
353
|
|
|
|
|
|
|
'type' => 'leaf', |
|
354
|
|
|
|
|
|
|
'value_type' => 'uniline' |
|
355
|
|
|
|
|
|
|
}, |
|
356
|
|
|
|
|
|
|
'description' => 'Specifies a file system FIFO (see L<fifo(7)> for |
|
357
|
|
|
|
|
|
|
details) to listen on. This expects an absolute file system path as argument. Behavior otherwise is |
|
358
|
|
|
|
|
|
|
very similar to the C<ListenDatagram> directive above.', |
|
359
|
|
|
|
|
|
|
'type' => 'list' |
|
360
|
|
|
|
|
|
|
}, |
|
361
|
|
|
|
|
|
|
'ListenSpecial', |
|
362
|
|
|
|
|
|
|
{ |
|
363
|
|
|
|
|
|
|
'cargo' => { |
|
364
|
|
|
|
|
|
|
'type' => 'leaf', |
|
365
|
|
|
|
|
|
|
'value_type' => 'uniline' |
|
366
|
|
|
|
|
|
|
}, |
|
367
|
|
|
|
|
|
|
'description' => 'Specifies a special file in the file system to |
|
368
|
|
|
|
|
|
|
listen on. This expects an absolute file system path as |
|
369
|
|
|
|
|
|
|
argument. Behavior otherwise is very similar to the |
|
370
|
|
|
|
|
|
|
C<ListenFIFO> directive above. Use this to |
|
371
|
|
|
|
|
|
|
open character device nodes as well as special files in |
|
372
|
|
|
|
|
|
|
C</proc/> and |
|
373
|
|
|
|
|
|
|
C</sys/>.', |
|
374
|
|
|
|
|
|
|
'type' => 'list' |
|
375
|
|
|
|
|
|
|
}, |
|
376
|
|
|
|
|
|
|
'ListenNetlink', |
|
377
|
|
|
|
|
|
|
{ |
|
378
|
|
|
|
|
|
|
'cargo' => { |
|
379
|
|
|
|
|
|
|
'type' => 'leaf', |
|
380
|
|
|
|
|
|
|
'value_type' => 'uniline' |
|
381
|
|
|
|
|
|
|
}, |
|
382
|
|
|
|
|
|
|
'description' => 'Specifies a Netlink family to create a socket |
|
383
|
|
|
|
|
|
|
for to listen on. This expects a short string referring to the |
|
384
|
|
|
|
|
|
|
C<AF_NETLINK> family name (such as |
|
385
|
|
|
|
|
|
|
C<audit> or C<kobject-uevent>) |
|
386
|
|
|
|
|
|
|
as argument, optionally suffixed by a whitespace followed by a |
|
387
|
|
|
|
|
|
|
multicast group integer. Behavior otherwise is very similar to |
|
388
|
|
|
|
|
|
|
the C<ListenDatagram> directive |
|
389
|
|
|
|
|
|
|
above.', |
|
390
|
|
|
|
|
|
|
'type' => 'list' |
|
391
|
|
|
|
|
|
|
}, |
|
392
|
|
|
|
|
|
|
'ListenMessageQueue', |
|
393
|
|
|
|
|
|
|
{ |
|
394
|
|
|
|
|
|
|
'cargo' => { |
|
395
|
|
|
|
|
|
|
'type' => 'leaf', |
|
396
|
|
|
|
|
|
|
'value_type' => 'uniline' |
|
397
|
|
|
|
|
|
|
}, |
|
398
|
|
|
|
|
|
|
'description' => 'Specifies a POSIX message queue name to listen on (see L<mq_overview(7)> |
|
399
|
|
|
|
|
|
|
for details). This expects a valid message queue name (i.e. beginning with |
|
400
|
|
|
|
|
|
|
C</>). Behavior otherwise is very similar to the C<ListenFIFO> |
|
401
|
|
|
|
|
|
|
directive above. On Linux message queue descriptors are actually file descriptors and can be |
|
402
|
|
|
|
|
|
|
inherited between processes.', |
|
403
|
|
|
|
|
|
|
'type' => 'list' |
|
404
|
|
|
|
|
|
|
}, |
|
405
|
|
|
|
|
|
|
'ListenUSBFunction', |
|
406
|
|
|
|
|
|
|
{ |
|
407
|
|
|
|
|
|
|
'cargo' => { |
|
408
|
|
|
|
|
|
|
'type' => 'leaf', |
|
409
|
|
|
|
|
|
|
'value_type' => 'uniline' |
|
410
|
|
|
|
|
|
|
}, |
|
411
|
|
|
|
|
|
|
'description' => 'Specifies a L<USB |
|
412
|
|
|
|
|
|
|
FunctionFS|https://docs.kernel.org/usb/functionfs.html> endpoints location to listen on, for |
|
413
|
|
|
|
|
|
|
implementation of USB gadget functions. This expects an |
|
414
|
|
|
|
|
|
|
absolute file system path of a FunctionFS mount point as the argument. |
|
415
|
|
|
|
|
|
|
Behavior otherwise is very similar to the C<ListenFIFO> |
|
416
|
|
|
|
|
|
|
directive above. Use this to open the FunctionFS endpoint |
|
417
|
|
|
|
|
|
|
C<ep0>. When using this option, the |
|
418
|
|
|
|
|
|
|
activated service has to have the |
|
419
|
|
|
|
|
|
|
C<USBFunctionDescriptors> and |
|
420
|
|
|
|
|
|
|
C<USBFunctionStrings> options set. |
|
421
|
|
|
|
|
|
|
', |
|
422
|
|
|
|
|
|
|
'type' => 'list' |
|
423
|
|
|
|
|
|
|
}, |
|
424
|
|
|
|
|
|
|
'SocketProtocol', |
|
425
|
|
|
|
|
|
|
{ |
|
426
|
|
|
|
|
|
|
'choice' => [ |
|
427
|
|
|
|
|
|
|
'udplite', |
|
428
|
|
|
|
|
|
|
'sctp' |
|
429
|
|
|
|
|
|
|
], |
|
430
|
|
|
|
|
|
|
'description' => 'Takes one of C<udplite> |
|
431
|
|
|
|
|
|
|
or C<sctp>. The socket will use the UDP-Lite |
|
432
|
|
|
|
|
|
|
(C<IPPROTO_UDPLITE>) or SCTP |
|
433
|
|
|
|
|
|
|
(C<IPPROTO_SCTP>) protocol, respectively.', |
|
434
|
|
|
|
|
|
|
'type' => 'leaf', |
|
435
|
|
|
|
|
|
|
'value_type' => 'enum' |
|
436
|
|
|
|
|
|
|
}, |
|
437
|
|
|
|
|
|
|
'BindIPv6Only', |
|
438
|
|
|
|
|
|
|
{ |
|
439
|
|
|
|
|
|
|
'choice' => [ |
|
440
|
|
|
|
|
|
|
'default', |
|
441
|
|
|
|
|
|
|
'both', |
|
442
|
|
|
|
|
|
|
'ipv6-only' |
|
443
|
|
|
|
|
|
|
], |
|
444
|
|
|
|
|
|
|
'description' => 'Takes one of C<default>, |
|
445
|
|
|
|
|
|
|
C<both> or C<ipv6-only>. Controls |
|
446
|
|
|
|
|
|
|
the IPV6_V6ONLY socket option (see |
|
447
|
|
|
|
|
|
|
L<ipv6(7)> |
|
448
|
|
|
|
|
|
|
for details). If C<both>, IPv6 sockets bound |
|
449
|
|
|
|
|
|
|
will be accessible via both IPv4 and IPv6. If |
|
450
|
|
|
|
|
|
|
C<ipv6-only>, they will be accessible via IPv6 |
|
451
|
|
|
|
|
|
|
only. If C<default> (which is the default, |
|
452
|
|
|
|
|
|
|
surprise!), the system wide default setting is used, as |
|
453
|
|
|
|
|
|
|
controlled by |
|
454
|
|
|
|
|
|
|
C</proc/sys/net/ipv6/bindv6only>, which in |
|
455
|
|
|
|
|
|
|
turn defaults to the equivalent of |
|
456
|
|
|
|
|
|
|
C<both>.', |
|
457
|
|
|
|
|
|
|
'type' => 'leaf', |
|
458
|
|
|
|
|
|
|
'value_type' => 'enum' |
|
459
|
|
|
|
|
|
|
}, |
|
460
|
|
|
|
|
|
|
'Backlog', |
|
461
|
|
|
|
|
|
|
{ |
|
462
|
|
|
|
|
|
|
'description' => 'Takes an unsigned integer argument. Specifies |
|
463
|
|
|
|
|
|
|
the number of connections to queue that have not been accepted |
|
464
|
|
|
|
|
|
|
yet. This setting matters only for stream and sequential |
|
465
|
|
|
|
|
|
|
packet sockets. See |
|
466
|
|
|
|
|
|
|
L<listen(2)> |
|
467
|
|
|
|
|
|
|
for details. Defaults to SOMAXCONN (128).', |
|
468
|
|
|
|
|
|
|
'type' => 'leaf', |
|
469
|
|
|
|
|
|
|
'value_type' => 'uniline' |
|
470
|
|
|
|
|
|
|
}, |
|
471
|
|
|
|
|
|
|
'BindToDevice', |
|
472
|
|
|
|
|
|
|
{ |
|
473
|
|
|
|
|
|
|
'description' => 'Specifies a network interface name to bind this socket to. If set, traffic will only |
|
474
|
|
|
|
|
|
|
be accepted from the specified network interfaces. This controls the |
|
475
|
|
|
|
|
|
|
C<SO_BINDTODEVICE> socket option (see L<socket(7)> for |
|
476
|
|
|
|
|
|
|
details). If this option is used, an implicit dependency from this socket unit on the network |
|
477
|
|
|
|
|
|
|
interface device unit is created |
|
478
|
|
|
|
|
|
|
(see L<systemd.device(5)>). |
|
479
|
|
|
|
|
|
|
Note that setting this parameter might result in additional dependencies to be added to the unit (see |
|
480
|
|
|
|
|
|
|
above).', |
|
481
|
|
|
|
|
|
|
'type' => 'leaf', |
|
482
|
|
|
|
|
|
|
'value_type' => 'uniline' |
|
483
|
|
|
|
|
|
|
}, |
|
484
|
|
|
|
|
|
|
'SocketUser', |
|
485
|
|
|
|
|
|
|
{ |
|
486
|
|
|
|
|
|
|
'description' => 'Takes a UNIX user/group name. When specified, all C<AF_UNIX> |
|
487
|
|
|
|
|
|
|
sockets and FIFO nodes in the file system are owned by the specified user and group. If unset (the |
|
488
|
|
|
|
|
|
|
default), the nodes are owned by the root user/group (if run in system context) or the invoking |
|
489
|
|
|
|
|
|
|
user/group (if run in user context). If only a user is specified but no group, then the group is |
|
490
|
|
|
|
|
|
|
derived from the user\'s default group.', |
|
491
|
|
|
|
|
|
|
'type' => 'leaf', |
|
492
|
|
|
|
|
|
|
'value_type' => 'uniline' |
|
493
|
|
|
|
|
|
|
}, |
|
494
|
|
|
|
|
|
|
'SocketGroup', |
|
495
|
|
|
|
|
|
|
{ |
|
496
|
|
|
|
|
|
|
'description' => 'Takes a UNIX user/group name. When specified, all C<AF_UNIX> |
|
497
|
|
|
|
|
|
|
sockets and FIFO nodes in the file system are owned by the specified user and group. If unset (the |
|
498
|
|
|
|
|
|
|
default), the nodes are owned by the root user/group (if run in system context) or the invoking |
|
499
|
|
|
|
|
|
|
user/group (if run in user context). If only a user is specified but no group, then the group is |
|
500
|
|
|
|
|
|
|
derived from the user\'s default group.', |
|
501
|
|
|
|
|
|
|
'type' => 'leaf', |
|
502
|
|
|
|
|
|
|
'value_type' => 'uniline' |
|
503
|
|
|
|
|
|
|
}, |
|
504
|
|
|
|
|
|
|
'SocketMode', |
|
505
|
|
|
|
|
|
|
{ |
|
506
|
|
|
|
|
|
|
'description' => 'If listening on a file system socket or FIFO, |
|
507
|
|
|
|
|
|
|
this option specifies the file system access mode used when |
|
508
|
|
|
|
|
|
|
creating the file node. Takes an access mode in octal |
|
509
|
|
|
|
|
|
|
notation. Defaults to 0666.', |
|
510
|
|
|
|
|
|
|
'type' => 'leaf', |
|
511
|
|
|
|
|
|
|
'value_type' => 'uniline' |
|
512
|
|
|
|
|
|
|
}, |
|
513
|
|
|
|
|
|
|
'DirectoryMode', |
|
514
|
|
|
|
|
|
|
{ |
|
515
|
|
|
|
|
|
|
'description' => 'If listening on a file system socket or FIFO, |
|
516
|
|
|
|
|
|
|
the parent directories are automatically created if needed. |
|
517
|
|
|
|
|
|
|
This option specifies the file system access mode used when |
|
518
|
|
|
|
|
|
|
creating these directories. Takes an access mode in octal |
|
519
|
|
|
|
|
|
|
notation. Defaults to 0755.', |
|
520
|
|
|
|
|
|
|
'type' => 'leaf', |
|
521
|
|
|
|
|
|
|
'value_type' => 'uniline' |
|
522
|
|
|
|
|
|
|
}, |
|
523
|
|
|
|
|
|
|
'Accept', |
|
524
|
|
|
|
|
|
|
{ |
|
525
|
|
|
|
|
|
|
'description' => 'Takes a boolean argument. If yes, a service instance is spawned for each incoming |
|
526
|
|
|
|
|
|
|
connection and only the connection socket is passed to it. If no, all listening sockets themselves |
|
527
|
|
|
|
|
|
|
are passed to the started service unit, and only one service unit is spawned for all connections |
|
528
|
|
|
|
|
|
|
(also see above). This value is ignored for datagram sockets and FIFOs where a single service unit |
|
529
|
|
|
|
|
|
|
unconditionally handles all incoming traffic. Defaults to C<no>. For performance |
|
530
|
|
|
|
|
|
|
reasons, it is recommended to write new daemons only in a way that is suitable for |
|
531
|
|
|
|
|
|
|
C<Accept=no>. A daemon listening on an C<AF_UNIX> socket may, but |
|
532
|
|
|
|
|
|
|
does not need to, call |
|
533
|
|
|
|
|
|
|
L<close(2)> on the |
|
534
|
|
|
|
|
|
|
received socket before exiting. However, it must not unlink the socket from a file system. It should |
|
535
|
|
|
|
|
|
|
not invoke |
|
536
|
|
|
|
|
|
|
L<shutdown(2)> on |
|
537
|
|
|
|
|
|
|
sockets it got with C<Accept=no>, but it may do so for sockets it got with |
|
538
|
|
|
|
|
|
|
C<Accept=yes> set. Setting C<Accept=yes> is mostly useful to allow |
|
539
|
|
|
|
|
|
|
daemons designed for usage with L<inetd(8)> to work |
|
540
|
|
|
|
|
|
|
unmodified with systemd socket activation. |
|
541
|
|
|
|
|
|
|
|
|
542
|
|
|
|
|
|
|
For IPv4 and IPv6 connections, the C<REMOTE_ADDR> environment variable will |
|
543
|
|
|
|
|
|
|
contain the remote IP address, and C<REMOTE_PORT> will contain the remote port. This |
|
544
|
|
|
|
|
|
|
is the same as the format used by CGI. For C<SOCK_RAW>, the port is the IP |
|
545
|
|
|
|
|
|
|
protocol. |
|
546
|
|
|
|
|
|
|
|
|
547
|
|
|
|
|
|
|
It is recommended to set C<CollectMode=inactive-or-failed> for service |
|
548
|
|
|
|
|
|
|
instances activated via C<Accept=yes>, to ensure that failed connection services are |
|
549
|
|
|
|
|
|
|
cleaned up and released from memory, and do not accumulate.', |
|
550
|
|
|
|
|
|
|
'type' => 'leaf', |
|
551
|
|
|
|
|
|
|
'value_type' => 'boolean', |
|
552
|
|
|
|
|
|
|
'write_as' => [ |
|
553
|
|
|
|
|
|
|
'no', |
|
554
|
|
|
|
|
|
|
'yes' |
|
555
|
|
|
|
|
|
|
] |
|
556
|
|
|
|
|
|
|
}, |
|
557
|
|
|
|
|
|
|
'Writable', |
|
558
|
|
|
|
|
|
|
{ |
|
559
|
|
|
|
|
|
|
'description' => 'Takes a boolean argument. May only be used in |
|
560
|
|
|
|
|
|
|
conjunction with C<ListenSpecial>. If true, |
|
561
|
|
|
|
|
|
|
the specified special file is opened in read-write mode, if |
|
562
|
|
|
|
|
|
|
false, in read-only mode. Defaults to false.', |
|
563
|
|
|
|
|
|
|
'type' => 'leaf', |
|
564
|
|
|
|
|
|
|
'value_type' => 'boolean', |
|
565
|
|
|
|
|
|
|
'write_as' => [ |
|
566
|
|
|
|
|
|
|
'no', |
|
567
|
|
|
|
|
|
|
'yes' |
|
568
|
|
|
|
|
|
|
] |
|
569
|
|
|
|
|
|
|
}, |
|
570
|
|
|
|
|
|
|
'FlushPending', |
|
571
|
|
|
|
|
|
|
{ |
|
572
|
|
|
|
|
|
|
'description' => 'Takes a boolean argument. May only be used when |
|
573
|
|
|
|
|
|
|
C<Accept=no>. If yes, the socket\'s buffers are cleared after the |
|
574
|
|
|
|
|
|
|
triggered service exited. This causes any pending data to be |
|
575
|
|
|
|
|
|
|
flushed and any pending incoming connections to be rejected. If no, the |
|
576
|
|
|
|
|
|
|
socket\'s buffers won\'t be cleared, permitting the service to handle any |
|
577
|
|
|
|
|
|
|
pending connections after restart, which is the usually expected behaviour. |
|
578
|
|
|
|
|
|
|
Defaults to C<no>. |
|
579
|
|
|
|
|
|
|
', |
|
580
|
|
|
|
|
|
|
'type' => 'leaf', |
|
581
|
|
|
|
|
|
|
'value_type' => 'boolean', |
|
582
|
|
|
|
|
|
|
'write_as' => [ |
|
583
|
|
|
|
|
|
|
'no', |
|
584
|
|
|
|
|
|
|
'yes' |
|
585
|
|
|
|
|
|
|
] |
|
586
|
|
|
|
|
|
|
}, |
|
587
|
|
|
|
|
|
|
'MaxConnections', |
|
588
|
|
|
|
|
|
|
{ |
|
589
|
|
|
|
|
|
|
'description' => 'The maximum number of connections to |
|
590
|
|
|
|
|
|
|
simultaneously run services instances for, when |
|
591
|
|
|
|
|
|
|
C<Accept=yes> is set. If more concurrent |
|
592
|
|
|
|
|
|
|
connections are coming in, they will be refused until at least |
|
593
|
|
|
|
|
|
|
one existing connection is terminated. This setting has no |
|
594
|
|
|
|
|
|
|
effect on sockets configured with |
|
595
|
|
|
|
|
|
|
C<Accept=no> or datagram sockets. Defaults to |
|
596
|
|
|
|
|
|
|
64.', |
|
597
|
|
|
|
|
|
|
'type' => 'leaf', |
|
598
|
|
|
|
|
|
|
'value_type' => 'uniline' |
|
599
|
|
|
|
|
|
|
}, |
|
600
|
|
|
|
|
|
|
'MaxConnectionsPerSource', |
|
601
|
|
|
|
|
|
|
{ |
|
602
|
|
|
|
|
|
|
'description' => 'The maximum number of connections for a service per source IP address. |
|
603
|
|
|
|
|
|
|
This is very similar to the C<MaxConnections> directive |
|
604
|
|
|
|
|
|
|
above. Disabled by default.', |
|
605
|
|
|
|
|
|
|
'type' => 'leaf', |
|
606
|
|
|
|
|
|
|
'value_type' => 'uniline' |
|
607
|
|
|
|
|
|
|
}, |
|
608
|
|
|
|
|
|
|
'KeepAlive', |
|
609
|
|
|
|
|
|
|
{ |
|
610
|
|
|
|
|
|
|
'description' => 'Takes a boolean argument. If true, the TCP/IP stack will send a keep alive message |
|
611
|
|
|
|
|
|
|
after 2h (depending on the configuration of |
|
612
|
|
|
|
|
|
|
C</proc/sys/net/ipv4/tcp_keepalive_time>) for all TCP streams accepted on this |
|
613
|
|
|
|
|
|
|
socket. This controls the C<SO_KEEPALIVE> socket option (see L<socket(7)> and |
|
614
|
|
|
|
|
|
|
the L<TCP Keepalive |
|
615
|
|
|
|
|
|
|
HOWTO|http://www.tldp.org/HOWTO/html_single/TCP-Keepalive-HOWTO/> for details.) Defaults to C<false>.', |
|
616
|
|
|
|
|
|
|
'type' => 'leaf', |
|
617
|
|
|
|
|
|
|
'value_type' => 'boolean', |
|
618
|
|
|
|
|
|
|
'write_as' => [ |
|
619
|
|
|
|
|
|
|
'no', |
|
620
|
|
|
|
|
|
|
'yes' |
|
621
|
|
|
|
|
|
|
] |
|
622
|
|
|
|
|
|
|
}, |
|
623
|
|
|
|
|
|
|
'KeepAliveTimeSec', |
|
624
|
|
|
|
|
|
|
{ |
|
625
|
|
|
|
|
|
|
'description' => 'Takes time (in seconds) as argument. The connection needs to remain |
|
626
|
|
|
|
|
|
|
idle before TCP starts sending keepalive probes. This controls the TCP_KEEPIDLE |
|
627
|
|
|
|
|
|
|
socket option (see |
|
628
|
|
|
|
|
|
|
L<socket(7)> |
|
629
|
|
|
|
|
|
|
and the L<TCP |
|
630
|
|
|
|
|
|
|
Keepalive HOWTO|http://www.tldp.org/HOWTO/html_single/TCP-Keepalive-HOWTO/> for details.) |
|
631
|
|
|
|
|
|
|
Defaults value is 7200 seconds (2 hours).', |
|
632
|
|
|
|
|
|
|
'type' => 'leaf', |
|
633
|
|
|
|
|
|
|
'value_type' => 'integer' |
|
634
|
|
|
|
|
|
|
}, |
|
635
|
|
|
|
|
|
|
'KeepAliveIntervalSec', |
|
636
|
|
|
|
|
|
|
{ |
|
637
|
|
|
|
|
|
|
'description' => 'Takes time (in seconds) as argument between individual keepalive probes, if the |
|
638
|
|
|
|
|
|
|
socket option C<SO_KEEPALIVE> has been set on this socket. This controls the |
|
639
|
|
|
|
|
|
|
C<TCP_KEEPINTVL> socket option (see L<socket(7)> and |
|
640
|
|
|
|
|
|
|
the L<TCP Keepalive |
|
641
|
|
|
|
|
|
|
HOWTO|http://www.tldp.org/HOWTO/html_single/TCP-Keepalive-HOWTO/> for details.) Defaults value is 75 seconds.', |
|
642
|
|
|
|
|
|
|
'type' => 'leaf', |
|
643
|
|
|
|
|
|
|
'value_type' => 'integer' |
|
644
|
|
|
|
|
|
|
}, |
|
645
|
|
|
|
|
|
|
'KeepAliveProbes', |
|
646
|
|
|
|
|
|
|
{ |
|
647
|
|
|
|
|
|
|
'description' => 'Takes an integer as argument. It is the number of |
|
648
|
|
|
|
|
|
|
unacknowledged probes to send before considering the |
|
649
|
|
|
|
|
|
|
connection dead and notifying the application layer. This |
|
650
|
|
|
|
|
|
|
controls the TCP_KEEPCNT socket option (see |
|
651
|
|
|
|
|
|
|
L<socket(7)> |
|
652
|
|
|
|
|
|
|
and the L<TCP |
|
653
|
|
|
|
|
|
|
Keepalive HOWTO|http://www.tldp.org/HOWTO/html_single/TCP-Keepalive-HOWTO/> for details.) Defaults value is |
|
654
|
|
|
|
|
|
|
9.', |
|
655
|
|
|
|
|
|
|
'type' => 'leaf', |
|
656
|
|
|
|
|
|
|
'value_type' => 'integer' |
|
657
|
|
|
|
|
|
|
}, |
|
658
|
|
|
|
|
|
|
'NoDelay', |
|
659
|
|
|
|
|
|
|
{ |
|
660
|
|
|
|
|
|
|
'description' => 'Takes a boolean argument. TCP Nagle\'s |
|
661
|
|
|
|
|
|
|
algorithm works by combining a number of small outgoing |
|
662
|
|
|
|
|
|
|
messages, and sending them all at once. This controls the |
|
663
|
|
|
|
|
|
|
TCP_NODELAY socket option (see |
|
664
|
|
|
|
|
|
|
L<tcp(7)>). |
|
665
|
|
|
|
|
|
|
Defaults to C<false>.', |
|
666
|
|
|
|
|
|
|
'type' => 'leaf', |
|
667
|
|
|
|
|
|
|
'value_type' => 'boolean', |
|
668
|
|
|
|
|
|
|
'write_as' => [ |
|
669
|
|
|
|
|
|
|
'no', |
|
670
|
|
|
|
|
|
|
'yes' |
|
671
|
|
|
|
|
|
|
] |
|
672
|
|
|
|
|
|
|
}, |
|
673
|
|
|
|
|
|
|
'Priority', |
|
674
|
|
|
|
|
|
|
{ |
|
675
|
|
|
|
|
|
|
'description' => 'Takes an integer argument controlling the priority for all traffic sent from this |
|
676
|
|
|
|
|
|
|
socket. This controls the C<SO_PRIORITY> socket option (see L<socket(7)> for |
|
677
|
|
|
|
|
|
|
details.).', |
|
678
|
|
|
|
|
|
|
'type' => 'leaf', |
|
679
|
|
|
|
|
|
|
'value_type' => 'integer' |
|
680
|
|
|
|
|
|
|
}, |
|
681
|
|
|
|
|
|
|
'DeferAcceptSec', |
|
682
|
|
|
|
|
|
|
{ |
|
683
|
|
|
|
|
|
|
'description' => 'Takes time (in seconds) as argument. If set, |
|
684
|
|
|
|
|
|
|
the listening process will be awakened only when data arrives |
|
685
|
|
|
|
|
|
|
on the socket, and not immediately when connection is |
|
686
|
|
|
|
|
|
|
established. When this option is set, the |
|
687
|
|
|
|
|
|
|
C<TCP_DEFER_ACCEPT> socket option will be |
|
688
|
|
|
|
|
|
|
used (see |
|
689
|
|
|
|
|
|
|
L<tcp(7)>), |
|
690
|
|
|
|
|
|
|
and the kernel will ignore initial ACK packets without any |
|
691
|
|
|
|
|
|
|
data. The argument specifies the approximate amount of time |
|
692
|
|
|
|
|
|
|
the kernel should wait for incoming data before falling back |
|
693
|
|
|
|
|
|
|
to the normal behavior of honoring empty ACK packets. This |
|
694
|
|
|
|
|
|
|
option is beneficial for protocols where the client sends the |
|
695
|
|
|
|
|
|
|
data first (e.g. HTTP, in contrast to SMTP), because the |
|
696
|
|
|
|
|
|
|
server process will not be woken up unnecessarily before it |
|
697
|
|
|
|
|
|
|
can take any action. |
|
698
|
|
|
|
|
|
|
|
|
699
|
|
|
|
|
|
|
If the client also uses the |
|
700
|
|
|
|
|
|
|
C<TCP_DEFER_ACCEPT> option, the latency of |
|
701
|
|
|
|
|
|
|
the initial connection may be reduced, because the kernel will |
|
702
|
|
|
|
|
|
|
send data in the final packet establishing the connection (the |
|
703
|
|
|
|
|
|
|
third packet in the "three-way handshake"). |
|
704
|
|
|
|
|
|
|
|
|
705
|
|
|
|
|
|
|
Disabled by default.', |
|
706
|
|
|
|
|
|
|
'type' => 'leaf', |
|
707
|
|
|
|
|
|
|
'value_type' => 'integer' |
|
708
|
|
|
|
|
|
|
}, |
|
709
|
|
|
|
|
|
|
'ReceiveBuffer', |
|
710
|
|
|
|
|
|
|
{ |
|
711
|
|
|
|
|
|
|
'description' => 'Takes an integer argument controlling the receive or send buffer sizes of this |
|
712
|
|
|
|
|
|
|
socket, respectively. This controls the C<SO_RCVBUF> and |
|
713
|
|
|
|
|
|
|
C<SO_SNDBUF> socket options (see L<socket(7)> for |
|
714
|
|
|
|
|
|
|
details.). The usual suffixes K, M, G are supported and are understood to the base of |
|
715
|
|
|
|
|
|
|
1024.', |
|
716
|
|
|
|
|
|
|
'match' => '^\\d+(?i)[KMG]$', |
|
717
|
|
|
|
|
|
|
'type' => 'leaf', |
|
718
|
|
|
|
|
|
|
'value_type' => 'uniline' |
|
719
|
|
|
|
|
|
|
}, |
|
720
|
|
|
|
|
|
|
'SendBuffer', |
|
721
|
|
|
|
|
|
|
{ |
|
722
|
|
|
|
|
|
|
'description' => 'Takes an integer argument controlling the receive or send buffer sizes of this |
|
723
|
|
|
|
|
|
|
socket, respectively. This controls the C<SO_RCVBUF> and |
|
724
|
|
|
|
|
|
|
C<SO_SNDBUF> socket options (see L<socket(7)> for |
|
725
|
|
|
|
|
|
|
details.). The usual suffixes K, M, G are supported and are understood to the base of |
|
726
|
|
|
|
|
|
|
1024.', |
|
727
|
|
|
|
|
|
|
'match' => '^\\d+(?i)[KMG]$', |
|
728
|
|
|
|
|
|
|
'type' => 'leaf', |
|
729
|
|
|
|
|
|
|
'value_type' => 'uniline' |
|
730
|
|
|
|
|
|
|
}, |
|
731
|
|
|
|
|
|
|
'IPTOS', |
|
732
|
|
|
|
|
|
|
{ |
|
733
|
|
|
|
|
|
|
'description' => 'Takes an integer argument controlling the IP Type-Of-Service field for packets |
|
734
|
|
|
|
|
|
|
generated from this socket. This controls the C<IP_TOS> socket option (see |
|
735
|
|
|
|
|
|
|
L<ip(7)> for |
|
736
|
|
|
|
|
|
|
details.). Either a numeric string or one of C<low-delay>, C<throughput>, |
|
737
|
|
|
|
|
|
|
C<reliability> or C<low-cost> may be specified.', |
|
738
|
|
|
|
|
|
|
'type' => 'leaf', |
|
739
|
|
|
|
|
|
|
'value_type' => 'integer' |
|
740
|
|
|
|
|
|
|
}, |
|
741
|
|
|
|
|
|
|
'IPTTL', |
|
742
|
|
|
|
|
|
|
{ |
|
743
|
|
|
|
|
|
|
'description' => 'Takes an integer argument controlling the IPv4 Time-To-Live/IPv6 Hop-Count field for |
|
744
|
|
|
|
|
|
|
packets generated from this socket. This sets the |
|
745
|
|
|
|
|
|
|
C<IP_TTL>/C<IPV6_UNICAST_HOPS> socket options (see L<ip(7)> and |
|
746
|
|
|
|
|
|
|
L<ipv6(7)> for |
|
747
|
|
|
|
|
|
|
details.)', |
|
748
|
|
|
|
|
|
|
'type' => 'leaf', |
|
749
|
|
|
|
|
|
|
'value_type' => 'integer' |
|
750
|
|
|
|
|
|
|
}, |
|
751
|
|
|
|
|
|
|
'Mark', |
|
752
|
|
|
|
|
|
|
{ |
|
753
|
|
|
|
|
|
|
'description' => 'Takes an integer value. Controls the firewall mark of packets generated by this |
|
754
|
|
|
|
|
|
|
socket. This can be used in the firewall logic to filter packets from this socket. This sets the |
|
755
|
|
|
|
|
|
|
C<SO_MARK> socket option. See L<iptables(8)> for |
|
756
|
|
|
|
|
|
|
details.', |
|
757
|
|
|
|
|
|
|
'type' => 'leaf', |
|
758
|
|
|
|
|
|
|
'value_type' => 'integer' |
|
759
|
|
|
|
|
|
|
}, |
|
760
|
|
|
|
|
|
|
'ReusePort', |
|
761
|
|
|
|
|
|
|
{ |
|
762
|
|
|
|
|
|
|
'description' => 'Takes a boolean value. If true, allows multiple |
|
763
|
|
|
|
|
|
|
L<bind(2)>s to this TCP |
|
764
|
|
|
|
|
|
|
or UDP port. This controls the C<SO_REUSEPORT> socket option. See L<socket(7)> for |
|
765
|
|
|
|
|
|
|
details.', |
|
766
|
|
|
|
|
|
|
'type' => 'leaf', |
|
767
|
|
|
|
|
|
|
'value_type' => 'boolean', |
|
768
|
|
|
|
|
|
|
'write_as' => [ |
|
769
|
|
|
|
|
|
|
'no', |
|
770
|
|
|
|
|
|
|
'yes' |
|
771
|
|
|
|
|
|
|
] |
|
772
|
|
|
|
|
|
|
}, |
|
773
|
|
|
|
|
|
|
'SmackLabel', |
|
774
|
|
|
|
|
|
|
{ |
|
775
|
|
|
|
|
|
|
'description' => 'Takes a string value. Controls the extended |
|
776
|
|
|
|
|
|
|
attributes C<security.SMACK64>, |
|
777
|
|
|
|
|
|
|
C<security.SMACK64IPIN> and |
|
778
|
|
|
|
|
|
|
C<security.SMACK64IPOUT>, respectively, i.e. |
|
779
|
|
|
|
|
|
|
the security label of the FIFO, or the security label for the |
|
780
|
|
|
|
|
|
|
incoming or outgoing connections of the socket, respectively. |
|
781
|
|
|
|
|
|
|
See L<Smack|https://docs.kernel.org/admin-guide/LSM/Smack.html> |
|
782
|
|
|
|
|
|
|
for details.', |
|
783
|
|
|
|
|
|
|
'type' => 'leaf', |
|
784
|
|
|
|
|
|
|
'value_type' => 'uniline' |
|
785
|
|
|
|
|
|
|
}, |
|
786
|
|
|
|
|
|
|
'SmackLabelIPIn', |
|
787
|
|
|
|
|
|
|
{ |
|
788
|
|
|
|
|
|
|
'description' => 'Takes a string value. Controls the extended |
|
789
|
|
|
|
|
|
|
attributes C<security.SMACK64>, |
|
790
|
|
|
|
|
|
|
C<security.SMACK64IPIN> and |
|
791
|
|
|
|
|
|
|
C<security.SMACK64IPOUT>, respectively, i.e. |
|
792
|
|
|
|
|
|
|
the security label of the FIFO, or the security label for the |
|
793
|
|
|
|
|
|
|
incoming or outgoing connections of the socket, respectively. |
|
794
|
|
|
|
|
|
|
See L<Smack|https://docs.kernel.org/admin-guide/LSM/Smack.html> |
|
795
|
|
|
|
|
|
|
for details.', |
|
796
|
|
|
|
|
|
|
'type' => 'leaf', |
|
797
|
|
|
|
|
|
|
'value_type' => 'uniline' |
|
798
|
|
|
|
|
|
|
}, |
|
799
|
|
|
|
|
|
|
'SmackLabelIPOut', |
|
800
|
|
|
|
|
|
|
{ |
|
801
|
|
|
|
|
|
|
'description' => 'Takes a string value. Controls the extended |
|
802
|
|
|
|
|
|
|
attributes C<security.SMACK64>, |
|
803
|
|
|
|
|
|
|
C<security.SMACK64IPIN> and |
|
804
|
|
|
|
|
|
|
C<security.SMACK64IPOUT>, respectively, i.e. |
|
805
|
|
|
|
|
|
|
the security label of the FIFO, or the security label for the |
|
806
|
|
|
|
|
|
|
incoming or outgoing connections of the socket, respectively. |
|
807
|
|
|
|
|
|
|
See L<Smack|https://docs.kernel.org/admin-guide/LSM/Smack.html> |
|
808
|
|
|
|
|
|
|
for details.', |
|
809
|
|
|
|
|
|
|
'type' => 'leaf', |
|
810
|
|
|
|
|
|
|
'value_type' => 'uniline' |
|
811
|
|
|
|
|
|
|
}, |
|
812
|
|
|
|
|
|
|
'SELinuxContextFromNet', |
|
813
|
|
|
|
|
|
|
{ |
|
814
|
|
|
|
|
|
|
'description' => 'Takes a boolean argument. When true, systemd |
|
815
|
|
|
|
|
|
|
will attempt to figure out the SELinux label used for the |
|
816
|
|
|
|
|
|
|
instantiated service from the information handed by the peer |
|
817
|
|
|
|
|
|
|
over the network. Note that only the security level is used |
|
818
|
|
|
|
|
|
|
from the information provided by the peer. Other parts of the |
|
819
|
|
|
|
|
|
|
resulting SELinux context originate from either the target |
|
820
|
|
|
|
|
|
|
binary that is effectively triggered by socket unit or from |
|
821
|
|
|
|
|
|
|
the value of the C<SELinuxContext> option. |
|
822
|
|
|
|
|
|
|
This configuration option applies only when activated service |
|
823
|
|
|
|
|
|
|
is passed in single socket file descriptor, i.e. service |
|
824
|
|
|
|
|
|
|
instances that have standard input connected to a socket or |
|
825
|
|
|
|
|
|
|
services triggered by exactly one socket unit. Also note |
|
826
|
|
|
|
|
|
|
that this option is useful only when MLS/MCS SELinux policy |
|
827
|
|
|
|
|
|
|
is deployed. Defaults to |
|
828
|
|
|
|
|
|
|
C<false>.', |
|
829
|
|
|
|
|
|
|
'type' => 'leaf', |
|
830
|
|
|
|
|
|
|
'value_type' => 'boolean', |
|
831
|
|
|
|
|
|
|
'write_as' => [ |
|
832
|
|
|
|
|
|
|
'no', |
|
833
|
|
|
|
|
|
|
'yes' |
|
834
|
|
|
|
|
|
|
] |
|
835
|
|
|
|
|
|
|
}, |
|
836
|
|
|
|
|
|
|
'PipeSize', |
|
837
|
|
|
|
|
|
|
{ |
|
838
|
|
|
|
|
|
|
'description' => 'Takes a size in bytes. Controls the pipe |
|
839
|
|
|
|
|
|
|
buffer size of FIFOs configured in this socket unit. See |
|
840
|
|
|
|
|
|
|
L<fcntl(2)> |
|
841
|
|
|
|
|
|
|
for details. The usual suffixes K, M, G are supported and are |
|
842
|
|
|
|
|
|
|
understood to the base of 1024.', |
|
843
|
|
|
|
|
|
|
'type' => 'leaf', |
|
844
|
|
|
|
|
|
|
'value_type' => 'uniline' |
|
845
|
|
|
|
|
|
|
}, |
|
846
|
|
|
|
|
|
|
'MessageQueueMaxMessages', |
|
847
|
|
|
|
|
|
|
{ |
|
848
|
|
|
|
|
|
|
'description' => 'These two settings take integer values and |
|
849
|
|
|
|
|
|
|
control the mq_maxmsg field or the mq_msgsize field, |
|
850
|
|
|
|
|
|
|
respectively, when creating the message queue. Note that |
|
851
|
|
|
|
|
|
|
either none or both of these variables need to be set. See |
|
852
|
|
|
|
|
|
|
L<mq_setattr(3)> |
|
853
|
|
|
|
|
|
|
for details.', |
|
854
|
|
|
|
|
|
|
'type' => 'leaf', |
|
855
|
|
|
|
|
|
|
'value_type' => 'uniline' |
|
856
|
|
|
|
|
|
|
}, |
|
857
|
|
|
|
|
|
|
'FreeBind', |
|
858
|
|
|
|
|
|
|
{ |
|
859
|
|
|
|
|
|
|
'description' => 'Takes a boolean value. Controls whether the socket can be bound to non-local IP |
|
860
|
|
|
|
|
|
|
addresses. This is useful to configure sockets listening on specific IP addresses before those IP |
|
861
|
|
|
|
|
|
|
addresses are successfully configured on a network interface. This sets the |
|
862
|
|
|
|
|
|
|
C<IP_FREEBIND>/C<IPV6_FREEBIND> socket option. For robustness |
|
863
|
|
|
|
|
|
|
reasons it is recommended to use this option whenever you bind a socket to a specific IP |
|
864
|
|
|
|
|
|
|
address. Defaults to C<false>.', |
|
865
|
|
|
|
|
|
|
'type' => 'leaf', |
|
866
|
|
|
|
|
|
|
'value_type' => 'boolean', |
|
867
|
|
|
|
|
|
|
'write_as' => [ |
|
868
|
|
|
|
|
|
|
'no', |
|
869
|
|
|
|
|
|
|
'yes' |
|
870
|
|
|
|
|
|
|
] |
|
871
|
|
|
|
|
|
|
}, |
|
872
|
|
|
|
|
|
|
'Transparent', |
|
873
|
|
|
|
|
|
|
{ |
|
874
|
|
|
|
|
|
|
'description' => 'Takes a boolean value. Controls the |
|
875
|
|
|
|
|
|
|
C<IP_TRANSPARENT>/C<IPV6_TRANSPARENT> socket option. Defaults to |
|
876
|
|
|
|
|
|
|
C<false>.', |
|
877
|
|
|
|
|
|
|
'type' => 'leaf', |
|
878
|
|
|
|
|
|
|
'value_type' => 'boolean', |
|
879
|
|
|
|
|
|
|
'write_as' => [ |
|
880
|
|
|
|
|
|
|
'no', |
|
881
|
|
|
|
|
|
|
'yes' |
|
882
|
|
|
|
|
|
|
] |
|
883
|
|
|
|
|
|
|
}, |
|
884
|
|
|
|
|
|
|
'Broadcast', |
|
885
|
|
|
|
|
|
|
{ |
|
886
|
|
|
|
|
|
|
'description' => 'Takes a boolean value. This controls the C<SO_BROADCAST> socket |
|
887
|
|
|
|
|
|
|
option, which allows broadcast datagrams to be sent from this socket. Defaults to |
|
888
|
|
|
|
|
|
|
C<false>.', |
|
889
|
|
|
|
|
|
|
'type' => 'leaf', |
|
890
|
|
|
|
|
|
|
'value_type' => 'boolean', |
|
891
|
|
|
|
|
|
|
'write_as' => [ |
|
892
|
|
|
|
|
|
|
'no', |
|
893
|
|
|
|
|
|
|
'yes' |
|
894
|
|
|
|
|
|
|
] |
|
895
|
|
|
|
|
|
|
}, |
|
896
|
|
|
|
|
|
|
'PassCredentials', |
|
897
|
|
|
|
|
|
|
{ |
|
898
|
|
|
|
|
|
|
'description' => 'Takes a boolean value. This controls the C<SO_PASSCRED> socket |
|
899
|
|
|
|
|
|
|
option, which allows C<AF_UNIX> sockets to receive the credentials of the sending |
|
900
|
|
|
|
|
|
|
process in an ancillary message. Defaults to C<false>.', |
|
901
|
|
|
|
|
|
|
'type' => 'leaf', |
|
902
|
|
|
|
|
|
|
'value_type' => 'boolean', |
|
903
|
|
|
|
|
|
|
'write_as' => [ |
|
904
|
|
|
|
|
|
|
'no', |
|
905
|
|
|
|
|
|
|
'yes' |
|
906
|
|
|
|
|
|
|
] |
|
907
|
|
|
|
|
|
|
}, |
|
908
|
|
|
|
|
|
|
'PassSecurity', |
|
909
|
|
|
|
|
|
|
{ |
|
910
|
|
|
|
|
|
|
'description' => 'Takes a boolean value. This controls the C<SO_PASSSEC> socket |
|
911
|
|
|
|
|
|
|
option, which allows C<AF_UNIX> sockets to receive the security context of the |
|
912
|
|
|
|
|
|
|
sending process in an ancillary message. Defaults to C<false>.', |
|
913
|
|
|
|
|
|
|
'type' => 'leaf', |
|
914
|
|
|
|
|
|
|
'value_type' => 'boolean', |
|
915
|
|
|
|
|
|
|
'write_as' => [ |
|
916
|
|
|
|
|
|
|
'no', |
|
917
|
|
|
|
|
|
|
'yes' |
|
918
|
|
|
|
|
|
|
] |
|
919
|
|
|
|
|
|
|
}, |
|
920
|
|
|
|
|
|
|
'PassPacketInfo', |
|
921
|
|
|
|
|
|
|
{ |
|
922
|
|
|
|
|
|
|
'description' => 'Takes a boolean value. This controls the C<IP_PKTINFO>, |
|
923
|
|
|
|
|
|
|
C<IPV6_RECVPKTINFO>, C<NETLINK_PKTINFO> or |
|
924
|
|
|
|
|
|
|
C<PACKET_AUXDATA> socket options, which enable reception of additional per-packet |
|
925
|
|
|
|
|
|
|
metadata as ancillary message, on C<AF_INET>, C<AF_INET6>, |
|
926
|
|
|
|
|
|
|
C<AF_UNIX> and C<AF_PACKET> sockets. Defaults to |
|
927
|
|
|
|
|
|
|
C<false>.', |
|
928
|
|
|
|
|
|
|
'type' => 'leaf', |
|
929
|
|
|
|
|
|
|
'value_type' => 'boolean', |
|
930
|
|
|
|
|
|
|
'write_as' => [ |
|
931
|
|
|
|
|
|
|
'no', |
|
932
|
|
|
|
|
|
|
'yes' |
|
933
|
|
|
|
|
|
|
] |
|
934
|
|
|
|
|
|
|
}, |
|
935
|
|
|
|
|
|
|
'Timestamping', |
|
936
|
|
|
|
|
|
|
{ |
|
937
|
|
|
|
|
|
|
'choice' => [ |
|
938
|
|
|
|
|
|
|
'off', |
|
939
|
|
|
|
|
|
|
'us', |
|
940
|
|
|
|
|
|
|
'usec', |
|
941
|
|
|
|
|
|
|
"\x{b5}s", |
|
942
|
|
|
|
|
|
|
'ns', |
|
943
|
|
|
|
|
|
|
'nsec' |
|
944
|
|
|
|
|
|
|
], |
|
945
|
|
|
|
|
|
|
'description' => "Takes one of C<off>, C<us> (alias: |
|
946
|
|
|
|
|
|
|
C<usec>, C<\x{b5}s>) or C<ns> (alias: |
|
947
|
|
|
|
|
|
|
C<nsec>). This controls the C<SO_TIMESTAMP> or |
|
948
|
|
|
|
|
|
|
C<SO_TIMESTAMPNS> socket options, and enables whether ingress network traffic shall |
|
949
|
|
|
|
|
|
|
carry timestamping metadata. Defaults to C<off>.", |
|
950
|
|
|
|
|
|
|
'type' => 'leaf', |
|
951
|
|
|
|
|
|
|
'value_type' => 'enum' |
|
952
|
|
|
|
|
|
|
}, |
|
953
|
|
|
|
|
|
|
'TCPCongestion', |
|
954
|
|
|
|
|
|
|
{ |
|
955
|
|
|
|
|
|
|
'description' => 'Takes a string value. Controls the TCP congestion algorithm used by this |
|
956
|
|
|
|
|
|
|
socket. Should be one of C<westwood>, C<veno>, |
|
957
|
|
|
|
|
|
|
C<cubic>, C<lp> or any other available algorithm supported by the IP |
|
958
|
|
|
|
|
|
|
stack. This setting applies only to stream sockets.', |
|
959
|
|
|
|
|
|
|
'type' => 'leaf', |
|
960
|
|
|
|
|
|
|
'value_type' => 'uniline' |
|
961
|
|
|
|
|
|
|
}, |
|
962
|
|
|
|
|
|
|
'ExecStartPre', |
|
963
|
|
|
|
|
|
|
{ |
|
964
|
|
|
|
|
|
|
'cargo' => { |
|
965
|
|
|
|
|
|
|
'type' => 'leaf', |
|
966
|
|
|
|
|
|
|
'value_type' => 'uniline' |
|
967
|
|
|
|
|
|
|
}, |
|
968
|
|
|
|
|
|
|
'description' => 'Takes one or more command lines, which are |
|
969
|
|
|
|
|
|
|
executed before or after the listening sockets/FIFOs are |
|
970
|
|
|
|
|
|
|
created and bound, respectively. The first token of the |
|
971
|
|
|
|
|
|
|
command line must be an absolute filename, then followed by |
|
972
|
|
|
|
|
|
|
arguments for the process. Multiple command lines may be |
|
973
|
|
|
|
|
|
|
specified following the same scheme as used for |
|
974
|
|
|
|
|
|
|
C<ExecStartPre> of service unit |
|
975
|
|
|
|
|
|
|
files.', |
|
976
|
|
|
|
|
|
|
'type' => 'list' |
|
977
|
|
|
|
|
|
|
}, |
|
978
|
|
|
|
|
|
|
'ExecStartPost', |
|
979
|
|
|
|
|
|
|
{ |
|
980
|
|
|
|
|
|
|
'cargo' => { |
|
981
|
|
|
|
|
|
|
'type' => 'leaf', |
|
982
|
|
|
|
|
|
|
'value_type' => 'uniline' |
|
983
|
|
|
|
|
|
|
}, |
|
984
|
|
|
|
|
|
|
'description' => 'Takes one or more command lines, which are |
|
985
|
|
|
|
|
|
|
executed before or after the listening sockets/FIFOs are |
|
986
|
|
|
|
|
|
|
created and bound, respectively. The first token of the |
|
987
|
|
|
|
|
|
|
command line must be an absolute filename, then followed by |
|
988
|
|
|
|
|
|
|
arguments for the process. Multiple command lines may be |
|
989
|
|
|
|
|
|
|
specified following the same scheme as used for |
|
990
|
|
|
|
|
|
|
C<ExecStartPre> of service unit |
|
991
|
|
|
|
|
|
|
files.', |
|
992
|
|
|
|
|
|
|
'type' => 'list' |
|
993
|
|
|
|
|
|
|
}, |
|
994
|
|
|
|
|
|
|
'ExecStopPre', |
|
995
|
|
|
|
|
|
|
{ |
|
996
|
|
|
|
|
|
|
'cargo' => { |
|
997
|
|
|
|
|
|
|
'type' => 'leaf', |
|
998
|
|
|
|
|
|
|
'value_type' => 'uniline' |
|
999
|
|
|
|
|
|
|
}, |
|
1000
|
|
|
|
|
|
|
'description' => 'Additional commands that are executed before |
|
1001
|
|
|
|
|
|
|
or after the listening sockets/FIFOs are closed and removed, |
|
1002
|
|
|
|
|
|
|
respectively. Multiple command lines may be specified |
|
1003
|
|
|
|
|
|
|
following the same scheme as used for |
|
1004
|
|
|
|
|
|
|
C<ExecStartPre> of service unit |
|
1005
|
|
|
|
|
|
|
files.', |
|
1006
|
|
|
|
|
|
|
'type' => 'list' |
|
1007
|
|
|
|
|
|
|
}, |
|
1008
|
|
|
|
|
|
|
'ExecStopPost', |
|
1009
|
|
|
|
|
|
|
{ |
|
1010
|
|
|
|
|
|
|
'cargo' => { |
|
1011
|
|
|
|
|
|
|
'type' => 'leaf', |
|
1012
|
|
|
|
|
|
|
'value_type' => 'uniline' |
|
1013
|
|
|
|
|
|
|
}, |
|
1014
|
|
|
|
|
|
|
'description' => 'Additional commands that are executed before |
|
1015
|
|
|
|
|
|
|
or after the listening sockets/FIFOs are closed and removed, |
|
1016
|
|
|
|
|
|
|
respectively. Multiple command lines may be specified |
|
1017
|
|
|
|
|
|
|
following the same scheme as used for |
|
1018
|
|
|
|
|
|
|
C<ExecStartPre> of service unit |
|
1019
|
|
|
|
|
|
|
files.', |
|
1020
|
|
|
|
|
|
|
'type' => 'list' |
|
1021
|
|
|
|
|
|
|
}, |
|
1022
|
|
|
|
|
|
|
'TimeoutSec', |
|
1023
|
|
|
|
|
|
|
{ |
|
1024
|
|
|
|
|
|
|
'description' => 'Configures the time to wait for the commands |
|
1025
|
|
|
|
|
|
|
specified in C<ExecStartPre>, |
|
1026
|
|
|
|
|
|
|
C<ExecStartPost>, |
|
1027
|
|
|
|
|
|
|
C<ExecStopPre> and |
|
1028
|
|
|
|
|
|
|
C<ExecStopPost> to finish. If a command does |
|
1029
|
|
|
|
|
|
|
not exit within the configured time, the socket will be |
|
1030
|
|
|
|
|
|
|
considered failed and be shut down again. All commands still |
|
1031
|
|
|
|
|
|
|
running will be terminated forcibly via |
|
1032
|
|
|
|
|
|
|
C<SIGTERM>, and after another delay of this |
|
1033
|
|
|
|
|
|
|
time with C<SIGKILL>. (See |
|
1034
|
|
|
|
|
|
|
C<KillMode> in |
|
1035
|
|
|
|
|
|
|
L<systemd.kill(5)>.) |
|
1036
|
|
|
|
|
|
|
Takes a unit-less value in seconds, or a time span value such |
|
1037
|
|
|
|
|
|
|
as "5min 20s". Pass C<0> to disable the |
|
1038
|
|
|
|
|
|
|
timeout logic. Defaults to |
|
1039
|
|
|
|
|
|
|
C<DefaultTimeoutStartSec> from the manager |
|
1040
|
|
|
|
|
|
|
configuration file (see |
|
1041
|
|
|
|
|
|
|
L<systemd-system.conf(5)>). |
|
1042
|
|
|
|
|
|
|
', |
|
1043
|
|
|
|
|
|
|
'type' => 'leaf', |
|
1044
|
|
|
|
|
|
|
'value_type' => 'uniline' |
|
1045
|
|
|
|
|
|
|
}, |
|
1046
|
|
|
|
|
|
|
'Service', |
|
1047
|
|
|
|
|
|
|
{ |
|
1048
|
|
|
|
|
|
|
'description' => 'Specifies the service unit name to activate on |
|
1049
|
|
|
|
|
|
|
incoming traffic. This setting is only allowed for sockets |
|
1050
|
|
|
|
|
|
|
with C<Accept=no>. It defaults to the service |
|
1051
|
|
|
|
|
|
|
that bears the same name as the socket (with the suffix |
|
1052
|
|
|
|
|
|
|
replaced). In most cases, it should not be necessary to use |
|
1053
|
|
|
|
|
|
|
this option. Note that setting this parameter might result in |
|
1054
|
|
|
|
|
|
|
additional dependencies to be added to the unit (see |
|
1055
|
|
|
|
|
|
|
above).', |
|
1056
|
|
|
|
|
|
|
'type' => 'leaf', |
|
1057
|
|
|
|
|
|
|
'value_type' => 'uniline' |
|
1058
|
|
|
|
|
|
|
}, |
|
1059
|
|
|
|
|
|
|
'RemoveOnStop', |
|
1060
|
|
|
|
|
|
|
{ |
|
1061
|
|
|
|
|
|
|
'description' => 'Takes a boolean argument. If enabled, any file nodes created by this socket unit are |
|
1062
|
|
|
|
|
|
|
removed when it is stopped. This applies to C<AF_UNIX> sockets in the file system, |
|
1063
|
|
|
|
|
|
|
POSIX message queues, FIFOs, as well as any symlinks to them configured with |
|
1064
|
|
|
|
|
|
|
C<Symlinks>. Normally, it should not be necessary to use this option, and is not |
|
1065
|
|
|
|
|
|
|
recommended as services might continue to run after the socket unit has been terminated and it should |
|
1066
|
|
|
|
|
|
|
still be possible to communicate with them via their file system node. Defaults to |
|
1067
|
|
|
|
|
|
|
off.', |
|
1068
|
|
|
|
|
|
|
'type' => 'leaf', |
|
1069
|
|
|
|
|
|
|
'value_type' => 'boolean', |
|
1070
|
|
|
|
|
|
|
'write_as' => [ |
|
1071
|
|
|
|
|
|
|
'no', |
|
1072
|
|
|
|
|
|
|
'yes' |
|
1073
|
|
|
|
|
|
|
] |
|
1074
|
|
|
|
|
|
|
}, |
|
1075
|
|
|
|
|
|
|
'Symlinks', |
|
1076
|
|
|
|
|
|
|
{ |
|
1077
|
|
|
|
|
|
|
'description' => 'Takes a list of file system paths. The specified paths will be created as symlinks to the |
|
1078
|
|
|
|
|
|
|
C<AF_UNIX> socket path or FIFO path of this socket unit. If this setting is used, only one |
|
1079
|
|
|
|
|
|
|
C<AF_UNIX> socket in the file system or one FIFO may be configured for the socket unit. Use |
|
1080
|
|
|
|
|
|
|
this option to manage one or more symlinked alias names for a socket, binding their lifecycle together. Note |
|
1081
|
|
|
|
|
|
|
that if creation of a symlink fails this is not considered fatal for the socket unit, and the socket unit may |
|
1082
|
|
|
|
|
|
|
still start. If an empty string is assigned, the list of paths is reset. Defaults to an empty |
|
1083
|
|
|
|
|
|
|
list.', |
|
1084
|
|
|
|
|
|
|
'type' => 'leaf', |
|
1085
|
|
|
|
|
|
|
'value_type' => 'uniline' |
|
1086
|
|
|
|
|
|
|
}, |
|
1087
|
|
|
|
|
|
|
'FileDescriptorName', |
|
1088
|
|
|
|
|
|
|
{ |
|
1089
|
|
|
|
|
|
|
'description' => 'Assigns a name to all file descriptors this |
|
1090
|
|
|
|
|
|
|
socket unit encapsulates. This is useful to help activated |
|
1091
|
|
|
|
|
|
|
services identify specific file descriptors, if multiple fds |
|
1092
|
|
|
|
|
|
|
are passed. Services may use the |
|
1093
|
|
|
|
|
|
|
L<sd_listen_fds_with_names(3)> |
|
1094
|
|
|
|
|
|
|
call to acquire the names configured for the received file |
|
1095
|
|
|
|
|
|
|
descriptors. Names may contain any ASCII character, but must |
|
1096
|
|
|
|
|
|
|
exclude control characters and C<:>, and must |
|
1097
|
|
|
|
|
|
|
be at most 255 characters in length. If this setting is not |
|
1098
|
|
|
|
|
|
|
used, the file descriptor name defaults to the name of the |
|
1099
|
|
|
|
|
|
|
socket unit, including its C<.socket> |
|
1100
|
|
|
|
|
|
|
suffix.', |
|
1101
|
|
|
|
|
|
|
'type' => 'leaf', |
|
1102
|
|
|
|
|
|
|
'value_type' => 'uniline' |
|
1103
|
|
|
|
|
|
|
}, |
|
1104
|
|
|
|
|
|
|
'TriggerLimitIntervalSec', |
|
1105
|
|
|
|
|
|
|
{ |
|
1106
|
|
|
|
|
|
|
'description' => "Configures a limit on how often this socket unit may be activated within a specific time |
|
1107
|
|
|
|
|
|
|
interval. The C<TriggerLimitIntervalSec> may be used to configure the length of the time |
|
1108
|
|
|
|
|
|
|
interval in the usual time units C<us>, C<ms>, C<s>, |
|
1109
|
|
|
|
|
|
|
C<min>, C<h>, \x{2026} and defaults to 2s (See |
|
1110
|
|
|
|
|
|
|
L<systemd.time(7)> for details on |
|
1111
|
|
|
|
|
|
|
the various time units understood). The C<TriggerLimitBurst> setting takes a positive integer |
|
1112
|
|
|
|
|
|
|
value and specifies the number of permitted activations per time interval, and defaults to 200 for |
|
1113
|
|
|
|
|
|
|
C<Accept=yes> sockets (thus by default permitting 200 activations per 2s), and 20 otherwise (20 |
|
1114
|
|
|
|
|
|
|
activations per 2s). Set either to 0 to disable any form of trigger rate limiting. If the limit is hit, the |
|
1115
|
|
|
|
|
|
|
socket unit is placed into a failure mode, and will not be connectible anymore until restarted. Note that this |
|
1116
|
|
|
|
|
|
|
limit is enforced before the service activation is enqueued.", |
|
1117
|
|
|
|
|
|
|
'type' => 'leaf', |
|
1118
|
|
|
|
|
|
|
'value_type' => 'uniline' |
|
1119
|
|
|
|
|
|
|
}, |
|
1120
|
|
|
|
|
|
|
'TriggerLimitBurst', |
|
1121
|
|
|
|
|
|
|
{ |
|
1122
|
|
|
|
|
|
|
'description' => "Configures a limit on how often this socket unit may be activated within a specific time |
|
1123
|
|
|
|
|
|
|
interval. The C<TriggerLimitIntervalSec> may be used to configure the length of the time |
|
1124
|
|
|
|
|
|
|
interval in the usual time units C<us>, C<ms>, C<s>, |
|
1125
|
|
|
|
|
|
|
C<min>, C<h>, \x{2026} and defaults to 2s (See |
|
1126
|
|
|
|
|
|
|
L<systemd.time(7)> for details on |
|
1127
|
|
|
|
|
|
|
the various time units understood). The C<TriggerLimitBurst> setting takes a positive integer |
|
1128
|
|
|
|
|
|
|
value and specifies the number of permitted activations per time interval, and defaults to 200 for |
|
1129
|
|
|
|
|
|
|
C<Accept=yes> sockets (thus by default permitting 200 activations per 2s), and 20 otherwise (20 |
|
1130
|
|
|
|
|
|
|
activations per 2s). Set either to 0 to disable any form of trigger rate limiting. If the limit is hit, the |
|
1131
|
|
|
|
|
|
|
socket unit is placed into a failure mode, and will not be connectible anymore until restarted. Note that this |
|
1132
|
|
|
|
|
|
|
limit is enforced before the service activation is enqueued.", |
|
1133
|
|
|
|
|
|
|
'type' => 'leaf', |
|
1134
|
|
|
|
|
|
|
'value_type' => 'uniline' |
|
1135
|
|
|
|
|
|
|
} |
|
1136
|
|
|
|
|
|
|
], |
|
1137
|
|
|
|
|
|
|
'generated_by' => 'parse-man.pl from systemd 252 doc', |
|
1138
|
|
|
|
|
|
|
'license' => 'LGPLv2.1+', |
|
1139
|
|
|
|
|
|
|
'name' => 'Systemd::Section::Socket' |
|
1140
|
|
|
|
|
|
|
} |
|
1141
|
|
|
|
|
|
|
] |
|
1142
|
|
|
|
|
|
|
; |
|
1143
|
|
|
|
|
|
|
|