summaryrefslogtreecommitdiffstats
path: root/libc-bottom-half/headers/private/wasi/sockets_utils.h
diff options
context:
space:
mode:
authorDaniel Baumann <daniel.baumann@progress-linux.org>2024-06-26 16:08:03 +0000
committerDaniel Baumann <daniel.baumann@progress-linux.org>2024-06-26 16:08:03 +0000
commitf1db79e6e5c383cf76f3bf0dd42115d19591a72b (patch)
tree3f9509008e8a130c45b7e31b1520d66d720493ec /libc-bottom-half/headers/private/wasi/sockets_utils.h
parentAdding upstream version 0.0~git20230821.ec4566b. (diff)
downloadwasi-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.h53
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