]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
Use /proc/net/sockstat6 to detect IPv6 support 2134/head
authorJorgen Schaefer <contact@jorgenschaefer.de>
Thu, 10 Dec 2015 12:24:45 +0000 (13:24 +0100)
committerJorgen Schaefer <contact@jorgenschaefer.de>
Thu, 10 Dec 2015 12:47:19 +0000 (13:47 +0100)
The file /sys/module/ipv6 does not exist in all container
implementations (e.g. Virtuozzo). Using /proc/net/sockstat6
detects IPv6 support reliably in these environments, too.

This file does not exist when the kernel is not compiled with
IPv6 support, or if IPv6 support is disabled, so simply checking
for existence should be a suitable check.

Fixes #2059

src/basic/socket-util.c

index 79901a6a0626c26a708e1f8d180bf2e7230732ae..be144e157dc12ad97d216716e2271d429c9af5ef 100644 (file)
@@ -440,17 +440,10 @@ const char* socket_address_get_path(const SocketAddress *a) {
 }
 
 bool socket_ipv6_is_supported(void) {
-        _cleanup_free_ char *l = NULL;
-
-        if (access("/sys/module/ipv6", F_OK) != 0)
+        if (access("/proc/net/sockstat6", F_OK) != 0)
                 return false;
 
-        /* If we can't check "disable" parameter, assume enabled */
-        if (read_one_line_file("/sys/module/ipv6/parameters/disable", &l) < 0)
-                return true;
-
-        /* If module was loaded with disable=1 no IPv6 available */
-        return l[0] == '0';
+        return true;
 }
 
 bool socket_address_matches_fd(const SocketAddress *a, int fd) {