X-Git-Url: https://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?p=elogind.git;a=blobdiff_plain;f=src%2Fsocket-util.c;fp=src%2Fsocket-util.c;h=e2e89886d49e43c26e2ba29e804e18a6cf8ac6da;hp=779850d37fa137cd8a702ca7e1df515e6ba3ac96;hb=6b6d2deecc246cf9780d31e1cd03a52aa5bfd9d2;hpb=6ea832a20700f5282c08c70f38422c6ab290a0b5 diff --git a/src/socket-util.c b/src/socket-util.c index 779850d37..e2e89886d 100644 --- a/src/socket-util.c +++ b/src/socket-util.c @@ -389,6 +389,7 @@ int socket_address_listen( SocketAddressBindIPv6Only only, const char *bind_to_device, bool free_bind, + bool transparent, mode_t directory_mode, mode_t socket_mode, const char *label, @@ -433,6 +434,12 @@ int socket_address_listen( if (setsockopt(fd, IPPROTO_IP, IP_FREEBIND, &one, sizeof(one)) < 0) log_warning("IP_FREEBIND failed: %m"); } + + if (transparent) { + one = 1; + if (setsockopt(fd, IPPROTO_IP, IP_TRANSPARENT, &one, sizeof(one)) < 0) + log_warning("IP_TRANSPARENT failed: %m"); + } } one = 1;