src\libraries\Common\src\Interop\Unix\System.Native\Interop.GetSockOpt.cs (3)
13internal static unsafe partial Error GetSockOpt(SafeHandle socket, SocketOptionLevel optionLevel, SocketOptionName optionName, byte* optionValue, int* optionLen);
16internal static unsafe partial Error GetSockOpt(IntPtr socket, SocketOptionLevel optionLevel, SocketOptionName optionName, byte* optionValue, int* optionLen);
19internal static unsafe partial Error GetRawSockOpt(SafeHandle socket, int optionLevel, int optionName, byte* optionValue, int* optionLen);
src\libraries\Common\src\Interop\Unix\System.Native\Interop.SetSockOpt.cs (3)
13internal static unsafe partial Error SetSockOpt(SafeHandle socket, SocketOptionLevel optionLevel, SocketOptionName optionName, byte* optionValue, int optionLen);
16internal static unsafe partial Error SetSockOpt(IntPtr socket, SocketOptionLevel optionLevel, SocketOptionName optionName, byte* optionValue, int optionLen);
19internal static unsafe partial Error SetRawSockOpt(SafeHandle socket, int optionLevel, int optionName, byte* optionValue, int optionLen);
src\libraries\Common\src\Interop\Unix\System.Native\Interop.SocketAddress.cs (9)
14internal static unsafe partial Error GetSocketAddressSizes(int* ipv4SocketAddressSize, int* ipv6SocketAddressSize, int* udsSocketAddressSize, int* maxSocketAddressSize);
18internal static unsafe partial Error GetAddressFamily(byte* socketAddress, int socketAddressLen, int* addressFamily);
22internal static unsafe partial Error SetAddressFamily(byte* socketAddress, int socketAddressLen, int addressFamily);
26internal static unsafe partial Error GetPort(byte* socketAddress, int socketAddressLen, ushort* port);
30internal static unsafe partial Error SetPort(byte* socketAddress, int socketAddressLen, ushort port);
34internal static unsafe partial Error GetIPv4Address(byte* socketAddress, int socketAddressLen, uint* address);
38internal static unsafe partial Error SetIPv4Address(byte* socketAddress, int socketAddressLen, uint address);
41internal static unsafe partial Error GetIPv6Address(byte* socketAddress, int socketAddressLen, byte* address, int addressLen, uint* scopeId);
44internal static unsafe partial Error SetIPv6Address(byte* socketAddress, int socketAddressLen, byte* address, int addressLen, uint scopeId);
src\libraries\Common\src\Interop\Unix\System.Native\Interop.SocketEvent.cs (7)
31internal static unsafe partial Error CreateSocketEventPort(IntPtr* port);
34internal static partial Error CloseSocketEventPort(IntPtr port);
37internal static unsafe partial Error CreateSocketEventBuffer(int count, SocketEvent** buffer);
40internal static unsafe partial Error FreeSocketEventBuffer(SocketEvent* buffer);
43internal static partial Error TryChangeSocketEventRegistration(IntPtr port, SafeHandle socket, SocketEvents currentEvents, SocketEvents newEvents, IntPtr data);
46internal static partial Error TryChangeSocketEventRegistration(IntPtr port, IntPtr socket, SocketEvents currentEvents, SocketEvents newEvents, IntPtr data);
49internal static unsafe partial Error WaitForSocketEvents(IntPtr port, SocketEvent* buffer, int* count);
src\libraries\Common\src\System\Net\Sockets\SocketErrorPal.Unix.cs (92)
34private static readonly Dictionary<Interop.Error, SocketError> s_nativeErrorToSocketError = new Dictionary<Interop.Error, SocketError>(NativeErrorToSocketErrorCount)
36{ Interop.Error.EACCES, SocketError.AccessDenied },
37{ Interop.Error.EADDRINUSE, SocketError.AddressAlreadyInUse },
38{ Interop.Error.EADDRNOTAVAIL, SocketError.AddressNotAvailable },
39{ Interop.Error.EAFNOSUPPORT, SocketError.AddressFamilyNotSupported },
40{ Interop.Error.EAGAIN, SocketError.WouldBlock },
41{ Interop.Error.EALREADY, SocketError.AlreadyInProgress },
42{ Interop.Error.EBADF, SocketError.OperationAborted },
43{ Interop.Error.ECANCELED, SocketError.OperationAborted },
44{ Interop.Error.ECONNABORTED, SocketError.ConnectionAborted },
45{ Interop.Error.ECONNREFUSED, SocketError.ConnectionRefused },
46{ Interop.Error.ECONNRESET, SocketError.ConnectionReset },
47{ Interop.Error.EDESTADDRREQ, SocketError.DestinationAddressRequired },
48{ Interop.Error.EFAULT, SocketError.Fault },
49{ Interop.Error.EHOSTDOWN, SocketError.HostDown },
50{ Interop.Error.ENXIO, SocketError.HostNotFound }, // not perfect, but closest match available
51{ Interop.Error.EHOSTUNREACH, SocketError.HostUnreachable },
52{ Interop.Error.EINPROGRESS, SocketError.InProgress },
53{ Interop.Error.EINTR, SocketError.Interrupted },
54{ Interop.Error.EINVAL, SocketError.InvalidArgument },
55{ Interop.Error.EISCONN, SocketError.IsConnected },
56{ Interop.Error.EMFILE, SocketError.TooManyOpenSockets },
57{ Interop.Error.EMSGSIZE, SocketError.MessageSize },
58{ Interop.Error.ENETDOWN, SocketError.NetworkDown },
59{ Interop.Error.ENETRESET, SocketError.NetworkReset },
60{ Interop.Error.ENETUNREACH, SocketError.NetworkUnreachable },
61{ Interop.Error.ENFILE, SocketError.TooManyOpenSockets },
62{ Interop.Error.ENOBUFS, SocketError.NoBufferSpaceAvailable },
63{ Interop.Error.ENODATA, SocketError.NoData },
64{ Interop.Error.ENOENT, SocketError.AddressNotAvailable },
65{ Interop.Error.ENOPROTOOPT, SocketError.ProtocolOption },
66{ Interop.Error.ENOTCONN, SocketError.NotConnected },
67{ Interop.Error.ENOTSOCK, SocketError.NotSocket },
68{ Interop.Error.ENOTSUP, SocketError.OperationNotSupported },
69{ Interop.Error.EPERM, SocketError.AccessDenied },
70{ Interop.Error.EPIPE, SocketError.Shutdown },
71{ Interop.Error.EPFNOSUPPORT, SocketError.ProtocolFamilyNotSupported },
72{ Interop.Error.EPROTONOSUPPORT, SocketError.ProtocolNotSupported },
73{ Interop.Error.EPROTOTYPE, SocketError.ProtocolType },
74{ Interop.Error.ESOCKTNOSUPPORT, SocketError.SocketNotSupported },
75{ Interop.Error.ESHUTDOWN, SocketError.Disconnecting },
76{ Interop.Error.SUCCESS, SocketError.Success },
77{ Interop.Error.ETIMEDOUT, SocketError.TimedOut },
80private static readonly Dictionary<SocketError, Interop.Error> s_socketErrorToNativeError = new Dictionary<SocketError, Interop.Error>(SocketErrorToNativeErrorCount)
88{ SocketError.AccessDenied, Interop.Error.EACCES}, // could also have been EPERM
89{ SocketError.AddressAlreadyInUse, Interop.Error.EADDRINUSE },
90{ SocketError.AddressNotAvailable, Interop.Error.EADDRNOTAVAIL },
91{ SocketError.AddressFamilyNotSupported, Interop.Error.EAFNOSUPPORT },
92{ SocketError.AlreadyInProgress, Interop.Error.EALREADY },
93{ SocketError.ConnectionAborted, Interop.Error.ECONNABORTED },
94{ SocketError.ConnectionRefused, Interop.Error.ECONNREFUSED },
95{ SocketError.ConnectionReset, Interop.Error.ECONNRESET },
96{ SocketError.DestinationAddressRequired, Interop.Error.EDESTADDRREQ },
97{ SocketError.Disconnecting, Interop.Error.ESHUTDOWN },
98{ SocketError.Fault, Interop.Error.EFAULT },
99{ SocketError.HostDown, Interop.Error.EHOSTDOWN },
100{ SocketError.HostNotFound, Interop.Error.EHOSTNOTFOUND },
101{ SocketError.HostUnreachable, Interop.Error.EHOSTUNREACH },
102{ SocketError.InProgress, Interop.Error.EINPROGRESS },
103{ SocketError.Interrupted, Interop.Error.EINTR },
104{ SocketError.InvalidArgument, Interop.Error.EINVAL },
105{ SocketError.IOPending, Interop.Error.EINPROGRESS },
106{ SocketError.IsConnected, Interop.Error.EISCONN },
107{ SocketError.MessageSize, Interop.Error.EMSGSIZE },
108{ SocketError.NetworkDown, Interop.Error.ENETDOWN },
109{ SocketError.NetworkReset, Interop.Error.ENETRESET },
110{ SocketError.NetworkUnreachable, Interop.Error.ENETUNREACH },
111{ SocketError.NoBufferSpaceAvailable, Interop.Error.ENOBUFS },
112{ SocketError.NoData, Interop.Error.ENODATA },
113{ SocketError.NotConnected, Interop.Error.ENOTCONN },
114{ SocketError.NotSocket, Interop.Error.ENOTSOCK },
115{ SocketError.OperationAborted, Interop.Error.ECANCELED },
116{ SocketError.OperationNotSupported, Interop.Error.ENOTSUP },
117{ SocketError.ProtocolFamilyNotSupported, Interop.Error.EPFNOSUPPORT },
118{ SocketError.ProtocolNotSupported, Interop.Error.EPROTONOSUPPORT },
119{ SocketError.ProtocolOption, Interop.Error.ENOPROTOOPT },
120{ SocketError.ProtocolType, Interop.Error.EPROTOTYPE },
121{ SocketError.Shutdown, Interop.Error.EPIPE },
122{ SocketError.SocketNotSupported, Interop.Error.ESOCKTNOSUPPORT },
123{ SocketError.Success, Interop.Error.SUCCESS },
124{ SocketError.TimedOut, Interop.Error.ETIMEDOUT },
125{ SocketError.TooManyOpenSockets, Interop.Error.ENFILE }, // could also have been EMFILE
126{ SocketError.TryAgain, Interop.Error.EAGAIN }, // not a perfect mapping, but better than nothing
127{ SocketError.WouldBlock, Interop.Error.EAGAIN },
128{ SocketError.SocketError, Interop.Error.ESOCKETERROR },
131internal static SocketError GetSocketErrorForNativeError(Interop.Error errno)
139internal static Interop.Error GetNativeErrorForSocketError(SocketError error)
141Interop.Error errno;
145errno = (Interop.Error)(int)error;
150internal static bool TryGetNativeErrorForSocketError(SocketError error, out Interop.Error errno)
System\Net\Sockets\SocketPal.Unix.cs (106)
30public static SocketError GetSocketErrorForErrorCode(Interop.Error errorCode)
65Interop.Error error = Interop.Sys.Socket((int)addressFamily, (int)socketType, (int)protocolType, &fd);
66if (error == Interop.Error.SUCCESS)
79if (error != Interop.Error.SUCCESS)
105private static unsafe int SysRead(SafeSocketHandle handle, Span<byte> buffer, out Interop.Error errno)
114errno = received != -1 ? Interop.Error.SUCCESS : Interop.Sys.GetLastError();
120private static unsafe int SysReceive(SafeSocketHandle socket, SocketFlags flags, Span<byte> buffer, out Interop.Error errno)
136if (errno != Interop.Error.SUCCESS)
144private static unsafe int SysReceive(SafeSocketHandle socket, SocketFlags flags, Span<byte> buffer, Span<byte> socketAddress, out int socketAddressLen, out SocketFlags receivedFlags, out Interop.Error errno)
177if (errno != Interop.Error.SUCCESS)
185private static unsafe int SysWrite(SafeSocketHandle handle, ReadOnlySpan<byte> buffer, ref int offset, ref int count, out Interop.Error errno)
200errno = Interop.Error.SUCCESS;
214private static unsafe int SysSend(SafeSocketHandle socket, SocketFlags flags, ReadOnlySpan<byte> buffer, ref int offset, ref int count, out Interop.Error errno)
231if (errno != Interop.Error.SUCCESS)
241private static unsafe int SysSend(SafeSocketHandle socket, SocketFlags flags, ReadOnlySpan<byte> buffer, ref int offset, ref int count, ReadOnlySpan<byte> socketAddress, out Interop.Error errno)
275if (errno != Interop.Error.SUCCESS)
285private static unsafe int SysSend(SafeSocketHandle socket, SocketFlags flags, IList<ArraySegment<byte>> buffers, ref int bufferIndex, ref int offset, ReadOnlySpan<byte> socketAddress, out Interop.Error errno)
347if (errno != Interop.Error.SUCCESS)
371private static unsafe long SendFile(SafeSocketHandle socket, SafeFileHandle fileHandle, ref long offset, ref long count, out Interop.Error errno)
380private static unsafe int SysReceive(SafeSocketHandle socket, SocketFlags flags, IList<ArraySegment<byte>> buffers, Span<byte> socketAddress, out int socketAddressLen, out SocketFlags receivedFlags, out Interop.Error errno)
397if (errno != Interop.Error.SUCCESS)
475if (errno != Interop.Error.SUCCESS)
483private static unsafe int SysReceiveMessageFrom(SafeSocketHandle socket, SocketFlags flags, Span<byte> buffer, Span<byte> socketAddress, out int socketAddressLen, bool isIPv4, bool isIPv6, out SocketFlags receivedFlags, out IPPacketInformation ipPacketInformation, out Interop.Error errno)
522if (errno != Interop.Error.SUCCESS)
541out SocketFlags receivedFlags, out IPPacketInformation ipPacketInformation, out Interop.Error errno)
597if (errno == Interop.Error.SUCCESS)
629Interop.Error errno;
648if (errno == Interop.Error.SUCCESS)
659if (errno != Interop.Error.EAGAIN && errno != Interop.Error.EWOULDBLOCK)
682Interop.Error err;
697if (err == Interop.Error.SUCCESS)
703if (err != Interop.Error.EINPROGRESS)
715Interop.Error socketError = default;
716Interop.Error err;
726if (err == Interop.Error.SUCCESS)
730socketError = Interop.Error.EINPROGRESS;
745if (err != Interop.Error.SUCCESS)
747Debug.Assert(err == Interop.Error.EBADF, $"Unexpected err: {err}");
752if (socketError == Interop.Error.SUCCESS)
757else if (socketError == Interop.Error.EINPROGRESS)
777Interop.Error errno;
814if (errno != Interop.Error.EAGAIN && errno != Interop.Error.EWOULDBLOCK)
836Interop.Error errno;
883if (errno != Interop.Error.EAGAIN && errno != Interop.Error.EWOULDBLOCK)
907Interop.Error errno;
928if (errno != Interop.Error.EAGAIN && errno != Interop.Error.EWOULDBLOCK)
975Interop.Error errno;
1001if (!successfulSend && errno != Interop.Error.EAGAIN && errno != Interop.Error.EWOULDBLOCK)
1041Interop.Error errno;
1054if (errno != Interop.Error.SUCCESS)
1056if (errno != Interop.Error.EAGAIN && errno != Interop.Error.EWOULDBLOCK)
1085Interop.Error err = Interop.Sys.GetSockName(handle, buffer, nameLen);
1086return err == Interop.Error.SUCCESS ? SocketError.Success : GetSocketErrorForErrorCode(err);
1092Interop.Error err = Interop.Sys.GetBytesAvailable(handle, &value);
1095return err == Interop.Error.SUCCESS ? SocketError.Success : GetSocketErrorForErrorCode(err);
1101Interop.Error err = Interop.Sys.GetAtOutOfBandMark(handle, &value);
1104return err == Interop.Error.SUCCESS ? SocketError.Success : GetSocketErrorForErrorCode(err);
1109Interop.Error err;
1117return err == Interop.Error.SUCCESS ? SocketError.Success : GetSocketErrorForErrorCode(err);
1122Interop.Error err = Interop.Sys.Bind(handle, socketProtocolType, buffer);
1124return err == Interop.Error.SUCCESS ? SocketError.Success : GetSocketErrorForErrorCode(err);
1129Interop.Error err = Interop.Sys.Listen(handle, backlog);
1130return err == Interop.Error.SUCCESS ? SocketError.Success : GetSocketErrorForErrorCode(err);
1421private static SocketError GetErrorAndTrackSetting(SafeSocketHandle handle, SocketOptionLevel optionLevel, SocketOptionName optionName, Interop.Error err)
1423if (err == Interop.Error.SUCCESS)
1433Interop.Error err;
1474if (err == Interop.Error.SUCCESS)
1506Interop.Error err = Interop.Sys.SetSockOpt(handle, optionLevel, optionName, pinnedValue, optionValue != null ? optionValue.Length : 0);
1515Interop.Error err = Interop.Sys.SetRawSockOpt(handle, optionLevel, optionName, optionValuePtr, optionValue.Length);
1517if (err == Interop.Error.SUCCESS)
1551Interop.Error err = Interop.Sys.SetIPv4MulticastOption(handle, optName, &opt);
1568Interop.Error err = Interop.Sys.SetIPv6MulticastOption(handle, optName, &opt);
1579Interop.Error err = Interop.Sys.SetLingerOption(handle, &opt);
1618Interop.Error socketError = default(Interop.Error);
1619Interop.Error getErrorError = Interop.Sys.GetSocketErrorOption(handle, &socketError);
1621return getErrorError == Interop.Error.SUCCESS ? SocketError.Success : GetSocketErrorForErrorCode(getErrorError);
1626Interop.Error err = Interop.Sys.GetSockOpt(handle, optionLevel, optionName, (byte*)&value, &optLen);
1640return err == Interop.Error.SUCCESS ? SocketError.Success : GetSocketErrorForErrorCode(err);
1647Interop.Error err;
1675if (err == Interop.Error.SUCCESS)
1691Interop.Error err = Interop.Sys.GetRawSockOpt(handle, optionLevel, optionName, pinnedValue, &optLen);
1693if (err == Interop.Error.SUCCESS)
1712Interop.Error err = Interop.Sys.GetIPv4MulticastOption(handle, optName, &opt);
1713if (err != Interop.Error.SUCCESS)
1737Interop.Error err = Interop.Sys.GetIPv6MulticastOption(handle, optName, &opt);
1738if (err != Interop.Error.SUCCESS)
1751Interop.Error err = Interop.Sys.GetLingerOption(handle, &opt);
1752if (err != Interop.Error.SUCCESS)
1775Interop.Error err = Interop.Sys.Poll(handle, inEvent, milliseconds, out outEvents);
1776if (err != Interop.Error.SUCCESS)
1851Interop.Error err = Interop.Sys.Select(readFDs, readFDs.Length, writeFDs, writeFDs.Length, errorFDs, errorFDs.Length, microseconds, maxFd, out triggered);
1852if (err != Interop.Error.SUCCESS)
1956Interop.Error err = Interop.Sys.Poll(events, (uint)eventsLength, milliseconds, &triggered);
1957if (err != Interop.Error.SUCCESS)
2051Interop.Error err = Interop.Sys.Shutdown(handle, how);
2052if (err == Interop.Error.SUCCESS)
2061if (err == Interop.Error.ENOTCONN && (isConnected || isDisconnected))
2177Interop.Error err = Interop.Sys.Poll(handle, Interop.PollEvents.POLLOUT, timeout: 0, out Interop.PollEvents outEvents);
2178if (err != Interop.Error.SUCCESS)