From: Lennart Poettering Date: Thu, 1 Jul 2010 13:27:30 +0000 (+0200) Subject: socket: on ipv6 try to use IPV6_UNICAST_HOPS sockopt X-Git-Tag: v1~83 X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?p=elogind.git;a=commitdiff_plain;h=46925ac5a8fb5162a07aabe21536af500a49d3ae socket: on ipv6 try to use IPV6_UNICAST_HOPS sockopt --- diff --git a/src/socket.c b/src/socket.c index 7e62dbce9..00fb568b0 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) {