From 5198dabcce9da535c4531b53990cfa11bd9f7896 Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Wed, 3 Oct 2012 14:18:55 -0400 Subject: [PATCH] man: document behaviour of ListenStream= with only a port number in regards to IPv4/IPv6 --- man/systemd.socket.xml | 21 +++++++++++++++++---- src/core/load-fragment.c | 6 ++++-- 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 6cf6c79e1..7885b0748 100644 --- a/man/systemd.socket.xml +++ b/man/systemd.socket.xml @@ -170,8 +170,13 @@ If the address string is a single number it is read as port - number to listen on for both IPv4 and - IPv6. + number to listen on via + IPv6. Depending on the value of + BindIPv6Only= (see below) this + might result in the service being + available via both IPv6 and IPv4 (default) or + just via IPv6. + If the address string is a string in the format v.w.x.y:z it is @@ -181,7 +186,12 @@ If the address string is a string in the format [x]:y it is read - as IPv6 address x on a port y. + as IPv6 address x on a port y. Note + that this might make the service + available via IPv4, too, depending on + the BindIPv6Only= + setting (see below). + Note that SOCK_SEQPACKET (i.e. ListenSequentialPacket=) @@ -286,7 +296,10 @@ default, surprise!) the system wide default setting is used, as controlled by - /proc/sys/net/ipv6/bindv6only. + /proc/sys/net/ipv6/bindv6only, + which in turn defaults to the + equivalent of + . diff --git a/src/core/load-fragment.c b/src/core/load-fragment.c index 93f051af4..2504d730d 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 7e65f8a69..4908403d9 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) -- 2.30.2