28typedef enum xtc_net_family {
36typedef struct xtc_tcp_opts {
47#define XTC_TCP_OPTS_DEFAULT { \
48 .nodelay = 1, .reuseaddr = 1, .reuseport = 0, .keepalive = 0, \
49 .keepidle_s = 0, .keepintvl_s = 0, .keepcnt = 0, .user_timeout_ms = 0 \
74int xtc_net_listen(xtc_net_family_t fam,
const char *host,
int port,
79int xtc_net_dial(xtc_net_family_t fam,
const char *host,
int port,
86int xtc_net_setnonblock(
int fd);
89void xtc_net_close(
int fd);
92int xtc_net_unix_listen(
const char *path,
int *out_fd);
93int xtc_net_unix_dial (
const char *path,
int *out_fd);
98int xtc_net_unix_send_creds(
int fd,
const void *buf,
size_t buflen);
99int xtc_net_unix_recv_creds(
int fd,
void *buf,
size_t buflen,
100 uint32_t *out_uid, uint32_t *out_gid,
108int xtc_net_udp_socket(xtc_net_family_t fam,
const char *host,
109 int port,
int *out_fd);
114int xtc_net_udp_sendto(
int fd,
const void *buf,
size_t len,
115 const char *host,
int port);
120int xtc_net_udp_recvfrom(
int fd,
void *buf,
size_t buflen,
121 char *out_host,
size_t out_host_size,
122 int *out_port,
size_t *out_n);
134int xtc_dns_resolve(
const char *hostname,
int port,
135 xtc_net_family_t fam,
136 char *out_addr,
size_t out_addr_size);
153int xtc_net_send_frame(
int fd,
const void *buf,
size_t len);
154int xtc_net_recv_frame(
int fd,
void **out,
size_t *out_len,
155 size_t max_len, int64_t timeout_ns);