1
0
Fork 0
mirror of https://github.com/warmcat/libwebsockets.git synced 2025-03-09 00:00:04 +01:00

Fix IPv6 on non-Linux platforms

This commit is contained in:
Patrick Gansterer 2014-03-28 08:28:02 +01:00
parent 145ecece10
commit cd0445455f
2 changed files with 8 additions and 7 deletions

View file

@ -72,9 +72,10 @@ struct libwebsocket *libwebsocket_client_connect_2(
/* map IPv4 to IPv6 */
bzero((char *)&server_addr6.sin6_addr,
sizeof(struct in6_addr));
server_addr6.sin6_addr.s6_addr16[5] = 0xffff;
bcopy(&((struct sockaddr_in *)result->ai_addr)->sin_addr,
&server_addr6.sin6_addr.s6_addr16[6],
server_addr6.sin6_addr.s6_addr[10] = 0xff;
server_addr6.sin6_addr.s6_addr[11] = 0xff;
memcpy(&server_addr6.sin6_addr.s6_addr[12],
&((struct sockaddr_in *)result->ai_addr)->sin_addr,
sizeof(struct in_addr));
break;
case AF_INET6:

View file

@ -2956,10 +2956,10 @@ interface_to_sa(struct libwebsocket_context *context,
/* map IPv4 to IPv6 */
bzero((char *)&addr6->sin6_addr,
sizeof(struct in6_addr));
addr6->sin6_addr.s6_addr16[5] = 0xffff;
bcopy(&((struct sockaddr_in *)ifc->ifa_addr)->
sin_addr,
&addr6->sin6_addr.s6_addr16[6],
addr6->sin6_addr.s6_addr[10] = 0xff;
addr6->sin6_addr.s6_addr[11] = 0xff;
memcpy(&addr6->sin6_addr.s6_addr[12],
&((struct sockaddr_in *)ifc->ifa_addr)->sin_addr,
sizeof(struct in_addr));
} else
#endif