diff options
-rw-r--r-- | man/systemd.socket.xml | 21 | ||||
-rw-r--r-- | src/core/load-fragment.c | 6 | ||||
-rw-r--r-- | src/shared/socket-util.c | 3 |
3 files changed, 23 insertions, 7 deletions
diff --git a/man/systemd.socket.xml b/man/systemd.socket.xml index 6cf6c79e11..7885b0748a 100644 --- a/man/systemd.socket.xml +++ b/man/systemd.socket.xml @@ -170,8 +170,13 @@ <para>If the address string is a single number it is read as port - number to listen on for both IPv4 and - IPv6.</para> + number to listen on via + IPv6. Depending on the value of + <varname>BindIPv6Only=</varname> (see below) this + might result in the service being + available via both IPv6 and IPv4 (default) or + just via IPv6. + </para> <para>If the address string is a string in the format v.w.x.y:z it is @@ -181,7 +186,12 @@ <para>If the address string is a string in the format [x]:y it is read - as IPv6 address x on a port y.</para> + as IPv6 address x on a port y. Note + that this might make the service + available via IPv4, too, depending on + the <varname>BindIPv6Only=</varname> + setting (see below). + </para> <para>Note that SOCK_SEQPACKET (i.e. <varname>ListenSequentialPacket=</varname>) @@ -286,7 +296,10 @@ default, surprise!) the system wide default setting is used, as controlled by - <filename>/proc/sys/net/ipv6/bindv6only</filename>.</para> + <filename>/proc/sys/net/ipv6/bindv6only</filename>, + which in turn defaults to the + equivalent of + <option>both</option>.</para> </listitem> </varlistentry> diff --git a/src/core/load-fragment.c b/src/core/load-fragment.c index 93f051af47..2504d730dc 100644 --- a/src/core/load-fragment.c +++ b/src/core/load-fragment.c @@ -326,10 +326,12 @@ int config_parse_socket_bind( s = SOCKET(data); - if ((b = socket_address_bind_ipv6_only_from_string(rvalue)) < 0) { + b = socket_address_bind_ipv6_only_from_string(rvalue); + if (b < 0) { int r; - if ((r = parse_boolean(rvalue)) < 0) { + r = parse_boolean(rvalue); + if (r < 0) { log_error("[%s:%u] Failed to parse bind IPv6 only value, ignoring: %s", filename, line, rvalue); return 0; } diff --git a/src/shared/socket-util.c b/src/shared/socket-util.c index 7e65f8a691..4908403d9f 100644 --- a/src/shared/socket-util.c +++ b/src/shared/socket-util.c @@ -167,7 +167,8 @@ int socket_address_parse(SocketAddress *a, const char *s) { } else { /* Just a port */ - if ((r = safe_atou(s, &u)) < 0) + r = safe_atou(s, &u); + if (r < 0) return r; if (u <= 0 || u > 0xFFFF) |