From: Tobias Brunner Date: Thu, 22 Sep 2022 15:33:52 +0000 (+0200) Subject: socket-default: Use IPv6-only mode for IPv6 sockets X-Git-Tag: 5.9.8rc1~5 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=ebaaacc4596bfa581fead707aa107234c6bd064c;p=thirdparty%2Fstrongswan.git socket-default: Use IPv6-only mode for IPv6 sockets Otherwise, we can't open a dedicated IPv4 socket on the same port as the IPv6 socket already is set up do receive IPv4 packets (unless we'd again enable SO_REUSEADDR). Fixes: 83da13371292 ("socket-default: Don't set SO_REUSEADDR on IKE sockets anymore") --- diff --git a/src/libcharon/plugins/socket_default/socket_default_socket.c b/src/libcharon/plugins/socket_default/socket_default_socket.c index f551710177..89d2ac15c8 100644 --- a/src/libcharon/plugins/socket_default/socket_default_socket.c +++ b/src/libcharon/plugins/socket_default/socket_default_socket.c @@ -699,6 +699,14 @@ static int open_socket(private_socket_default_socket_t *this, return -1; } + if (family == AF_INET6 && + setsockopt(skt, SOL_IPV6, IPV6_V6ONLY, &on, sizeof(on)) < 0) + { + DBG1(DBG_NET, "unable to set IPV6_V6ONLY on socket: %s", strerror(errno)); + close(skt); + return -1; + } + /* bind the socket */ if (bind(skt, &addr.sockaddr, addrlen) < 0) {