public static int blockOrUnblock6(bool block, FileDescriptor fd, byte[] group, int index, byte[] source) { #if FIRST_PASS return(0); #else try { const System.Net.Sockets.SocketOptionName MCAST_BLOCK_SOURCE = (System.Net.Sockets.SocketOptionName) 43; const System.Net.Sockets.SocketOptionName MCAST_UNBLOCK_SOURCE = (System.Net.Sockets.SocketOptionName) 44; // group_source_req byte[] optionValue = new byte[264]; optionValue[0] = (byte)index; optionValue[1] = (byte)(index >> 8); optionValue[2] = (byte)(index >> 16); optionValue[3] = (byte)(index >> 24); PutSockAddrIn6(optionValue, 8, group); PutSockAddrIn6(optionValue, 136, source); fd.getSocket().SetSocketOption(System.Net.Sockets.SocketOptionLevel.IPv6, block ? MCAST_BLOCK_SOURCE : MCAST_UNBLOCK_SOURCE, optionValue); return(0); } catch (System.Net.Sockets.SocketException x) { throw global::java.net.SocketUtil.convertSocketExceptionToIOException(x); } catch (System.ObjectDisposedException) { throw new global::java.net.SocketException("Socket is closed"); } #endif }
public static void SetMaximumTcpRetransmissionTime(System.Net.Sockets.Socket socket, int amountInSeconds = 3) { //On windows this is TCP_MAXRT elsewhere USER_TIMEOUT //Mono checks the options and will not call setsocketopt if the name is not known to the Mono Runtime. //A work around would be to either define the call for get and set socketopt in this library or call the SetSocketOption_internal method for mono. System.Net.Sockets.SocketOptionName optionName = (System.Net.Sockets.SocketOptionName)(Common.Extensions.OperatingSystemExtensions.IsWindows ? 5 : 18); SetTcpOption(socket, optionName, amountInSeconds); }
public static void setIntOption0(FileDescriptor fd, bool mayNeedConversion, int level, int opt, int arg, bool isIPv6) { #if !FIRST_PASS if (level == global::[email protected]_IPV6 && opt == global::[email protected]_TCLASS) { return; } System.Net.Sockets.SocketOptionLevel sol = (System.Net.Sockets.SocketOptionLevel)level; System.Net.Sockets.SocketOptionName son = (System.Net.Sockets.SocketOptionName)opt; if (mayNeedConversion) { const int IPTOS_TOS_MASK = 0x1e; const int IPTOS_PREC_MASK = 0xe0; if (sol == System.Net.Sockets.SocketOptionLevel.IP && son == System.Net.Sockets.SocketOptionName.TypeOfService) { arg &= (IPTOS_TOS_MASK | IPTOS_PREC_MASK); } } try { fd.getSocket().SetSocketOption(sol, son, arg); } catch (System.Net.Sockets.SocketException x) { if (mayNeedConversion) { if (x.ErrorCode == global::java.net.SocketUtil.WSAENOPROTOOPT && sol == System.Net.Sockets.SocketOptionLevel.IP && (son == System.Net.Sockets.SocketOptionName.TypeOfService || son == System.Net.Sockets.SocketOptionName.MulticastLoopback)) { return; } if (x.ErrorCode == global::java.net.SocketUtil.WSAEINVAL && sol == System.Net.Sockets.SocketOptionLevel.IP && son == System.Net.Sockets.SocketOptionName.TypeOfService) { return; } } throw global::java.net.SocketUtil.convertSocketExceptionToIOException(x); } catch (System.ObjectDisposedException) { throw new global::java.net.SocketException("Socket is closed"); } #endif }
public static bool _GetSocketOption_System_Net_Sockets_Socket_System_Net_Sockets_SocketOptionLevel_System_Net_Sockets_SocketOptionName_System_Int32( ) { //Parameters System.Net.Sockets.SocketOptionLevel optionLevel = null; System.Net.Sockets.SocketOptionName optionName = null; System.Int32 optionLength = null; //ReturnType/Value System.Byte[] returnVal_Real = null; System.Byte[] returnVal_Intercepted = null; //Exception Exception exception_Real = null; Exception exception_Intercepted = null; InterceptionMaintenance.disableInterception( ); try { returnValue_Real = System.Net.Sockets.Socket.GetSocketOption(optionLevel, optionName, optionLength); } catch (Exception e) { exception_Real = e; } InterceptionMaintenance.enableInterception( ); try { returnValue_Intercepted = System.Net.Sockets.Socket.GetSocketOption(optionLevel, optionName, optionLength); } catch (Exception e) { exception_Intercepted = e; } Return((exception_Real.Messsage == exception_Intercepted.Message) && (returnValue_Real == returnValue_Intercepted)); }
public static int getIntOption0(FileDescriptor fd, bool mayNeedConversion, int level, int opt) { #if FIRST_PASS return(0); #else if (level == global::[email protected]_IPV6 && opt == global::[email protected]_TCLASS) { return(0); } System.Net.Sockets.SocketOptionLevel sol = (System.Net.Sockets.SocketOptionLevel)level; System.Net.Sockets.SocketOptionName son = (System.Net.Sockets.SocketOptionName)opt; try { object obj = fd.getSocket().GetSocketOption(sol, son); System.Net.Sockets.LingerOption linger = obj as System.Net.Sockets.LingerOption; if (linger != null) { return(linger.Enabled ? linger.LingerTime : -1); } return((int)obj); } catch (System.Net.Sockets.SocketException x) { if (mayNeedConversion) { if (x.ErrorCode == global::java.net.SocketUtil.WSAENOPROTOOPT && sol == System.Net.Sockets.SocketOptionLevel.IP && son == System.Net.Sockets.SocketOptionName.TypeOfService) { return(0); } } throw global::java.net.SocketUtil.convertSocketExceptionToIOException(x); } catch (System.ObjectDisposedException) { throw new global::java.net.SocketException("Socket is closed"); } #endif }
public static int joinOrDrop6(bool join, FileDescriptor fd, byte[] group, int index, byte[] source) { #if FIRST_PASS return(0); #else try { if (source == null) { fd.getSocket().SetSocketOption(System.Net.Sockets.SocketOptionLevel.IPv6, join ? System.Net.Sockets.SocketOptionName.AddMembership : System.Net.Sockets.SocketOptionName.DropMembership, new System.Net.Sockets.IPv6MulticastOption(new System.Net.IPAddress(group), index)); } else { const System.Net.Sockets.SocketOptionName MCAST_JOIN_SOURCE_GROUP = (System.Net.Sockets.SocketOptionName) 45; const System.Net.Sockets.SocketOptionName MCAST_LEAVE_SOURCE_GROUP = (System.Net.Sockets.SocketOptionName) 46; // group_source_req byte[] optionValue = new byte[264]; optionValue[0] = (byte)index; optionValue[1] = (byte)(index >> 8); optionValue[2] = (byte)(index >> 16); optionValue[3] = (byte)(index >> 24); PutSockAddrIn6(optionValue, 8, group); PutSockAddrIn6(optionValue, 136, source); fd.getSocket().SetSocketOption(System.Net.Sockets.SocketOptionLevel.IPv6, join ? MCAST_JOIN_SOURCE_GROUP : MCAST_LEAVE_SOURCE_GROUP, optionValue); } return(0); } catch (System.Net.Sockets.SocketException x) { throw global::java.net.SocketUtil.convertSocketExceptionToIOException(x); } catch (System.ObjectDisposedException) { throw new global::java.net.SocketException("Socket is closed"); } #endif }
static StackObject *SetSocketOption_0(ILIntepreter __intp, StackObject *__esp, IList <object> __mStack, CLRMethod __method, bool isNewObj) { ILRuntime.Runtime.Enviorment.AppDomain __domain = __intp.AppDomain; StackObject *ptr_of_this_method; StackObject *__ret = ILIntepreter.Minus(__esp, 4); ptr_of_this_method = ILIntepreter.Minus(__esp, 1); System.Int32 optionValue = ptr_of_this_method->Value; ptr_of_this_method = ILIntepreter.Minus(__esp, 2); System.Net.Sockets.SocketOptionName optionName = (System.Net.Sockets.SocketOptionName) typeof(System.Net.Sockets.SocketOptionName).CheckCLRTypes(StackObject.ToObject(ptr_of_this_method, __domain, __mStack)); __intp.Free(ptr_of_this_method); ptr_of_this_method = ILIntepreter.Minus(__esp, 3); System.Net.Sockets.SocketOptionLevel optionLevel = (System.Net.Sockets.SocketOptionLevel) typeof(System.Net.Sockets.SocketOptionLevel).CheckCLRTypes(StackObject.ToObject(ptr_of_this_method, __domain, __mStack)); __intp.Free(ptr_of_this_method); ptr_of_this_method = ILIntepreter.Minus(__esp, 4); System.Net.Sockets.Socket instance_of_this_method; instance_of_this_method = (System.Net.Sockets.Socket) typeof(System.Net.Sockets.Socket).CheckCLRTypes(StackObject.ToObject(ptr_of_this_method, __domain, __mStack)); __intp.Free(ptr_of_this_method); instance_of_this_method.SetSocketOption(optionLevel, optionName, optionValue); return(__ret); }
public static bool _SetSocketOption_System_Net_Sockets_Socket_System_Net_Sockets_SocketOptionLevel_System_Net_Sockets_SocketOptionName_System_Int32( ) { //Parameters System.Net.Sockets.SocketOptionLevel optionLevel = null; System.Net.Sockets.SocketOptionName optionName = null; System.Int32 optionValue = null; //Exception Exception exception_Real = null; Exception exception_Intercepted = null; InterceptionMaintenance.disableInterception( ); try { returnValue_Real = System.Net.Sockets.Socket.SetSocketOption(optionLevel, optionName, optionValue); } catch (Exception e) { exception_Real = e; } InterceptionMaintenance.enableInterception( ); try { returnValue_Intercepted = System.Net.Sockets.Socket.SetSocketOption(optionLevel, optionName, optionValue); } catch (Exception e) { exception_Intercepted = e; } }
public static FileDescriptor socket0(bool preferIPv6, bool stream, bool reuse) { #if FIRST_PASS return(null); #else try { System.Net.Sockets.AddressFamily addressFamily = preferIPv6 ? System.Net.Sockets.AddressFamily.InterNetworkV6 : System.Net.Sockets.AddressFamily.InterNetwork; System.Net.Sockets.SocketType socketType = stream ? System.Net.Sockets.SocketType.Stream : System.Net.Sockets.SocketType.Dgram; System.Net.Sockets.ProtocolType protocolType = stream ? System.Net.Sockets.ProtocolType.Tcp : System.Net.Sockets.ProtocolType.Udp; System.Net.Sockets.Socket socket = new System.Net.Sockets.Socket(addressFamily, socketType, protocolType); if (preferIPv6) { // enable IPv4 over IPv6 sockets (note that we don't have to check for >= Vista here, because nio sockets only support IPv6 on >= Vista) const System.Net.Sockets.SocketOptionName IPV6_V6ONLY = (System.Net.Sockets.SocketOptionName) 27; socket.SetSocketOption(System.Net.Sockets.SocketOptionLevel.IPv6, IPV6_V6ONLY, 0); } if (!stream) { setConnectionReset(socket, false); } FileDescriptor fd = new FileDescriptor(); fd.setSocket(socket); return(fd); } catch (System.Net.Sockets.SocketException x) { throw global::java.net.SocketUtil.convertSocketExceptionToIOException(x); } #endif }
public void GetSocketOption(System.Net.Sockets.SocketOptionLevel optionLevel, System.Net.Sockets.SocketOptionName optionName, byte[] optionValue) { }
public object GetSocketOption(System.Net.Sockets.SocketOptionLevel optionLevel, System.Net.Sockets.SocketOptionName optionName) { throw null; }
public byte[] GetSocketOption(System.Net.Sockets.SocketOptionLevel optionLevel, System.Net.Sockets.SocketOptionName optionName, int optionLength) { return(default(byte[])); }
public object GetSocketOption(System.Net.Sockets.SocketOptionLevel optionLevel, System.Net.Sockets.SocketOptionName optionName) { return(default(object)); }
public static void SetMaximumSegmentSize(System.Net.Sockets.Socket socket, int size) { System.Net.Sockets.SocketOptionName optionName = (System.Net.Sockets.SocketOptionName)(Common.Extensions.OperatingSystemExtensions.IsWindows ? 4 : 2); SetTcpOption(socket, optionName, size); }
//Should verify the value for the option is correct for the OS. public static void GetMaximumSegmentSize(System.Net.Sockets.Socket socket, out int result) { System.Net.Sockets.SocketOptionName optionName = (System.Net.Sockets.SocketOptionName)(Common.Extensions.OperatingSystemExtensions.IsWindows ? 4 : 2); result = (int)socket.GetSocketOption(System.Net.Sockets.SocketOptionLevel.Tcp, optionName); }
public byte[] GetSocketOption(System.Net.Sockets.SocketOptionLevel optionLevel, System.Net.Sockets.SocketOptionName optionName, int optionLength) { throw null; }
public void SetSocketOption(System.Net.Sockets.SocketOptionLevel optionLevel, System.Net.Sockets.SocketOptionName optionName, object optionValue) { }
//Should also have a TrySetSocketOption //Should ensure that the correct options are being set, these are all verified as windows options but Linux or Mac may not have them //SetSocketOption_internal should be determined by OperatingSystemExtensions and RuntimeExtensions. //Will need to build a Map of names to values for those platforms and translate. internal static void SetTcpOption(System.Net.Sockets.Socket socket, System.Net.Sockets.SocketOptionName name, int value) { /*if (Common.Extensions.OperatingSystemExtensions.IsWindows) */ socket.SetSocketOption(System.Net.Sockets.SocketOptionLevel.Tcp, name, value); //else SetSocketOption_internal }