diff options
author | Micael Karlberg <[email protected]> | 2018-07-30 18:22:46 +0200 |
---|---|---|
committer | Micael Karlberg <[email protected]> | 2018-09-18 14:50:18 +0200 |
commit | 165666d8b8b1b21ffaf43ac436cfc1657ba83649 (patch) | |
tree | 82a21a93a7dadaa7eab78ccd1a82d6916d0edc11 /erts/emulator/nifs/common/socket_util.h | |
parent | 6b01561dc13a0152f56da0a2c61ad88236f87de7 (diff) | |
download | otp-165666d8b8b1b21ffaf43ac436cfc1657ba83649.tar.gz otp-165666d8b8b1b21ffaf43ac436cfc1657ba83649.tar.bz2 otp-165666d8b8b1b21ffaf43ac436cfc1657ba83649.zip |
[socket-nif] Add support for recvmsg
Added preliminary support for function recvmsg. At the moment
this only works on *nix (Windows has another function, WSARecvMsg,
which has a slightly different API).
Also we have "no" cmsg decode at the moment (just level and type).
OTP-14831
Diffstat (limited to 'erts/emulator/nifs/common/socket_util.h')
-rw-r--r-- | erts/emulator/nifs/common/socket_util.h | 25 |
1 files changed, 25 insertions, 0 deletions
diff --git a/erts/emulator/nifs/common/socket_util.h b/erts/emulator/nifs/common/socket_util.h index 686ce0bac6..af0bf70d8f 100644 --- a/erts/emulator/nifs/common/socket_util.h +++ b/erts/emulator/nifs/common/socket_util.h @@ -29,10 +29,35 @@ #include <erl_nif.h> #include "socket_int.h" +#define VOIDP(P) ((void*)P) +#define CHARP(P) ((char*)P) + #define ESOCK_ABORT(E) esock_abort(E, __func__, __FILE__, __LINE__) #define ESOCK_ASSERT(e) ((void) ((e) ? 1 : (ESOCK_ABORT(#e), 0))) extern +char* esock_encode_msghdr(ErlNifEnv* env, + int read, + struct msghdr* msgHdrP, + ErlNifBinary* ctrlBufP, + ERL_NIF_TERM* eSockAddr); +extern +char* esock_encode_iov(ErlNifEnv* env, + int read, + struct iovec* iov, + size_t len, + ERL_NIF_TERM* eIOV); +extern +char* esock_encode_cmsghdrs(ErlNifEnv* env, + ErlNifBinary* cmsgBinP, + struct msghdr* msgHdrP, + ERL_NIF_TERM* eCMsgHdr); + +extern +char* esock_encode_mshghdr_flags(ErlNifEnv* env, + int msgFlags, + ERL_NIF_TERM* flags); +extern char* esock_decode_sockaddr(ErlNifEnv* env, ERL_NIF_TERM eSockAddr, SocketAddress* sockAddrP, |