Skip to content

Commit cf5edce

Browse files
committed
std: add more winsock definitions
1 parent 2d3e5d6 commit cf5edce

File tree

1 file changed

+94
-0
lines changed

1 file changed

+94
-0
lines changed

lib/std/os/windows/ws2_32.zig

+94
Original file line numberDiff line numberDiff line change
@@ -108,6 +108,50 @@ pub const WSAOVERLAPPED = extern struct {
108108

109109
pub const WSAOVERLAPPED_COMPLETION_ROUTINE = extern fn (dwError: DWORD, cbTransferred: DWORD, lpOverlapped: *WSAOVERLAPPED, dwFlags: DWORD) void;
110110

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+
111155
pub const WSA_INVALID_HANDLE = 6;
112156
pub const WSA_NOT_ENOUGH_MEMORY = 8;
113157
pub const WSA_INVALID_PARAMETER = 87;
@@ -252,3 +296,53 @@ pub extern "ws2_32" stdcallcc fn WSAIoctl(
252296
lpOverlapped: ?*WSAOVERLAPPED,
253297
lpCompletionRoutine: ?WSAOVERLAPPED_COMPLETION_ROUTINE,
254298
) 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

Comments
 (0)