Files
Odin/core/sys/windows/ws2_32.odin
Carwyn Nelson c67c0789eb Add socket() function to windows ws32 bindings
It looks like this was missing from the winsock bindings. Odin contains
WSASocketW which I assume would also work for obtaining a socket, but
socket() is distinct and is what I was using, so I assume others will
want it too.
2021-11-10 15:55:50 +00:00

106 lines
2.7 KiB
Odin

// +build windows
package sys_windows
foreign import ws2_32 "system:Ws2_32.lib"
@(default_calling_convention="stdcall")
foreign ws2_32 {
WSAStartup :: proc(wVersionRequested: WORD, lpWSAData: LPWSADATA) -> c_int ---
WSACleanup :: proc() -> c_int ---
WSAGetLastError :: proc() -> c_int ---
WSADuplicateSocketW :: proc(
s: SOCKET,
dwProcessId: DWORD,
lpProtocolInfo: LPWSAPROTOCOL_INFO,
) -> c_int ---
WSASend :: proc(
s: SOCKET,
lpBuffers: LPWSABUF,
dwBufferCount: DWORD,
lpNumberOfBytesSent: LPDWORD,
dwFlags: DWORD,
lpOverlapped: LPWSAOVERLAPPED,
lpCompletionRoutine: LPWSAOVERLAPPED_COMPLETION_ROUTINE,
) -> c_int ---
WSARecv :: proc(
s: SOCKET,
lpBuffers: LPWSABUF,
dwBufferCount: DWORD,
lpNumberOfBytesRecvd: LPDWORD,
lpFlags: LPDWORD,
lpOverlapped: LPWSAOVERLAPPED,
lpCompletionRoutine: LPWSAOVERLAPPED_COMPLETION_ROUTINE,
) -> c_int ---
WSASocketW :: proc(
af: c_int,
kind: c_int,
protocol: c_int,
lpProtocolInfo: LPWSAPROTOCOL_INFO,
g: GROUP,
dwFlags: DWORD,
) -> SOCKET ---
socket :: proc(
af: c_int,
type: c_int,
protocol: c_int,
) -> SOCKET ---
ioctlsocket :: proc(s: SOCKET, cmd: c_long, argp: ^c_ulong) -> c_int ---
closesocket :: proc(socket: SOCKET) -> c_int ---
recv :: proc(socket: SOCKET, buf: rawptr, len: c_int, flags: c_int) -> c_int ---
send :: proc(socket: SOCKET, buf: rawptr, len: c_int, flags: c_int) -> c_int ---
recvfrom :: proc(
socket: SOCKET,
buf: rawptr,
len: c_int,
flags: c_int,
addr: ^SOCKADDR,
addrlen: ^c_int,
) -> c_int ---
sendto :: proc(
socket: SOCKET,
buf: rawptr,
len: c_int,
flags: c_int,
addr: ^SOCKADDR,
addrlen: c_int,
) -> c_int ---
shutdown :: proc(socket: SOCKET, how: c_int) -> c_int ---
accept :: proc(socket: SOCKET, address: ^SOCKADDR, address_len: ^c_int) -> SOCKET ---
setsockopt :: proc(
s: SOCKET,
level: c_int,
optname: c_int,
optval: rawptr,
optlen: c_int,
) -> c_int ---
getsockname :: proc(socket: SOCKET, address: ^SOCKADDR, address_len: ^c_int) -> c_int ---
getpeername :: proc(socket: SOCKET, address: ^SOCKADDR, address_len: ^c_int) -> c_int ---
bind :: proc(socket: SOCKET, address: ^SOCKADDR, address_len: socklen_t) -> c_int ---
listen :: proc(socket: SOCKET, backlog: c_int) -> c_int ---
connect :: proc(socket: SOCKET, address: ^SOCKADDR, len: c_int) -> c_int ---
getaddrinfo :: proc(
node: cstring,
service: cstring,
hints: ^ADDRINFOA,
res: ^^ADDRINFOA,
) -> c_int ---
freeaddrinfo :: proc(res: ^ADDRINFOA) ---
select :: proc(
nfds: c_int,
readfds: ^fd_set,
writefds: ^fd_set,
exceptfds: ^fd_set,
timeout: ^timeval,
) -> c_int ---
getsockopt :: proc(
s: SOCKET,
level: c_int,
optname: c_int,
optval: ^c_char,
optlen: ^c_int,
) -> c_int ---
}