private void IPEndPointToNative(IPEndPoint endPoint, out rtl.__struct_sockaddr_in lIPv4, out rtl.__struct_sockaddr_in6 lIPv6, out void *ipPointer, out int ipSize) { switch (endPoint.AddressFamily) { case AddressFamily.InterNetworkV6: lIPv6.sin6_family = AddressFamily.InterNetworkV6; #if toffee || darwin lIPv6.sin6_port = htons(endPoint.Port); #else lIPv6.sin6_port = rtl.htons(endPoint.Port); #endif lIPv6.sin6_scope_id = endPoint.Address.ScopeId; var lBytes = endPoint.Address.GetAddressBytes(); for (int i = 0; i < 16; i++) #if toffee || darwin { lIPv6.sin6_addr.__u6_addr.__u6_addr8[i] = lBytes[i]; } #elif posix && !android { lIPv6.sin6_addr.__in6_u.__u6_addr8[i] = lBytes[i]; } #elif android { lIPv6.sin6_addr.in6_u.u6_addr8[i] = lBytes[i]; } #endif ipPointer = &lIPv6; ipSize = sizeof(rtl.__struct_sockaddr_in6); break; default: lIPv4.sin_family = AddressFamily.InterNetwork; #if toffee || darwin lIPv4.sin_port = htons(endPoint.Port); #else lIPv4.sin_port = rtl.htons(endPoint.Port); #endif lIPv4.sin_addr.s_addr = endPoint.Address.Address; ipSize = sizeof(rtl.__struct_sockaddr_in); ipPointer = &lIPv4; break; } }
private void IPEndPointToNative(IPEndPoint endPoint, out rtl.__struct_sockaddr_in lIPv4, out rtl.__struct_sockaddr_in6 lIPv6, out void *ipPointer, out int ipSize)