From: Joshua Peterson Date: Tue, 25 Apr 2017 13:28:15 +0000 (-0400) Subject: Merge branch 'master' into config-checks-ipv6 X-Git-Url: http://wien.tomnetworks.com/gitweb/?a=commitdiff_plain;h=3e6c4f526499a339783cbe427e9916bbd99d7a0e;hp=6a91ef1ac3623c163db6b3857b7655feecc37b12;p=mono.git Merge branch 'master' into config-checks-ipv6 --- diff --git a/mono/metadata/w32socket.c b/mono/metadata/w32socket.c index a6ec8739afe..4775c4dfe80 100644 --- a/mono/metadata/w32socket.c +++ b/mono/metadata/w32socket.c @@ -210,7 +210,11 @@ convert_family (MonoAddressFamily mono_family) return -1; #endif case AddressFamily_InterNetworkV6: +#ifdef HAVE_STRUCT_SOCKADDR_IN6 return AF_INET6; +#else + return -1; +#endif case AddressFamily_DecNet: #ifdef AF_DECnet return AF_DECnet; @@ -267,8 +271,10 @@ convert_to_mono_family (guint16 af_family) case AF_APPLETALK: return AddressFamily_AppleTalk; #endif +#ifdef HAVE_STRUCT_SOCKADDR_IN6 case AF_INET6: return AddressFamily_InterNetworkV6; +#endif #ifdef AF_IRDA case AF_IRDA: return AddressFamily_Irda; @@ -819,6 +825,7 @@ ves_icall_System_Net_Sockets_Socket_Listen_internal(gsize sock, guint32 backlog, *werror = mono_w32socket_get_last_error (); } +#ifdef HAVE_STRUCT_SOCKADDR_IN6 // Check whether it's ::ffff::0:0. static gboolean is_ipv4_mapped_any (const struct in6_addr *addr) @@ -837,6 +844,7 @@ is_ipv4_mapped_any (const struct in6_addr *addr) } return TRUE; } +#endif static MonoObject* create_object_from_sockaddr (struct sockaddr *saddr, int sa_size, gint32 *werror, MonoError *error) @@ -910,6 +918,7 @@ create_object_from_sockaddr (struct sockaddr *saddr, int sa_size, gint32 *werror mono_field_set_value (sockaddr_obj, domain->sockaddr_data_length_field, &buffer_size); return sockaddr_obj; +#ifdef HAVE_STRUCT_SOCKADDR_IN6 } else if (saddr->sa_family == AF_INET6) { struct sockaddr_in6 *sa_in = (struct sockaddr_in6 *)saddr; int i; @@ -949,6 +958,7 @@ create_object_from_sockaddr (struct sockaddr *saddr, int sa_size, gint32 *werror return sockaddr_obj; } +#endif #ifdef HAVE_SYS_UN_H else if (saddr->sa_family == AF_UNIX) { int i; @@ -977,9 +987,11 @@ get_sockaddr_size (int family) size = 0; if (family == AF_INET) { size = sizeof (struct sockaddr_in); +#ifdef HAVE_STRUCT_SOCKADDR_IN6 } else if (family == AF_INET6) { size = sizeof (struct sockaddr_in6); } +#endif #ifdef HAVE_SYS_UN_H else if (family == AF_UNIX) { size = sizeof (struct sockaddr_un); @@ -1135,6 +1147,7 @@ create_sockaddr_from_object (MonoObject *saddr_obj, socklen_t *sa_size, gint32 * *sa_size = sizeof (struct sockaddr_in); return (struct sockaddr *)sa; +#ifdef HAVE_STRUCT_SOCKADDR_IN6 } else if (family == AF_INET6) { struct sockaddr_in6 *sa; int i; @@ -1164,6 +1177,7 @@ create_sockaddr_from_object (MonoObject *saddr_obj, socklen_t *sa_size, gint32 * *sa_size = sizeof (struct sockaddr_in6); return (struct sockaddr *)sa; } +#endif #ifdef HAVE_SYS_UN_H else if (family == AF_UNIX) { struct sockaddr_un *sock_un; @@ -2083,6 +2097,7 @@ ipaddress_to_struct_in_addr (MonoObject *ipaddr) return inaddr; } +#ifdef HAVE_STRUCT_SOCKADDR_IN6 static struct in6_addr ipaddress_to_struct_in6_addr (MonoObject *ipaddr) { @@ -2109,6 +2124,7 @@ ipaddress_to_struct_in6_addr (MonoObject *ipaddr) return in6addr; } #endif +#endif #if defined(__APPLE__) || defined(__FreeBSD__) @@ -2201,7 +2217,7 @@ ves_icall_System_Net_Sockets_Socket_SetSocketOption_internal (gsize sock, gint32 #if defined(HAVE_STRUCT_IP_MREQN) || defined(HAVE_STRUCT_IP_MREQ) { MonoObject *address = NULL; - +#ifdef HAVE_STRUCT_SOCKADDR_IN6 if (system_level == sol_ipv6) { struct ipv6_mreq mreq6; @@ -2234,7 +2250,10 @@ ves_icall_System_Net_Sockets_Socket_SetSocketOption_internal (gsize sock, gint32 #endif ret = mono_w32socket_setsockopt (sock, system_level, system_name, &mreq6, sizeof (mreq6)); - } else if (system_level == sol_ip) { + + } else +#endif + if (system_level == sol_ip) { #ifdef HAVE_STRUCT_IP_MREQN struct ip_mreqn mreq = {{0}}; #else @@ -2454,7 +2473,7 @@ addrinfo_to_IPHostEntry (MonoAddressInfo *info, MonoString **h_name, MonoArray * } } } - +#ifdef HAVE_STRUCT_SOCKADDR_IN6 if (nlocal_in6) { MonoString *addr_string; int i; @@ -2469,7 +2488,7 @@ addrinfo_to_IPHostEntry (MonoAddressInfo *info, MonoString **h_name, MonoArray * } } } - +#endif leave: g_free (local_in); g_free (local_in6); @@ -2577,7 +2596,9 @@ ves_icall_System_Net_Dns_GetHostByAddr_internal (MonoString *addr, MonoString ** { char *address; struct sockaddr_in saddr; +#ifdef HAVE_STRUCT_SOCKADDR_IN6 struct sockaddr_in6 saddr6; +#endif MonoAddressInfo *info = NULL; MonoError error; gint32 family; @@ -2591,9 +2612,11 @@ ves_icall_System_Net_Dns_GetHostByAddr_internal (MonoString *addr, MonoString ** if (inet_pton (AF_INET, address, &saddr.sin_addr ) == 1) { family = AF_INET; saddr.sin_family = AF_INET; +#ifdef HAVE_STRUCT_SOCKADDR_IN6 } else if (inet_pton (AF_INET6, address, &saddr6.sin6_addr) == 1) { family = AF_INET6; saddr6.sin6_family = AF_INET6; +#endif } else { g_free (address); return FALSE; @@ -2611,6 +2634,7 @@ ves_icall_System_Net_Dns_GetHostByAddr_internal (MonoString *addr, MonoString ** ret = getnameinfo ((struct sockaddr*)&saddr, sizeof (saddr), hostname, sizeof (hostname), NULL, 0, 0) == 0; break; } +#ifdef HAVE_STRUCT_SOCKADDR_IN6 case AF_INET6: { #if HAVE_SOCKADDR_IN6_SIN_LEN saddr6.sin6_len = sizeof (saddr6); @@ -2618,6 +2642,7 @@ ves_icall_System_Net_Dns_GetHostByAddr_internal (MonoString *addr, MonoString ** ret = getnameinfo ((struct sockaddr*)&saddr6, sizeof (saddr6), hostname, sizeof (hostname), NULL, 0, 0) == 0; break; } +#endif default: g_assert_not_reached (); }