diff options
author | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-06-26 16:08:03 +0000 |
---|---|---|
committer | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-06-26 16:08:03 +0000 |
commit | f1db79e6e5c383cf76f3bf0dd42115d19591a72b (patch) | |
tree | 3f9509008e8a130c45b7e31b1520d66d720493ec /libc-bottom-half/headers/private/wasi/sockets_utils.h | |
parent | Adding upstream version 0.0~git20230821.ec4566b. (diff) | |
download | wasi-libc-upstream.tar.xz wasi-libc-upstream.zip |
Adding upstream version 0.0~git20240411.9e8c542.upstream/0.0_git20240411.9e8c542upstream
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'libc-bottom-half/headers/private/wasi/sockets_utils.h')
-rw-r--r-- | libc-bottom-half/headers/private/wasi/sockets_utils.h | 53 |
1 files changed, 53 insertions, 0 deletions
diff --git a/libc-bottom-half/headers/private/wasi/sockets_utils.h b/libc-bottom-half/headers/private/wasi/sockets_utils.h new file mode 100644 index 0000000..93cf1f4 --- /dev/null +++ b/libc-bottom-half/headers/private/wasi/sockets_utils.h @@ -0,0 +1,53 @@ +#ifndef __wasi_sockets_utils_h +#define __wasi_sockets_utils_h + +#include <netinet/in.h> + +#include <wasi/descriptor_table.h> + +typedef struct { + enum { + OUTPUT_SOCKADDR_NULL, + OUTPUT_SOCKADDR_V4, + OUTPUT_SOCKADDR_V6, + } tag; + union { + struct { + int dummy; + } null; + struct { + struct sockaddr_in *addr; + socklen_t *addrlen; + } v4; + struct { + struct sockaddr_in6 *addr; + socklen_t *addrlen; + } v6; + }; +} output_sockaddr_t; + +network_borrow_network_t __wasi_sockets_utils__borrow_network(); +int __wasi_sockets_utils__map_error(network_error_code_t wasi_error); +bool __wasi_sockets_utils__parse_address( + network_ip_address_family_t expected_family, + const struct sockaddr *address, socklen_t len, + network_ip_socket_address_t *result, int *error); +bool __wasi_sockets_utils__output_addr_validate( + network_ip_address_family_t expected_family, struct sockaddr *addr, + socklen_t *addrlen, output_sockaddr_t *result); +void __wasi_sockets_utils__output_addr_write( + const network_ip_socket_address_t input, output_sockaddr_t *output); +int __wasi_sockets_utils__posix_family(network_ip_address_family_t wasi_family); +network_ip_socket_address_t +__wasi_sockets_utils__any_addr(network_ip_address_family_t family); +int __wasi_sockets_utils__tcp_bind(tcp_socket_t *socket, + network_ip_socket_address_t *address); +int __wasi_sockets_utils__udp_bind(udp_socket_t *socket, + network_ip_socket_address_t *address); +bool __wasi_sockets_utils__stream(udp_socket_t *socket, + network_ip_socket_address_t *remote_address, + udp_socket_streams_t *result, + network_error_code_t *error); +void __wasi_sockets_utils__drop_streams(udp_socket_streams_t streams); + +#endif |