// // Converts IPEndpoint class into native PEER_ADDRESS structure // internal static PEER_ADDRESS ConvertIPEndpointToPEER_ADDRESS(IPEndPoint endPoint) { PEER_ADDRESS pa = new PEER_ADDRESS(); SOCKADDR_IN6 sin = new SOCKADDR_IN6(); sin.sin6_family = (ushort)endPoint.AddressFamily; sin.sin6_flowinfo = 0; // unchecked { sin.sin6_port = (ushort)IPAddress.HostToNetworkOrder((short)endPoint.Port); } sin.sin6_scope_id = (uint)endPoint.Address.ScopeId; CollaborationHelperFunctions.ByteArrayToSin6Addr(endPoint.Address.GetAddressBytes(), ref sin); pa.dwSize = 32; pa.sin6 = sin; return(pa); }
// // Converts address bytes to a SOCKADDR_IN6 that can be passed into // native // internal static void ByteArrayToSin6Addr(byte[] addrBytes, ref SOCKADDR_IN6 sin6) { sin6.sin6_addr0 = addrBytes[0]; sin6.sin6_addr1 = addrBytes[1]; sin6.sin6_addr2 = addrBytes[2]; sin6.sin6_addr3 = addrBytes[3]; sin6.sin6_addr4 = addrBytes[4]; sin6.sin6_addr5 = addrBytes[5]; sin6.sin6_addr6 = addrBytes[6]; sin6.sin6_addr7 = addrBytes[7]; sin6.sin6_addr8 = addrBytes[8]; sin6.sin6_addr9 = addrBytes[9]; sin6.sin6_addr10 = addrBytes[10]; sin6.sin6_addr11 = addrBytes[11]; sin6.sin6_addr12 = addrBytes[12]; sin6.sin6_addr13 = addrBytes[13]; sin6.sin6_addr14 = addrBytes[14]; sin6.sin6_addr15 = addrBytes[15]; }
// // Converts IPEndpoint class into native PEER_ADDRESS structure // internal static PEER_ADDRESS ConvertIPEndpointToPEER_ADDRESS(IPEndPoint endPoint) { PEER_ADDRESS pa = new PEER_ADDRESS(); SOCKADDR_IN6 sin = new SOCKADDR_IN6(); sin.sin6_family = (ushort)endPoint.AddressFamily; sin.sin6_flowinfo = 0; // unchecked{ sin.sin6_port = (ushort)IPAddress.HostToNetworkOrder((short)endPoint.Port); } sin.sin6_scope_id = (uint)endPoint.Address.ScopeId; CollaborationHelperFunctions.ByteArrayToSin6Addr(endPoint.Address.GetAddressBytes(), ref sin); pa.dwSize = 32; pa.sin6 = sin; return pa; }