| ... | ... | @@ -0,0 +1,186 @@ |
| 1 | usingnamespace @import("bits.zig"); |
| 2 | |
| 3 | pub const SOCKET = *@OpaqueType(); |
| 4 | pub const INVALID_SOCKET = @intToPtr(SOCKET, ~@as(usize, 0)); |
| 5 | |
| 6 | pub const MAX_PROTOCOL_CHAIN = 7; |
| 7 | |
| 8 | pub const WSAPROTOCOLCHAIN = extern struct { |
| 9 | ChainLen: c_int, |
| 10 | ChainEntries: [MAX_PROTOCOL_CHAIN]DWORD, |
| 11 | }; |
| 12 | |
| 13 | pub const WSAPROTOCOL_LEN = 255; |
| 14 | |
| 15 | pub const WSAPROTOCOL_INFOA = extern struct { |
| 16 | dwServiceFlags1: DWORD, |
| 17 | dwServiceFlags2: DWORD, |
| 18 | dwServiceFlags3: DWORD, |
| 19 | dwServiceFlags4: DWORD, |
| 20 | dwProviderFlags: DWORD, |
| 21 | ProviderId: GUID, |
| 22 | dwCatalogEntryId: DWORD, |
| 23 | ProtocolChain: WSAPROTOCOLCHAIN, |
| 24 | iVersion: c_int, |
| 25 | iAddressFamily: c_int, |
| 26 | iMaxSockAddr: c_int, |
| 27 | iMinSockAddr: c_int, |
| 28 | iSocketType: c_int, |
| 29 | iProtocol: c_int, |
| 30 | iProtocolMaxOffset: c_int, |
| 31 | iNetworkByteOrder: c_int, |
| 32 | iSecurityScheme: c_int, |
| 33 | dwMessageSize: DWORD, |
| 34 | dwProviderReserved: DWORD, |
| 35 | szProtocol: [WSAPROTOCOL_LEN + 1]CHAR, |
| 36 | }; |
| 37 | |
| 38 | pub const WSAPROTOCOL_INFOW = extern struct { |
| 39 | dwServiceFlags1: DWORD, |
| 40 | dwServiceFlags2: DWORD, |
| 41 | dwServiceFlags3: DWORD, |
| 42 | dwServiceFlags4: DWORD, |
| 43 | dwProviderFlags: DWORD, |
| 44 | ProviderId: GUID, |
| 45 | dwCatalogEntryId: DWORD, |
| 46 | ProtocolChain: WSAPROTOCOLCHAIN, |
| 47 | iVersion: c_int, |
| 48 | iAddressFamily: c_int, |
| 49 | iMaxSockAddr: c_int, |
| 50 | iMinSockAddr: c_int, |
| 51 | iSocketType: c_int, |
| 52 | iProtocol: c_int, |
| 53 | iProtocolMaxOffset: c_int, |
| 54 | iNetworkByteOrder: c_int, |
| 55 | iSecurityScheme: c_int, |
| 56 | dwMessageSize: DWORD, |
| 57 | dwProviderReserved: DWORD, |
| 58 | szProtocol: [WSAPROTOCOL_LEN + 1]WCHAR, |
| 59 | }; |
| 60 | |
| 61 | pub const GROUP = u32; |
| 62 | |
| 63 | pub const SG_UNCONSTRAINED_GROUP = 0x1; |
| 64 | pub const SG_CONSTRAINED_GROUP = 0x2; |
| 65 | |
| 66 | pub const WSA_FLAG_OVERLAPPED = 0x01; |
| 67 | pub const WSA_FLAG_MULTIPOINT_C_ROOT = 0x02; |
| 68 | pub const WSA_FLAG_MULTIPOINT_C_LEAF = 0x04; |
| 69 | pub const WSA_FLAG_MULTIPOINT_D_ROOT = 0x08; |
| 70 | pub const WSA_FLAG_MULTIPOINT_D_LEAF = 0x10; |
| 71 | pub const WSA_FLAG_ACCESS_SYSTEM_SECURITY = 0x40; |
| 72 | pub const WSA_FLAG_NO_HANDLE_INHERIT = 0x80; |
| 73 | |
| 74 | pub const WSA_INVALID_HANDLE = 6; |
| 75 | pub const WSA_NOT_ENOUGH_MEMORY = 8; |
| 76 | pub const WSA_INVALID_PARAMETER = 87; |
| 77 | pub const WSA_OPERATION_ABORTED = 995; |
| 78 | pub const WSA_IO_INCOMPLETE = 996; |
| 79 | pub const WSA_IO_PENDING = 997; |
| 80 | pub const WSAEINTR = 10004; |
| 81 | pub const WSAEBADF = 10009; |
| 82 | pub const WSAEACCES = 10013; |
| 83 | pub const WSAEFAULT = 10014; |
| 84 | pub const WSAEINVAL = 10022; |
| 85 | pub const WSAEMFILE = 10024; |
| 86 | pub const WSAEWOULDBLOCK = 10035; |
| 87 | pub const WSAEINPROGRESS = 10036; |
| 88 | pub const WSAEALREADY = 10037; |
| 89 | pub const WSAENOTSOCK = 10038; |
| 90 | pub const WSAEDESTADDRREQ = 10039; |
| 91 | pub const WSAEMSGSIZE = 10040; |
| 92 | pub const WSAEPROTOTYPE = 10041; |
| 93 | pub const WSAENOPROTOOPT = 10042; |
| 94 | pub const WSAEPROTONOSUPPORT = 10043; |
| 95 | pub const WSAESOCKTNOSUPPORT = 10044; |
| 96 | pub const WSAEOPNOTSUPP = 10045; |
| 97 | pub const WSAEPFNOSUPPORT = 10046; |
| 98 | pub const WSAEAFNOSUPPORT = 10047; |
| 99 | pub const WSAEADDRINUSE = 10048; |
| 100 | pub const WSAEADDRNOTAVAIL = 10049; |
| 101 | pub const WSAENETDOWN = 10050; |
| 102 | pub const WSAENETUNREACH = 10051; |
| 103 | pub const WSAENETRESET = 10052; |
| 104 | pub const WSAECONNABORTED = 10053; |
| 105 | pub const WSAECONNRESET = 10054; |
| 106 | pub const WSAENOBUFS = 10055; |
| 107 | pub const WSAEISCONN = 10056; |
| 108 | pub const WSAENOTCONN = 10057; |
| 109 | pub const WSAESHUTDOWN = 10058; |
| 110 | pub const WSAETOOMANYREFS = 10059; |
| 111 | pub const WSAETIMEDOUT = 10060; |
| 112 | pub const WSAECONNREFUSED = 10061; |
| 113 | pub const WSAELOOP = 10062; |
| 114 | pub const WSAENAMETOOLONG = 10063; |
| 115 | pub const WSAEHOSTDOWN = 10064; |
| 116 | pub const WSAEHOSTUNREACH = 10065; |
| 117 | pub const WSAENOTEMPTY = 10066; |
| 118 | pub const WSAEPROCLIM = 10067; |
| 119 | pub const WSAEUSERS = 10068; |
| 120 | pub const WSAEDQUOT = 10069; |
| 121 | pub const WSAESTALE = 10070; |
| 122 | pub const WSAEREMOTE = 10071; |
| 123 | pub const WSASYSNOTREADY = 10091; |
| 124 | pub const WSAVERNOTSUPPORTED = 10092; |
| 125 | pub const WSANOTINITIALISED = 10093; |
| 126 | pub const WSAEDISCON = 10101; |
| 127 | pub const WSAENOMORE = 10102; |
| 128 | pub const WSAECANCELLED = 10103; |
| 129 | pub const WSAEINVALIDPROCTABLE = 10104; |
| 130 | pub const WSAEINVALIDPROVIDER = 10105; |
| 131 | pub const WSAEPROVIDERFAILEDINIT = 10106; |
| 132 | pub const WSASYSCALLFAILURE = 10107; |
| 133 | pub const WSASERVICE_NOT_FOUND = 10108; |
| 134 | pub const WSATYPE_NOT_FOUND = 10109; |
| 135 | pub const WSA_E_NO_MORE = 10110; |
| 136 | pub const WSA_E_CANCELLED = 10111; |
| 137 | pub const WSAEREFUSED = 10112; |
| 138 | pub const WSAHOST_NOT_FOUND = 11001; |
| 139 | pub const WSATRY_AGAIN = 11002; |
| 140 | pub const WSANO_RECOVERY = 11003; |
| 141 | pub const WSANO_DATA = 11004; |
| 142 | pub const WSA_QOS_RECEIVERS = 11005; |
| 143 | pub const WSA_QOS_SENDERS = 11006; |
| 144 | pub const WSA_QOS_NO_SENDERS = 11007; |
| 145 | pub const WSA_QOS_NO_RECEIVERS = 11008; |
| 146 | pub const WSA_QOS_REQUEST_CONFIRMED = 11009; |
| 147 | pub const WSA_QOS_ADMISSION_FAILURE = 11010; |
| 148 | pub const WSA_QOS_POLICY_FAILURE = 11011; |
| 149 | pub const WSA_QOS_BAD_STYLE = 11012; |
| 150 | pub const WSA_QOS_BAD_OBJECT = 11013; |
| 151 | pub const WSA_QOS_TRAFFIC_CTRL_ERROR = 11014; |
| 152 | pub const WSA_QOS_GENERIC_ERROR = 11015; |
| 153 | pub const WSA_QOS_ESERVICETYPE = 11016; |
| 154 | pub const WSA_QOS_EFLOWSPEC = 11017; |
| 155 | pub const WSA_QOS_EPROVSPECBUF = 11018; |
| 156 | pub const WSA_QOS_EFILTERSTYLE = 11019; |
| 157 | pub const WSA_QOS_EFILTERTYPE = 11020; |
| 158 | pub const WSA_QOS_EFILTERCOUNT = 11021; |
| 159 | pub const WSA_QOS_EOBJLENGTH = 11022; |
| 160 | pub const WSA_QOS_EFLOWCOUNT = 11023; |
| 161 | pub const WSA_QOS_EUNKOWNPSOBJ = 11024; |
| 162 | pub const WSA_QOS_EPOLICYOBJ = 11025; |
| 163 | pub const WSA_QOS_EFLOWDESC = 11026; |
| 164 | pub const WSA_QOS_EPSFLOWSPEC = 11027; |
| 165 | pub const WSA_QOS_EPSFILTERSPEC = 11028; |
| 166 | pub const WSA_QOS_ESDMODEOBJ = 11029; |
| 167 | pub const WSA_QOS_ESHAPERATEOBJ = 11030; |
| 168 | pub const WSA_QOS_RESERVED_PETYPE = 11031; |
| 169 | |
| 170 | pub extern "ws2_32" stdcallcc fn WSAGetLastError() c_int; |
| 171 | pub extern "ws2_32" stdcallcc fn WSASocketA( |
| 172 | af: c_int, |
| 173 | type: c_int, |
| 174 | protocol: c_int, |
| 175 | lpProtocolInfo: ?*WSAPROTOCOL_INFOA, |
| 176 | g: GROUP, |
| 177 | dwFlags: DWORD, |
| 178 | ) SOCKET; |
| 179 | pub extern "ws2_32" stdcallcc fn WSASocketW( |
| 180 | af: c_int, |
| 181 | type: c_int, |
| 182 | protocol: c_int, |
| 183 | lpProtocolInfo: ?*WSAPROTOCOL_INFOW, |
| 184 | g: GROUP, |
| 185 | dwFlags: DWORD, |
| 186 | ) SOCKET; |