internal static extern SocketError setsockopt( [In] SafeSocketHandle socketHandle, [In] SocketOptionLevel optionLevel, [In] SocketOptionName optionName, [In] ref IPMulticastRequest mreq, [In] int optionLength);
internal static extern SocketError getsockopt( [In] SafeCloseSocket socketHandle, [In] SocketOptionLevel optionLevel, [In] SocketOptionName optionName, [Out] out IPMulticastRequest optionValue, [In, Out] ref int optionLength);
internal static partial SocketError setsockopt( SafeSocketHandle socketHandle, SocketOptionLevel optionLevel, SocketOptionName optionName, ref IPMulticastRequest mreq, int optionLength);
private void SetMulticastOption(SocketOptionName optionName, MulticastOption mr) { IPMulticastRequest mreq = new IPMulticastRequest(); mreq.MulticastAddress = (int)mr.Group.Address; if (mr.LocalAddress != null) { mreq.InterfaceAddress = (int)mr.LocalAddress.Address; } else { int num = IPAddress.HostToNetworkOrder(mr.InterfaceIndex); mreq.InterfaceAddress = num; } if (UnsafeMethods.setsockopt(Handle, SocketOptionLevel.IPv6, optionName, ref mreq, IPv6MulticastRequest.Size) == SocketError.SocketError) { throw new SocketException(); } }
internal static partial SocketError getsockopt( SafeSocketHandle socketHandle, SocketOptionLevel optionLevel, SocketOptionName optionName, out IPMulticastRequest optionValue, ref int optionLength);