23#include "xtc_export.h"
30typedef enum xtc_net_family {
38typedef struct xtc_tcp_opts {
49#define XTC_TCP_OPTS_DEFAULT { \
50 .nodelay = 1, .reuseaddr = 1, .reuseport = 0, .keepalive = 0, \
51 .keepidle_s = 0, .keepintvl_s = 0, .keepcnt = 0, .user_timeout_ms = 0 \
76XTC_API
int xtc_net_listen(xtc_net_family_t fam,
const char *host,
int port,
81XTC_API
int xtc_net_dial(xtc_net_family_t fam,
const char *host,
int port,
85XTC_API
int xtc_net_apply_tcp_opts(
int fd,
const xtc_tcp_opts_t *opts);
88XTC_API
int xtc_net_setnonblock(
int fd);
91XTC_API
void xtc_net_close(
int fd);
94XTC_API
int xtc_net_unix_listen(
const char *path,
int *out_fd);
95XTC_API
int xtc_net_unix_dial (
const char *path,
int *out_fd);
100XTC_API
int xtc_net_unix_send_creds(
int fd,
const void *buf,
size_t buflen);
101XTC_API
int xtc_net_unix_recv_creds(
int fd,
void *buf,
size_t buflen,
102 uint32_t *out_uid, uint32_t *out_gid,
110XTC_API
int xtc_net_udp_socket(xtc_net_family_t fam,
const char *host,
111 int port,
int *out_fd);
116XTC_API
int xtc_net_udp_sendto(
int fd,
const void *buf,
size_t len,
117 const char *host,
int port);
122XTC_API
int xtc_net_udp_recvfrom(
int fd,
void *buf,
size_t buflen,
123 char *out_host,
size_t out_host_size,
124 int *out_port,
size_t *out_n);
136XTC_API
int xtc_dns_resolve(
const char *hostname,
int port,
137 xtc_net_family_t fam,
138 char *out_addr,
size_t out_addr_size);
155int xtc_net_send_frame(
int fd,
const void *buf,
size_t len);
156int xtc_net_recv_frame(
int fd,
void **out,
size_t *out_len,
157 size_t max_len, int64_t timeout_ns);