chiark / gitweb /
man: document behaviour of ListenStream= with only a port number in regards to IPv4...
authorLennart Poettering <lennart@poettering.net>
Wed, 3 Oct 2012 18:18:55 +0000 (14:18 -0400)
committerLennart Poettering <lennart@poettering.net>
Wed, 3 Oct 2012 18:18:55 +0000 (14:18 -0400)
man/systemd.socket.xml
src/core/load-fragment.c
src/shared/socket-util.c

index 6cf6c79e118fbdd48d976d6fbcbf684f76ab3447..7885b0748a70e00b2a2f5e3bff082183adaf1b1a 100644 (file)
 
                                 <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
 
                                 <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>)
                                 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>
 
index 93f051af470ec8ab8f81c08c98b050acb150f86a..2504d730dc43694aafa415abe78e8d614e33e100 100644 (file)
@@ -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;
                 }
index 7e65f8a691871218afe9a253068147cde8927460..4908403d9fe4a447b12142a5db2823e70de33422 100644 (file)
@@ -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)