endif()
-# FIXME: This must be runtime-only option.
# The base dir where the test-apps look for the SSL certs.
set(LWS_OPENSSL_CLIENT_CERTS ../share CACHE PATH "Server SSL certificate directory")
if (WIN32)
set(LWS_OPENSSL_CLIENT_CERTS . CACHE PATH "Client SSL certificate directory")
- if (LWS_IPV6)
- set(LWS_IPV6 OFF)
- message(WARNING "IPv6 does not currently work on Windows!")
- endif()
- if (LWS_UNIX_SOCK)
+ if (LWS_UNIX_SOCK)
set(LWS_UNIX_SOCK OFF)
- message(WARNING "Windows does not support UNIX domain sockets")
+ message(WARNING "Windows does not support UNIX domain sockets")
endif()
else()
set(LWS_OPENSSL_CLIENT_CERTS /etc/pki/tls/certs/ CACHE PATH "Client SSL certificate directory")
memcpy(&server_addr6.sin6_addr,
&((struct sockaddr_in6 *)result->ai_addr)->sin6_addr,
sizeof(struct in6_addr));
+ server_addr6.sin6_scope_id = ((struct sockaddr_in6 *)result->ai_addr)->sin6_scope_id;
+ server_addr6.sin6_flowinfo = ((struct sockaddr_in6 *)result->ai_addr)->sin6_flowinfo;
break;
default:
lwsl_err("Unknown address family\n");
#endif
struct sockaddr_in serv_addr4;
#ifndef LWS_PLAT_OPTEE
- socklen_t len = sizeof(struct sockaddr);
+ socklen_t len = sizeof(struct sockaddr_storage);
#endif
int n;
- struct sockaddr_in sin;
+ struct sockaddr_storage sin;
struct sockaddr *v;
#ifdef LWS_USE_UNIX_SOCK
return -1;
}
+#ifndef WIN32
if (iface) {
struct ifaddrs *addrs, *addr;
char ip[NI_MAXHOST];
}
freeifaddrs(addrs);
}
+#endif
serv_addr6.sin6_family = AF_INET6;
serv_addr6.sin6_port = htons(port);
lwsl_warn("getsockname: %s\n", strerror(LWS_ERRNO));
else
#endif
- port = ntohs(sin.sin_port);
+#if defined(LWS_USE_IPV6)
+ port = (sin.ss_family == AF_INET6) ?
+ ntohs(((struct sockaddr_in6 *) &sin)->sin6_port) :
+ ntohs(((struct sockaddr_in *) &sin)->sin_port);
+#else
+ port = ntohs(((struct sockaddr_in *) &sin)->sin_port);
+#endif
#endif
return port;
lws_sock_file_fd_type fd;
int opts = LWS_ADOPT_SOCKET | LWS_ADOPT_ALLOW_SSL;
#if LWS_POSIX
- struct sockaddr_in cli_addr;
+ struct sockaddr_storage cli_addr;
socklen_t clilen;
#endif
int n, len;
lws_plat_set_socket_options(wsi->vhost, accept_fd);
- lwsl_debug("accepted new conn port %u on fd=%d\n",
- ntohs(cli_addr.sin_port), accept_fd);
+#if defined(LWS_USE_IPV6)
+ lwsl_debug("accepted new conn port %u on fd=%d\n",
+ ((cli_addr.ss_family == AF_INET6) ?
+ ntohs(((struct sockaddr_in6 *) &cli_addr)->sin6_port) :
+ ntohs(((struct sockaddr_in *) &cli_addr)->sin_port)),
+ accept_fd);
+#else
+ lwsl_debug("accepted new conn port %u on fd=%d\n",
+ ntohs(((struct sockaddr_in *) &cli_addr)->sin_port),
+ accept_fd);
+#endif
#else
/* not very beautiful... */