summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLennart Poettering <lennart@poettering.net>2012-10-03 14:18:55 -0400
committerLennart Poettering <lennart@poettering.net>2012-10-03 14:18:55 -0400
commit5198dabcce9da535c4531b53990cfa11bd9f7896 (patch)
treeb428869e21184a7a338244140f342caeddae7d88
parent0b507b17a760b21e33fc52ff377db6aa5086c680 (diff)
man: document behaviour of ListenStream= with only a port number in regards to IPv4/IPv6
-rw-r--r--man/systemd.socket.xml21
-rw-r--r--src/core/load-fragment.c6
-rw-r--r--src/shared/socket-util.c3
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 @@
<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 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)