[systemd-commits] src/socket.c

Lennart Poettering lennart at kemper.freedesktop.org
Thu Jul 1 06:27:37 PDT 2010


 src/socket.c |   12 +++++++++---
 1 file changed, 9 insertions(+), 3 deletions(-)

New commits:
commit 46925ac5a8fb5162a07aabe21536af500a49d3ae
Author: Lennart Poettering <lennart at poettering.net>
Date:   Thu Jul 1 15:27:30 2010 +0200

    socket: on ipv6 try to use IPV6_UNICAST_HOPS sockopt

diff --git a/src/socket.c b/src/socket.c
index 7e62dbc..00fb568 100644
--- a/src/socket.c
+++ b/src/socket.c
@@ -577,9 +577,15 @@ static void socket_apply_socket_options(Socket *s, int fd) {
                 if (setsockopt(fd, IPPROTO_IP, IP_TOS, &s->ip_tos, sizeof(s->ip_tos)) < 0)
                         log_warning("IP_TOS failed: %m");
 
-        if (s->ip_ttl >= 0)
-                if (setsockopt(fd, IPPROTO_IP, IP_TTL, &s->ip_ttl, sizeof(s->ip_ttl)) < 0)
-                        log_warning("IP_TTL failed: %m");
+        if (s->ip_ttl >= 0) {
+                int r, x;
+
+                r = setsockopt(fd, IPPROTO_IP, IP_TTL, &s->ip_ttl, sizeof(s->ip_ttl));
+                x = setsockopt(fd, IPPROTO_IPV6, IPV6_UNICAST_HOPS, &s->ip_ttl, sizeof(s->ip_ttl));
+
+                if (r < 0 && x < 0)
+                        log_warning("IP_TTL/IPV6_UNICAST_HOPS failed: %m");
+        }
 }
 
 static void socket_apply_pipe_options(Socket *s, int fd) {


More information about the systemd-commits mailing list