24#include "xtc_export.h"
31typedef enum xtc_net_family {
39typedef struct xtc_tcp_opts {
51#define XTC_TCP_OPTS_DEFAULT { \
52 .size = sizeof(xtc_tcp_opts_t), \
53 .nodelay = 1, .reuseaddr = 1, .reuseport = 0, .keepalive = 0, \
54 .keepidle_s = 0, .keepintvl_s = 0, .keepcnt = 0, .user_timeout_ms = 0 \
83XTC_API
int xtc_net_listen(xtc_net_family_t fam,
const char *host,
int port,
88XTC_API
int xtc_net_listen_backlog(xtc_net_family_t fam,
const char *host,
90 int backlog,
int *out_fd);
98XTC_API
int xtc_net_accept(
int listen_fd,
int *out_fd);
99XTC_API
int xtc_net_dial(xtc_net_family_t fam,
const char *host,
int port,
103XTC_API
int xtc_net_apply_tcp_opts(
int fd,
const xtc_tcp_opts_t *opts);
106XTC_API
int xtc_net_setnonblock(
int fd);
109XTC_API
void xtc_net_close(
int fd);
114XTC_API
int xtc_net_unix_listen(
const char *path,
int *out_fd);
115XTC_API
int xtc_net_unix_dial (
const char *path,
int *out_fd);
120XTC_API
int xtc_net_unix_send_creds(
int fd,
const void *buf,
size_t buflen);
121XTC_API
int xtc_net_unix_recv_creds(
int fd,
void *buf,
size_t buflen,
122 uint32_t *out_uid, uint32_t *out_gid,
130XTC_API
int xtc_net_udp_socket(xtc_net_family_t fam,
const char *host,
131 int port,
int *out_fd);
136XTC_API
int xtc_net_udp_sendto(
int fd,
const void *buf,
size_t len,
137 const char *host,
int port);
142XTC_API
int xtc_net_udp_recvfrom(
int fd,
void *buf,
size_t buflen,
143 char *out_host,
size_t out_host_size,
144 int *out_port,
size_t *out_n);
156XTC_API
int xtc_dns_resolve(
const char *hostname,
int port,
157 xtc_net_family_t fam,
158 char *out_addr,
size_t out_addr_size);
180int xtc_net_send_frame(
int fd,
const void *buf,
size_t len);
181int xtc_net_recv_frame(
int fd,
void **out,
size_t *out_len,
182 size_t max_len, int64_t timeout_ns);
200XTC_API
int xtc_net_send_framev(
int fd,
const struct iovec *iov,
int iovcnt);