@@ -108,6 +108,50 @@ pub const WSAOVERLAPPED = extern struct {
108
108
109
109
pub const WSAOVERLAPPED_COMPLETION_ROUTINE = extern fn (dwError : DWORD , cbTransferred : DWORD , lpOverlapped : * WSAOVERLAPPED , dwFlags : DWORD ) void ;
110
110
111
+ pub const ADDRESS_FAMILY = u16 ;
112
+
113
+ pub const sockaddr = extern struct {
114
+ family : ADDRESS_FAMILY ,
115
+ data : [14 ]u8 ,
116
+ };
117
+
118
+ /// IPv4 socket address
119
+ pub const sockaddr_in = extern struct {
120
+ family : ADDRESS_FAMILY = AF_INET ,
121
+ port : USHORT ,
122
+ addr : u32 ,
123
+ zero : [8 ]u8 = [8 ]u8 { 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 },
124
+ };
125
+
126
+ /// IPv6 socket address
127
+ pub const sockaddr_in6 = extern struct {
128
+ family : ADDRESS_FAMILY = AF_INET6 ,
129
+ port : USHORT ,
130
+ flowinfo : u32 ,
131
+ addr : [16 ]u8 ,
132
+ scope_id : u32 ,
133
+ };
134
+
135
+ /// UNIX domain socket address
136
+ pub const sockaddr_un = extern struct {
137
+ family : ADDRESS_FAMILY = AF_UNIX ,
138
+ path : [108 ]u8 ,
139
+ };
140
+
141
+ pub const WSABUF = extern struct {
142
+ len : ULONG ,
143
+ buf : [* ]u8 ,
144
+ };
145
+
146
+ pub const WSAMSG = extern struct {
147
+ name : * const sockaddr ,
148
+ namelen : INT ,
149
+ lpBuffers : [* ]WSABUF ,
150
+ dwBufferCount : DWORD ,
151
+ Control : WSABUF ,
152
+ dwFlags : DWORD ,
153
+ };
154
+
111
155
pub const WSA_INVALID_HANDLE = 6 ;
112
156
pub const WSA_NOT_ENOUGH_MEMORY = 8 ;
113
157
pub const WSA_INVALID_PARAMETER = 87 ;
@@ -252,3 +296,53 @@ pub extern "ws2_32" stdcallcc fn WSAIoctl(
252
296
lpOverlapped : ? * WSAOVERLAPPED ,
253
297
lpCompletionRoutine : ? WSAOVERLAPPED_COMPLETION_ROUTINE ,
254
298
) c_int ;
299
+ pub extern "ws2_32" stdcallcc fn accept (
300
+ s : SOCKET ,
301
+ addr : ? * sockaddr ,
302
+ addrlen : c_int ,
303
+ ) SOCKET ;
304
+ pub extern "ws2_32" stdcallcc fn connect (
305
+ s : SOCKET ,
306
+ name : * const sockaddr ,
307
+ namelen : c_int ,
308
+ ) c_int ;
309
+ pub extern "ws2_32" stdcallcc fn WSARecv (
310
+ s : SOCKET ,
311
+ lpBuffers : [* ]const WSABUF ,
312
+ dwBufferCount : DWORD ,
313
+ lpNumberOfBytesRecvd : ? * DWORD ,
314
+ lpFlags : * DWORD ,
315
+ lpOverlapped : ? * WSAOVERLAPPED ,
316
+ lpCompletionRoutine : ? WSAOVERLAPPED_COMPLETION_ROUTINE ,
317
+ ) c_int ;
318
+ pub extern "ws2_32" stdcallcc fn WSARecvFrom (
319
+ s : SOCKET ,
320
+ lpBuffers : [* ]const WSABUF ,
321
+ dwBufferCount : DWORD ,
322
+ lpNumberOfBytesRecvd : ? * DWORD ,
323
+ lpFlags : * DWORD ,
324
+ lpFrom : ? * sockaddr ,
325
+ lpFromlen : c_int ,
326
+ lpOverlapped : ? * WSAOVERLAPPED ,
327
+ lpCompletionRoutine : ? WSAOVERLAPPED_COMPLETION_ROUTINE ,
328
+ ) c_int ;
329
+ pub extern "ws2_32" stdcallcc fn WSASend (
330
+ s : SOCKET ,
331
+ lpBuffers : [* ]WSABUF ,
332
+ dwBufferCount : DWORD ,
333
+ lpNumberOfBytesSent : ? * DWORD ,
334
+ dwFlags : DWORD ,
335
+ lpOverlapped : ? * WSAOVERLAPPED ,
336
+ lpCompletionRoutine : ? WSAOVERLAPPED_COMPLETION_ROUTINE ,
337
+ ) c_int ;
338
+ pub extern "ws2_32" stdcallcc fn WSASendTo (
339
+ s : SOCKET ,
340
+ lpBuffers : [* ]WSABUF ,
341
+ dwBufferCount : DWORD ,
342
+ lpNumberOfBytesSent : ? * DWORD ,
343
+ dwFlags : DWORD ,
344
+ lpTo : ? * const sockaddr ,
345
+ iTolen : c_int ,
346
+ lpOverlapped : ? * WSAOVERLAPPED ,
347
+ lpCompletionRoutine : ? WSAOVERLAPPED_COMPLETION_ROUTINE ,
348
+ ) c_int ;
0 commit comments