Merge pull request #9308 from kareem-wolfssl/zd20603
Add IPv6 support to wolfSSL_BIO_new_accept and wolfIO_TcpBind.
This commit is contained in:
14
src/bio.c
14
src/bio.c
@@ -2440,9 +2440,21 @@ int wolfSSL_BIO_flush(WOLFSSL_BIO* bio)
|
||||
{
|
||||
WOLFSSL_BIO *bio;
|
||||
WOLFSSL_ENTER("wolfSSL_BIO_new_accept");
|
||||
|
||||
if (port == NULL) {
|
||||
return NULL;
|
||||
}
|
||||
|
||||
bio = wolfSSL_BIO_new(wolfSSL_BIO_s_socket());
|
||||
if (bio) {
|
||||
bio->port = (word16)XATOI(port);
|
||||
const char* portStr = port;
|
||||
#ifdef WOLFSSL_IPV6
|
||||
const char* ipv6End = XSTRSTR(port, "]");
|
||||
if (ipv6End) {
|
||||
portStr = XSTRSTR(ipv6End, ":");
|
||||
}
|
||||
#endif
|
||||
bio->port = (word16)XATOI(portStr);
|
||||
bio->type = WOLFSSL_BIO_SOCKET;
|
||||
}
|
||||
return bio;
|
||||
|
||||
12
src/wolfio.c
12
src/wolfio.c
@@ -1554,8 +1554,13 @@ int wolfIO_TcpBind(SOCKET_T* sockfd, word16 port)
|
||||
#ifdef HAVE_SOCKADDR
|
||||
int ret = 0;
|
||||
SOCKADDR_S addr;
|
||||
#ifdef WOLFSSL_IPV6
|
||||
socklen_t sockaddr_len = sizeof(SOCKADDR_IN6);
|
||||
SOCKADDR_IN6 *sin = (SOCKADDR_IN6 *)&addr;
|
||||
#else
|
||||
socklen_t sockaddr_len = sizeof(SOCKADDR_IN);
|
||||
SOCKADDR_IN *sin = (SOCKADDR_IN *)&addr;
|
||||
#endif
|
||||
|
||||
if (sockfd == NULL || port < 1) {
|
||||
return WOLFSSL_FATAL_ERROR;
|
||||
@@ -1563,10 +1568,17 @@ int wolfIO_TcpBind(SOCKET_T* sockfd, word16 port)
|
||||
|
||||
XMEMSET(&addr, 0, sizeof(addr));
|
||||
|
||||
#ifdef WOLFSSL_IPV6
|
||||
sin->sin6_family = AF_INET6;
|
||||
sin->sin6_addr = in6addr_any;
|
||||
sin->sin6_port = XHTONS(port);
|
||||
*sockfd = (SOCKET_T)socket(AF_INET6, SOCK_STREAM, 0);
|
||||
#else
|
||||
sin->sin_family = AF_INET;
|
||||
sin->sin_addr.s_addr = INADDR_ANY;
|
||||
sin->sin_port = XHTONS(port);
|
||||
*sockfd = (SOCKET_T)socket(AF_INET, SOCK_STREAM, 0);
|
||||
#endif
|
||||
|
||||
#ifdef USE_WINDOWS_API
|
||||
if (*sockfd == SOCKET_INVALID)
|
||||
|
||||
Reference in New Issue
Block a user