Slight re-org of C API naming convention

This commit is contained in:
Joseph Henry
2021-05-05 16:19:27 -07:00
parent 85b861da2f
commit 9151f4471c
25 changed files with 24963 additions and 1518 deletions

View File

@@ -85,7 +85,7 @@ int main(int argc, char** argv)
printf("Join %llx from another machine and ping6 me at %s\n", net_id, ipstr); printf("Join %llx from another machine and ping6 me at %s\n", net_id, ipstr);
// Do network stuff! // Do network stuff!
// zts_socket, zts_connect, etc // zts_bsd_socket, zts_bsd_connect, etc
while (1) { while (1) {
zts_util_delay(500); // Idle indefinitely zts_util_delay(500); // Idle indefinitely

View File

@@ -97,7 +97,7 @@ int main(int argc, char** argv)
printf("Join %llx from another machine and ping me at %s\n", net_id, ipstr); printf("Join %llx from another machine and ping me at %s\n", net_id, ipstr);
// Do network stuff! // Do network stuff!
// zts_socket, zts_connect, etc // zts_bsd_socket, zts_bsd_connect, etc
while (1) { while (1) {
zts_util_delay(500); // Idle indefinitely zts_util_delay(500); // Idle indefinitely

View File

@@ -76,23 +76,23 @@ int main(int argc, char** argv)
// Connect to remote host // Connect to remote host
// Can also use traditional: zts_socket(), zts_connect(), etc // Can also use traditional: zts_bsd_socket(), zts_bsd_connect(), etc
printf("Attempting to connect...\n"); printf("Attempting to connect...\n");
while ((fd = zts_simple_tcp_client(remote_addr, remote_port)) < 0) { while ((fd = zts_tcp_client(remote_addr, remote_port)) < 0) {
printf("Re-attempting to connect...\n"); printf("Re-attempting to connect...\n");
} }
// Data I/O // Data I/O
printf("Sending message string to server...\n"); printf("Sending message string to server...\n");
if ((bytes = zts_write(fd, msgStr, strlen(msgStr))) < 0) { if ((bytes = zts_bsd_write(fd, msgStr, strlen(msgStr))) < 0) {
printf("Error (fd=%d, ret=%d, zts_errno=%d). Exiting.\n", fd, bytes, zts_errno); printf("Error (fd=%d, ret=%d, zts_errno=%d). Exiting.\n", fd, bytes, zts_errno);
exit(1); exit(1);
} }
printf("Sent %d bytes: %s\n", bytes, msgStr); printf("Sent %d bytes: %s\n", bytes, msgStr);
printf("Reading message string from server...\n"); printf("Reading message string from server...\n");
if ((bytes = zts_read(fd, recvBuf, sizeof(recvBuf))) < 0) { if ((bytes = zts_bsd_read(fd, recvBuf, sizeof(recvBuf))) < 0) {
printf("Error (fd=%d, ret=%d, zts_errno=%d). Exiting.\n", fd, bytes, zts_errno); printf("Error (fd=%d, ret=%d, zts_errno=%d). Exiting.\n", fd, bytes, zts_errno);
exit(1); exit(1);
} }
@@ -101,6 +101,6 @@ int main(int argc, char** argv)
// Close // Close
printf("Closing sockets\n"); printf("Closing sockets\n");
zts_close(fd); zts_bsd_close(fd);
return zts_node_stop(); return zts_node_stop();
} }

View File

@@ -65,7 +65,7 @@ int main(int argc, char** argv)
// Create socket // Create socket
if ((fd = zts_socket(ZTS_AF_INET, ZTS_SOCK_STREAM, 0)) < 0) { if ((fd = zts_bsd_socket(ZTS_AF_INET, ZTS_SOCK_STREAM, 0)) < 0) {
printf("Error (fd=%d, zts_errno=%d). Exiting.\n", fd, zts_errno); printf("Error (fd=%d, zts_errno=%d). Exiting.\n", fd, zts_errno);
exit(1); exit(1);
} }
@@ -73,8 +73,8 @@ int main(int argc, char** argv)
// Connect // Connect
// Can also use: // Can also use:
// zts_connect(int fd, const struct zts_sockaddr* addr, zts_socklen_t addrlen); // zts_bsd_connect(int fd, const struct zts_sockaddr* addr, zts_socklen_t addrlen);
while (zts_simple_connect(fd, remote_addr, remote_port, 0) != ZTS_ERR_OK) { while (zts_connect(fd, remote_addr, remote_port, 0) != ZTS_ERR_OK) {
printf("Attempting to connect...\n"); printf("Attempting to connect...\n");
} }
@@ -83,14 +83,14 @@ int main(int argc, char** argv)
// Wait random intervals to send a message to the server // Wait random intervals to send a message to the server
// The non-blocking aspect of this example is server-side // The non-blocking aspect of this example is server-side
while (1) { while (1) {
if ((bytes = zts_send(fd, msgStr, strlen(msgStr), 0)) < 0) { if ((bytes = zts_bsd_send(fd, msgStr, strlen(msgStr), 0)) < 0) {
printf("Error (fd=%d, ret=%d, zts_errno=%d). Exiting.\n", fd, bytes, zts_errno); printf("Error (fd=%d, ret=%d, zts_errno=%d). Exiting.\n", fd, bytes, zts_errno);
exit(1); exit(1);
} }
printf("zts_send()=%d\n", bytes); printf("zts_bsd_send()=%d\n", bytes);
zts_util_delay((rand() % 100) * 50); zts_util_delay((rand() % 100) * 50);
} }
zts_close(fd); zts_bsd_close(fd);
return zts_node_stop(); return zts_node_stop();
} }

View File

@@ -69,20 +69,20 @@ int main(int argc, char** argv)
// Sockets // Sockets
printf("Creating socket...\n"); printf("Creating socket...\n");
if ((fd = zts_socket(ZTS_AF_INET, ZTS_SOCK_STREAM, 0)) < 0) { if ((fd = zts_bsd_socket(ZTS_AF_INET, ZTS_SOCK_STREAM, 0)) < 0) {
printf("Error (fd=%d, ret=%d, zts_errno=%d). Exiting.\n", fd, err, zts_errno); printf("Error (fd=%d, ret=%d, zts_errno=%d). Exiting.\n", fd, err, zts_errno);
exit(1); exit(1);
} }
printf("Binding...\n"); printf("Binding...\n");
// Can also use: // Can also use:
// zts_bind(int fd, const struct zts_sockaddr* addr, zts_socklen_t addrlen) // zts_bsd_bind(int fd, const struct zts_sockaddr* addr, zts_socklen_t addrlen)
if ((err = zts_simple_bind(fd, local_addr, local_port) < 0)) { if ((err = zts_bind(fd, local_addr, local_port) < 0)) {
printf("Error (fd=%d, ret=%d, zts_errno=%d). Exiting.\n", fd, err, zts_errno); printf("Error (fd=%d, ret=%d, zts_errno=%d). Exiting.\n", fd, err, zts_errno);
exit(1); exit(1);
} }
printf("Listening...\n"); printf("Listening...\n");
int backlog = 100; int backlog = 100;
if ((err = zts_listen(fd, backlog)) < 0) { if ((err = zts_bsd_listen(fd, backlog)) < 0) {
printf("Error (fd=%d, ret=%d, zts_errno=%d). Exiting.\n", fd, err, zts_errno); printf("Error (fd=%d, ret=%d, zts_errno=%d). Exiting.\n", fd, err, zts_errno);
exit(1); exit(1);
} }
@@ -93,12 +93,12 @@ int main(int argc, char** argv)
while (1) { while (1) {
// Accept // Accept
// Can also use // Can also use
// zts_accept(int fd, struct zts_sockaddr* addr, zts_socklen_t* addrlen) // zts_bsd_accept(int fd, struct zts_sockaddr* addr, zts_socklen_t* addrlen)
char ipstr[ZTS_INET6_ADDRSTRLEN] = { 0 }; char ipstr[ZTS_INET6_ADDRSTRLEN] = { 0 };
unsigned int port = 0; unsigned int port = 0;
printf("Accepting on listening socket...\n"); printf("Accepting on listening socket...\n");
if ((accfd = zts_simple_accept(fd, ipstr, ZTS_INET6_ADDRSTRLEN, &port)) < 0) { if ((accfd = zts_accept(fd, ipstr, ZTS_INET6_ADDRSTRLEN, &port)) < 0) {
printf("Error (fd=%d, ret=%d, zts_errno=%d). Exiting.\n", fd, err, zts_errno); printf("Error (fd=%d, ret=%d, zts_errno=%d). Exiting.\n", fd, err, zts_errno);
} }
printf("Accepted connection from %s:%d\n", ipstr, port); printf("Accepted connection from %s:%d\n", ipstr, port);
@@ -108,16 +108,16 @@ int main(int argc, char** argv)
// Technique 1: ZTS_O_NONBLOCK // Technique 1: ZTS_O_NONBLOCK
if (0) { if (0) {
zts_fcntl(fd, ZTS_F_SETFL, ZTS_O_NONBLOCK); zts_bsd_fcntl(fd, ZTS_F_SETFL, ZTS_O_NONBLOCK);
zts_fcntl(accfd, ZTS_F_SETFL, ZTS_O_NONBLOCK); zts_bsd_fcntl(accfd, ZTS_F_SETFL, ZTS_O_NONBLOCK);
while (1) { while (1) {
bytes = zts_recv(accfd, recvBuf, sizeof(recvBuf), 0); bytes = zts_bsd_recv(accfd, recvBuf, sizeof(recvBuf), 0);
printf("zts_recv(%d, ...)=%d\n", accfd, bytes); printf("zts_bsd_recv(%d, ...)=%d\n", accfd, bytes);
zts_util_delay(100); zts_util_delay(100);
} }
} }
// Technique 2: zts_select // Technique 2: zts_bsd_select
if (0) { if (0) {
struct zts_timeval tv; struct zts_timeval tv;
tv.tv_sec = 0; tv.tv_sec = 0;
@@ -128,21 +128,21 @@ int main(int argc, char** argv)
ZTS_FD_SET(accfd, &active_fd_set); ZTS_FD_SET(accfd, &active_fd_set);
while (1) { while (1) {
read_fd_set = active_fd_set; read_fd_set = active_fd_set;
if ((result = zts_select(ZTS_FD_SETSIZE, &read_fd_set, NULL, NULL, &tv) < 0)) { if ((result = zts_bsd_select(ZTS_FD_SETSIZE, &read_fd_set, NULL, NULL, &tv) < 0)) {
// perror ("select"); // perror ("select");
exit(1); exit(1);
} }
for (int i = 0; i < ZTS_FD_SETSIZE; i++) { for (int i = 0; i < ZTS_FD_SETSIZE; i++) {
if (ZTS_FD_ISSET(i, &read_fd_set)) { if (ZTS_FD_ISSET(i, &read_fd_set)) {
bytes = zts_recv(accfd, recvBuf, sizeof(recvBuf), 0); bytes = zts_bsd_recv(accfd, recvBuf, sizeof(recvBuf), 0);
printf("zts_recv(%d, ...)=%d\n", i, bytes); printf("zts_bsd_recv(%d, ...)=%d\n", i, bytes);
} }
// ZTS_FD_CLR(i, &active_fd_set); // ZTS_FD_CLR(i, &active_fd_set);
} }
} }
} }
// Technique 3: zts_poll // Technique 3: zts_bsd_poll
if (1) { if (1) {
int numfds = 0; int numfds = 0;
struct zts_pollfd poll_set[16]; struct zts_pollfd poll_set[16];
@@ -153,17 +153,17 @@ int main(int argc, char** argv)
int result = 0; int result = 0;
int timeout_ms = 50; int timeout_ms = 50;
while (1) { while (1) {
result = zts_poll(poll_set, numfds, timeout_ms); result = zts_bsd_poll(poll_set, numfds, timeout_ms);
printf("zts_poll()=%d\n", result); printf("zts_bsd_poll()=%d\n", result);
for (int i = 0; i < numfds; i++) { for (int i = 0; i < numfds; i++) {
if (poll_set[i].revents & ZTS_POLLIN) { if (poll_set[i].revents & ZTS_POLLIN) {
bytes = zts_recv(poll_set[i].fd, recvBuf, sizeof(recvBuf), 0); bytes = zts_bsd_recv(poll_set[i].fd, recvBuf, sizeof(recvBuf), 0);
printf("zts_recv(%d, ...)=%d\n", i, bytes); printf("zts_bsd_recv(%d, ...)=%d\n", i, bytes);
} }
} }
} }
} }
err = zts_close(fd); err = zts_bsd_close(fd);
return zts_node_stop(); return zts_node_stop();
} }

View File

@@ -97,7 +97,7 @@ int main(int argc, char** argv)
} }
// Do network stuff! // Do network stuff!
// zts_socket, zts_connect, etc // zts_bsd_socket, zts_bsd_connect, etc
printf("Node %llx is now online. Idling.\n", zts_node_get_id()); printf("Node %llx is now online. Idling.\n", zts_node_get_id());
while (1) { while (1) {

View File

@@ -56,7 +56,7 @@ int main(int argc, char** argv)
printf("Join %llx from another machine and ping me at %s\n", net_id, ipstr); printf("Join %llx from another machine and ping me at %s\n", net_id, ipstr);
// Do network stuff! // Do network stuff!
// zts_socket, zts_connect, etc // zts_bsd_socket, zts_bsd_connect, etc
while (1) { while (1) {
zts_util_delay(500); // Idle indefinitely zts_util_delay(500); // Idle indefinitely

View File

@@ -72,12 +72,12 @@ int main(int argc, char** argv)
// Accept incoming connection // Accept incoming connection
// Can also use traditional: zts_socket(), zts_bind(), zts_listen(), zts_accept(), etc. // Can also use traditional: zts_bsd_socket(), zts_bsd_bind(), zts_bsd_listen(), zts_bsd_accept(), etc.
char remote_addr[ZTS_INET6_ADDRSTRLEN] = { 0 }; char remote_addr[ZTS_INET6_ADDRSTRLEN] = { 0 };
int remote_port = 0; int remote_port = 0;
int len = ZTS_INET6_ADDRSTRLEN; int len = ZTS_INET6_ADDRSTRLEN;
if ((accfd = zts_simple_tcp_server(local_addr, local_port, remote_addr, len, &remote_port)) < 0) { if ((accfd = zts_tcp_server(local_addr, local_port, remote_addr, len, &remote_port)) < 0) {
printf("Error (fd=%d, zts_errno=%d). Exiting.\n", accfd, zts_errno); printf("Error (fd=%d, zts_errno=%d). Exiting.\n", accfd, zts_errno);
exit(1); exit(1);
} }
@@ -89,13 +89,13 @@ int main(int argc, char** argv)
char recvBuf[128] = { 0 }; char recvBuf[128] = { 0 };
printf("Reading message string from client...\n"); printf("Reading message string from client...\n");
if ((bytes = zts_read(accfd, recvBuf, sizeof(recvBuf))) < 0) { if ((bytes = zts_bsd_read(accfd, recvBuf, sizeof(recvBuf))) < 0) {
printf("Error (fd=%d, ret=%d, zts_errno=%d). Exiting.\n", fd, bytes, zts_errno); printf("Error (fd=%d, ret=%d, zts_errno=%d). Exiting.\n", fd, bytes, zts_errno);
exit(1); exit(1);
} }
printf("Read %d bytes: %s\n", bytes, recvBuf); printf("Read %d bytes: %s\n", bytes, recvBuf);
printf("Sending message string to client...\n"); printf("Sending message string to client...\n");
if ((bytes = zts_write(accfd, recvBuf, bytes)) < 0) { if ((bytes = zts_bsd_write(accfd, recvBuf, bytes)) < 0) {
printf("Error (fd=%d, ret=%d, zts_errno=%d). Exiting.\n", fd, bytes, zts_errno); printf("Error (fd=%d, ret=%d, zts_errno=%d). Exiting.\n", fd, bytes, zts_errno);
exit(1); exit(1);
} }
@@ -104,7 +104,7 @@ int main(int argc, char** argv)
// Close // Close
printf("Closing sockets\n"); printf("Closing sockets\n");
err = zts_close(accfd); err = zts_bsd_close(accfd);
err = zts_close(fd); err = zts_bsd_close(fd);
return zts_node_stop(); return zts_node_stop();
} }

View File

@@ -57,7 +57,7 @@ int main(int argc, char** argv)
printf("Join %llx from another machine and ping me at %s\n", net_id, ipstr); printf("Join %llx from another machine and ping me at %s\n", net_id, ipstr);
// Do network stuff! // Do network stuff!
// zts_socket, zts_connect, etc // zts_bsd_socket, zts_bsd_connect, etc
// Show protocol statistics // Show protocol statistics

View File

@@ -1834,7 +1834,7 @@ ZTS_API int ZTCALL zts_stats_get_all(zts_stats_counter_t* dst);
* @return Numbered file descriptor on success, `ZTS_ERR_SERVICE` if the node * @return Numbered file descriptor on success, `ZTS_ERR_SERVICE` if the node
* experiences a problem, `ZTS_ERR_ARG` if invalid argument. Sets `zts_errno` * experiences a problem, `ZTS_ERR_ARG` if invalid argument. Sets `zts_errno`
*/ */
ZTS_API int ZTCALL zts_socket(int family, int type, int protocol); ZTS_API int ZTCALL zts_bsd_socket(int family, int type, int protocol);
/** /**
* @brief Connect a socket to a remote host * @brief Connect a socket to a remote host
@@ -1845,7 +1845,7 @@ ZTS_API int ZTCALL zts_socket(int family, int type, int protocol);
* @return `ZTS_ERR_OK` if successful, `ZTS_ERR_SERVICE` if the node * @return `ZTS_ERR_OK` if successful, `ZTS_ERR_SERVICE` if the node
* experiences a problem, `ZTS_ERR_ARG` if invalid argument. Sets `zts_errno` * experiences a problem, `ZTS_ERR_ARG` if invalid argument. Sets `zts_errno`
*/ */
ZTS_API int ZTCALL zts_connect(int fd, const struct zts_sockaddr* addr, zts_socklen_t addrlen); ZTS_API int ZTCALL zts_bsd_connect(int fd, const struct zts_sockaddr* addr, zts_socklen_t addrlen);
/** /**
* @brief Bind a socket to a local address * @brief Bind a socket to a local address
@@ -1856,7 +1856,7 @@ ZTS_API int ZTCALL zts_connect(int fd, const struct zts_sockaddr* addr, zts_sock
* @return `ZTS_ERR_OK` if successful, `ZTS_ERR_SERVICE` if the node * @return `ZTS_ERR_OK` if successful, `ZTS_ERR_SERVICE` if the node
* experiences a problem, `ZTS_ERR_ARG` if invalid argument. Sets `zts_errno` * experiences a problem, `ZTS_ERR_ARG` if invalid argument. Sets `zts_errno`
*/ */
ZTS_API int ZTCALL zts_bind(int fd, const struct zts_sockaddr* addr, zts_socklen_t addrlen); ZTS_API int ZTCALL zts_bsd_bind(int fd, const struct zts_sockaddr* addr, zts_socklen_t addrlen);
/** /**
* @brief Listen for incoming connections on socket * @brief Listen for incoming connections on socket
@@ -1866,7 +1866,7 @@ ZTS_API int ZTCALL zts_bind(int fd, const struct zts_sockaddr* addr, zts_socklen
* @return `ZTS_ERR_OK` if successful, `ZTS_ERR_SERVICE` if the node * @return `ZTS_ERR_OK` if successful, `ZTS_ERR_SERVICE` if the node
* experiences a problem, `ZTS_ERR_ARG` if invalid argument. Sets `zts_errno` * experiences a problem, `ZTS_ERR_ARG` if invalid argument. Sets `zts_errno`
*/ */
ZTS_API int ZTCALL zts_listen(int fd, int backlog); ZTS_API int ZTCALL zts_bsd_listen(int fd, int backlog);
/** /**
* @brief Accept an incoming connection * @brief Accept an incoming connection
@@ -1877,7 +1877,7 @@ ZTS_API int ZTCALL zts_listen(int fd, int backlog);
* @return New file descriptor if successful, `ZTS_ERR_SERVICE` if the node * @return New file descriptor if successful, `ZTS_ERR_SERVICE` if the node
* experiences a problem, `ZTS_ERR_ARG` if invalid argument. Sets `zts_errno` * experiences a problem, `ZTS_ERR_ARG` if invalid argument. Sets `zts_errno`
*/ */
ZTS_API int ZTCALL zts_accept(int fd, struct zts_sockaddr* addr, zts_socklen_t* addrlen); ZTS_API int ZTCALL zts_bsd_accept(int fd, struct zts_sockaddr* addr, zts_socklen_t* addrlen);
// Socket level option number // Socket level option number
#define ZTS_SOL_SOCKET 0x0fff #define ZTS_SOL_SOCKET 0x0fff
@@ -2017,7 +2017,7 @@ typedef struct zts_ipv6_mreq {
* @return `ZTS_ERR_OK` if successful, `ZTS_ERR_SERVICE` if the node * @return `ZTS_ERR_OK` if successful, `ZTS_ERR_SERVICE` if the node
* experiences a problem, `ZTS_ERR_ARG` if invalid argument. Sets `zts_errno` * experiences a problem, `ZTS_ERR_ARG` if invalid argument. Sets `zts_errno`
*/ */
ZTS_API int ZTCALL zts_setsockopt(int fd, int level, int optname, const void* optval, zts_socklen_t optlen); ZTS_API int ZTCALL zts_bsd_setsockopt(int fd, int level, int optname, const void* optval, zts_socklen_t optlen);
/** /**
* @brief Get socket options. * @brief Get socket options.
@@ -2030,7 +2030,7 @@ ZTS_API int ZTCALL zts_setsockopt(int fd, int level, int optname, const void* op
* @return `ZTS_ERR_OK` if successful, `ZTS_ERR_SERVICE` if the node * @return `ZTS_ERR_OK` if successful, `ZTS_ERR_SERVICE` if the node
* experiences a problem, `ZTS_ERR_ARG` if invalid argument. Sets `zts_errno` * experiences a problem, `ZTS_ERR_ARG` if invalid argument. Sets `zts_errno`
*/ */
ZTS_API int ZTCALL zts_getsockopt(int fd, int level, int optname, void* optval, zts_socklen_t* optlen); ZTS_API int ZTCALL zts_bsd_getsockopt(int fd, int level, int optname, void* optval, zts_socklen_t* optlen);
/** /**
* @brief Get the name (address) of the local end of the socket * @brief Get the name (address) of the local end of the socket
@@ -2041,7 +2041,7 @@ ZTS_API int ZTCALL zts_getsockopt(int fd, int level, int optname, void* optval,
* @return `ZTS_ERR_OK` if successful, `ZTS_ERR_SERVICE` if the node * @return `ZTS_ERR_OK` if successful, `ZTS_ERR_SERVICE` if the node
* experiences a problem, `ZTS_ERR_ARG` if invalid argument. Sets `zts_errno` * experiences a problem, `ZTS_ERR_ARG` if invalid argument. Sets `zts_errno`
*/ */
ZTS_API int ZTCALL zts_getsockname(int fd, struct zts_sockaddr* addr, zts_socklen_t* addrlen); ZTS_API int ZTCALL zts_bsd_getsockname(int fd, struct zts_sockaddr* addr, zts_socklen_t* addrlen);
/** /**
* @brief Get the name (address) of the remote end of the socket * @brief Get the name (address) of the remote end of the socket
@@ -2052,7 +2052,7 @@ ZTS_API int ZTCALL zts_getsockname(int fd, struct zts_sockaddr* addr, zts_sockle
* @return `ZTS_ERR_OK` if successful, `ZTS_ERR_SERVICE` if the node * @return `ZTS_ERR_OK` if successful, `ZTS_ERR_SERVICE` if the node
* experiences a problem, `ZTS_ERR_ARG` if invalid argument. Sets `zts_errno` * experiences a problem, `ZTS_ERR_ARG` if invalid argument. Sets `zts_errno`
*/ */
ZTS_API int ZTCALL zts_getpeername(int fd, struct zts_sockaddr* addr, zts_socklen_t* addrlen); ZTS_API int ZTCALL zts_bsd_getpeername(int fd, struct zts_sockaddr* addr, zts_socklen_t* addrlen);
/** /**
* @brief Close socket. * @brief Close socket.
@@ -2061,7 +2061,7 @@ ZTS_API int ZTCALL zts_getpeername(int fd, struct zts_sockaddr* addr, zts_sockle
* @return `ZTS_ERR_OK` if successful, `ZTS_ERR_SERVICE` if the node * @return `ZTS_ERR_OK` if successful, `ZTS_ERR_SERVICE` if the node
* experiences a problem, `ZTS_ERR_ARG` if invalid argument. Sets `zts_errno` * experiences a problem, `ZTS_ERR_ARG` if invalid argument. Sets `zts_errno`
*/ */
ZTS_API int ZTCALL zts_close(int fd); ZTS_API int ZTCALL zts_bsd_close(int fd);
/* FD_SET used for lwip_select */ /* FD_SET used for lwip_select */
@@ -2117,7 +2117,7 @@ typedef struct zts_timeval {
* `ZTS_ERR_SERVICE` on failure. Sets `zts_errno` * `ZTS_ERR_SERVICE` on failure. Sets `zts_errno`
*/ */
ZTS_API int ZTCALL ZTS_API int ZTCALL
zts_select(int nfds, zts_fd_set* readfds, zts_fd_set* writefds, zts_fd_set* exceptfds, struct zts_timeval* timeout); zts_bsd_select(int nfds, zts_fd_set* readfds, zts_fd_set* writefds, zts_fd_set* exceptfds, struct zts_timeval* timeout);
// fnctl() commands // fnctl() commands
#define ZTS_F_GETFL 0x0003 #define ZTS_F_GETFL 0x0003
@@ -2138,7 +2138,7 @@ zts_select(int nfds, zts_fd_set* readfds, zts_fd_set* writefds, zts_fd_set* exce
* @param flags Flags * @param flags Flags
* @return * @return
*/ */
ZTS_API int ZTCALL zts_fcntl(int fd, int cmd, int flags); ZTS_API int ZTCALL zts_bsd_fcntl(int fd, int cmd, int flags);
#define ZTS_POLLIN 0x001 #define ZTS_POLLIN 0x001
#define ZTS_POLLOUT 0x002 #define ZTS_POLLOUT 0x002
@@ -2170,7 +2170,7 @@ struct zts_pollfd {
* the node experiences a problem, `ZTS_ERR_ARG` if invalid argument. Sets * the node experiences a problem, `ZTS_ERR_ARG` if invalid argument. Sets
* `zts_errno` * `zts_errno`
*/ */
ZTS_API int ZTCALL zts_poll(struct zts_pollfd* fds, zts_nfds_t nfds, int timeout); ZTS_API int ZTCALL zts_bsd_poll(struct zts_pollfd* fds, zts_nfds_t nfds, int timeout);
/** /**
* @brief Control a device * @brief Control a device
@@ -2181,7 +2181,7 @@ ZTS_API int ZTCALL zts_poll(struct zts_pollfd* fds, zts_nfds_t nfds, int timeout
* @return `ZTS_ERR_OK` if successful, `ZTS_ERR_SERVICE` if the node * @return `ZTS_ERR_OK` if successful, `ZTS_ERR_SERVICE` if the node
* experiences a problem, `ZTS_ERR_ARG` if invalid argument. Sets `zts_errno` * experiences a problem, `ZTS_ERR_ARG` if invalid argument. Sets `zts_errno`
*/ */
ZTS_API int ZTCALL zts_ioctl(int fd, unsigned long request, void* argp); ZTS_API int ZTCALL zts_bsd_ioctl(int fd, unsigned long request, void* argp);
/** /**
* @brief Send data to remote host * @brief Send data to remote host
@@ -2193,7 +2193,7 @@ ZTS_API int ZTCALL zts_ioctl(int fd, unsigned long request, void* argp);
* @return Number of bytes sent if successful, `ZTS_ERR_SERVICE` if the node * @return Number of bytes sent if successful, `ZTS_ERR_SERVICE` if the node
* experiences a problem, `ZTS_ERR_ARG` if invalid argument. Sets `zts_errno` * experiences a problem, `ZTS_ERR_ARG` if invalid argument. Sets `zts_errno`
*/ */
ZTS_API ssize_t ZTCALL zts_send(int fd, const void* buf, size_t len, int flags); ZTS_API ssize_t ZTCALL zts_bsd_send(int fd, const void* buf, size_t len, int flags);
/** /**
* @brief Send data to remote host * @brief Send data to remote host
@@ -2208,7 +2208,7 @@ ZTS_API ssize_t ZTCALL zts_send(int fd, const void* buf, size_t len, int flags);
* experiences a problem, `ZTS_ERR_ARG` if invalid argument. Sets `zts_errno` * experiences a problem, `ZTS_ERR_ARG` if invalid argument. Sets `zts_errno`
*/ */
ZTS_API ssize_t ZTCALL ZTS_API ssize_t ZTCALL
zts_sendto(int fd, const void* buf, size_t len, int flags, const struct zts_sockaddr* addr, zts_socklen_t addrlen); zts_bsd_sendto(int fd, const void* buf, size_t len, int flags, const struct zts_sockaddr* addr, zts_socklen_t addrlen);
struct zts_iovec { struct zts_iovec {
void* iov_base; void* iov_base;
@@ -2239,7 +2239,7 @@ struct zts_msghdr {
* @return Number of bytes sent if successful, `ZTS_ERR_SERVICE` if the node * @return Number of bytes sent if successful, `ZTS_ERR_SERVICE` if the node
* experiences a problem, `ZTS_ERR_ARG` if invalid argument. Sets `zts_errno` * experiences a problem, `ZTS_ERR_ARG` if invalid argument. Sets `zts_errno`
*/ */
ZTS_API ssize_t ZTCALL zts_sendmsg(int fd, const struct zts_msghdr* msg, int flags); ZTS_API ssize_t ZTCALL zts_bsd_sendmsg(int fd, const struct zts_msghdr* msg, int flags);
/** /**
* @brief Receive data from remote host * @brief Receive data from remote host
@@ -2251,7 +2251,7 @@ ZTS_API ssize_t ZTCALL zts_sendmsg(int fd, const struct zts_msghdr* msg, int fla
* @return Number of bytes received if successful, `ZTS_ERR_SERVICE` if the node * @return Number of bytes received if successful, `ZTS_ERR_SERVICE` if the node
* experiences a problem, `ZTS_ERR_ARG` if invalid argument. Sets `zts_errno` * experiences a problem, `ZTS_ERR_ARG` if invalid argument. Sets `zts_errno`
*/ */
ZTS_API ssize_t ZTCALL zts_recv(int fd, void* buf, size_t len, int flags); ZTS_API ssize_t ZTCALL zts_bsd_recv(int fd, void* buf, size_t len, int flags);
/** /**
* @brief Receive data from remote host * @brief Receive data from remote host
@@ -2266,7 +2266,7 @@ ZTS_API ssize_t ZTCALL zts_recv(int fd, void* buf, size_t len, int flags);
* experiences a problem, `ZTS_ERR_ARG` if invalid argument. Sets `zts_errno` * experiences a problem, `ZTS_ERR_ARG` if invalid argument. Sets `zts_errno`
*/ */
ZTS_API ssize_t ZTCALL ZTS_API ssize_t ZTCALL
zts_recvfrom(int fd, void* buf, size_t len, int flags, struct zts_sockaddr* addr, zts_socklen_t* addrlen); zts_bsd_recvfrom(int fd, void* buf, size_t len, int flags, struct zts_sockaddr* addr, zts_socklen_t* addrlen);
/** /**
* @brief Receive a message from remote host * @brief Receive a message from remote host
@@ -2277,7 +2277,7 @@ zts_recvfrom(int fd, void* buf, size_t len, int flags, struct zts_sockaddr* addr
* @return Number of bytes received if successful, `ZTS_ERR_SERVICE` if the node * @return Number of bytes received if successful, `ZTS_ERR_SERVICE` if the node
* experiences a problem, `ZTS_ERR_ARG` if invalid argument. Sets `zts_errno` * experiences a problem, `ZTS_ERR_ARG` if invalid argument. Sets `zts_errno`
*/ */
ZTS_API ssize_t ZTCALL zts_recvmsg(int fd, struct zts_msghdr* msg, int flags); ZTS_API ssize_t ZTCALL zts_bsd_recvmsg(int fd, struct zts_msghdr* msg, int flags);
/** /**
* @brief Read data from socket onto buffer * @brief Read data from socket onto buffer
@@ -2288,7 +2288,7 @@ ZTS_API ssize_t ZTCALL zts_recvmsg(int fd, struct zts_msghdr* msg, int flags);
* @return Number of bytes read if successful, `ZTS_ERR_SERVICE` if the node * @return Number of bytes read if successful, `ZTS_ERR_SERVICE` if the node
* experiences a problem, `ZTS_ERR_ARG` if invalid argument. Sets `zts_errno` * experiences a problem, `ZTS_ERR_ARG` if invalid argument. Sets `zts_errno`
*/ */
ZTS_API ssize_t ZTCALL zts_read(int fd, void* buf, size_t len); ZTS_API ssize_t ZTCALL zts_bsd_read(int fd, void* buf, size_t len);
/** /**
* @brief Read data from socket into multiple buffers * @brief Read data from socket into multiple buffers
@@ -2299,7 +2299,7 @@ ZTS_API ssize_t ZTCALL zts_read(int fd, void* buf, size_t len);
* @return Number of bytes read if successful, `ZTS_ERR_SERVICE` if the node * @return Number of bytes read if successful, `ZTS_ERR_SERVICE` if the node
* experiences a problem, `ZTS_ERR_ARG` if invalid argument. Sets `zts_errno` * experiences a problem, `ZTS_ERR_ARG` if invalid argument. Sets `zts_errno`
*/ */
ZTS_API ssize_t ZTCALL zts_readv(int fd, const struct zts_iovec* iov, int iovcnt); ZTS_API ssize_t ZTCALL zts_bsd_readv(int fd, const struct zts_iovec* iov, int iovcnt);
/** /**
* @brief Write data from buffer to socket * @brief Write data from buffer to socket
@@ -2310,7 +2310,7 @@ ZTS_API ssize_t ZTCALL zts_readv(int fd, const struct zts_iovec* iov, int iovcnt
* @return Number of bytes written if successful, `ZTS_ERR_SERVICE` if the node * @return Number of bytes written if successful, `ZTS_ERR_SERVICE` if the node
* experiences a problem, `ZTS_ERR_ARG` if invalid argument. Sets `zts_errno` * experiences a problem, `ZTS_ERR_ARG` if invalid argument. Sets `zts_errno`
*/ */
ZTS_API ssize_t ZTCALL zts_write(int fd, const void* buf, size_t len); ZTS_API ssize_t ZTCALL zts_bsd_write(int fd, const void* buf, size_t len);
/** /**
* @brief Write data from multiple buffers to socket. * @brief Write data from multiple buffers to socket.
@@ -2321,7 +2321,7 @@ ZTS_API ssize_t ZTCALL zts_write(int fd, const void* buf, size_t len);
* @return Number of bytes written if successful, `ZTS_ERR_SERVICE` if the node * @return Number of bytes written if successful, `ZTS_ERR_SERVICE` if the node
* experiences a problem, `ZTS_ERR_ARG` if invalid argument. Sets `zts_errno` * experiences a problem, `ZTS_ERR_ARG` if invalid argument. Sets `zts_errno`
*/ */
ZTS_API ssize_t ZTCALL zts_writev(int fd, const struct zts_iovec* iov, int iovcnt); ZTS_API ssize_t ZTCALL zts_bsd_writev(int fd, const struct zts_iovec* iov, int iovcnt);
#define ZTS_SHUT_RD 0x0 #define ZTS_SHUT_RD 0x0
#define ZTS_SHUT_WR 0x1 #define ZTS_SHUT_WR 0x1
@@ -2336,20 +2336,31 @@ ZTS_API ssize_t ZTCALL zts_writev(int fd, const struct zts_iovec* iov, int iovcn
* @return `ZTS_ERR_OK` if successful, `ZTS_ERR_SERVICE` if the node * @return `ZTS_ERR_OK` if successful, `ZTS_ERR_SERVICE` if the node
* experiences a problem, `ZTS_ERR_ARG` if invalid argument. Sets `zts_errno` * experiences a problem, `ZTS_ERR_ARG` if invalid argument. Sets `zts_errno`
*/ */
ZTS_API int ZTCALL zts_shutdown(int fd, int how); ZTS_API int ZTCALL zts_bsd_shutdown(int fd, int how);
//----------------------------------------------------------------------------// //----------------------------------------------------------------------------//
// Convenience functions // // Simplified socket API //
//----------------------------------------------------------------------------// //----------------------------------------------------------------------------//
/** /**
* Helper functions that simplify API wrapper generation and usage in other * A subset (and) extension of the traditional BSD-style socket API that simplifies
* non-C-like languages. Use simple integer types instead of bit flags, * API wrapper generation and usage in other non-C-like languages. Uses simple
* limit the number of operations each function performs, prevent the user * integer types instead of bit flags, limit the number of operations each function
* from needing to manipulate the contents of structures in a non-native * performs, prevent the user from needing to manipulate the contents of structures
* language. * in a non-native language.
*/ */
/**
* @brief Create a socket
*
* @param family `ZTS_AF_INET` or `ZTS_AF_INET6`
* @param type `ZTS_SOCK_STREAM` or `ZTS_SOCK_DGRAM`
* @param protocol Protocols supported on this socket
* @return Numbered file descriptor on success, `ZTS_ERR_SERVICE` if the node
* experiences a problem, `ZTS_ERR_ARG` if invalid argument. Sets `zts_errno`
*/
ZTS_API int ZTCALL zts_socket(int family, int type, int protocol);
/** /**
* @brief Connect a socket to a remote host * @brief Connect a socket to a remote host
* *
@@ -2357,9 +2368,9 @@ ZTS_API int ZTCALL zts_shutdown(int fd, int how);
* links. This means that links between peers do not exist until peers try to * links. This means that links between peers do not exist until peers try to
* talk to each other. This can be a problem during connection procedures since * talk to each other. This can be a problem during connection procedures since
* some of the initial packets are lost. To alleviate the need to try * some of the initial packets are lost. To alleviate the need to try
* `zts_connect` many times, this function will keep re-trying for you, even if * `zts_bsd_connect` many times, this function will keep re-trying for you, even if
* no known routes exist. However, if the socket is set to `non-blocking` mode * no known routes exist. However, if the socket is set to `non-blocking` mode
* it will behave identically to `zts_connect` and return immediately upon * it will behave identically to `zts_bsd_connect` and return immediately upon
* failure. * failure.
* *
* @param fd Socket file descriptor * @param fd Socket file descriptor
@@ -2373,7 +2384,7 @@ ZTS_API int ZTCALL zts_shutdown(int fd, int how);
* out with no connection made, `ZTS_ERR_SERVICE` if the node experiences a * out with no connection made, `ZTS_ERR_SERVICE` if the node experiences a
* problem, `ZTS_ERR_ARG` if invalid argument. Sets `zts_errno` * problem, `ZTS_ERR_ARG` if invalid argument. Sets `zts_errno`
*/ */
ZTS_API int ZTCALL zts_simple_connect(int fd, const char* ipstr, unsigned short port, int timeout_ms); ZTS_API int ZTCALL zts_connect(int fd, const char* ipstr, unsigned short port, int timeout_ms);
/** /**
* @brief Bind a socket to a local address * @brief Bind a socket to a local address
@@ -2384,7 +2395,17 @@ ZTS_API int ZTCALL zts_simple_connect(int fd, const char* ipstr, unsigned short
* @return `ZTS_ERR_OK` if successful, `ZTS_ERR_SERVICE` if the node * @return `ZTS_ERR_OK` if successful, `ZTS_ERR_SERVICE` if the node
* experiences a problem, `ZTS_ERR_ARG` if invalid argument. Sets `zts_errno` * experiences a problem, `ZTS_ERR_ARG` if invalid argument. Sets `zts_errno`
*/ */
ZTS_API int ZTCALL zts_simple_bind(int fd, const char* ipstr, unsigned short port); ZTS_API int ZTCALL zts_bind(int fd, const char* ipstr, unsigned short port);
/**
* @brief Listen for incoming connections on socket
*
* @param fd Socket file descriptor
* @param backlog Number of backlogged connections allowed
* @return `ZTS_ERR_OK` if successful, `ZTS_ERR_SERVICE` if the node
* experiences a problem, `ZTS_ERR_ARG` if invalid argument. Sets `zts_errno`
*/
ZTS_API int ZTCALL zts_listen(int fd, int backlog);
/** /**
* @brief Accept an incoming connection * @brief Accept an incoming connection
@@ -2397,7 +2418,89 @@ ZTS_API int ZTCALL zts_simple_bind(int fd, const char* ipstr, unsigned short por
* @return New file descriptor if successful, `ZTS_ERR_SERVICE` if the node * @return New file descriptor if successful, `ZTS_ERR_SERVICE` if the node
* experiences a problem, `ZTS_ERR_ARG` if invalid argument. Sets `zts_errno` * experiences a problem, `ZTS_ERR_ARG` if invalid argument. Sets `zts_errno`
*/ */
ZTS_API int ZTCALL zts_simple_accept(int fd, char* remote_addr, int len, unsigned short* port); ZTS_API int ZTCALL zts_accept(int fd, char* remote_addr, int len, unsigned short* port);
/**
* @brief Send data to remote host
*
* @param fd Socket file descriptor
* @param buf Pointer to data buffer
* @param len Length of data to write
* @param flags (e.g. `ZTS_MSG_DONTWAIT`, `ZTS_MSG_MORE`)
* @return Number of bytes sent if successful, `ZTS_ERR_SERVICE` if the node
* experiences a problem, `ZTS_ERR_ARG` if invalid argument. Sets `zts_errno`
*/
ZTS_API ssize_t ZTCALL zts_send(int fd, const void* buf, size_t len, int flags);
/**
* @brief Receive data from remote host
*
* @param fd Socket file descriptor
* @param buf Pointer to data buffer
* @param len Length of data buffer
* @param flags Specifies the type of message receipt
* @return Number of bytes received if successful, `ZTS_ERR_SERVICE` if the node
* experiences a problem, `ZTS_ERR_ARG` if invalid argument. Sets `zts_errno`
*/
ZTS_API ssize_t ZTCALL zts_recv(int fd, void* buf, size_t len, int flags);
/**
* @brief Read data from socket onto buffer
*
* @param fd Socket file descriptor
* @param buf Pointer to data buffer
* @param len Length of data buffer to receive data
* @return Number of bytes read if successful, `ZTS_ERR_SERVICE` if the node
* experiences a problem, `ZTS_ERR_ARG` if invalid argument. Sets `zts_errno`
*/
ZTS_API ssize_t ZTCALL zts_read(int fd, void* buf, size_t len);
/**
* @brief Write data from buffer to socket
*
* @param fd Socket file descriptor
* @param buf Pointer to data buffer
* @param len Length of buffer to write
* @return Number of bytes written if successful, `ZTS_ERR_SERVICE` if the node
* experiences a problem, `ZTS_ERR_ARG` if invalid argument. Sets `zts_errno`
*/
ZTS_API ssize_t ZTCALL zts_write(int fd, const void* buf, size_t len);
/**
* @brief Shut down `read` aspect of a socket
*
* @param fd Socket file descriptor
* @return `ZTS_ERR_OK` if successful, `ZTS_ERR_SERVICE` if the node
* experiences a problem, `ZTS_ERR_ARG` if invalid argument. Sets `zts_errno`
*/
ZTS_API int ZTCALL zts_shutdown_rd(int fd);
/**
* @brief Shut down `write` aspect of a socket
*
* @param fd Socket file descriptor
* @return `ZTS_ERR_OK` if successful, `ZTS_ERR_SERVICE` if the node
* experiences a problem, `ZTS_ERR_ARG` if invalid argument. Sets `zts_errno`
*/
ZTS_API int ZTCALL zts_shutdown_wr(int fd);
/**
* @brief Shut down both `read` and `write` aspect of a socket
*
* @param fd Socket file descriptor
* @return `ZTS_ERR_OK` if successful, `ZTS_ERR_SERVICE` if the node
* experiences a problem, `ZTS_ERR_ARG` if invalid argument. Sets `zts_errno`
*/
ZTS_API int ZTCALL zts_shutdown_rdwr(int fd);
/**
* @brief Close socket.
*
* @param fd Socket file descriptor
* @return `ZTS_ERR_OK` if successful, `ZTS_ERR_SERVICE` if the node
* experiences a problem, `ZTS_ERR_ARG` if invalid argument. Sets `zts_errno`
*/
ZTS_API int ZTCALL zts_close(int fd);
/** /**
* @brief Get the name (address) of the remote end of the socket * @brief Get the name (address) of the remote end of the socket
@@ -2408,7 +2511,7 @@ ZTS_API int ZTCALL zts_simple_accept(int fd, char* remote_addr, int len, unsigne
* @param port Value-result parameter that will contain resultant port number * @param port Value-result parameter that will contain resultant port number
* @return `ZTS_ERR_OK` if successful, `ZTS_ERR_ARG` if invalid argument. Sets `zts_errno` * @return `ZTS_ERR_OK` if successful, `ZTS_ERR_ARG` if invalid argument. Sets `zts_errno`
*/ */
ZTS_API int ZTCALL zts_simple_getpeername(int fd, char* remote_addr_str, int len, unsigned short* port); ZTS_API int ZTCALL zts_getpeername(int fd, char* remote_addr_str, int len, unsigned short* port);
/** /**
* @brief Get the name (address) of the local end of the socket * @brief Get the name (address) of the local end of the socket
@@ -2419,7 +2522,7 @@ ZTS_API int ZTCALL zts_simple_getpeername(int fd, char* remote_addr_str, int len
* @param port Value-result parameter that will contain resultant port number * @param port Value-result parameter that will contain resultant port number
* @return `ZTS_ERR_OK` if successful, `ZTS_ERR_ARG` if invalid argument. Sets `zts_errno` * @return `ZTS_ERR_OK` if successful, `ZTS_ERR_ARG` if invalid argument. Sets `zts_errno`
*/ */
ZTS_API int ZTCALL zts_simple_getsockname(int fd, char* local_addr_str, int len, unsigned short* port); ZTS_API int ZTCALL zts_getsockname(int fd, char* local_addr_str, int len, unsigned short* port);
/** /**
* @brief A convenience function that takes a remote address IP string and creates * @brief A convenience function that takes a remote address IP string and creates
@@ -2431,7 +2534,7 @@ ZTS_API int ZTCALL zts_simple_getsockname(int fd, char* local_addr_str, int len,
* @return New file descriptor if successful, `ZTS_ERR_SERVICE` if the node * @return New file descriptor if successful, `ZTS_ERR_SERVICE` if the node
* experiences a problem, `ZTS_ERR_ARG` if invalid argument. Sets `zts_errno` * experiences a problem, `ZTS_ERR_ARG` if invalid argument. Sets `zts_errno`
*/ */
ZTS_API int ZTCALL zts_simple_tcp_client(const char* remote_ipstr, unsigned short remote_port); ZTS_API int ZTCALL zts_tcp_client(const char* remote_ipstr, unsigned short remote_port);
/** /**
* @brief A convenience function that takes a remote address IP string and creates * @brief A convenience function that takes a remote address IP string and creates
@@ -2446,7 +2549,7 @@ ZTS_API int ZTCALL zts_simple_tcp_client(const char* remote_ipstr, unsigned shor
* @return New file descriptor if successful, `ZTS_ERR_SERVICE` if the node * @return New file descriptor if successful, `ZTS_ERR_SERVICE` if the node
* experiences a problem, `ZTS_ERR_ARG` if invalid argument. Sets `zts_errno` * experiences a problem, `ZTS_ERR_ARG` if invalid argument. Sets `zts_errno`
*/ */
ZTS_API int ZTCALL zts_simple_tcp_server( ZTS_API int ZTCALL zts_tcp_server(
const char* local_ipstr, const char* local_ipstr,
unsigned short local_port, unsigned short local_port,
char* remote_ipstr, char* remote_ipstr,
@@ -2463,11 +2566,11 @@ ZTS_API int ZTCALL zts_simple_tcp_server(
* @return New file descriptor if successful, `ZTS_ERR_SERVICE` if the node * @return New file descriptor if successful, `ZTS_ERR_SERVICE` if the node
* experiences a problem, `ZTS_ERR_ARG` if invalid argument. Sets `zts_errno` * experiences a problem, `ZTS_ERR_ARG` if invalid argument. Sets `zts_errno`
*/ */
ZTS_API int ZTCALL zts_simple_udp_server(const char* local_ipstr, unsigned short local_port); ZTS_API int ZTCALL zts_udp_server(const char* local_ipstr, unsigned short local_port);
/** /**
* @brief This function doesn't really do anything other than be a namespace * @brief This function doesn't really do anything other than be a namespace
* counterpart to `zts_simple_udp_server`. All this function does is create a * counterpart to `zts_udp_server`. All this function does is create a
* `ZTS_SOCK_DGRAM` socket and return its file descriptor. * `ZTS_SOCK_DGRAM` socket and return its file descriptor.
* *
* @param remote_ipstr Remote address string. IPv4 or IPv6 * @param remote_ipstr Remote address string. IPv4 or IPv6
@@ -2475,7 +2578,7 @@ ZTS_API int ZTCALL zts_simple_udp_server(const char* local_ipstr, unsigned short
* @return New file descriptor if successful, `ZTS_ERR_SERVICE` if the node * @return New file descriptor if successful, `ZTS_ERR_SERVICE` if the node
* experiences a problem, `ZTS_ERR_ARG` if invalid argument. Sets `zts_errno` * experiences a problem, `ZTS_ERR_ARG` if invalid argument. Sets `zts_errno`
*/ */
ZTS_API int ZTCALL zts_simple_udp_client(const char* remote_ipstr); ZTS_API int ZTCALL zts_udp_client(const char* remote_ipstr);
/** /**
* @brief Enable or disable `TCP_NODELAY`. Enabling this is equivalent to * @brief Enable or disable `TCP_NODELAY`. Enabling this is equivalent to
@@ -2486,7 +2589,7 @@ ZTS_API int ZTCALL zts_simple_udp_client(const char* remote_ipstr);
* @return `ZTS_ERR_OK` if successful, `ZTS_ERR_SERVICE` if the node * @return `ZTS_ERR_OK` if successful, `ZTS_ERR_SERVICE` if the node
* experiences a problem, `ZTS_ERR_ARG` if invalid argument. Sets `zts_errno` * experiences a problem, `ZTS_ERR_ARG` if invalid argument. Sets `zts_errno`
*/ */
ZTS_API int ZTCALL zts_simple_set_no_delay(int fd, int enabled); ZTS_API int ZTCALL zts_set_no_delay(int fd, int enabled);
/** /**
* @brief Return whether `TCP_NODELAY` is enabled * @brief Return whether `TCP_NODELAY` is enabled
@@ -2495,7 +2598,7 @@ ZTS_API int ZTCALL zts_simple_set_no_delay(int fd, int enabled);
* @return `1` if enabled, `0` if disabled, `ZTS_ERR_SERVICE` if the node * @return `1` if enabled, `0` if disabled, `ZTS_ERR_SERVICE` if the node
* experiences a problem, `ZTS_ERR_ARG` if invalid argument. Sets `zts_errno` * experiences a problem, `ZTS_ERR_ARG` if invalid argument. Sets `zts_errno`
*/ */
ZTS_API int ZTCALL zts_simple_get_no_delay(int fd); ZTS_API int ZTCALL zts_get_no_delay(int fd);
/** /**
* @brief Enable or disable `SO_LINGER` while also setting its value * @brief Enable or disable `SO_LINGER` while also setting its value
@@ -2506,7 +2609,7 @@ ZTS_API int ZTCALL zts_simple_get_no_delay(int fd);
* @return `ZTS_ERR_OK` if successful, `ZTS_ERR_SERVICE` if the node * @return `ZTS_ERR_OK` if successful, `ZTS_ERR_SERVICE` if the node
* experiences a problem, `ZTS_ERR_ARG` if invalid argument. Sets `zts_errno` * experiences a problem, `ZTS_ERR_ARG` if invalid argument. Sets `zts_errno`
*/ */
ZTS_API int ZTCALL zts_simple_set_linger(int fd, int enabled, int value); ZTS_API int ZTCALL zts_set_linger(int fd, int enabled, int value);
/** /**
* @brief Return whether `SO_LINGER` is enabled * @brief Return whether `SO_LINGER` is enabled
@@ -2515,7 +2618,7 @@ ZTS_API int ZTCALL zts_simple_set_linger(int fd, int enabled, int value);
* @return `1` if enabled, `0` if disabled, `ZTS_ERR_SERVICE` if the node * @return `1` if enabled, `0` if disabled, `ZTS_ERR_SERVICE` if the node
* experiences a problem, `ZTS_ERR_ARG` if invalid argument. Sets `zts_errno` * experiences a problem, `ZTS_ERR_ARG` if invalid argument. Sets `zts_errno`
*/ */
ZTS_API int ZTCALL zts_simple_get_linger_enabled(int fd); ZTS_API int ZTCALL zts_get_linger_enabled(int fd);
/** /**
* @brief Return the value of `SO_LINGER` * @brief Return the value of `SO_LINGER`
@@ -2524,7 +2627,7 @@ ZTS_API int ZTCALL zts_simple_get_linger_enabled(int fd);
* @return Value of `SO_LINGER` if successful, `ZTS_ERR_SERVICE` if the node * @return Value of `SO_LINGER` if successful, `ZTS_ERR_SERVICE` if the node
* experiences a problem, `ZTS_ERR_ARG` if invalid argument. Sets `zts_errno` * experiences a problem, `ZTS_ERR_ARG` if invalid argument. Sets `zts_errno`
*/ */
ZTS_API int ZTCALL zts_simple_get_linger_value(int fd); ZTS_API int ZTCALL zts_get_linger_value(int fd);
/** /**
* @brief Return the number of bytes available to read from the network buffer * @brief Return the number of bytes available to read from the network buffer
@@ -2533,7 +2636,7 @@ ZTS_API int ZTCALL zts_simple_get_linger_value(int fd);
* @return Number of bytes to read if successful, `ZTS_ERR_SERVICE` if the node * @return Number of bytes to read if successful, `ZTS_ERR_SERVICE` if the node
* experiences a problem, `ZTS_ERR_ARG` if invalid argument. Sets `zts_errno` * experiences a problem, `ZTS_ERR_ARG` if invalid argument. Sets `zts_errno`
*/ */
ZTS_API int ZTCALL zts_simple_get_pending_data_size(int fd); ZTS_API int ZTCALL zts_get_pending_data_size(int fd);
/** /**
* @brief Enable or disable `SO_REUSEADDR` * @brief Enable or disable `SO_REUSEADDR`
@@ -2543,7 +2646,7 @@ ZTS_API int ZTCALL zts_simple_get_pending_data_size(int fd);
* @return `ZTS_ERR_OK` if successful, `ZTS_ERR_SERVICE` if the node * @return `ZTS_ERR_OK` if successful, `ZTS_ERR_SERVICE` if the node
* experiences a problem, `ZTS_ERR_ARG` if invalid argument. Sets `zts_errno` * experiences a problem, `ZTS_ERR_ARG` if invalid argument. Sets `zts_errno`
*/ */
ZTS_API int ZTCALL zts_simple_set_reuse_addr(int fd, int enabled); ZTS_API int ZTCALL zts_set_reuse_addr(int fd, int enabled);
/** /**
* @brief Return whether `SO_REUSEADDR` is enabled * @brief Return whether `SO_REUSEADDR` is enabled
@@ -2552,7 +2655,7 @@ ZTS_API int ZTCALL zts_simple_set_reuse_addr(int fd, int enabled);
* @return `1` if enabled, `0` if disabled, `ZTS_ERR_SERVICE` if the node * @return `1` if enabled, `0` if disabled, `ZTS_ERR_SERVICE` if the node
* experiences a problem, `ZTS_ERR_ARG` if invalid argument. Sets `zts_errno` * experiences a problem, `ZTS_ERR_ARG` if invalid argument. Sets `zts_errno`
*/ */
ZTS_API int ZTCALL zts_simple_get_reuse_addr(int fd); ZTS_API int ZTCALL zts_get_reuse_addr(int fd);
/** /**
* @brief Set the value of `SO_RCVTIMEO` * @brief Set the value of `SO_RCVTIMEO`
@@ -2563,7 +2666,7 @@ ZTS_API int ZTCALL zts_simple_get_reuse_addr(int fd);
* @return `ZTS_ERR_OK` if successful, `ZTS_ERR_SERVICE` if the node * @return `ZTS_ERR_OK` if successful, `ZTS_ERR_SERVICE` if the node
* experiences a problem, `ZTS_ERR_ARG` if invalid argument. Sets `zts_errno` * experiences a problem, `ZTS_ERR_ARG` if invalid argument. Sets `zts_errno`
*/ */
ZTS_API int ZTCALL zts_simple_set_recv_timeout(int fd, int seconds, int microseconds); ZTS_API int ZTCALL zts_set_recv_timeout(int fd, int seconds, int microseconds);
/** /**
* @brief Return the value of `SO_RCVTIMEO` * @brief Return the value of `SO_RCVTIMEO`
@@ -2572,7 +2675,7 @@ ZTS_API int ZTCALL zts_simple_set_recv_timeout(int fd, int seconds, int microsec
* @return Value of `SO_RCVTIMEO` if successful, `ZTS_ERR_SERVICE` if the node * @return Value of `SO_RCVTIMEO` if successful, `ZTS_ERR_SERVICE` if the node
* experiences a problem, `ZTS_ERR_ARG` if invalid argument. Sets `zts_errno` * experiences a problem, `ZTS_ERR_ARG` if invalid argument. Sets `zts_errno`
*/ */
ZTS_API int ZTCALL zts_simple_get_recv_timeout(int fd); ZTS_API int ZTCALL zts_get_recv_timeout(int fd);
/** /**
* @brief Set the value of `SO_SNDTIMEO` * @brief Set the value of `SO_SNDTIMEO`
@@ -2583,7 +2686,7 @@ ZTS_API int ZTCALL zts_simple_get_recv_timeout(int fd);
* @return `ZTS_ERR_OK` if successful, `ZTS_ERR_SERVICE` if the node * @return `ZTS_ERR_OK` if successful, `ZTS_ERR_SERVICE` if the node
* experiences a problem, `ZTS_ERR_ARG` if invalid argument. Sets `zts_errno` * experiences a problem, `ZTS_ERR_ARG` if invalid argument. Sets `zts_errno`
*/ */
ZTS_API int ZTCALL zts_simple_set_send_timeout(int fd, int seconds, int microseconds); ZTS_API int ZTCALL zts_set_send_timeout(int fd, int seconds, int microseconds);
/** /**
* @brief Return the value of `SO_SNDTIMEO` * @brief Return the value of `SO_SNDTIMEO`
@@ -2592,7 +2695,7 @@ ZTS_API int ZTCALL zts_simple_set_send_timeout(int fd, int seconds, int microsec
* @return Value of `SO_SNDTIMEO` if successful, `ZTS_ERR_SERVICE` if the node * @return Value of `SO_SNDTIMEO` if successful, `ZTS_ERR_SERVICE` if the node
* experiences a problem, `ZTS_ERR_ARG` if invalid argument. Sets `zts_errno` * experiences a problem, `ZTS_ERR_ARG` if invalid argument. Sets `zts_errno`
*/ */
ZTS_API int ZTCALL zts_simple_get_send_timeout(int fd); ZTS_API int ZTCALL zts_get_send_timeout(int fd);
/** /**
* @brief Set the value of `SO_SNDBUF` * @brief Set the value of `SO_SNDBUF`
@@ -2602,7 +2705,7 @@ ZTS_API int ZTCALL zts_simple_get_send_timeout(int fd);
* @return `ZTS_ERR_OK` if successful, `ZTS_ERR_SERVICE` if the node * @return `ZTS_ERR_OK` if successful, `ZTS_ERR_SERVICE` if the node
* experiences a problem, `ZTS_ERR_ARG` if invalid argument. Sets `zts_errno` * experiences a problem, `ZTS_ERR_ARG` if invalid argument. Sets `zts_errno`
*/ */
ZTS_API int ZTCALL zts_simple_set_send_buf_size(int fd, int size); ZTS_API int ZTCALL zts_set_send_buf_size(int fd, int size);
/** /**
* @brief Return the value of `SO_SNDBUF` * @brief Return the value of `SO_SNDBUF`
@@ -2611,7 +2714,7 @@ ZTS_API int ZTCALL zts_simple_set_send_buf_size(int fd, int size);
* @return Value of `SO_SNDBUF` if successful, `ZTS_ERR_SERVICE` if the node * @return Value of `SO_SNDBUF` if successful, `ZTS_ERR_SERVICE` if the node
* experiences a problem, `ZTS_ERR_ARG` if invalid argument. Sets `zts_errno` * experiences a problem, `ZTS_ERR_ARG` if invalid argument. Sets `zts_errno`
*/ */
ZTS_API int ZTCALL zts_simple_get_send_buf_size(int fd); ZTS_API int ZTCALL zts_get_send_buf_size(int fd);
/** /**
* @brief Set the value of `SO_RCVBUF` * @brief Set the value of `SO_RCVBUF`
@@ -2621,7 +2724,7 @@ ZTS_API int ZTCALL zts_simple_get_send_buf_size(int fd);
* @return `ZTS_ERR_OK` if successful, `ZTS_ERR_SERVICE` if the node * @return `ZTS_ERR_OK` if successful, `ZTS_ERR_SERVICE` if the node
* experiences a problem, `ZTS_ERR_ARG` if invalid argument. Sets `zts_errno` * experiences a problem, `ZTS_ERR_ARG` if invalid argument. Sets `zts_errno`
*/ */
ZTS_API int ZTCALL zts_simple_set_recv_buf_size(int fd, int size); ZTS_API int ZTCALL zts_set_recv_buf_size(int fd, int size);
/** /**
* @brief Return the value of `SO_RCVBUF` * @brief Return the value of `SO_RCVBUF`
@@ -2630,7 +2733,7 @@ ZTS_API int ZTCALL zts_simple_set_recv_buf_size(int fd, int size);
* @return Value of `SO_RCVBUF` if successful, `ZTS_ERR_SERVICE` if the node * @return Value of `SO_RCVBUF` if successful, `ZTS_ERR_SERVICE` if the node
* experiences a problem, `ZTS_ERR_ARG` if invalid argument. Sets `zts_errno` * experiences a problem, `ZTS_ERR_ARG` if invalid argument. Sets `zts_errno`
*/ */
ZTS_API int ZTCALL zts_simple_get_recv_buf_size(int fd); ZTS_API int ZTCALL zts_get_recv_buf_size(int fd);
/** /**
* @brief Set the value of `IP_TTL` * @brief Set the value of `IP_TTL`
@@ -2640,7 +2743,7 @@ ZTS_API int ZTCALL zts_simple_get_recv_buf_size(int fd);
* @return `ZTS_ERR_OK` if successful, `ZTS_ERR_SERVICE` if the node * @return `ZTS_ERR_OK` if successful, `ZTS_ERR_SERVICE` if the node
* experiences a problem, `ZTS_ERR_ARG` if invalid argument. Sets `zts_errno` * experiences a problem, `ZTS_ERR_ARG` if invalid argument. Sets `zts_errno`
*/ */
ZTS_API int ZTCALL zts_simple_set_ttl(int fd, int ttl); ZTS_API int ZTCALL zts_set_ttl(int fd, int ttl);
/** /**
* @brief Return the value of `IP_TTL` * @brief Return the value of `IP_TTL`
@@ -2649,7 +2752,7 @@ ZTS_API int ZTCALL zts_simple_set_ttl(int fd, int ttl);
* @return Value of `IP_TTL` `[0,255]` if successful, `ZTS_ERR_SERVICE` if the * @return Value of `IP_TTL` `[0,255]` if successful, `ZTS_ERR_SERVICE` if the
* node experiences a problem, `ZTS_ERR_ARG` if invalid argument. Sets `zts_errno` * node experiences a problem, `ZTS_ERR_ARG` if invalid argument. Sets `zts_errno`
*/ */
ZTS_API int ZTCALL zts_simple_get_ttl(int fd); ZTS_API int ZTCALL zts_get_ttl(int fd);
/** /**
* @brief Change blocking behavior `O_NONBLOCK` * @brief Change blocking behavior `O_NONBLOCK`
@@ -2660,7 +2763,7 @@ ZTS_API int ZTCALL zts_simple_get_ttl(int fd);
* @return `ZTS_ERR_OK` if successful, `ZTS_ERR_SERVICE` if the node * @return `ZTS_ERR_OK` if successful, `ZTS_ERR_SERVICE` if the node
* experiences a problem, `ZTS_ERR_ARG` if invalid argument. Sets `zts_errno` * experiences a problem, `ZTS_ERR_ARG` if invalid argument. Sets `zts_errno`
*/ */
ZTS_API int ZTCALL zts_simple_set_blocking(int fd, int enabled); ZTS_API int ZTCALL zts_set_blocking(int fd, int enabled);
/** /**
* @brief Return whether blocking mode `O_NONBLOCK` is enabled * @brief Return whether blocking mode `O_NONBLOCK` is enabled
@@ -2669,7 +2772,7 @@ ZTS_API int ZTCALL zts_simple_set_blocking(int fd, int enabled);
* @return `1` if enabled, `0` if disabled, `ZTS_ERR_SERVICE` if the node * @return `1` if enabled, `0` if disabled, `ZTS_ERR_SERVICE` if the node
* experiences a problem, `ZTS_ERR_ARG` if invalid argument. Sets `zts_errno` * experiences a problem, `ZTS_ERR_ARG` if invalid argument. Sets `zts_errno`
*/ */
ZTS_API int ZTCALL zts_simple_get_blocking(int fd); ZTS_API int ZTCALL zts_get_blocking(int fd);
/** /**
* @brief Enable or disable `SO_KEEPALIVE` * @brief Enable or disable `SO_KEEPALIVE`
@@ -2679,7 +2782,7 @@ ZTS_API int ZTCALL zts_simple_get_blocking(int fd);
* @return `ZTS_ERR_OK` if successful, `ZTS_ERR_SERVICE` if the node * @return `ZTS_ERR_OK` if successful, `ZTS_ERR_SERVICE` if the node
* experiences a problem, `ZTS_ERR_ARG` if invalid argument. Sets `zts_errno` * experiences a problem, `ZTS_ERR_ARG` if invalid argument. Sets `zts_errno`
*/ */
ZTS_API int ZTCALL zts_simple_set_keepalive(int fd, int enabled); ZTS_API int ZTCALL zts_set_keepalive(int fd, int enabled);
/** /**
* @brief Return whether `SO_KEEPALIVE` is enabled * @brief Return whether `SO_KEEPALIVE` is enabled
@@ -2688,7 +2791,7 @@ ZTS_API int ZTCALL zts_simple_set_keepalive(int fd, int enabled);
* @return `1` if enabled, `0` if disabled, `ZTS_ERR_SERVICE` if the node * @return `1` if enabled, `0` if disabled, `ZTS_ERR_SERVICE` if the node
* experiences a problem, `ZTS_ERR_ARG` if invalid argument. Sets `zts_errno` * experiences a problem, `ZTS_ERR_ARG` if invalid argument. Sets `zts_errno`
*/ */
ZTS_API int ZTCALL zts_simple_get_keepalive(int fd); ZTS_API int ZTCALL zts_get_keepalive(int fd);
//----------------------------------------------------------------------------// //----------------------------------------------------------------------------//
// DNS // // DNS //
@@ -2712,7 +2815,7 @@ struct zts_hostent {
* @param name A null-terminated string representing the name of the host * @param name A null-terminated string representing the name of the host
* @return Pointer to struct zts_hostent if successful, NULL otherwise * @return Pointer to struct zts_hostent if successful, NULL otherwise
*/ */
struct zts_hostent* zts_gethostbyname(const char* name); struct zts_hostent* zts_bsd_gethostbyname(const char* name);
struct zts_ip4_addr { struct zts_ip4_addr {
uint32_t addr; uint32_t addr;

View File

@@ -26,7 +26,7 @@ Other API options:
We offer two other API layers depending on your use case. The first is a lower- We offer two other API layers depending on your use case. The first is a lower-
level BSD-style socket API. This API is similar to BSD-style sockets level BSD-style socket API. This API is similar to BSD-style sockets
(zts_socket(), zts_listen(), zts_bind(), etc.) The second is a Highly- (zts_bsd_socket(), zts_bsd_listen(), zts_bsd_bind(), etc.) The second is a Highly-
performant virtual Ethernet layer. It can be used for any transport protocol performant virtual Ethernet layer. It can be used for any transport protocol
and is only recommended for those who have advanced or specialty applications. and is only recommended for those who have advanced or specialty applications.

View File

@@ -1 +1 @@
1.3.4-alpha.0 1.4.0

View File

@@ -32,7 +32,7 @@ namespace ZeroTier {
extern "C" { extern "C" {
#endif #endif
int zts_socket(const int socket_family, const int socket_type, const int protocol) int zts_bsd_socket(const int socket_family, const int socket_type, const int protocol)
{ {
if (! transport_ok()) { if (! transport_ok()) {
return ZTS_ERR_SERVICE; return ZTS_ERR_SERVICE;
@@ -40,7 +40,7 @@ int zts_socket(const int socket_family, const int socket_type, const int protoco
return lwip_socket(socket_family, socket_type, protocol); return lwip_socket(socket_family, socket_type, protocol);
} }
int zts_connect(int fd, const struct zts_sockaddr* addr, zts_socklen_t addrlen) int zts_bsd_connect(int fd, const struct zts_sockaddr* addr, zts_socklen_t addrlen)
{ {
if (! transport_ok()) { if (! transport_ok()) {
return ZTS_ERR_SERVICE; return ZTS_ERR_SERVICE;
@@ -55,46 +55,7 @@ int zts_connect(int fd, const struct zts_sockaddr* addr, zts_socklen_t addrlen)
return lwip_connect(fd, (sockaddr*)addr, addrlen); return lwip_connect(fd, (sockaddr*)addr, addrlen);
} }
int zts_simple_connect(int fd, const char* ipstr, unsigned short port, int timeout_ms) int zts_bsd_bind(int fd, const struct zts_sockaddr* addr, zts_socklen_t addrlen)
{
if (! transport_ok()) {
return ZTS_ERR_SERVICE;
}
if (timeout_ms < 0) {
return ZTS_ERR_ARG;
}
if (timeout_ms == 0) {
timeout_ms = 30000; // Default
}
int div = 4; // Must be > 0, Four connection attempts per second
int n_tries = (timeout_ms / 1000) * div;
int connect_delay = 1000 / div;
int err = ZTS_ERR_SOCKET;
zts_socklen_t addrlen = 0;
struct zts_sockaddr_storage ss;
struct zts_sockaddr* sa = NULL;
// Convert to standard address structure
addrlen = sizeof(ss);
zts_util_ipstr_to_saddr(ipstr, port, (struct zts_sockaddr*)&ss, &addrlen);
sa = (struct zts_sockaddr*)&ss;
if (addrlen > 0 && sa != NULL) {
if (zts_simple_get_blocking(fd)) {
do {
err = zts_connect(fd, sa, addrlen);
zts_util_delay(connect_delay);
n_tries--;
} while ((err < 0) && (zts_errno != 0) && (n_tries > 0));
}
return err;
}
return ZTS_ERR_ARG;
}
int zts_bind(int fd, const struct zts_sockaddr* addr, zts_socklen_t addrlen)
{ {
if (! transport_ok()) { if (! transport_ok()) {
return ZTS_ERR_SERVICE; return ZTS_ERR_SERVICE;
@@ -108,26 +69,7 @@ int zts_bind(int fd, const struct zts_sockaddr* addr, zts_socklen_t addrlen)
return lwip_bind(fd, (sockaddr*)addr, addrlen); return lwip_bind(fd, (sockaddr*)addr, addrlen);
} }
int zts_simple_bind(int fd, const char* ipstr, unsigned short port) int zts_bsd_listen(int fd, int backlog)
{
if (! transport_ok()) {
return ZTS_ERR_SERVICE;
}
zts_socklen_t addrlen = 0;
struct zts_sockaddr_storage ss;
struct zts_sockaddr* sa = NULL;
addrlen = sizeof(ss);
int err = ZTS_ERR_OK;
if ((err = zts_util_ipstr_to_saddr(ipstr, port, (struct zts_sockaddr*)&ss, &addrlen)) != ZTS_ERR_OK) {
printf("ERRRRRRR=%d\n", err);
return err;
}
sa = (struct zts_sockaddr*)&ss;
return zts_bind(fd, sa, addrlen);
}
int zts_listen(int fd, int backlog)
{ {
if (! transport_ok()) { if (! transport_ok()) {
return ZTS_ERR_SERVICE; return ZTS_ERR_SERVICE;
@@ -135,7 +77,7 @@ int zts_listen(int fd, int backlog)
return lwip_listen(fd, backlog); return lwip_listen(fd, backlog);
} }
int zts_accept(int fd, struct zts_sockaddr* addr, zts_socklen_t* addrlen) int zts_bsd_accept(int fd, struct zts_sockaddr* addr, zts_socklen_t* addrlen)
{ {
if (! transport_ok()) { if (! transport_ok()) {
return ZTS_ERR_SERVICE; return ZTS_ERR_SERVICE;
@@ -143,124 +85,7 @@ int zts_accept(int fd, struct zts_sockaddr* addr, zts_socklen_t* addrlen)
return lwip_accept(fd, (sockaddr*)addr, (socklen_t*)addrlen); return lwip_accept(fd, (sockaddr*)addr, (socklen_t*)addrlen);
} }
int zts_simple_accept(int fd, char* remote_addr, int len, unsigned short* port) int zts_bsd_setsockopt(int fd, int level, int optname, const void* optval, zts_socklen_t optlen)
{
if (! transport_ok()) {
return ZTS_ERR_SERVICE;
}
if (len != ZTS_INET6_ADDRSTRLEN) {
return ZTS_ERR_ARG;
}
zts_sockaddr_storage ss;
zts_socklen_t addrlen = sizeof(ss);
int acc_fd = zts_accept(fd, (zts_sockaddr*)&ss, (zts_socklen_t*)&addrlen);
int err = ZTS_ERR_OK;
if ((err = zts_util_ntop((struct zts_sockaddr*)&ss, addrlen, remote_addr, len, port)) < ZTS_ERR_OK) {
return err;
}
return acc_fd;
}
int zts_simple_getpeername(int fd, char* remote_addr_str, int len, unsigned short* port)
{
if (! transport_ok()) {
return ZTS_ERR_SERVICE;
}
if (len != ZTS_INET6_ADDRSTRLEN) {
return ZTS_ERR_ARG;
}
struct zts_sockaddr_storage ss;
struct zts_sockaddr* sa = (struct zts_sockaddr*)&ss;
int err = ZTS_ERR_OK;
zts_socklen_t addrlen = sizeof(ss);
if ((err = zts_getpeername(fd, sa, &addrlen)) < 0) {
return err;
}
return zts_util_ntop(sa, addrlen, remote_addr_str, len, port);
}
int zts_simple_getsockname(int fd, char* local_addr_str, int len, unsigned short* port)
{
if (! transport_ok()) {
return ZTS_ERR_SERVICE;
}
if (len != ZTS_INET6_ADDRSTRLEN) {
return ZTS_ERR_ARG;
}
struct zts_sockaddr_storage ss;
struct zts_sockaddr* sa = (struct zts_sockaddr*)&ss;
int err = ZTS_ERR_OK;
zts_socklen_t addrlen = sizeof(ss);
if ((err = zts_getsockname(fd, sa, &addrlen)) < 0) {
return err;
}
return zts_util_ntop(sa, addrlen, local_addr_str, len, port);
}
int zts_simple_tcp_client(const char* remote_ipstr, unsigned short remote_port)
{
int fd, family = zts_util_get_ip_family(remote_ipstr);
if ((fd = zts_socket(family, ZTS_SOCK_STREAM, 0)) < 0) {
return fd; // Failed to create socket
}
int timeout = 0;
if ((fd = zts_simple_connect(fd, remote_ipstr, remote_port, timeout)) < 0) {
zts_close(fd);
return fd; // Failed to connect
}
return fd;
}
int zts_simple_tcp_server(
const char* local_ipstr,
unsigned short local_port,
char* remote_ipstr,
int len,
unsigned short* remote_port)
{
int listen_fd, family = zts_util_get_ip_family(local_ipstr);
if ((listen_fd = zts_socket(family, ZTS_SOCK_STREAM, 0)) < 0) {
return listen_fd; // Failed to create socket
}
if ((listen_fd = zts_simple_bind(listen_fd, local_ipstr, local_port)) < 0) {
return listen_fd; // Failed to bind
}
int backlog = 0;
if ((listen_fd = zts_listen(listen_fd, backlog)) < 0) {
return listen_fd; // Failed to listen
}
int acc_fd = 0;
if ((acc_fd = zts_simple_accept(listen_fd, remote_ipstr, len, remote_port)) < 0) {
return acc_fd; // Failed to accept
}
zts_close(listen_fd);
return acc_fd;
}
int zts_simple_udp_server(const char* local_ipstr, unsigned short local_port)
{
int fd, family = zts_util_get_ip_family(local_ipstr);
if ((fd = zts_socket(family, ZTS_SOCK_DGRAM, 0)) < 0) {
return fd; // Failed to create socket
}
if ((fd = zts_simple_bind(fd, local_ipstr, local_port)) < 0) {
zts_close(fd);
return fd; // Failed to connect
}
return fd;
}
int zts_simple_udp_client(const char* remote_ipstr)
{
int fd, family = zts_util_get_ip_family(remote_ipstr);
if ((fd = zts_socket(family, ZTS_SOCK_DGRAM, 0)) < 0) {
return fd; // Failed to create socket
}
return fd;
}
int zts_setsockopt(int fd, int level, int optname, const void* optval, zts_socklen_t optlen)
{ {
if (! transport_ok()) { if (! transport_ok()) {
return ZTS_ERR_SERVICE; return ZTS_ERR_SERVICE;
@@ -268,7 +93,7 @@ int zts_setsockopt(int fd, int level, int optname, const void* optval, zts_sockl
return lwip_setsockopt(fd, level, optname, optval, optlen); return lwip_setsockopt(fd, level, optname, optval, optlen);
} }
int zts_getsockopt(int fd, int level, int optname, void* optval, zts_socklen_t* optlen) int zts_bsd_getsockopt(int fd, int level, int optname, void* optval, zts_socklen_t* optlen)
{ {
if (! transport_ok()) { if (! transport_ok()) {
return ZTS_ERR_SERVICE; return ZTS_ERR_SERVICE;
@@ -276,7 +101,7 @@ int zts_getsockopt(int fd, int level, int optname, void* optval, zts_socklen_t*
return lwip_getsockopt(fd, level, optname, optval, (socklen_t*)optlen); return lwip_getsockopt(fd, level, optname, optval, (socklen_t*)optlen);
} }
int zts_getsockname(int fd, struct zts_sockaddr* addr, zts_socklen_t* addrlen) int zts_bsd_getsockname(int fd, struct zts_sockaddr* addr, zts_socklen_t* addrlen)
{ {
if (! transport_ok()) { if (! transport_ok()) {
return ZTS_ERR_SERVICE; return ZTS_ERR_SERVICE;
@@ -290,7 +115,7 @@ int zts_getsockname(int fd, struct zts_sockaddr* addr, zts_socklen_t* addrlen)
return lwip_getsockname(fd, (sockaddr*)addr, (socklen_t*)addrlen); return lwip_getsockname(fd, (sockaddr*)addr, (socklen_t*)addrlen);
} }
int zts_getpeername(int fd, struct zts_sockaddr* addr, zts_socklen_t* addrlen) int zts_bsd_getpeername(int fd, struct zts_sockaddr* addr, zts_socklen_t* addrlen)
{ {
if (! transport_ok()) { if (! transport_ok()) {
return ZTS_ERR_SERVICE; return ZTS_ERR_SERVICE;
@@ -304,7 +129,7 @@ int zts_getpeername(int fd, struct zts_sockaddr* addr, zts_socklen_t* addrlen)
return lwip_getpeername(fd, (sockaddr*)addr, (socklen_t*)addrlen); return lwip_getpeername(fd, (sockaddr*)addr, (socklen_t*)addrlen);
} }
int zts_close(int fd) int zts_bsd_close(int fd)
{ {
if (! transport_ok()) { if (! transport_ok()) {
return ZTS_ERR_SERVICE; return ZTS_ERR_SERVICE;
@@ -312,7 +137,12 @@ int zts_close(int fd)
return lwip_close(fd); return lwip_close(fd);
} }
int zts_select(int nfds, zts_fd_set* readfds, zts_fd_set* writefds, zts_fd_set* exceptfds, struct zts_timeval* timeout) int zts_bsd_select(
int nfds,
zts_fd_set* readfds,
zts_fd_set* writefds,
zts_fd_set* exceptfds,
struct zts_timeval* timeout)
{ {
if (! transport_ok()) { if (! transport_ok()) {
return ZTS_ERR_SERVICE; return ZTS_ERR_SERVICE;
@@ -320,7 +150,7 @@ int zts_select(int nfds, zts_fd_set* readfds, zts_fd_set* writefds, zts_fd_set*
return lwip_select(nfds, (fd_set*)readfds, (fd_set*)writefds, (fd_set*)exceptfds, (timeval*)timeout); return lwip_select(nfds, (fd_set*)readfds, (fd_set*)writefds, (fd_set*)exceptfds, (timeval*)timeout);
} }
int zts_fcntl(int fd, int cmd, int flags) int zts_bsd_fcntl(int fd, int cmd, int flags)
{ {
if (! transport_ok()) { if (! transport_ok()) {
return ZTS_ERR_SERVICE; return ZTS_ERR_SERVICE;
@@ -328,7 +158,7 @@ int zts_fcntl(int fd, int cmd, int flags)
return lwip_fcntl(fd, cmd, flags); return lwip_fcntl(fd, cmd, flags);
} }
int zts_poll(struct zts_pollfd* fds, nfds_t nfds, int timeout) int zts_bsd_poll(struct zts_pollfd* fds, nfds_t nfds, int timeout)
{ {
if (! transport_ok()) { if (! transport_ok()) {
return ZTS_ERR_SERVICE; return ZTS_ERR_SERVICE;
@@ -336,7 +166,7 @@ int zts_poll(struct zts_pollfd* fds, nfds_t nfds, int timeout)
return lwip_poll((pollfd*)fds, nfds, timeout); return lwip_poll((pollfd*)fds, nfds, timeout);
} }
int zts_ioctl(int fd, unsigned long request, void* argp) int zts_bsd_ioctl(int fd, unsigned long request, void* argp)
{ {
if (! transport_ok()) { if (! transport_ok()) {
return ZTS_ERR_SERVICE; return ZTS_ERR_SERVICE;
@@ -347,7 +177,7 @@ int zts_ioctl(int fd, unsigned long request, void* argp)
return lwip_ioctl(fd, request, argp); return lwip_ioctl(fd, request, argp);
} }
ssize_t zts_send(int fd, const void* buf, size_t len, int flags) ssize_t zts_bsd_send(int fd, const void* buf, size_t len, int flags)
{ {
if (! transport_ok()) { if (! transport_ok()) {
return ZTS_ERR_SERVICE; return ZTS_ERR_SERVICE;
@@ -359,7 +189,7 @@ ssize_t zts_send(int fd, const void* buf, size_t len, int flags)
} }
ssize_t ssize_t
zts_sendto(int fd, const void* buf, size_t len, int flags, const struct zts_sockaddr* addr, zts_socklen_t addrlen) zts_bsd_sendto(int fd, const void* buf, size_t len, int flags, const struct zts_sockaddr* addr, zts_socklen_t addrlen)
{ {
if (! transport_ok()) { if (! transport_ok()) {
return ZTS_ERR_SERVICE; return ZTS_ERR_SERVICE;
@@ -373,7 +203,7 @@ zts_sendto(int fd, const void* buf, size_t len, int flags, const struct zts_sock
return lwip_sendto(fd, buf, len, flags, (sockaddr*)addr, addrlen); return lwip_sendto(fd, buf, len, flags, (sockaddr*)addr, addrlen);
} }
ssize_t zts_sendmsg(int fd, const struct zts_msghdr* msg, int flags) ssize_t zts_bsd_sendmsg(int fd, const struct zts_msghdr* msg, int flags)
{ {
if (! transport_ok()) { if (! transport_ok()) {
return ZTS_ERR_SERVICE; return ZTS_ERR_SERVICE;
@@ -381,7 +211,7 @@ ssize_t zts_sendmsg(int fd, const struct zts_msghdr* msg, int flags)
return lwip_sendmsg(fd, (const struct msghdr*)msg, flags); return lwip_sendmsg(fd, (const struct msghdr*)msg, flags);
} }
ssize_t zts_recv(int fd, void* buf, size_t len, int flags) ssize_t zts_bsd_recv(int fd, void* buf, size_t len, int flags)
{ {
if (! transport_ok()) { if (! transport_ok()) {
return ZTS_ERR_SERVICE; return ZTS_ERR_SERVICE;
@@ -392,7 +222,7 @@ ssize_t zts_recv(int fd, void* buf, size_t len, int flags)
return lwip_recv(fd, buf, len, flags); return lwip_recv(fd, buf, len, flags);
} }
ssize_t zts_recvfrom(int fd, void* buf, size_t len, int flags, struct zts_sockaddr* addr, zts_socklen_t* addrlen) ssize_t zts_bsd_recvfrom(int fd, void* buf, size_t len, int flags, struct zts_sockaddr* addr, zts_socklen_t* addrlen)
{ {
if (! transport_ok()) { if (! transport_ok()) {
return ZTS_ERR_SERVICE; return ZTS_ERR_SERVICE;
@@ -403,7 +233,7 @@ ssize_t zts_recvfrom(int fd, void* buf, size_t len, int flags, struct zts_sockad
return lwip_recvfrom(fd, buf, len, flags, (sockaddr*)addr, (socklen_t*)addrlen); return lwip_recvfrom(fd, buf, len, flags, (sockaddr*)addr, (socklen_t*)addrlen);
} }
ssize_t zts_recvmsg(int fd, struct zts_msghdr* msg, int flags) ssize_t zts_bsd_recvmsg(int fd, struct zts_msghdr* msg, int flags)
{ {
if (! transport_ok()) { if (! transport_ok()) {
return ZTS_ERR_SERVICE; return ZTS_ERR_SERVICE;
@@ -414,7 +244,7 @@ ssize_t zts_recvmsg(int fd, struct zts_msghdr* msg, int flags)
return lwip_recvmsg(fd, (struct msghdr*)msg, flags); return lwip_recvmsg(fd, (struct msghdr*)msg, flags);
} }
ssize_t zts_read(int fd, void* buf, size_t len) ssize_t zts_bsd_read(int fd, void* buf, size_t len)
{ {
if (! transport_ok()) { if (! transport_ok()) {
return ZTS_ERR_SERVICE; return ZTS_ERR_SERVICE;
@@ -425,7 +255,7 @@ ssize_t zts_read(int fd, void* buf, size_t len)
return lwip_read(fd, buf, len); return lwip_read(fd, buf, len);
} }
ssize_t zts_readv(int fd, const struct zts_iovec* iov, int iovcnt) ssize_t zts_bsd_readv(int fd, const struct zts_iovec* iov, int iovcnt)
{ {
if (! transport_ok()) { if (! transport_ok()) {
return ZTS_ERR_SERVICE; return ZTS_ERR_SERVICE;
@@ -433,7 +263,7 @@ ssize_t zts_readv(int fd, const struct zts_iovec* iov, int iovcnt)
return lwip_readv(fd, (iovec*)iov, iovcnt); return lwip_readv(fd, (iovec*)iov, iovcnt);
} }
ssize_t zts_write(int fd, const void* buf, size_t len) ssize_t zts_bsd_write(int fd, const void* buf, size_t len)
{ {
if (! transport_ok()) { if (! transport_ok()) {
return ZTS_ERR_SERVICE; return ZTS_ERR_SERVICE;
@@ -444,7 +274,7 @@ ssize_t zts_write(int fd, const void* buf, size_t len)
return lwip_write(fd, buf, len); return lwip_write(fd, buf, len);
} }
ssize_t zts_writev(int fd, const struct zts_iovec* iov, int iovcnt) ssize_t zts_bsd_writev(int fd, const struct zts_iovec* iov, int iovcnt)
{ {
if (! transport_ok()) { if (! transport_ok()) {
return ZTS_ERR_SERVICE; return ZTS_ERR_SERVICE;
@@ -452,7 +282,7 @@ ssize_t zts_writev(int fd, const struct zts_iovec* iov, int iovcnt)
return lwip_writev(fd, (iovec*)iov, iovcnt); return lwip_writev(fd, (iovec*)iov, iovcnt);
} }
int zts_shutdown(int fd, int how) int zts_bsd_shutdown(int fd, int how)
{ {
if (! transport_ok()) { if (! transport_ok()) {
return ZTS_ERR_SERVICE; return ZTS_ERR_SERVICE;
@@ -460,7 +290,7 @@ int zts_shutdown(int fd, int how)
return lwip_shutdown(fd, how); return lwip_shutdown(fd, how);
} }
struct zts_hostent* zts_gethostbyname(const char* name) struct zts_hostent* zts_bsd_gethostbyname(const char* name)
{ {
if (! transport_ok()) { if (! transport_ok()) {
return NULL; return NULL;
@@ -554,7 +384,231 @@ int zts_util_ipstr_to_saddr(
return ZTS_ERR_ARG; return ZTS_ERR_ARG;
} }
int zts_simple_set_no_delay(int fd, int enabled) int zts_socket(int family, int type, int protocol)
{
return zts_bsd_socket(family, type, protocol);
}
int zts_connect(int fd, const char* ipstr, unsigned short port, int timeout_ms)
{
if (! transport_ok()) {
return ZTS_ERR_SERVICE;
}
if (timeout_ms < 0) {
return ZTS_ERR_ARG;
}
if (timeout_ms == 0) {
timeout_ms = 30000; // Default
}
int div = 4; // Must be > 0, Four connection attempts per second
int n_tries = (timeout_ms / 1000) * div;
int connect_delay = 1000 / div;
int err = ZTS_ERR_SOCKET;
zts_socklen_t addrlen = 0;
struct zts_sockaddr_storage ss;
struct zts_sockaddr* sa = NULL;
// Convert to standard address structure
addrlen = sizeof(ss);
zts_util_ipstr_to_saddr(ipstr, port, (struct zts_sockaddr*)&ss, &addrlen);
sa = (struct zts_sockaddr*)&ss;
if (addrlen > 0 && sa != NULL) {
if (zts_get_blocking(fd)) {
do {
err = zts_bsd_connect(fd, sa, addrlen);
zts_util_delay(connect_delay);
n_tries--;
} while ((err < 0) && (zts_errno != 0) && (n_tries > 0));
}
return err;
}
return ZTS_ERR_ARG;
}
int zts_bind(int fd, const char* ipstr, unsigned short port)
{
if (! transport_ok()) {
return ZTS_ERR_SERVICE;
}
zts_socklen_t addrlen = 0;
struct zts_sockaddr_storage ss;
struct zts_sockaddr* sa = NULL;
addrlen = sizeof(ss);
int err = ZTS_ERR_OK;
if ((err = zts_util_ipstr_to_saddr(ipstr, port, (struct zts_sockaddr*)&ss, &addrlen)) != ZTS_ERR_OK) {
return err;
}
sa = (struct zts_sockaddr*)&ss;
return zts_bsd_bind(fd, sa, addrlen);
}
int zts_listen(int fd, int backlog)
{
return zts_bsd_listen(fd, backlog);
}
int zts_accept(int fd, char* remote_addr, int len, unsigned short* port)
{
if (! transport_ok()) {
return ZTS_ERR_SERVICE;
}
if (len != ZTS_INET6_ADDRSTRLEN) {
return ZTS_ERR_ARG;
}
zts_sockaddr_storage ss;
zts_socklen_t addrlen = sizeof(ss);
int acc_fd = zts_bsd_accept(fd, (zts_sockaddr*)&ss, (zts_socklen_t*)&addrlen);
int err = ZTS_ERR_OK;
if ((err = zts_util_ntop((struct zts_sockaddr*)&ss, addrlen, remote_addr, len, port)) < ZTS_ERR_OK) {
return err;
}
return acc_fd;
}
ssize_t zts_send(int fd, const void* buf, size_t len, int flags)
{
return zts_bsd_send(fd, buf, len, flags);
}
ssize_t zts_recv(int fd, void* buf, size_t len, int flags)
{
return zts_bsd_recv(fd, buf, len, flags);
}
ssize_t zts_read(int fd, void* buf, size_t len)
{
return zts_bsd_read(fd, buf, len);
}
ssize_t zts_write(int fd, const void* buf, size_t len)
{
return zts_bsd_write(fd, buf, len);
}
int zts_shutdown_rd(int fd)
{
return zts_bsd_shutdown(fd, ZTS_SHUT_RD);
}
int zts_shutdown_wr(int fd)
{
return zts_bsd_shutdown(fd, ZTS_SHUT_WR);
}
int zts_shutdown_rdwr(int fd)
{
return zts_bsd_shutdown(fd, ZTS_SHUT_RDWR);
}
int zts_close(int fd)
{
return zts_bsd_close(fd);
}
int zts_getpeername(int fd, char* remote_addr_str, int len, unsigned short* port)
{
if (! transport_ok()) {
return ZTS_ERR_SERVICE;
}
if (len != ZTS_INET6_ADDRSTRLEN) {
return ZTS_ERR_ARG;
}
struct zts_sockaddr_storage ss;
struct zts_sockaddr* sa = (struct zts_sockaddr*)&ss;
int err = ZTS_ERR_OK;
zts_socklen_t addrlen = sizeof(ss);
if ((err = zts_bsd_getpeername(fd, sa, &addrlen)) < 0) {
return err;
}
return zts_util_ntop(sa, addrlen, remote_addr_str, len, port);
}
int zts_getsockname(int fd, char* local_addr_str, int len, unsigned short* port)
{
if (! transport_ok()) {
return ZTS_ERR_SERVICE;
}
if (len != ZTS_INET6_ADDRSTRLEN) {
return ZTS_ERR_ARG;
}
struct zts_sockaddr_storage ss;
struct zts_sockaddr* sa = (struct zts_sockaddr*)&ss;
int err = ZTS_ERR_OK;
zts_socklen_t addrlen = sizeof(ss);
if ((err = zts_bsd_getsockname(fd, sa, &addrlen)) < 0) {
return err;
}
return zts_util_ntop(sa, addrlen, local_addr_str, len, port);
}
int zts_tcp_client(const char* remote_ipstr, unsigned short remote_port)
{
int fd, family = zts_util_get_ip_family(remote_ipstr);
if ((fd = zts_bsd_socket(family, ZTS_SOCK_STREAM, 0)) < 0) {
return fd; // Failed to create socket
}
int timeout = 0;
if ((fd = zts_connect(fd, remote_ipstr, remote_port, timeout)) < 0) {
zts_bsd_close(fd);
return fd; // Failed to connect
}
return fd;
}
int zts_tcp_server(
const char* local_ipstr,
unsigned short local_port,
char* remote_ipstr,
int len,
unsigned short* remote_port)
{
int listen_fd, family = zts_util_get_ip_family(local_ipstr);
if ((listen_fd = zts_bsd_socket(family, ZTS_SOCK_STREAM, 0)) < 0) {
return listen_fd; // Failed to create socket
}
if ((listen_fd = zts_bind(listen_fd, local_ipstr, local_port)) < 0) {
return listen_fd; // Failed to bind
}
int backlog = 0;
if ((listen_fd = zts_bsd_listen(listen_fd, backlog)) < 0) {
return listen_fd; // Failed to listen
}
int acc_fd = 0;
if ((acc_fd = zts_accept(listen_fd, remote_ipstr, len, remote_port)) < 0) {
return acc_fd; // Failed to accept
}
zts_bsd_close(listen_fd);
return acc_fd;
}
int zts_udp_server(const char* local_ipstr, unsigned short local_port)
{
int fd, family = zts_util_get_ip_family(local_ipstr);
if ((fd = zts_bsd_socket(family, ZTS_SOCK_DGRAM, 0)) < 0) {
return fd; // Failed to create socket
}
if ((fd = zts_bind(fd, local_ipstr, local_port)) < 0) {
zts_bsd_close(fd);
return fd; // Failed to connect
}
return fd;
}
int zts_udp_client(const char* remote_ipstr)
{
int fd, family = zts_util_get_ip_family(remote_ipstr);
if ((fd = zts_bsd_socket(family, ZTS_SOCK_DGRAM, 0)) < 0) {
return fd; // Failed to create socket
}
return fd;
}
int zts_set_no_delay(int fd, int enabled)
{ {
if (! transport_ok()) { if (! transport_ok()) {
return ZTS_ERR_SERVICE; return ZTS_ERR_SERVICE;
@@ -562,23 +616,23 @@ int zts_simple_set_no_delay(int fd, int enabled)
if (enabled != 0 && enabled != 1) { if (enabled != 0 && enabled != 1) {
return ZTS_ERR_ARG; return ZTS_ERR_ARG;
} }
return zts_setsockopt(fd, ZTS_IPPROTO_TCP, ZTS_TCP_NODELAY, (void*)&enabled, sizeof(int)); return zts_bsd_setsockopt(fd, ZTS_IPPROTO_TCP, ZTS_TCP_NODELAY, (void*)&enabled, sizeof(int));
} }
int zts_simple_get_no_delay(int fd) int zts_get_no_delay(int fd)
{ {
if (! transport_ok()) { if (! transport_ok()) {
return ZTS_ERR_SERVICE; return ZTS_ERR_SERVICE;
} }
int err, optval = 0; int err, optval = 0;
zts_socklen_t len = sizeof(optval); zts_socklen_t len = sizeof(optval);
if ((err = zts_getsockopt(fd, ZTS_IPPROTO_TCP, ZTS_TCP_NODELAY, (void*)&optval, &len)) < 0) { if ((err = zts_bsd_getsockopt(fd, ZTS_IPPROTO_TCP, ZTS_TCP_NODELAY, (void*)&optval, &len)) < 0) {
return err; return err;
} }
return optval != 0; return optval != 0;
} }
int zts_simple_set_linger(int fd, int enabled, int value) int zts_set_linger(int fd, int enabled, int value)
{ {
if (! transport_ok()) { if (! transport_ok()) {
return ZTS_ERR_SERVICE; return ZTS_ERR_SERVICE;
@@ -592,10 +646,10 @@ int zts_simple_set_linger(int fd, int enabled, int value)
struct zts_linger linger; struct zts_linger linger;
linger.l_onoff = enabled; linger.l_onoff = enabled;
linger.l_linger = value; linger.l_linger = value;
return zts_setsockopt(fd, ZTS_SOL_SOCKET, ZTS_SO_LINGER, (void*)&linger, sizeof(linger)); return zts_bsd_setsockopt(fd, ZTS_SOL_SOCKET, ZTS_SO_LINGER, (void*)&linger, sizeof(linger));
} }
int zts_simple_get_linger_enabled(int fd) int zts_get_linger_enabled(int fd)
{ {
if (! transport_ok()) { if (! transport_ok()) {
return ZTS_ERR_SERVICE; return ZTS_ERR_SERVICE;
@@ -603,13 +657,13 @@ int zts_simple_get_linger_enabled(int fd)
struct zts_linger linger; struct zts_linger linger;
zts_socklen_t len = sizeof(linger); zts_socklen_t len = sizeof(linger);
int err; int err;
if ((err = zts_getsockopt(fd, ZTS_SOL_SOCKET, ZTS_SO_LINGER, (void*)&linger, &len)) < 0) { if ((err = zts_bsd_getsockopt(fd, ZTS_SOL_SOCKET, ZTS_SO_LINGER, (void*)&linger, &len)) < 0) {
return err; return err;
} }
return linger.l_onoff; return linger.l_onoff;
} }
int zts_simple_get_linger_value(int fd) int zts_get_linger_value(int fd)
{ {
if (! transport_ok()) { if (! transport_ok()) {
return ZTS_ERR_SERVICE; return ZTS_ERR_SERVICE;
@@ -617,26 +671,26 @@ int zts_simple_get_linger_value(int fd)
struct zts_linger linger; struct zts_linger linger;
zts_socklen_t len = sizeof(linger); zts_socklen_t len = sizeof(linger);
int err; int err;
if ((err = zts_getsockopt(fd, ZTS_SOL_SOCKET, ZTS_SO_LINGER, (void*)&linger, &len)) < 0) { if ((err = zts_bsd_getsockopt(fd, ZTS_SOL_SOCKET, ZTS_SO_LINGER, (void*)&linger, &len)) < 0) {
return err; return err;
} }
return linger.l_linger; return linger.l_linger;
} }
int zts_simple_get_pending_data_size(int fd) int zts_get_pending_data_size(int fd)
{ {
if (! transport_ok()) { if (! transport_ok()) {
return ZTS_ERR_SERVICE; return ZTS_ERR_SERVICE;
} }
int bytes_available = 0; int bytes_available = 0;
int err = ZTS_ERR_OK; int err = ZTS_ERR_OK;
if ((err = zts_ioctl(fd, ZTS_FIONREAD, &bytes_available)) < 0) { if ((err = zts_bsd_ioctl(fd, ZTS_FIONREAD, &bytes_available)) < 0) {
return err; return err;
} }
return bytes_available; return bytes_available;
} }
int zts_simple_set_reuse_addr(int fd, int enabled) int zts_set_reuse_addr(int fd, int enabled)
{ {
if (! transport_ok()) { if (! transport_ok()) {
return ZTS_ERR_SERVICE; return ZTS_ERR_SERVICE;
@@ -644,23 +698,23 @@ int zts_simple_set_reuse_addr(int fd, int enabled)
if (enabled != 0 && enabled != 1) { if (enabled != 0 && enabled != 1) {
return ZTS_ERR_ARG; return ZTS_ERR_ARG;
} }
return zts_setsockopt(fd, ZTS_SOL_SOCKET, ZTS_SO_REUSEADDR, (void*)&enabled, sizeof(enabled)); return zts_bsd_setsockopt(fd, ZTS_SOL_SOCKET, ZTS_SO_REUSEADDR, (void*)&enabled, sizeof(enabled));
} }
int zts_simple_get_reuse_addr(int fd) int zts_get_reuse_addr(int fd)
{ {
if (! transport_ok()) { if (! transport_ok()) {
return ZTS_ERR_SERVICE; return ZTS_ERR_SERVICE;
} }
int err, optval = 0; int err, optval = 0;
zts_socklen_t optlen = sizeof(optval); zts_socklen_t optlen = sizeof(optval);
if ((err = zts_getsockopt(fd, ZTS_SOL_SOCKET, ZTS_SO_REUSEADDR, (void*)&optval, &optlen)) < 0) { if ((err = zts_bsd_getsockopt(fd, ZTS_SOL_SOCKET, ZTS_SO_REUSEADDR, (void*)&optval, &optlen)) < 0) {
return err; return err;
} }
return optval != 0; return optval != 0;
} }
int zts_simple_set_recv_timeout(int fd, int seconds, int microseconds) int zts_set_recv_timeout(int fd, int seconds, int microseconds)
{ {
if (! transport_ok()) { if (! transport_ok()) {
return ZTS_ERR_SERVICE; return ZTS_ERR_SERVICE;
@@ -671,10 +725,10 @@ int zts_simple_set_recv_timeout(int fd, int seconds, int microseconds)
struct timeval tv; struct timeval tv;
tv.tv_sec = seconds; tv.tv_sec = seconds;
tv.tv_usec = microseconds; tv.tv_usec = microseconds;
return zts_setsockopt(fd, SOL_SOCKET, SO_RCVTIMEO, (void*)&tv, sizeof(tv)); return zts_bsd_setsockopt(fd, SOL_SOCKET, SO_RCVTIMEO, (void*)&tv, sizeof(tv));
} }
int zts_simple_get_recv_timeout(int fd) int zts_get_recv_timeout(int fd)
{ {
if (! transport_ok()) { if (! transport_ok()) {
return ZTS_ERR_SERVICE; return ZTS_ERR_SERVICE;
@@ -682,13 +736,13 @@ int zts_simple_get_recv_timeout(int fd)
struct timeval tv; struct timeval tv;
zts_socklen_t optlen = sizeof(tv); zts_socklen_t optlen = sizeof(tv);
int err; int err;
if ((err = zts_getsockopt(fd, SOL_SOCKET, SO_RCVTIMEO, (void*)&tv, &optlen)) < 0) { if ((err = zts_bsd_getsockopt(fd, SOL_SOCKET, SO_RCVTIMEO, (void*)&tv, &optlen)) < 0) {
return err; return err;
} }
return tv.tv_sec; // TODO microseconds return tv.tv_sec; // TODO microseconds
} }
int zts_simple_set_send_timeout(int fd, int seconds, int microseconds) int zts_set_send_timeout(int fd, int seconds, int microseconds)
{ {
if (! transport_ok()) { if (! transport_ok()) {
return ZTS_ERR_SERVICE; return ZTS_ERR_SERVICE;
@@ -699,10 +753,10 @@ int zts_simple_set_send_timeout(int fd, int seconds, int microseconds)
struct timeval tv; struct timeval tv;
tv.tv_sec = seconds; tv.tv_sec = seconds;
tv.tv_usec = microseconds; tv.tv_usec = microseconds;
return zts_setsockopt(fd, SOL_SOCKET, SO_SNDTIMEO, (void*)&tv, sizeof(tv)); return zts_bsd_setsockopt(fd, SOL_SOCKET, SO_SNDTIMEO, (void*)&tv, sizeof(tv));
} }
int zts_simple_get_send_timeout(int fd) int zts_get_send_timeout(int fd)
{ {
if (! transport_ok()) { if (! transport_ok()) {
return ZTS_ERR_SERVICE; return ZTS_ERR_SERVICE;
@@ -710,13 +764,13 @@ int zts_simple_get_send_timeout(int fd)
struct zts_timeval tv; struct zts_timeval tv;
zts_socklen_t optlen = sizeof(tv); zts_socklen_t optlen = sizeof(tv);
int err; int err;
if ((err = zts_getsockopt(fd, SOL_SOCKET, SO_SNDTIMEO, (void*)&tv, &optlen)) < 0) { if ((err = zts_bsd_getsockopt(fd, SOL_SOCKET, SO_SNDTIMEO, (void*)&tv, &optlen)) < 0) {
return err; return err;
} }
return tv.tv_sec; // TODO microseconds return tv.tv_sec; // TODO microseconds
} }
int zts_simple_set_send_buf_size(int fd, int size) int zts_set_send_buf_size(int fd, int size)
{ {
if (! transport_ok()) { if (! transport_ok()) {
return ZTS_ERR_SERVICE; return ZTS_ERR_SERVICE;
@@ -724,23 +778,23 @@ int zts_simple_set_send_buf_size(int fd, int size)
if (size < 0) { if (size < 0) {
return ZTS_ERR_ARG; return ZTS_ERR_ARG;
} }
return zts_setsockopt(fd, SOL_SOCKET, SO_SNDBUF, (void*)&size, sizeof(int)); return zts_bsd_setsockopt(fd, SOL_SOCKET, SO_SNDBUF, (void*)&size, sizeof(int));
} }
int zts_simple_get_send_buf_size(int fd) int zts_get_send_buf_size(int fd)
{ {
if (! transport_ok()) { if (! transport_ok()) {
return ZTS_ERR_SERVICE; return ZTS_ERR_SERVICE;
} }
int err, optval = 0; int err, optval = 0;
zts_socklen_t optlen = sizeof(optval); zts_socklen_t optlen = sizeof(optval);
if ((err = zts_getsockopt(fd, SOL_SOCKET, SO_SNDBUF, (char*)&optval, &optlen)) < 0) { if ((err = zts_bsd_getsockopt(fd, SOL_SOCKET, SO_SNDBUF, (char*)&optval, &optlen)) < 0) {
return err; return err;
} }
return optval; return optval;
} }
int zts_simple_set_recv_buf_size(int fd, int size) int zts_set_recv_buf_size(int fd, int size)
{ {
if (! transport_ok()) { if (! transport_ok()) {
return ZTS_ERR_SERVICE; return ZTS_ERR_SERVICE;
@@ -748,23 +802,23 @@ int zts_simple_set_recv_buf_size(int fd, int size)
if (size < 0) { if (size < 0) {
return ZTS_ERR_ARG; return ZTS_ERR_ARG;
} }
return zts_setsockopt(fd, SOL_SOCKET, SO_RCVBUF, (void*)&size, sizeof(int)); return zts_bsd_setsockopt(fd, SOL_SOCKET, SO_RCVBUF, (void*)&size, sizeof(int));
} }
int zts_simple_get_recv_buf_size(int fd) int zts_get_recv_buf_size(int fd)
{ {
if (! transport_ok()) { if (! transport_ok()) {
return ZTS_ERR_SERVICE; return ZTS_ERR_SERVICE;
} }
int err, optval = 0; int err, optval = 0;
zts_socklen_t optlen = sizeof(optval); zts_socklen_t optlen = sizeof(optval);
if ((err = zts_getsockopt(fd, SOL_SOCKET, SO_RCVBUF, (char*)&optval, &optlen)) < 0) { if ((err = zts_bsd_getsockopt(fd, SOL_SOCKET, SO_RCVBUF, (char*)&optval, &optlen)) < 0) {
return err; return err;
} }
return optval; return optval;
} }
int zts_simple_set_ttl(int fd, int ttl) int zts_set_ttl(int fd, int ttl)
{ {
if (! transport_ok()) { if (! transport_ok()) {
return ZTS_ERR_SERVICE; return ZTS_ERR_SERVICE;
@@ -772,23 +826,23 @@ int zts_simple_set_ttl(int fd, int ttl)
if (ttl < 0 || ttl > 255) { if (ttl < 0 || ttl > 255) {
return ZTS_ERR_ARG; return ZTS_ERR_ARG;
} }
return zts_setsockopt(fd, IPPROTO_IP, IP_TTL, &ttl, sizeof(ttl)); return zts_bsd_setsockopt(fd, IPPROTO_IP, IP_TTL, &ttl, sizeof(ttl));
} }
int zts_simple_get_ttl(int fd) int zts_get_ttl(int fd)
{ {
if (! transport_ok()) { if (! transport_ok()) {
return ZTS_ERR_SERVICE; return ZTS_ERR_SERVICE;
} }
int err, ttl = 0; int err, ttl = 0;
zts_socklen_t optlen = sizeof(ttl); zts_socklen_t optlen = sizeof(ttl);
if ((err = zts_getsockopt(fd, IPPROTO_IP, IP_TTL, &ttl, &optlen)) < 0) { if ((err = zts_bsd_getsockopt(fd, IPPROTO_IP, IP_TTL, &ttl, &optlen)) < 0) {
return err; return err;
} }
return ttl; return ttl;
} }
int zts_simple_set_blocking(int fd, int enabled) int zts_set_blocking(int fd, int enabled)
{ {
if (! transport_ok()) { if (! transport_ok()) {
return ZTS_ERR_SERVICE; return ZTS_ERR_SERVICE;
@@ -796,29 +850,29 @@ int zts_simple_set_blocking(int fd, int enabled)
if (enabled != 0 && enabled != 1) { if (enabled != 0 && enabled != 1) {
return ZTS_ERR_ARG; return ZTS_ERR_ARG;
} }
int flags = zts_fcntl(fd, ZTS_F_GETFL, 0); int flags = zts_bsd_fcntl(fd, ZTS_F_GETFL, 0);
if (! enabled) { if (! enabled) {
return zts_fcntl(fd, ZTS_F_SETFL, flags | ZTS_O_NONBLOCK); return zts_bsd_fcntl(fd, ZTS_F_SETFL, flags | ZTS_O_NONBLOCK);
} }
else { else {
// Default // Default
return zts_fcntl(fd, ZTS_F_SETFL, flags & (~ZTS_O_NONBLOCK)); return zts_bsd_fcntl(fd, ZTS_F_SETFL, flags & (~ZTS_O_NONBLOCK));
} }
} }
int zts_simple_get_blocking(int fd) int zts_get_blocking(int fd)
{ {
if (! transport_ok()) { if (! transport_ok()) {
return ZTS_ERR_SERVICE; return ZTS_ERR_SERVICE;
} }
int flags = zts_fcntl(fd, ZTS_F_GETFL, 0); int flags = zts_bsd_fcntl(fd, ZTS_F_GETFL, 0);
if (flags < 0) { if (flags < 0) {
return flags; return flags;
} }
return ! (flags & ZTS_O_NONBLOCK); return ! (flags & ZTS_O_NONBLOCK);
} }
int zts_simple_set_keepalive(int fd, int enabled) int zts_set_keepalive(int fd, int enabled)
{ {
if (! transport_ok()) { if (! transport_ok()) {
return ZTS_ERR_SERVICE; return ZTS_ERR_SERVICE;
@@ -827,17 +881,17 @@ int zts_simple_set_keepalive(int fd, int enabled)
return ZTS_ERR_ARG; return ZTS_ERR_ARG;
} }
int keepalive = enabled; int keepalive = enabled;
return zts_setsockopt(fd, ZTS_SOL_SOCKET, ZTS_SO_KEEPALIVE, &keepalive, sizeof(keepalive)); return zts_bsd_setsockopt(fd, ZTS_SOL_SOCKET, ZTS_SO_KEEPALIVE, &keepalive, sizeof(keepalive));
} }
int zts_simple_get_keepalive(int fd) int zts_get_keepalive(int fd)
{ {
if (! transport_ok()) { if (! transport_ok()) {
return ZTS_ERR_SERVICE; return ZTS_ERR_SERVICE;
} }
int err, optval = 0; int err, optval = 0;
zts_socklen_t optlen = sizeof(optval); zts_socklen_t optlen = sizeof(optval);
if ((err = zts_getsockopt(fd, ZTS_SOL_SOCKET, ZTS_SO_KEEPALIVE, (void*)&optval, &optlen)) < 0) { if ((err = zts_bsd_getsockopt(fd, ZTS_SOL_SOCKET, ZTS_SO_KEEPALIVE, (void*)&optval, &optlen)) < 0) {
return err; return err;
} }
return optval != 0; return optval != 0;

View File

@@ -1097,7 +1097,7 @@ SWIGEXPORT int SWIGSTDCALL CSharp_zts_stats_get_all(void* jarg1)
return jresult; return jresult;
} }
SWIGEXPORT int SWIGSTDCALL CSharp_zts_socket(int jarg1, int jarg2, int jarg3) SWIGEXPORT int SWIGSTDCALL CSharp_zts_bsd_socket(int jarg1, int jarg2, int jarg3)
{ {
int jresult; int jresult;
int arg1; int arg1;
@@ -1107,12 +1107,12 @@ SWIGEXPORT int SWIGSTDCALL CSharp_zts_socket(int jarg1, int jarg2, int jarg3)
arg1 = (int)jarg1; arg1 = (int)jarg1;
arg2 = (int)jarg2; arg2 = (int)jarg2;
arg3 = (int)jarg3; arg3 = (int)jarg3;
result = (int)zts_socket(arg1, arg2, arg3); result = (int)zts_bsd_socket(arg1, arg2, arg3);
jresult = result; jresult = result;
return jresult; return jresult;
} }
SWIGEXPORT int SWIGSTDCALL CSharp_zts_connect(int jarg1, zts_sockaddr* jarg2, unsigned short jarg3) SWIGEXPORT int SWIGSTDCALL CSharp_zts_bsd_connect(int jarg1, zts_sockaddr* jarg2, unsigned short jarg3)
{ {
int jresult; int jresult;
int arg1; int arg1;
@@ -1122,12 +1122,12 @@ SWIGEXPORT int SWIGSTDCALL CSharp_zts_connect(int jarg1, zts_sockaddr* jarg2, un
arg1 = (int)jarg1; arg1 = (int)jarg1;
arg2 = (zts_sockaddr*)jarg2; arg2 = (zts_sockaddr*)jarg2;
arg3 = (zts_socklen_t)jarg3; arg3 = (zts_socklen_t)jarg3;
result = (int)zts_connect(arg1, (zts_sockaddr const*)arg2, arg3); result = (int)zts_bsd_connect(arg1, (zts_sockaddr const*)arg2, arg3);
jresult = result; jresult = result;
return jresult; return jresult;
} }
SWIGEXPORT int SWIGSTDCALL CSharp_zts_simple_connect(int jarg1, char* jarg2, int jarg3, int jarg4) SWIGEXPORT int SWIGSTDCALL CSharp_zts_connect(int jarg1, char* jarg2, int jarg3, int jarg4)
{ {
int jresult; int jresult;
int arg1; int arg1;
@@ -1139,12 +1139,12 @@ SWIGEXPORT int SWIGSTDCALL CSharp_zts_simple_connect(int jarg1, char* jarg2, int
arg2 = (char*)jarg2; arg2 = (char*)jarg2;
arg3 = (int)jarg3; arg3 = (int)jarg3;
arg4 = (int)jarg4; arg4 = (int)jarg4;
result = (int)zts_simple_connect(arg1, (char const*)arg2, arg3, arg4); result = (int)zts_connect(arg1, (char const*)arg2, arg3, arg4);
jresult = result; jresult = result;
return jresult; return jresult;
} }
SWIGEXPORT int SWIGSTDCALL CSharp_zts_bind(int jarg1, zts_sockaddr* jarg2, unsigned short jarg3) SWIGEXPORT int SWIGSTDCALL CSharp_zts_bsd_bind(int jarg1, zts_sockaddr* jarg2, unsigned short jarg3)
{ {
int jresult; int jresult;
int arg1; int arg1;
@@ -1154,12 +1154,12 @@ SWIGEXPORT int SWIGSTDCALL CSharp_zts_bind(int jarg1, zts_sockaddr* jarg2, unsig
arg1 = (int)jarg1; arg1 = (int)jarg1;
arg2 = (zts_sockaddr*)jarg2; arg2 = (zts_sockaddr*)jarg2;
arg3 = (zts_socklen_t)jarg3; arg3 = (zts_socklen_t)jarg3;
result = (int)zts_bind(arg1, (zts_sockaddr const*)arg2, arg3); result = (int)zts_bsd_bind(arg1, (zts_sockaddr const*)arg2, arg3);
jresult = result; jresult = result;
return jresult; return jresult;
} }
SWIGEXPORT int SWIGSTDCALL CSharp_zts_simple_bind(int jarg1, char* jarg2, int jarg3) SWIGEXPORT int SWIGSTDCALL CSharp_zts_bind(int jarg1, char* jarg2, int jarg3)
{ {
int jresult; int jresult;
int arg1; int arg1;
@@ -1169,12 +1169,12 @@ SWIGEXPORT int SWIGSTDCALL CSharp_zts_simple_bind(int jarg1, char* jarg2, int ja
arg1 = (int)jarg1; arg1 = (int)jarg1;
arg2 = (char*)jarg2; arg2 = (char*)jarg2;
arg3 = (int)jarg3; arg3 = (int)jarg3;
result = (int)zts_simple_bind(arg1, (char const*)arg2, arg3); result = (int)zts_bind(arg1, (char const*)arg2, arg3);
jresult = result; jresult = result;
return jresult; return jresult;
} }
SWIGEXPORT int SWIGSTDCALL CSharp_zts_listen(int jarg1, int jarg2) SWIGEXPORT int SWIGSTDCALL CSharp_zts_bsd_listen(int jarg1, int jarg2)
{ {
int jresult; int jresult;
int arg1; int arg1;
@@ -1182,12 +1182,12 @@ SWIGEXPORT int SWIGSTDCALL CSharp_zts_listen(int jarg1, int jarg2)
int result; int result;
arg1 = (int)jarg1; arg1 = (int)jarg1;
arg2 = (int)jarg2; arg2 = (int)jarg2;
result = (int)zts_listen(arg1, arg2); result = (int)zts_bsd_listen(arg1, arg2);
jresult = result; jresult = result;
return jresult; return jresult;
} }
SWIGEXPORT int SWIGSTDCALL CSharp_zts_accept(int jarg1, zts_sockaddr* jarg2, void* jarg3) SWIGEXPORT int SWIGSTDCALL CSharp_zts_bsd_accept(int jarg1, zts_sockaddr* jarg2, void* jarg3)
{ {
int jresult; int jresult;
int arg1; int arg1;
@@ -1197,12 +1197,12 @@ SWIGEXPORT int SWIGSTDCALL CSharp_zts_accept(int jarg1, zts_sockaddr* jarg2, voi
arg1 = (int)jarg1; arg1 = (int)jarg1;
arg2 = (zts_sockaddr*)jarg2; arg2 = (zts_sockaddr*)jarg2;
arg3 = (zts_socklen_t*)jarg3; arg3 = (zts_socklen_t*)jarg3;
result = (int)zts_accept(arg1, arg2, arg3); result = (int)zts_bsd_accept(arg1, arg2, arg3);
jresult = result; jresult = result;
return jresult; return jresult;
} }
SWIGEXPORT int SWIGSTDCALL CSharp_zts_simple_accept(int jarg1, char* jarg2, int jarg3, void* jarg4) SWIGEXPORT int SWIGSTDCALL CSharp_zts_accept(int jarg1, char* jarg2, int jarg3, void* jarg4)
{ {
int arg1; int arg1;
char* arg2 = (char*)0; char* arg2 = (char*)0;
@@ -1212,10 +1212,10 @@ SWIGEXPORT int SWIGSTDCALL CSharp_zts_simple_accept(int jarg1, char* jarg2, int
arg2 = (char*)jarg2; arg2 = (char*)jarg2;
arg3 = (int)jarg3; arg3 = (int)jarg3;
arg4 = (unsigned short*)jarg4; arg4 = (unsigned short*)jarg4;
return zts_simple_accept(arg1, arg2, arg3, arg4); return zts_accept(arg1, arg2, arg3, arg4);
} }
SWIGEXPORT int SWIGSTDCALL CSharp_zts_simple_tcp_client(char* jarg1, int jarg2) SWIGEXPORT int SWIGSTDCALL CSharp_zts_tcp_client(char* jarg1, int jarg2)
{ {
int jresult; int jresult;
char* arg1 = (char*)0; char* arg1 = (char*)0;
@@ -1223,12 +1223,12 @@ SWIGEXPORT int SWIGSTDCALL CSharp_zts_simple_tcp_client(char* jarg1, int jarg2)
int result; int result;
arg1 = (char*)jarg1; arg1 = (char*)jarg1;
arg2 = (int)jarg2; arg2 = (int)jarg2;
result = (int)zts_simple_tcp_client((char const*)arg1, arg2); result = (int)zts_tcp_client((char const*)arg1, arg2);
jresult = result; jresult = result;
return jresult; return jresult;
} }
SWIGEXPORT int SWIGSTDCALL CSharp_zts_simple_tcp_server(char* jarg1, int jarg2, char* jarg3, int jarg4, void* jarg5) SWIGEXPORT int SWIGSTDCALL CSharp_zts_tcp_server(char* jarg1, int jarg2, char* jarg3, int jarg4, void* jarg5)
{ {
char* arg1 = (char*)0; char* arg1 = (char*)0;
int arg2; int arg2;
@@ -1240,10 +1240,10 @@ SWIGEXPORT int SWIGSTDCALL CSharp_zts_simple_tcp_server(char* jarg1, int jarg2,
arg3 = (char*)jarg3; arg3 = (char*)jarg3;
arg4 = (int)jarg4; arg4 = (int)jarg4;
arg5 = (unsigned short*)jarg5; arg5 = (unsigned short*)jarg5;
return zts_simple_tcp_server((char const*)arg1, arg2, arg3, arg4, arg5); return zts_tcp_server((char const*)arg1, arg2, arg3, arg4, arg5);
} }
SWIGEXPORT int SWIGSTDCALL CSharp_zts_simple_udp_server(char* jarg1, int jarg2) SWIGEXPORT int SWIGSTDCALL CSharp_zts_udp_server(char* jarg1, int jarg2)
{ {
int jresult; int jresult;
char* arg1 = (char*)0; char* arg1 = (char*)0;
@@ -1251,23 +1251,23 @@ SWIGEXPORT int SWIGSTDCALL CSharp_zts_simple_udp_server(char* jarg1, int jarg2)
int result; int result;
arg1 = (char*)jarg1; arg1 = (char*)jarg1;
arg2 = (int)jarg2; arg2 = (int)jarg2;
result = (int)zts_simple_udp_server((char const*)arg1, arg2); result = (int)zts_udp_server((char const*)arg1, arg2);
jresult = result; jresult = result;
return jresult; return jresult;
} }
SWIGEXPORT int SWIGSTDCALL CSharp_zts_simple_udp_client(char* jarg1) SWIGEXPORT int SWIGSTDCALL CSharp_zts_udp_client(char* jarg1)
{ {
int jresult; int jresult;
char* arg1 = (char*)0; char* arg1 = (char*)0;
int result; int result;
arg1 = (char*)jarg1; arg1 = (char*)jarg1;
result = (int)zts_simple_udp_client((char const*)arg1); result = (int)zts_udp_client((char const*)arg1);
jresult = result; jresult = result;
return jresult; return jresult;
} }
SWIGEXPORT int SWIGSTDCALL CSharp_zts_setsockopt(int jarg1, int jarg2, int jarg3, void* jarg4, unsigned short jarg5) SWIGEXPORT int SWIGSTDCALL CSharp_zts_bsd_setsockopt(int jarg1, int jarg2, int jarg3, void* jarg4, unsigned short jarg5)
{ {
int jresult; int jresult;
int arg1; int arg1;
@@ -1281,12 +1281,12 @@ SWIGEXPORT int SWIGSTDCALL CSharp_zts_setsockopt(int jarg1, int jarg2, int jarg3
arg3 = (int)jarg3; arg3 = (int)jarg3;
arg4 = (void*)jarg4; arg4 = (void*)jarg4;
arg5 = (zts_socklen_t)jarg5; arg5 = (zts_socklen_t)jarg5;
result = (int)zts_setsockopt(arg1, arg2, arg3, (void const*)arg4, arg5); result = (int)zts_bsd_setsockopt(arg1, arg2, arg3, (void const*)arg4, arg5);
jresult = result; jresult = result;
return jresult; return jresult;
} }
SWIGEXPORT int SWIGSTDCALL CSharp_zts_getsockopt(int jarg1, int jarg2, int jarg3, void* jarg4, void* jarg5) SWIGEXPORT int SWIGSTDCALL CSharp_zts_bsd_getsockopt(int jarg1, int jarg2, int jarg3, void* jarg4, void* jarg5)
{ {
int jresult; int jresult;
int arg1; int arg1;
@@ -1300,12 +1300,12 @@ SWIGEXPORT int SWIGSTDCALL CSharp_zts_getsockopt(int jarg1, int jarg2, int jarg3
arg3 = (int)jarg3; arg3 = (int)jarg3;
arg4 = (void*)jarg4; arg4 = (void*)jarg4;
arg5 = (zts_socklen_t*)jarg5; arg5 = (zts_socklen_t*)jarg5;
result = (int)zts_getsockopt(arg1, arg2, arg3, arg4, arg5); result = (int)zts_bsd_getsockopt(arg1, arg2, arg3, arg4, arg5);
jresult = result; jresult = result;
return jresult; return jresult;
} }
SWIGEXPORT int SWIGSTDCALL CSharp_zts_getsockname(int jarg1, zts_sockaddr* jarg2, void* jarg3) SWIGEXPORT int SWIGSTDCALL CSharp_zts_bsd_getsockname(int jarg1, zts_sockaddr* jarg2, void* jarg3)
{ {
int jresult; int jresult;
int arg1; int arg1;
@@ -1315,12 +1315,12 @@ SWIGEXPORT int SWIGSTDCALL CSharp_zts_getsockname(int jarg1, zts_sockaddr* jarg2
arg1 = (int)jarg1; arg1 = (int)jarg1;
arg2 = (zts_sockaddr*)jarg2; arg2 = (zts_sockaddr*)jarg2;
arg3 = (zts_socklen_t*)jarg3; arg3 = (zts_socklen_t*)jarg3;
result = (int)zts_getsockname(arg1, arg2, arg3); result = (int)zts_bsd_getsockname(arg1, arg2, arg3);
jresult = result; jresult = result;
return jresult; return jresult;
} }
SWIGEXPORT int SWIGSTDCALL CSharp_zts_getpeername(int jarg1, zts_sockaddr* jarg2, void* jarg3) SWIGEXPORT int SWIGSTDCALL CSharp_zts_bsd_getpeername(int jarg1, zts_sockaddr* jarg2, void* jarg3)
{ {
int jresult; int jresult;
int arg1; int arg1;
@@ -1330,23 +1330,23 @@ SWIGEXPORT int SWIGSTDCALL CSharp_zts_getpeername(int jarg1, zts_sockaddr* jarg2
arg1 = (int)jarg1; arg1 = (int)jarg1;
arg2 = (zts_sockaddr*)jarg2; arg2 = (zts_sockaddr*)jarg2;
arg3 = (zts_socklen_t*)jarg3; arg3 = (zts_socklen_t*)jarg3;
result = (int)zts_getpeername(arg1, arg2, arg3); result = (int)zts_bsd_getpeername(arg1, arg2, arg3);
jresult = result; jresult = result;
return jresult; return jresult;
} }
SWIGEXPORT int SWIGSTDCALL CSharp_zts_close(int jarg1) SWIGEXPORT int SWIGSTDCALL CSharp_zts_bsd_close(int jarg1)
{ {
int jresult; int jresult;
int arg1; int arg1;
int result; int result;
arg1 = (int)jarg1; arg1 = (int)jarg1;
result = (int)zts_close(arg1); result = (int)zts_bsd_close(arg1);
jresult = result; jresult = result;
return jresult; return jresult;
} }
SWIGEXPORT int SWIGSTDCALL CSharp_zts_select(int jarg1, void* jarg2, void* jarg3, void* jarg4, void* jarg5) SWIGEXPORT int SWIGSTDCALL CSharp_zts_bsd_select(int jarg1, void* jarg2, void* jarg3, void* jarg4, void* jarg5)
{ {
int jresult; int jresult;
int arg1; int arg1;
@@ -1360,12 +1360,12 @@ SWIGEXPORT int SWIGSTDCALL CSharp_zts_select(int jarg1, void* jarg2, void* jarg3
arg3 = (zts_fd_set*)jarg3; arg3 = (zts_fd_set*)jarg3;
arg4 = (zts_fd_set*)jarg4; arg4 = (zts_fd_set*)jarg4;
arg5 = (zts_timeval*)jarg5; arg5 = (zts_timeval*)jarg5;
result = (int)zts_select(arg1, arg2, arg3, arg4, arg5); result = (int)zts_bsd_select(arg1, arg2, arg3, arg4, arg5);
jresult = result; jresult = result;
return jresult; return jresult;
} }
SWIGEXPORT int SWIGSTDCALL CSharp_zts_fcntl(int jarg1, int jarg2, int jarg3) SWIGEXPORT int SWIGSTDCALL CSharp_zts_bsd_fcntl(int jarg1, int jarg2, int jarg3)
{ {
int jresult; int jresult;
int arg1; int arg1;
@@ -1375,12 +1375,12 @@ SWIGEXPORT int SWIGSTDCALL CSharp_zts_fcntl(int jarg1, int jarg2, int jarg3)
arg1 = (int)jarg1; arg1 = (int)jarg1;
arg2 = (int)jarg2; arg2 = (int)jarg2;
arg3 = (int)jarg3; arg3 = (int)jarg3;
result = (int)zts_fcntl(arg1, arg2, arg3); result = (int)zts_bsd_fcntl(arg1, arg2, arg3);
jresult = result; jresult = result;
return jresult; return jresult;
} }
SWIGEXPORT int SWIGSTDCALL CSharp_zts_poll(void* jarg1, unsigned int jarg2, int jarg3) SWIGEXPORT int SWIGSTDCALL CSharp_zts_bsd_poll(void* jarg1, unsigned int jarg2, int jarg3)
{ {
int jresult; int jresult;
zts_pollfd* arg1 = (zts_pollfd*)0; zts_pollfd* arg1 = (zts_pollfd*)0;
@@ -1390,12 +1390,12 @@ SWIGEXPORT int SWIGSTDCALL CSharp_zts_poll(void* jarg1, unsigned int jarg2, int
arg1 = (zts_pollfd*)jarg1; arg1 = (zts_pollfd*)jarg1;
arg2 = (zts_nfds_t)jarg2; arg2 = (zts_nfds_t)jarg2;
arg3 = (int)jarg3; arg3 = (int)jarg3;
result = (int)zts_poll(arg1, arg2, arg3); result = (int)zts_bsd_poll(arg1, arg2, arg3);
jresult = result; jresult = result;
return jresult; return jresult;
} }
SWIGEXPORT int SWIGSTDCALL CSharp_zts_ioctl(int jarg1, unsigned long jarg2, void* jarg3) SWIGEXPORT int SWIGSTDCALL CSharp_zts_bsd_ioctl(int jarg1, unsigned long jarg2, void* jarg3)
{ {
int jresult; int jresult;
int arg1; int arg1;
@@ -1405,12 +1405,12 @@ SWIGEXPORT int SWIGSTDCALL CSharp_zts_ioctl(int jarg1, unsigned long jarg2, void
arg1 = (int)jarg1; arg1 = (int)jarg1;
arg2 = (unsigned long)jarg2; arg2 = (unsigned long)jarg2;
arg3 = (void*)jarg3; arg3 = (void*)jarg3;
result = (int)zts_ioctl(arg1, arg2, arg3); result = (int)zts_bsd_ioctl(arg1, arg2, arg3);
jresult = result; jresult = result;
return jresult; return jresult;
} }
SWIGEXPORT int SWIGSTDCALL CSharp_zts_send(int jarg1, void* jarg2, unsigned long jarg3, int jarg4) SWIGEXPORT int SWIGSTDCALL CSharp_zts_bsd_send(int jarg1, void* jarg2, unsigned long jarg3, int jarg4)
{ {
int arg1; int arg1;
void* arg2 = (void*)0; void* arg2 = (void*)0;
@@ -1420,11 +1420,11 @@ SWIGEXPORT int SWIGSTDCALL CSharp_zts_send(int jarg1, void* jarg2, unsigned long
arg2 = (void*)jarg2; arg2 = (void*)jarg2;
arg3 = (size_t)jarg3; arg3 = (size_t)jarg3;
arg4 = (int)jarg4; arg4 = (int)jarg4;
return zts_send(arg1, (void const*)arg2, arg3, arg4); return zts_bsd_send(arg1, (void const*)arg2, arg3, arg4);
} }
SWIGEXPORT int SWIGSTDCALL SWIGEXPORT int SWIGSTDCALL
CSharp_zts_sendto(int jarg1, void* jarg2, unsigned long jarg3, int jarg4, zts_sockaddr* jarg5, unsigned short jarg6) CSharp_zts_bsd_sendto(int jarg1, void* jarg2, unsigned long jarg3, int jarg4, zts_sockaddr* jarg5, unsigned short jarg6)
{ {
int arg1; int arg1;
void* arg2 = (void*)0; void* arg2 = (void*)0;
@@ -1438,7 +1438,7 @@ CSharp_zts_sendto(int jarg1, void* jarg2, unsigned long jarg3, int jarg4, zts_so
arg4 = (int)jarg4; arg4 = (int)jarg4;
arg5 = (zts_sockaddr*)jarg5; arg5 = (zts_sockaddr*)jarg5;
arg6 = (zts_socklen_t)jarg6; arg6 = (zts_socklen_t)jarg6;
return zts_sendto(arg1, (void const*)arg2, arg3, arg4, (zts_sockaddr const*)arg5, arg6); return zts_bsd_sendto(arg1, (void const*)arg2, arg3, arg4, (zts_sockaddr const*)arg5, arg6);
} }
SWIGEXPORT void* SWIGSTDCALL CSharp_new_zts_iovec() SWIGEXPORT void* SWIGSTDCALL CSharp_new_zts_iovec()
@@ -1451,7 +1451,7 @@ SWIGEXPORT void* SWIGSTDCALL CSharp_new_zts_iovec()
return jresult; return jresult;
} }
SWIGEXPORT int SWIGSTDCALL CSharp_zts_sendmsg(int jarg1, void* jarg2, int jarg3) SWIGEXPORT int SWIGSTDCALL CSharp_zts_bsd_sendmsg(int jarg1, void* jarg2, int jarg3)
{ {
int arg1; int arg1;
zts_msghdr* arg2 = (zts_msghdr*)0; zts_msghdr* arg2 = (zts_msghdr*)0;
@@ -1459,10 +1459,10 @@ SWIGEXPORT int SWIGSTDCALL CSharp_zts_sendmsg(int jarg1, void* jarg2, int jarg3)
arg1 = (int)jarg1; arg1 = (int)jarg1;
arg2 = (zts_msghdr*)jarg2; arg2 = (zts_msghdr*)jarg2;
arg3 = (int)jarg3; arg3 = (int)jarg3;
return zts_sendmsg(arg1, (zts_msghdr const*)arg2, arg3); return zts_bsd_sendmsg(arg1, (zts_msghdr const*)arg2, arg3);
} }
SWIGEXPORT int SWIGSTDCALL CSharp_zts_recv(int jarg1, void* jarg2, unsigned long jarg3, int jarg4) SWIGEXPORT int SWIGSTDCALL CSharp_zts_bsd_recv(int jarg1, void* jarg2, unsigned long jarg3, int jarg4)
{ {
int arg1; int arg1;
void* arg2 = (void*)0; void* arg2 = (void*)0;
@@ -1472,11 +1472,11 @@ SWIGEXPORT int SWIGSTDCALL CSharp_zts_recv(int jarg1, void* jarg2, unsigned long
arg2 = (void*)jarg2; arg2 = (void*)jarg2;
arg3 = (size_t)jarg3; arg3 = (size_t)jarg3;
arg4 = (int)jarg4; arg4 = (int)jarg4;
return zts_recv(arg1, arg2, arg3, arg4); return zts_bsd_recv(arg1, arg2, arg3, arg4);
} }
SWIGEXPORT int SWIGSTDCALL SWIGEXPORT int SWIGSTDCALL
CSharp_zts_recvfrom(int jarg1, void* jarg2, unsigned long jarg3, int jarg4, zts_sockaddr* jarg5, void* jarg6) CSharp_zts_bsd_recvfrom(int jarg1, void* jarg2, unsigned long jarg3, int jarg4, zts_sockaddr* jarg5, void* jarg6)
{ {
int arg1; int arg1;
void* arg2 = (void*)0; void* arg2 = (void*)0;
@@ -1490,10 +1490,10 @@ CSharp_zts_recvfrom(int jarg1, void* jarg2, unsigned long jarg3, int jarg4, zts_
arg4 = (int)jarg4; arg4 = (int)jarg4;
arg5 = (zts_sockaddr*)jarg5; arg5 = (zts_sockaddr*)jarg5;
arg6 = (zts_socklen_t*)jarg6; arg6 = (zts_socklen_t*)jarg6;
return zts_recvfrom(arg1, arg2, arg3, arg4, arg5, arg6); return zts_bsd_recvfrom(arg1, arg2, arg3, arg4, arg5, arg6);
} }
SWIGEXPORT int SWIGSTDCALL CSharp_zts_recvmsg(int jarg1, void* jarg2, int jarg3) SWIGEXPORT int SWIGSTDCALL CSharp_zts_bsd_recvmsg(int jarg1, void* jarg2, int jarg3)
{ {
int arg1; int arg1;
zts_msghdr* arg2 = (zts_msghdr*)0; zts_msghdr* arg2 = (zts_msghdr*)0;
@@ -1501,10 +1501,10 @@ SWIGEXPORT int SWIGSTDCALL CSharp_zts_recvmsg(int jarg1, void* jarg2, int jarg3)
arg1 = (int)jarg1; arg1 = (int)jarg1;
arg2 = (zts_msghdr*)jarg2; arg2 = (zts_msghdr*)jarg2;
arg3 = (int)jarg3; arg3 = (int)jarg3;
return zts_recvmsg(arg1, arg2, arg3); return zts_bsd_recvmsg(arg1, arg2, arg3);
} }
SWIGEXPORT int SWIGSTDCALL CSharp_zts_read(int jarg1, void* jarg2, unsigned long jarg3) SWIGEXPORT int SWIGSTDCALL CSharp_zts_bsd_read(int jarg1, void* jarg2, unsigned long jarg3)
{ {
int arg1; int arg1;
void* arg2 = (void*)0; void* arg2 = (void*)0;
@@ -1512,10 +1512,10 @@ SWIGEXPORT int SWIGSTDCALL CSharp_zts_read(int jarg1, void* jarg2, unsigned long
arg1 = (int)jarg1; arg1 = (int)jarg1;
arg2 = (void*)jarg2; arg2 = (void*)jarg2;
arg3 = (size_t)jarg3; arg3 = (size_t)jarg3;
return zts_read(arg1, arg2, arg3); return zts_bsd_read(arg1, arg2, arg3);
} }
SWIGEXPORT int SWIGSTDCALL CSharp_zts_readv(int jarg1, void* jarg2, int jarg3) SWIGEXPORT int SWIGSTDCALL CSharp_zts_bsd_readv(int jarg1, void* jarg2, int jarg3)
{ {
int arg1; int arg1;
zts_iovec* arg2 = (zts_iovec*)0; zts_iovec* arg2 = (zts_iovec*)0;
@@ -1523,10 +1523,10 @@ SWIGEXPORT int SWIGSTDCALL CSharp_zts_readv(int jarg1, void* jarg2, int jarg3)
arg1 = (int)jarg1; arg1 = (int)jarg1;
arg2 = (zts_iovec*)jarg2; arg2 = (zts_iovec*)jarg2;
arg3 = (int)jarg3; arg3 = (int)jarg3;
return zts_readv(arg1, (zts_iovec const*)arg2, arg3); return zts_bsd_readv(arg1, (zts_iovec const*)arg2, arg3);
} }
SWIGEXPORT int SWIGSTDCALL CSharp_zts_write(int jarg1, void* jarg2, unsigned long jarg3) SWIGEXPORT int SWIGSTDCALL CSharp_zts_bsd_write(int jarg1, void* jarg2, unsigned long jarg3)
{ {
int arg1; int arg1;
void* arg2 = (void*)0; void* arg2 = (void*)0;
@@ -1534,10 +1534,10 @@ SWIGEXPORT int SWIGSTDCALL CSharp_zts_write(int jarg1, void* jarg2, unsigned lon
arg1 = (int)jarg1; arg1 = (int)jarg1;
arg2 = (void*)jarg2; arg2 = (void*)jarg2;
arg3 = (size_t)jarg3; arg3 = (size_t)jarg3;
return zts_write(arg1, (void const*)arg2, arg3); return zts_bsd_write(arg1, (void const*)arg2, arg3);
} }
SWIGEXPORT int SWIGSTDCALL CSharp_zts_writev(int jarg1, void* jarg2, int jarg3) SWIGEXPORT int SWIGSTDCALL CSharp_zts_bsd_writev(int jarg1, void* jarg2, int jarg3)
{ {
int arg1; int arg1;
zts_iovec* arg2 = (zts_iovec*)0; zts_iovec* arg2 = (zts_iovec*)0;
@@ -1545,10 +1545,10 @@ SWIGEXPORT int SWIGSTDCALL CSharp_zts_writev(int jarg1, void* jarg2, int jarg3)
arg1 = (int)jarg1; arg1 = (int)jarg1;
arg2 = (zts_iovec*)jarg2; arg2 = (zts_iovec*)jarg2;
arg3 = (int)jarg3; arg3 = (int)jarg3;
return zts_writev(arg1, (zts_iovec const*)arg2, arg3); return zts_bsd_writev(arg1, (zts_iovec const*)arg2, arg3);
} }
SWIGEXPORT int SWIGSTDCALL CSharp_zts_shutdown(int jarg1, int jarg2) SWIGEXPORT int SWIGSTDCALL CSharp_zts_bsd_shutdown(int jarg1, int jarg2)
{ {
int jresult; int jresult;
int arg1; int arg1;
@@ -1556,12 +1556,12 @@ SWIGEXPORT int SWIGSTDCALL CSharp_zts_shutdown(int jarg1, int jarg2)
int result; int result;
arg1 = (int)jarg1; arg1 = (int)jarg1;
arg2 = (int)jarg2; arg2 = (int)jarg2;
result = (int)zts_shutdown(arg1, arg2); result = (int)zts_bsd_shutdown(arg1, arg2);
jresult = result; jresult = result;
return jresult; return jresult;
} }
SWIGEXPORT int SWIGSTDCALL CSharp_zts_simple_set_no_delay(int jarg1, int jarg2) SWIGEXPORT int SWIGSTDCALL CSharp_zts_set_no_delay(int jarg1, int jarg2)
{ {
int jresult; int jresult;
int arg1; int arg1;
@@ -1569,23 +1569,23 @@ SWIGEXPORT int SWIGSTDCALL CSharp_zts_simple_set_no_delay(int jarg1, int jarg2)
int result; int result;
arg1 = (int)jarg1; arg1 = (int)jarg1;
arg2 = (int)jarg2; arg2 = (int)jarg2;
result = (int)zts_simple_set_no_delay(arg1, arg2); result = (int)zts_set_no_delay(arg1, arg2);
jresult = result; jresult = result;
return jresult; return jresult;
} }
SWIGEXPORT int SWIGSTDCALL CSharp_zts_simple_get_no_delay(int jarg1) SWIGEXPORT int SWIGSTDCALL CSharp_zts_get_no_delay(int jarg1)
{ {
int jresult; int jresult;
int arg1; int arg1;
int result; int result;
arg1 = (int)jarg1; arg1 = (int)jarg1;
result = (int)zts_simple_get_no_delay(arg1); result = (int)zts_get_no_delay(arg1);
jresult = result; jresult = result;
return jresult; return jresult;
} }
SWIGEXPORT int SWIGSTDCALL CSharp_zts_simple_set_linger(int jarg1, int jarg2, int jarg3) SWIGEXPORT int SWIGSTDCALL CSharp_zts_set_linger(int jarg1, int jarg2, int jarg3)
{ {
int jresult; int jresult;
int arg1; int arg1;
@@ -1595,34 +1595,34 @@ SWIGEXPORT int SWIGSTDCALL CSharp_zts_simple_set_linger(int jarg1, int jarg2, in
arg1 = (int)jarg1; arg1 = (int)jarg1;
arg2 = (int)jarg2; arg2 = (int)jarg2;
arg3 = (int)jarg3; arg3 = (int)jarg3;
result = (int)zts_simple_set_linger(arg1, arg2, arg3); result = (int)zts_set_linger(arg1, arg2, arg3);
jresult = result; jresult = result;
return jresult; return jresult;
} }
SWIGEXPORT int SWIGSTDCALL CSharp_zts_simple_get_linger_enabled(int jarg1) SWIGEXPORT int SWIGSTDCALL CSharp_zts_get_linger_enabled(int jarg1)
{ {
int jresult; int jresult;
int arg1; int arg1;
int result; int result;
arg1 = (int)jarg1; arg1 = (int)jarg1;
result = (int)zts_simple_get_linger_enabled(arg1); result = (int)zts_get_linger_enabled(arg1);
jresult = result; jresult = result;
return jresult; return jresult;
} }
SWIGEXPORT int SWIGSTDCALL CSharp_zts_simple_get_linger_value(int jarg1) SWIGEXPORT int SWIGSTDCALL CSharp_zts_get_linger_value(int jarg1)
{ {
int jresult; int jresult;
int arg1; int arg1;
int result; int result;
arg1 = (int)jarg1; arg1 = (int)jarg1;
result = (int)zts_simple_get_linger_value(arg1); result = (int)zts_get_linger_value(arg1);
jresult = result; jresult = result;
return jresult; return jresult;
} }
SWIGEXPORT int SWIGSTDCALL CSharp_zts_simple_set_reuse_addr(int jarg1, int jarg2) SWIGEXPORT int SWIGSTDCALL CSharp_zts_set_reuse_addr(int jarg1, int jarg2)
{ {
int jresult; int jresult;
int arg1; int arg1;
@@ -1630,23 +1630,23 @@ SWIGEXPORT int SWIGSTDCALL CSharp_zts_simple_set_reuse_addr(int jarg1, int jarg2
int result; int result;
arg1 = (int)jarg1; arg1 = (int)jarg1;
arg2 = (int)jarg2; arg2 = (int)jarg2;
result = (int)zts_simple_set_reuse_addr(arg1, arg2); result = (int)zts_set_reuse_addr(arg1, arg2);
jresult = result; jresult = result;
return jresult; return jresult;
} }
SWIGEXPORT int SWIGSTDCALL CSharp_zts_simple_get_reuse_addr(int jarg1) SWIGEXPORT int SWIGSTDCALL CSharp_zts_get_reuse_addr(int jarg1)
{ {
int jresult; int jresult;
int arg1; int arg1;
int result; int result;
arg1 = (int)jarg1; arg1 = (int)jarg1;
result = (int)zts_simple_get_reuse_addr(arg1); result = (int)zts_get_reuse_addr(arg1);
jresult = result; jresult = result;
return jresult; return jresult;
} }
SWIGEXPORT int SWIGSTDCALL CSharp_zts_simple_set_recv_timeout(int jarg1, int jarg2, int jarg3) SWIGEXPORT int SWIGSTDCALL CSharp_zts_set_recv_timeout(int jarg1, int jarg2, int jarg3)
{ {
int jresult; int jresult;
int arg1; int arg1;
@@ -1656,23 +1656,23 @@ SWIGEXPORT int SWIGSTDCALL CSharp_zts_simple_set_recv_timeout(int jarg1, int jar
arg1 = (int)jarg1; arg1 = (int)jarg1;
arg2 = (int)jarg2; arg2 = (int)jarg2;
arg3 = (int)jarg3; arg3 = (int)jarg3;
result = (int)zts_simple_set_recv_timeout(arg1, arg2, arg3); result = (int)zts_set_recv_timeout(arg1, arg2, arg3);
jresult = result; jresult = result;
return jresult; return jresult;
} }
SWIGEXPORT int SWIGSTDCALL CSharp_zts_simple_get_recv_timeout(int jarg1) SWIGEXPORT int SWIGSTDCALL CSharp_zts_get_recv_timeout(int jarg1)
{ {
int jresult; int jresult;
int arg1; int arg1;
int result; int result;
arg1 = (int)jarg1; arg1 = (int)jarg1;
result = (int)zts_simple_get_recv_timeout(arg1); result = (int)zts_get_recv_timeout(arg1);
jresult = result; jresult = result;
return jresult; return jresult;
} }
SWIGEXPORT int SWIGSTDCALL CSharp_zts_simple_set_send_timeout(int jarg1, int jarg2, int jarg3) SWIGEXPORT int SWIGSTDCALL CSharp_zts_set_send_timeout(int jarg1, int jarg2, int jarg3)
{ {
int jresult; int jresult;
int arg1; int arg1;
@@ -1682,23 +1682,23 @@ SWIGEXPORT int SWIGSTDCALL CSharp_zts_simple_set_send_timeout(int jarg1, int jar
arg1 = (int)jarg1; arg1 = (int)jarg1;
arg2 = (int)jarg2; arg2 = (int)jarg2;
arg3 = (int)jarg3; arg3 = (int)jarg3;
result = (int)zts_simple_set_send_timeout(arg1, arg2, arg3); result = (int)zts_set_send_timeout(arg1, arg2, arg3);
jresult = result; jresult = result;
return jresult; return jresult;
} }
SWIGEXPORT int SWIGSTDCALL CSharp_zts_simple_get_send_timeout(int jarg1) SWIGEXPORT int SWIGSTDCALL CSharp_zts_get_send_timeout(int jarg1)
{ {
int jresult; int jresult;
int arg1; int arg1;
int result; int result;
arg1 = (int)jarg1; arg1 = (int)jarg1;
result = (int)zts_simple_get_send_timeout(arg1); result = (int)zts_get_send_timeout(arg1);
jresult = result; jresult = result;
return jresult; return jresult;
} }
SWIGEXPORT int SWIGSTDCALL CSharp_zts_simple_set_send_buf_size(int jarg1, int jarg2) SWIGEXPORT int SWIGSTDCALL CSharp_zts_set_send_buf_size(int jarg1, int jarg2)
{ {
int jresult; int jresult;
int arg1; int arg1;
@@ -1706,23 +1706,23 @@ SWIGEXPORT int SWIGSTDCALL CSharp_zts_simple_set_send_buf_size(int jarg1, int ja
int result; int result;
arg1 = (int)jarg1; arg1 = (int)jarg1;
arg2 = (int)jarg2; arg2 = (int)jarg2;
result = (int)zts_simple_set_send_buf_size(arg1, arg2); result = (int)zts_set_send_buf_size(arg1, arg2);
jresult = result; jresult = result;
return jresult; return jresult;
} }
SWIGEXPORT int SWIGSTDCALL CSharp_zts_simple_get_send_buf_size(int jarg1) SWIGEXPORT int SWIGSTDCALL CSharp_zts_get_send_buf_size(int jarg1)
{ {
int jresult; int jresult;
int arg1; int arg1;
int result; int result;
arg1 = (int)jarg1; arg1 = (int)jarg1;
result = (int)zts_simple_get_send_buf_size(arg1); result = (int)zts_get_send_buf_size(arg1);
jresult = result; jresult = result;
return jresult; return jresult;
} }
SWIGEXPORT int SWIGSTDCALL CSharp_zts_simple_set_recv_buf_size(int jarg1, int jarg2) SWIGEXPORT int SWIGSTDCALL CSharp_zts_set_recv_buf_size(int jarg1, int jarg2)
{ {
int jresult; int jresult;
int arg1; int arg1;
@@ -1730,23 +1730,23 @@ SWIGEXPORT int SWIGSTDCALL CSharp_zts_simple_set_recv_buf_size(int jarg1, int ja
int result; int result;
arg1 = (int)jarg1; arg1 = (int)jarg1;
arg2 = (int)jarg2; arg2 = (int)jarg2;
result = (int)zts_simple_set_recv_buf_size(arg1, arg2); result = (int)zts_set_recv_buf_size(arg1, arg2);
jresult = result; jresult = result;
return jresult; return jresult;
} }
SWIGEXPORT int SWIGSTDCALL CSharp_zts_simple_get_recv_buf_size(int jarg1) SWIGEXPORT int SWIGSTDCALL CSharp_zts_get_recv_buf_size(int jarg1)
{ {
int jresult; int jresult;
int arg1; int arg1;
int result; int result;
arg1 = (int)jarg1; arg1 = (int)jarg1;
result = (int)zts_simple_get_recv_buf_size(arg1); result = (int)zts_get_recv_buf_size(arg1);
jresult = result; jresult = result;
return jresult; return jresult;
} }
SWIGEXPORT int SWIGSTDCALL CSharp_zts_simple_set_ttl(int jarg1, int jarg2) SWIGEXPORT int SWIGSTDCALL CSharp_zts_set_ttl(int jarg1, int jarg2)
{ {
int jresult; int jresult;
int arg1; int arg1;
@@ -1754,23 +1754,23 @@ SWIGEXPORT int SWIGSTDCALL CSharp_zts_simple_set_ttl(int jarg1, int jarg2)
int result; int result;
arg1 = (int)jarg1; arg1 = (int)jarg1;
arg2 = (int)jarg2; arg2 = (int)jarg2;
result = (int)zts_simple_set_ttl(arg1, arg2); result = (int)zts_set_ttl(arg1, arg2);
jresult = result; jresult = result;
return jresult; return jresult;
} }
SWIGEXPORT int SWIGSTDCALL CSharp_zts_simple_get_ttl(int jarg1) SWIGEXPORT int SWIGSTDCALL CSharp_zts_get_ttl(int jarg1)
{ {
int jresult; int jresult;
int arg1; int arg1;
int result; int result;
arg1 = (int)jarg1; arg1 = (int)jarg1;
result = (int)zts_simple_get_ttl(arg1); result = (int)zts_get_ttl(arg1);
jresult = result; jresult = result;
return jresult; return jresult;
} }
SWIGEXPORT int SWIGSTDCALL CSharp_zts_simple_set_blocking(int jarg1, int jarg2) SWIGEXPORT int SWIGSTDCALL CSharp_zts_set_blocking(int jarg1, int jarg2)
{ {
int jresult; int jresult;
int arg1; int arg1;
@@ -1778,23 +1778,23 @@ SWIGEXPORT int SWIGSTDCALL CSharp_zts_simple_set_blocking(int jarg1, int jarg2)
int result; int result;
arg1 = (int)jarg1; arg1 = (int)jarg1;
arg2 = (int)jarg2; arg2 = (int)jarg2;
result = (int)zts_simple_set_blocking(arg1, arg2); result = (int)zts_set_blocking(arg1, arg2);
jresult = result; jresult = result;
return jresult; return jresult;
} }
SWIGEXPORT int SWIGSTDCALL CSharp_zts_simple_get_blocking(int jarg1) SWIGEXPORT int SWIGSTDCALL CSharp_zts_get_blocking(int jarg1)
{ {
int jresult; int jresult;
int arg1; int arg1;
int result; int result;
arg1 = (int)jarg1; arg1 = (int)jarg1;
result = (int)zts_simple_get_blocking(arg1); result = (int)zts_get_blocking(arg1);
jresult = result; jresult = result;
return jresult; return jresult;
} }
SWIGEXPORT int SWIGSTDCALL CSharp_zts_simple_set_keepalive(int jarg1, int jarg2) SWIGEXPORT int SWIGSTDCALL CSharp_zts_set_keepalive(int jarg1, int jarg2)
{ {
int jresult; int jresult;
int arg1; int arg1;
@@ -1802,29 +1802,29 @@ SWIGEXPORT int SWIGSTDCALL CSharp_zts_simple_set_keepalive(int jarg1, int jarg2)
int result; int result;
arg1 = (int)jarg1; arg1 = (int)jarg1;
arg2 = (int)jarg2; arg2 = (int)jarg2;
result = (int)zts_simple_set_keepalive(arg1, arg2); result = (int)zts_set_keepalive(arg1, arg2);
jresult = result; jresult = result;
return jresult; return jresult;
} }
SWIGEXPORT int SWIGSTDCALL CSharp_zts_simple_get_keepalive(int jarg1) SWIGEXPORT int SWIGSTDCALL CSharp_zts_get_keepalive(int jarg1)
{ {
int jresult; int jresult;
int arg1; int arg1;
int result; int result;
arg1 = (int)jarg1; arg1 = (int)jarg1;
result = (int)zts_simple_get_keepalive(arg1); result = (int)zts_get_keepalive(arg1);
jresult = result; jresult = result;
return jresult; return jresult;
} }
SWIGEXPORT void* SWIGSTDCALL CSharp_zts_gethostbyname(char* jarg1) SWIGEXPORT void* SWIGSTDCALL CSharp_zts_bsd_gethostbyname(char* jarg1)
{ {
void* jresult; void* jresult;
char* arg1 = (char*)0; char* arg1 = (char*)0;
zts_hostent* result = 0; zts_hostent* result = 0;
arg1 = (char*)jarg1; arg1 = (char*)jarg1;
result = (zts_hostent*)zts_gethostbyname((char const*)arg1); result = (zts_hostent*)zts_bsd_gethostbyname((char const*)arg1);
jresult = (void*)result; jresult = (void*)result;
return jresult; return jresult;
} }

265
src/bindings/csharp/Socket.cs Executable file → Normal file
View File

@@ -91,7 +91,7 @@ namespace ZeroTier.Sockets
protocol = 0; // ? protocol = 0; // ?
break; break;
} }
if ((_fd = zts_socket(family, type, protocol)) < 0) { if ((_fd = zts_bsd_socket(family, type, protocol)) < 0) {
throw new ZeroTier.Sockets.SocketException((int)_fd); throw new ZeroTier.Sockets.SocketException((int)_fd);
} }
_socketFamily = addressFamily; _socketFamily = addressFamily;
@@ -129,11 +129,7 @@ namespace ZeroTier.Sockets
if (remoteEndPoint == null) { if (remoteEndPoint == null) {
throw new ArgumentNullException("remoteEndPoint"); throw new ArgumentNullException("remoteEndPoint");
} }
int err = zts_simple_connect( int err = zts_connect(_fd, remoteEndPoint.Address.ToString(), (ushort)remoteEndPoint.Port, _connectTimeout);
_fd,
remoteEndPoint.Address.ToString(),
(ushort)remoteEndPoint.Port,
_connectTimeout);
if (err < 0) { if (err < 0) {
throw new ZeroTier.Sockets.SocketException(err, ZeroTier.Core.Node.ErrNo); throw new ZeroTier.Sockets.SocketException(err, ZeroTier.Core.Node.ErrNo);
} }
@@ -155,11 +151,11 @@ namespace ZeroTier.Sockets
} }
int err = Constants.ERR_OK; int err = Constants.ERR_OK;
if (localEndPoint.AddressFamily == AddressFamily.InterNetwork) { if (localEndPoint.AddressFamily == AddressFamily.InterNetwork) {
err = zts_simple_bind(_fd, "0.0.0.0", (ushort)localEndPoint.Port); err = zts_bind(_fd, "0.0.0.0", (ushort)localEndPoint.Port);
} }
if (localEndPoint.AddressFamily == AddressFamily.InterNetworkV6) { if (localEndPoint.AddressFamily == AddressFamily.InterNetworkV6) {
// Todo: detect IPAddress.IPv6Any // Todo: detect IPAddress.IPv6Any
err = zts_simple_bind(_fd, "::", (ushort)localEndPoint.Port); err = zts_bind(_fd, "::", (ushort)localEndPoint.Port);
} }
if (err < 0) { if (err < 0) {
throw new ZeroTier.Sockets.SocketException((int)err); throw new ZeroTier.Sockets.SocketException((int)err);
@@ -178,7 +174,7 @@ namespace ZeroTier.Sockets
throw new ZeroTier.Sockets.SocketException((int)Constants.ERR_SOCKET); throw new ZeroTier.Sockets.SocketException((int)Constants.ERR_SOCKET);
} }
int err = Constants.ERR_OK; int err = Constants.ERR_OK;
if ((err = zts_listen(_fd, backlog)) < 0) { if ((err = zts_bsd_listen(_fd, backlog)) < 0) {
// Invalid backlog value perhaps? // Invalid backlog value perhaps?
throw new ZeroTier.Sockets.SocketException((int)Constants.ERR_SOCKET); throw new ZeroTier.Sockets.SocketException((int)Constants.ERR_SOCKET);
} }
@@ -199,14 +195,14 @@ namespace ZeroTier.Sockets
} }
IntPtr lpBuffer = Marshal.AllocHGlobal(ZeroTier.Constants.INET6_ADDRSTRLEN); IntPtr lpBuffer = Marshal.AllocHGlobal(ZeroTier.Constants.INET6_ADDRSTRLEN);
int port = 0; int port = 0;
int accepted_fd = zts_simple_accept(_fd, lpBuffer, ZeroTier.Constants.INET6_ADDRSTRLEN, ref port); int accepted_fd = zts_accept(_fd, lpBuffer, ZeroTier.Constants.INET6_ADDRSTRLEN, ref port);
// Convert buffer to managed string // Convert buffer to managed string
string str = Marshal.PtrToStringAnsi(lpBuffer); string str = Marshal.PtrToStringAnsi(lpBuffer);
Marshal.FreeHGlobal(lpBuffer); Marshal.FreeHGlobal(lpBuffer);
lpBuffer = IntPtr.Zero; lpBuffer = IntPtr.Zero;
IPEndPoint clientEndPoint = new IPEndPoint(IPAddress.Parse(str), port); IPEndPoint clientEndPoint = new IPEndPoint(IPAddress.Parse(str), port);
Console.WriteLine("clientEndPoint = " + clientEndPoint.ToString()); Console.WriteLine("clientEndPoint = " + clientEndPoint.ToString());
// Create new socket by providing file descriptor returned from zts_accept call. // Create new socket by providing file descriptor returned from zts_bsd_accept call.
Socket clientSocket = Socket clientSocket =
new Socket(accepted_fd, _socketFamily, _socketType, _socketProtocol, _localEndPoint, clientEndPoint); new Socket(accepted_fd, _socketFamily, _socketType, _socketProtocol, _localEndPoint, clientEndPoint);
return clientSocket; return clientSocket;
@@ -229,7 +225,7 @@ namespace ZeroTier.Sockets
ztHow = Constants.O_RDWR; ztHow = Constants.O_RDWR;
break; break;
} }
zts_shutdown(_fd, ztHow); zts_bsd_shutdown(_fd, ztHow);
} }
public void Close() public void Close()
@@ -237,17 +233,17 @@ namespace ZeroTier.Sockets
if (_isClosed) { if (_isClosed) {
throw new ObjectDisposedException("Socket has already been closed"); throw new ObjectDisposedException("Socket has already been closed");
} }
zts_close(_fd); zts_bsd_close(_fd);
_isClosed = true; _isClosed = true;
} }
public bool Blocking public bool Blocking
{ {
get { get {
return Convert.ToBoolean(zts_simple_get_blocking(_fd)); return Convert.ToBoolean(zts_get_blocking(_fd));
} }
set { set {
zts_simple_set_blocking(_fd, Convert.ToInt32(value)); zts_set_blocking(_fd, Convert.ToInt32(value));
} }
} }
@@ -272,7 +268,7 @@ namespace ZeroTier.Sockets
int result = 0; int result = 0;
int timeout_ms = (microSeconds / 1000); int timeout_ms = (microSeconds / 1000);
uint numfds = 1; uint numfds = 1;
if ((result = zts_poll(poll_fd_ptr, numfds, timeout_ms)) < 0) { if ((result = zts_bsd_poll(poll_fd_ptr, numfds, timeout_ms)) < 0) {
throw new ZeroTier.Sockets.SocketException(result, ZeroTier.Core.Node.ErrNo); throw new ZeroTier.Sockets.SocketException(result, ZeroTier.Core.Node.ErrNo);
} }
poll_set = (zts_pollfd)Marshal.PtrToStructure(poll_fd_ptr, typeof(zts_pollfd)); poll_set = (zts_pollfd)Marshal.PtrToStructure(poll_fd_ptr, typeof(zts_pollfd));
@@ -306,7 +302,7 @@ namespace ZeroTier.Sockets
} }
int flags = 0; int flags = 0;
IntPtr bufferPtr = Marshal.UnsafeAddrOfPinnedArrayElement(buffer, 0); IntPtr bufferPtr = Marshal.UnsafeAddrOfPinnedArrayElement(buffer, 0);
return zts_send(_fd, bufferPtr, (uint)Buffer.ByteLength(buffer), (int)flags); return zts_bsd_send(_fd, bufferPtr, (uint)Buffer.ByteLength(buffer), (int)flags);
} }
public Int32 Receive(Byte[] buffer) public Int32 Receive(Byte[] buffer)
@@ -322,7 +318,7 @@ namespace ZeroTier.Sockets
} }
int flags = 0; int flags = 0;
IntPtr bufferPtr = Marshal.UnsafeAddrOfPinnedArrayElement(buffer, 0); IntPtr bufferPtr = Marshal.UnsafeAddrOfPinnedArrayElement(buffer, 0);
return zts_recv(_fd, bufferPtr, (uint)Buffer.ByteLength(buffer), (int)flags); return zts_bsd_recv(_fd, bufferPtr, (uint)Buffer.ByteLength(buffer), (int)flags);
} }
public int ReceiveTimeout public int ReceiveTimeout
@@ -490,11 +486,11 @@ namespace ZeroTier.Sockets
[DllImport( [DllImport(
"libzt", "libzt",
CharSet = CharSet.Ansi, CharSet = CharSet.Ansi,
EntryPoint = "CSharp_zts_gethostbyname")] public static extern global::System.IntPtr EntryPoint = "CSharp_zts_bsd_gethostbyname")] public static extern global::System.IntPtr
zts_gethostbyname(string jarg1); zts_bsd_gethostbyname(string jarg1);
[DllImport("libzt", EntryPoint = "CSharp_zts_select")] [DllImport("libzt", EntryPoint = "CSharp_zts_bsd_select")]
static extern int zts_select( static extern int zts_bsd_select(
int jarg1, int jarg1,
global::System.Runtime.InteropServices.HandleRef jarg2, global::System.Runtime.InteropServices.HandleRef jarg2,
global::System.Runtime.InteropServices.HandleRef jarg3, global::System.Runtime.InteropServices.HandleRef jarg3,
@@ -507,86 +503,86 @@ namespace ZeroTier.Sockets
[DllImport("libzt", EntryPoint = "CSharp_zts_get_protocol_stats")] [DllImport("libzt", EntryPoint = "CSharp_zts_get_protocol_stats")]
static extern int zts_get_protocol_stats(int arg1, IntPtr arg2); static extern int zts_get_protocol_stats(int arg1, IntPtr arg2);
[DllImport("libzt", EntryPoint = "CSharp_zts_socket")] [DllImport("libzt", EntryPoint = "CSharp_zts_bsd_socket")]
static extern int zts_socket(int arg1, int arg2, int arg3); static extern int zts_bsd_socket(int arg1, int arg2, int arg3);
[DllImport("libzt", EntryPoint = "CSharp_zts_connect")] [DllImport("libzt", EntryPoint = "CSharp_zts_bsd_connect")]
static extern int zts_connect(int arg1, IntPtr arg2, ushort arg3); static extern int zts_bsd_connect(int arg1, IntPtr arg2, ushort arg3);
[DllImport("libzt", CharSet = CharSet.Ansi, EntryPoint = "CSharp_zts_connect_easy")] [DllImport("libzt", CharSet = CharSet.Ansi, EntryPoint = "CSharp_zts_bsd_connect_easy")]
static extern int zts_connect_easy(int arg1, int arg2, string arg3, ushort arg4, int arg5); static extern int zts_bsd_connect_easy(int arg1, int arg2, string arg3, ushort arg4, int arg5);
[DllImport("libzt", EntryPoint = "CSharp_zts_bind")] [DllImport("libzt", EntryPoint = "CSharp_zts_bsd_bind")]
static extern int zts_bind(int arg1, IntPtr arg2, ushort arg3); static extern int zts_bsd_bind(int arg1, IntPtr arg2, ushort arg3);
[DllImport("libzt", CharSet = CharSet.Ansi, EntryPoint = "CSharp_zts_bind_easy")] [DllImport("libzt", CharSet = CharSet.Ansi, EntryPoint = "CSharp_zts_bsd_bind_easy")]
static extern int zts_bind_easy(int arg1, int arg2, string arg3, ushort arg4); static extern int zts_bsd_bind_easy(int arg1, int arg2, string arg3, ushort arg4);
[DllImport("libzt", EntryPoint = "CSharp_zts_listen")] [DllImport("libzt", EntryPoint = "CSharp_zts_bsd_listen")]
static extern int zts_listen(int arg1, int arg2); static extern int zts_bsd_listen(int arg1, int arg2);
[DllImport("libzt", EntryPoint = "CSharp_zts_accept")] [DllImport("libzt", EntryPoint = "CSharp_zts_bsd_accept")]
static extern int zts_accept(int arg1, IntPtr arg2, IntPtr arg3); static extern int zts_bsd_accept(int arg1, IntPtr arg2, IntPtr arg3);
[DllImport("libzt", CharSet = CharSet.Ansi, EntryPoint = "CSharp_zts_accept_easy")] [DllImport("libzt", CharSet = CharSet.Ansi, EntryPoint = "CSharp_zts_bsd_accept_easy")]
static extern int zts_accept_easy(int arg1, IntPtr remoteAddrStr, int arg2, ref int arg3); static extern int zts_bsd_accept_easy(int arg1, IntPtr remoteAddrStr, int arg2, ref int arg3);
[DllImport("libzt", EntryPoint = "CSharp_zts_setsockopt")] [DllImport("libzt", EntryPoint = "CSharp_zts_bsd_setsockopt")]
static extern int zts_setsockopt(int arg1, int arg2, int arg3, IntPtr arg4, ushort arg5); static extern int zts_bsd_setsockopt(int arg1, int arg2, int arg3, IntPtr arg4, ushort arg5);
[DllImport("libzt", EntryPoint = "CSharp_zts_getsockopt")] [DllImport("libzt", EntryPoint = "CSharp_zts_bsd_getsockopt")]
static extern int zts_getsockopt(int arg1, int arg2, int arg3, IntPtr arg4, IntPtr arg5); static extern int zts_bsd_getsockopt(int arg1, int arg2, int arg3, IntPtr arg4, IntPtr arg5);
[DllImport("libzt", EntryPoint = "CSharp_zts_getsockname")] [DllImport("libzt", EntryPoint = "CSharp_zts_bsd_getsockname")]
static extern int zts_getsockname(int arg1, IntPtr arg2, IntPtr arg3); static extern int zts_bsd_getsockname(int arg1, IntPtr arg2, IntPtr arg3);
[DllImport("libzt", EntryPoint = "CSharp_zts_getpeername")] [DllImport("libzt", EntryPoint = "CSharp_zts_bsd_getpeername")]
static extern int zts_getpeername(int arg1, IntPtr arg2, IntPtr arg3); static extern int zts_bsd_getpeername(int arg1, IntPtr arg2, IntPtr arg3);
[DllImport("libzt", EntryPoint = "CSharp_zts_close")] [DllImport("libzt", EntryPoint = "CSharp_zts_bsd_close")]
static extern int zts_close(int arg1); static extern int zts_bsd_close(int arg1);
[DllImport("libzt", EntryPoint = "CSharp_zts_fcntl")] [DllImport("libzt", EntryPoint = "CSharp_zts_bsd_fcntl")]
static extern int zts_fcntl(int arg1, int arg2, int arg3); static extern int zts_bsd_fcntl(int arg1, int arg2, int arg3);
[DllImport("libzt", EntryPoint = "CSharp_zts_poll")] [DllImport("libzt", EntryPoint = "CSharp_zts_bsd_poll")]
static extern int zts_poll(IntPtr arg1, uint arg2, int arg3); static extern int zts_bsd_poll(IntPtr arg1, uint arg2, int arg3);
[DllImport("libzt", EntryPoint = "CSharp_zts_ioctl")] [DllImport("libzt", EntryPoint = "CSharp_zts_bsd_ioctl")]
static extern int zts_ioctl(int arg1, uint arg2, IntPtr arg3); static extern int zts_bsd_ioctl(int arg1, uint arg2, IntPtr arg3);
[DllImport("libzt", EntryPoint = "CSharp_zts_send")] [DllImport("libzt", EntryPoint = "CSharp_zts_bsd_send")]
static extern int zts_send(int arg1, IntPtr arg2, uint arg3, int arg4); static extern int zts_bsd_send(int arg1, IntPtr arg2, uint arg3, int arg4);
[DllImport("libzt", EntryPoint = "CSharp_zts_sendto")] [DllImport("libzt", EntryPoint = "CSharp_zts_bsd_sendto")]
static extern int zts_sendto(int arg1, IntPtr arg2, uint arg3, int arg4, IntPtr arg5, ushort arg6); static extern int zts_bsd_sendto(int arg1, IntPtr arg2, uint arg3, int arg4, IntPtr arg5, ushort arg6);
[DllImport("libzt", EntryPoint = "CSharp_zts_sendmsg")] [DllImport("libzt", EntryPoint = "CSharp_zts_bsd_sendmsg")]
static extern int zts_sendmsg(int arg1, IntPtr arg2, int arg3); static extern int zts_bsd_sendmsg(int arg1, IntPtr arg2, int arg3);
[DllImport("libzt", EntryPoint = "CSharp_zts_recv")] [DllImport("libzt", EntryPoint = "CSharp_zts_bsd_recv")]
static extern int zts_recv(int arg1, IntPtr arg2, uint arg3, int arg4); static extern int zts_bsd_recv(int arg1, IntPtr arg2, uint arg3, int arg4);
[DllImport("libzt", EntryPoint = "CSharp_zts_recvfrom")] [DllImport("libzt", EntryPoint = "CSharp_zts_bsd_recvfrom")]
static extern int zts_recvfrom(int arg1, IntPtr arg2, uint arg3, int arg4, IntPtr arg5, IntPtr arg6); static extern int zts_bsd_recvfrom(int arg1, IntPtr arg2, uint arg3, int arg4, IntPtr arg5, IntPtr arg6);
[DllImport("libzt", EntryPoint = "CSharp_zts_recvmsg")] [DllImport("libzt", EntryPoint = "CSharp_zts_bsd_recvmsg")]
static extern int zts_recvmsg(int arg1, IntPtr arg2, int arg3); static extern int zts_bsd_recvmsg(int arg1, IntPtr arg2, int arg3);
[DllImport("libzt", EntryPoint = "CSharp_zts_read")] [DllImport("libzt", EntryPoint = "CSharp_zts_bsd_read")]
static extern int zts_read(int arg1, IntPtr arg2, uint arg3); static extern int zts_bsd_read(int arg1, IntPtr arg2, uint arg3);
[DllImport("libzt", EntryPoint = "CSharp_zts_readv")] [DllImport("libzt", EntryPoint = "CSharp_zts_bsd_readv")]
static extern int zts_readv(int arg1, IntPtr arg2, int arg3); static extern int zts_bsd_readv(int arg1, IntPtr arg2, int arg3);
[DllImport("libzt", EntryPoint = "CSharp_zts_write")] [DllImport("libzt", EntryPoint = "CSharp_zts_bsd_write")]
static extern int zts_write(int arg1, IntPtr arg2, uint arg3); static extern int zts_bsd_write(int arg1, IntPtr arg2, uint arg3);
[DllImport("libzt", EntryPoint = "CSharp_zts_writev")] [DllImport("libzt", EntryPoint = "CSharp_zts_bsd_writev")]
static extern int zts_writev(int arg1, IntPtr arg2, int arg3); static extern int zts_bsd_writev(int arg1, IntPtr arg2, int arg3);
[DllImport("libzt", EntryPoint = "CSharp_zts_shutdown")] [DllImport("libzt", EntryPoint = "CSharp_zts_bsd_shutdown")]
static extern int zts_shutdown(int arg1, int arg2); static extern int zts_bsd_shutdown(int arg1, int arg2);
[DllImport("libzt", EntryPoint = "CSharp_zts_set_no_delay")] [DllImport("libzt", EntryPoint = "CSharp_zts_set_no_delay")]
static extern int zts_set_no_delay(int fd, int enabled); static extern int zts_set_no_delay(int fd, int enabled);
@@ -660,97 +656,102 @@ namespace ZeroTier.Sockets
[DllImport("libzt", EntryPoint = "CSharp_zts_errno_get")] [DllImport("libzt", EntryPoint = "CSharp_zts_errno_get")]
static extern int zts_errno_get(); static extern int zts_errno_get();
[DllImport("libzt", CharSet = CharSet.Ansi, EntryPoint = "CSharp_zts_simple_accept")] [DllImport("libzt", CharSet = CharSet.Ansi, EntryPoint = "CSharp_zts_accept")]
static extern int zts_simple_accept(int jarg1, IntPtr jarg2, int jarg3, ref int jarg4); static extern int zts_accept(int jarg1, IntPtr jarg2, int jarg3, ref int jarg4);
[DllImport("libzt", CharSet = CharSet.Ansi, EntryPoint = "CSharp_zts_simple_tcp_client")] [DllImport("libzt", CharSet = CharSet.Ansi, EntryPoint = "CSharp_zts_tcp_client")]
static extern int zts_simple_tcp_client(string jarg1, int jarg2); static extern int zts_tcp_client(string jarg1, int jarg2);
[DllImport("libzt", CharSet = CharSet.Ansi, EntryPoint = "CSharp_zts_simple_tcp_server")] [DllImport("libzt", CharSet = CharSet.Ansi, EntryPoint = "CSharp_zts_tcp_server")]
static extern int zts_simple_tcp_server( static extern int zts_tcp_server(
string jarg1, string jarg1,
int jarg2, int jarg2,
string jarg3, string jarg3,
int jarg4, int jarg4,
global::System.Runtime.InteropServices.HandleRef jarg5); global::System.Runtime.InteropServices.HandleRef jarg5);
[DllImport("libzt", CharSet = CharSet.Ansi, EntryPoint = "CSharp_zts_simple_udp_server")] [DllImport("libzt", CharSet = CharSet.Ansi, EntryPoint = "CSharp_zts_udp_server")]
static extern int zts_simple_udp_server(string jarg1, int jarg2); static extern int zts_udp_server(string jarg1, int jarg2);
[DllImport("libzt", CharSet = CharSet.Ansi, EntryPoint = "CSharp_zts_simple_udp_client")] [DllImport("libzt", CharSet = CharSet.Ansi, EntryPoint = "CSharp_zts_udp_client")]
static extern int zts_simple_udp_client(string jarg1); static extern int zts_udp_client(string jarg1);
[DllImport("libzt", CharSet = CharSet.Ansi, EntryPoint = "CSharp_zts_simple_bind")] [DllImport("libzt", CharSet = CharSet.Ansi, EntryPoint = "CSharp_zts_bind")]
static extern int zts_simple_bind(int jarg1, string jarg2, int jarg3); static extern int zts_bind(int jarg1, string jarg2, int jarg3);
[DllImport("libzt", CharSet = CharSet.Ansi, EntryPoint = "CSharp_zts_simple_connect")] [DllImport("libzt", CharSet = CharSet.Ansi, EntryPoint = "CSharp_zts_connect")]
static extern int zts_simple_connect(int jarg1, string jarg2, int jarg3, int jarg4); static extern int zts_connect(int jarg1, string jarg2, int jarg3, int jarg4);
[DllImport("libzt", EntryPoint = "CSharp_zts_stats_get_all")] [DllImport("libzt", EntryPoint = "CSharp_zts_stats_get_all")]
static extern int zts_stats_get_all(global::System.Runtime.InteropServices.HandleRef jarg1); static extern int zts_stats_get_all(global::System.Runtime.InteropServices.HandleRef jarg1);
[DllImport("libzt", EntryPoint = "CSharp_zts_simple_set_no_delay")] /*
static extern int zts_simple_set_no_delay(int jarg1, int jarg2); [DllImport("libzt", EntryPoint = "CSharp_zts_set_no_delay")]
static extern int zts_set_no_delay(int jarg1, int jarg2);
[DllImport("libzt", EntryPoint = "CSharp_zts_simple_get_no_delay")] [DllImport("libzt", EntryPoint = "CSharp_zts_get_no_delay")]
static extern int zts_simple_get_no_delay(int jarg1); static extern int zts_get_no_delay(int jarg1);
[DllImport("libzt", EntryPoint = "CSharp_zts_simple_set_linger")] [DllImport("libzt", EntryPoint = "CSharp_zts_set_linger")]
static extern int zts_simple_set_linger(int jarg1, int jarg2, int jarg3); static extern int zts_set_linger(int jarg1, int jarg2, int jarg3);
[DllImport("libzt", EntryPoint = "CSharp_zts_simple_get_linger_enabled")] [DllImport("libzt", EntryPoint = "CSharp_zts_get_linger_enabled")]
static extern int zts_simple_get_linger_enabled(int jarg1); static extern int zts_get_linger_enabled(int jarg1);
[DllImport("libzt", EntryPoint = "CSharp_zts_simple_get_linger_value")] [DllImport("libzt", EntryPoint = "CSharp_zts_get_linger_value")]
static extern int zts_simple_get_linger_value(int jarg1); static extern int zts_get_linger_value(int jarg1);
[DllImport("libzt", EntryPoint = "CSharp_zts_simple_set_reuse_addr")] [DllImport("libzt", EntryPoint = "CSharp_zts_set_reuse_addr")]
static extern int zts_simple_set_reuse_addr(int jarg1, int jarg2); static extern int zts_set_reuse_addr(int jarg1, int jarg2);
[DllImport("libzt", EntryPoint = "CSharp_zts_simple_get_reuse_addr")] [DllImport("libzt", EntryPoint = "CSharp_zts_get_reuse_addr")]
static extern int zts_simple_get_reuse_addr(int jarg1); static extern int zts_get_reuse_addr(int jarg1);
[DllImport("libzt", EntryPoint = "CSharp_zts_simple_set_recv_timeout")] [DllImport("libzt", EntryPoint = "CSharp_zts_set_recv_timeout")]
static extern int zts_simple_set_recv_timeout(int jarg1, int jarg2, int jarg3); static extern int zts_set_recv_timeout(int jarg1, int jarg2, int jarg3);
[DllImport("libzt", EntryPoint = "CSharp_zts_simple_get_recv_timeout")] [DllImport("libzt", EntryPoint = "CSharp_zts_get_recv_timeout")]
static extern int zts_simple_get_recv_timeout(int jarg1); static extern int zts_get_recv_timeout(int jarg1);
[DllImport("libzt", EntryPoint = "CSharp_zts_simple_set_send_timeout")] [DllImport("libzt", EntryPoint = "CSharp_zts_set_send_timeout")]
static extern int zts_simple_set_send_timeout(int jarg1, int jarg2, int jarg3); static extern int zts_set_send_timeout(int jarg1, int jarg2, int jarg3);
[DllImport("libzt", EntryPoint = "CSharp_zts_simple_get_send_timeout")] [DllImport("libzt", EntryPoint = "CSharp_zts_get_send_timeout")]
static extern int zts_simple_get_send_timeout(int jarg1); static extern int zts_get_send_timeout(int jarg1);
[DllImport("libzt", EntryPoint = "CSharp_zts_simple_set_send_buf_size")] [DllImport("libzt", EntryPoint = "CSharp_zts_set_send_buf_size")]
static extern int zts_simple_set_send_buf_size(int jarg1, int jarg2); static extern int zts_set_send_buf_size(int jarg1, int jarg2);
[DllImport("libzt", EntryPoint = "CSharp_zts_simple_get_send_buf_size")] [DllImport("libzt", EntryPoint = "CSharp_zts_get_send_buf_size")]
static extern int zts_simple_get_send_buf_size(int jarg1); static extern int zts_get_send_buf_size(int jarg1);
[DllImport("libzt", EntryPoint = "CSharp_zts_simple_set_recv_buf_size")] [DllImport("libzt", EntryPoint = "CSharp_zts_set_recv_buf_size")]
static extern int zts_simple_set_recv_buf_size(int jarg1, int jarg2); static extern int zts_set_recv_buf_size(int jarg1, int jarg2);
[DllImport("libzt", EntryPoint = "CSharp_zts_simple_get_recv_buf_size")] [DllImport("libzt", EntryPoint = "CSharp_zts_get_recv_buf_size")]
static extern int zts_simple_get_recv_buf_size(int jarg1); static extern int zts_get_recv_buf_size(int jarg1);
[DllImport("libzt", EntryPoint = "CSharp_zts_simple_set_ttl")] [DllImport("libzt", EntryPoint = "CSharp_zts_set_ttl")]
static extern int zts_simple_set_ttl(int jarg1, int jarg2); static extern int zts_set_ttl(int jarg1, int jarg2);
[DllImport("libzt", EntryPoint = "CSharp_zts_simple_get_ttl")] [DllImport("libzt", EntryPoint = "CSharp_zts_get_ttl")]
static extern int zts_simple_get_ttl(int jarg1); static extern int zts_get_ttl(int jarg1);
[DllImport("libzt", EntryPoint = "CSharp_zts_simple_set_blocking")] [DllImport("libzt", EntryPoint = "CSharp_zts_set_blocking")]
static extern int zts_simple_set_blocking(int jarg1, int jarg2); static extern int zts_set_blocking(int jarg1, int jarg2);
[DllImport("libzt", EntryPoint = "CSharp_zts_simple_get_blocking")] [DllImport("libzt", EntryPoint = "CSharp_zts_get_blocking")]
static extern int zts_simple_get_blocking(int jarg1); static extern int zts_get_blocking(int jarg1);
[DllImport("libzt", EntryPoint = "CSharp_zts_simple_set_keepalive")] [DllImport("libzt", EntryPoint = "CSharp_zts_set_keepalive")]
static extern int zts_simple_set_keepalive(int jarg1, int jarg2); static extern int zts_set_keepalive(int jarg1, int jarg2);
[DllImport("libzt", EntryPoint = "CSharp_zts_simple_get_keepalive")] [DllImport("libzt", EntryPoint = "CSharp_zts_get_keepalive")]
static extern int zts_simple_get_keepalive(int jarg1); static extern int zts_get_keepalive(int jarg1);
*/
[DllImport("libzt", EntryPoint = "CSharp_zts_util_delay")] [DllImport("libzt", EntryPoint = "CSharp_zts_util_delay")]
public static extern void zts_util_delay(int jarg1); public static extern void zts_util_delay(int jarg1);

View File

@@ -59,54 +59,58 @@ JNIEXPORT jint JNICALL Java_com_zerotier_sdk_ZeroTierNative_zts_1init(JNIEnv* en
return rs != JNI_OK ? ZTS_ERR_GENERAL : ZTS_ERR_OK; return rs != JNI_OK ? ZTS_ERR_GENERAL : ZTS_ERR_OK;
} }
JNIEXPORT jint JNICALL JNIEXPORT jint JNICALL Java_com_zerotier_sdk_ZeroTierNative_zts_1bsd_1socket(
Java_com_zerotier_sdk_ZeroTierNative_zts_1socket(JNIEnv* env, jobject thisObj, jint family, jint type, jint protocol) JNIEnv* env,
jobject thisObj,
jint family,
jint type,
jint protocol)
{ {
int retval = zts_socket(family, type, protocol); int retval = zts_bsd_socket(family, type, protocol);
return retval > -1 ? retval : -(zts_errno); // Encode lwIP errno into return value for JNI functions only return retval > -1 ? retval : -(zts_errno); // Encode lwIP errno into return value for JNI functions only
} }
/* /*
JNIEXPORT jint JNICALL JNIEXPORT jint JNICALL
Java_com_zerotier_sdk_ZeroTierNative_zts_1connect(JNIEnv* env, jobject thisObj, jint fd, jobject addr) Java_com_zerotier_sdk_ZeroTierNative_zts_1bsd_1connect(JNIEnv* env, jobject thisObj, jint fd, jobject addr)
{ {
struct zts_sockaddr_storage ss; struct zts_sockaddr_storage ss;
zta2ss(env, &ss, addr); zta2ss(env, &ss, addr);
socklen_t addrlen = ss.ss_family == ZTS_AF_INET ? sizeof(struct zts_sockaddr_in) : sizeof(struct zts_sockaddr_in6); socklen_t addrlen = ss.ss_family == ZTS_AF_INET ? sizeof(struct zts_sockaddr_in) : sizeof(struct zts_sockaddr_in6);
int retval = zts_connect(fd, (struct zts_sockaddr*)&ss, addrlen); int retval = zts_bsd_connect(fd, (struct zts_sockaddr*)&ss, addrlen);
return retval > -1 ? retval : -(zts_errno); return retval > -1 ? retval : -(zts_errno);
} }
JNIEXPORT jint JNICALL JNIEXPORT jint JNICALL
Java_com_zerotier_sdk_ZeroTierNative_zts_1bind(JNIEnv* env, jobject thisObj, jint fd, jobject addr) Java_com_zerotier_sdk_ZeroTierNative_zts_1bsd_1bind(JNIEnv* env, jobject thisObj, jint fd, jobject addr)
{ {
struct zts_sockaddr_storage ss; struct zts_sockaddr_storage ss;
zta2ss(env, &ss, addr); zta2ss(env, &ss, addr);
zts_socklen_t addrlen = zts_socklen_t addrlen =
ss.ss_family == ZTS_AF_INET ? sizeof(struct zts_sockaddr_in) : sizeof(struct zts_sockaddr_in6); ss.ss_family == ZTS_AF_INET ? sizeof(struct zts_sockaddr_in) : sizeof(struct zts_sockaddr_in6);
int retval = zts_bind(fd, (struct zts_sockaddr*)&ss, addrlen); int retval = zts_bsd_bind(fd, (struct zts_sockaddr*)&ss, addrlen);
return retval > -1 ? retval : -(zts_errno); return retval > -1 ? retval : -(zts_errno);
} }
*/ */
JNIEXPORT jint JNICALL JNIEXPORT jint JNICALL
Java_com_zerotier_sdk_ZeroTierNative_zts_1listen(JNIEnv* env, jobject thisObj, jint fd, int backlog) Java_com_zerotier_sdk_ZeroTierNative_zts_1bsd_1listen(JNIEnv* env, jobject thisObj, jint fd, int backlog)
{ {
int retval = zts_listen(fd, backlog); int retval = zts_bsd_listen(fd, backlog);
return retval > -1 ? retval : -(zts_errno); return retval > -1 ? retval : -(zts_errno);
} }
JNIEXPORT jint JNICALL JNIEXPORT jint JNICALL
Java_com_zerotier_sdk_ZeroTierNative_zts_1accept(JNIEnv* env, jobject thisObj, jint fd, jobject addr, jint port) Java_com_zerotier_sdk_ZeroTierNative_zts_1bsd_1accept(JNIEnv* env, jobject thisObj, jint fd, jobject addr, jint port)
{ {
struct zts_sockaddr_storage ss; struct zts_sockaddr_storage ss;
zts_socklen_t addrlen = sizeof(struct zts_sockaddr_storage); zts_socklen_t addrlen = sizeof(struct zts_sockaddr_storage);
int retval = zts_accept(fd, (zts_sockaddr*)&ss, &addrlen); int retval = zts_bsd_accept(fd, (zts_sockaddr*)&ss, &addrlen);
ss2zta(env, &ss, addr); ss2zta(env, &ss, addr);
return retval > -1 ? retval : -(zts_errno); return retval > -1 ? retval : -(zts_errno);
} }
/* /*
JNIEXPORT jint JNICALL Java_com_zerotier_sdk_ZeroTierNative_zts_1setsockopt( JNIEXPORT jint JNICALL Java_com_zerotier_sdk_ZeroTierNative_zts_1bsd_1setsockopt(
JNIEnv* env, JNIEnv* env,
jobject thisObj, jobject thisObj,
jint fd, jint fd,
@@ -138,15 +142,15 @@ JNIEXPORT jint JNICALL Java_com_zerotier_sdk_ZeroTierNative_zts_1setsockopt(
// Convert milliseconds from setSoTimeout() call to seconds and microseconds // Convert milliseconds from setSoTimeout() call to seconds and microseconds
tv.tv_usec = optval_int * 1000; tv.tv_usec = optval_int * 1000;
tv.tv_sec = optval_int / 1000000; tv.tv_sec = optval_int / 1000000;
retval = zts_setsockopt(fd, level, optname, &tv, sizeof(tv)); retval = zts_bsd_setsockopt(fd, level, optname, &tv, sizeof(tv));
} }
else { else {
retval = zts_setsockopt(fd, level, optname, &optval_int, sizeof(optval_int)); retval = zts_bsd_setsockopt(fd, level, optname, &optval_int, sizeof(optval_int));
} }
return retval > -1 ? retval : -(zts_errno); return retval > -1 ? retval : -(zts_errno);
} }
JNIEXPORT jint JNICALL Java_com_zerotier_sdk_ZeroTierNative_zts_1getsockopt( JNIEXPORT jint JNICALL Java_com_zerotier_sdk_ZeroTierNative_zts_1bsd_1getsockopt(
JNIEnv* env, JNIEnv* env,
jobject thisObj, jobject thisObj,
jint fd, jint fd,
@@ -166,12 +170,12 @@ JNIEXPORT jint JNICALL Java_com_zerotier_sdk_ZeroTierNative_zts_1getsockopt(
if (optname == SO_RCVTIMEO) { if (optname == SO_RCVTIMEO) {
struct zts_timeval tv; struct zts_timeval tv;
optlen = sizeof(tv); optlen = sizeof(tv);
retval = zts_getsockopt(fd, level, optname, &tv, &optlen); retval = zts_bsd_getsockopt(fd, level, optname, &tv, &optlen);
// Convert seconds and microseconds back to milliseconds // Convert seconds and microseconds back to milliseconds
optval_int = (tv.tv_sec * 1000) + (tv.tv_usec / 1000); optval_int = (tv.tv_sec * 1000) + (tv.tv_usec / 1000);
} }
else { else {
retval = zts_getsockopt(fd, level, optname, &optval_int, &optlen); retval = zts_bsd_getsockopt(fd, level, optname, &optval_int, &optlen);
} }
if (optname == SO_BROADCAST || optname == SO_KEEPALIVE || optname == SO_REUSEADDR || optname == SO_REUSEPORT if (optname == SO_BROADCAST || optname == SO_KEEPALIVE || optname == SO_REUSEADDR || optname == SO_REUSEPORT
@@ -193,30 +197,31 @@ JNIEXPORT jint JNICALL Java_com_zerotier_sdk_ZeroTierNative_zts_1getsockopt(
*/ */
JNIEXPORT jboolean JNICALL JNIEXPORT jboolean JNICALL
Java_com_zerotier_sdk_ZeroTierNative_zts_1getsockname(JNIEnv* env, jobject thisObj, jint fd, jobject addr) Java_com_zerotier_sdk_ZeroTierNative_zts_1bsd_1getsockname(JNIEnv* env, jobject thisObj, jint fd, jobject addr)
{ {
struct zts_sockaddr_storage ss; struct zts_sockaddr_storage ss;
zts_socklen_t addrlen = sizeof(struct zts_sockaddr_storage); zts_socklen_t addrlen = sizeof(struct zts_sockaddr_storage);
int retval = zts_getsockname(fd, (struct zts_sockaddr*)&ss, &addrlen); int retval = zts_bsd_getsockname(fd, (struct zts_sockaddr*)&ss, &addrlen);
ss2zta(env, &ss, addr); ss2zta(env, &ss, addr);
return retval > -1 ? retval : -(zts_errno); return retval > -1 ? retval : -(zts_errno);
} }
JNIEXPORT jint JNICALL JNIEXPORT jint JNICALL
Java_com_zerotier_sdk_ZeroTierNative_zts_1getpeername(JNIEnv* env, jobject thisObj, jint fd, jobject addr) Java_com_zerotier_sdk_ZeroTierNative_zts_1bsd_1getpeername(JNIEnv* env, jobject thisObj, jint fd, jobject addr)
{ {
struct zts_sockaddr_storage ss; struct zts_sockaddr_storage ss;
int retval = zts_getpeername(fd, (struct zts_sockaddr*)&ss, (zts_socklen_t*)sizeof(struct zts_sockaddr_storage)); int retval =
zts_bsd_getpeername(fd, (struct zts_sockaddr*)&ss, (zts_socklen_t*)sizeof(struct zts_sockaddr_storage));
ss2zta(env, &ss, addr); ss2zta(env, &ss, addr);
return retval > -1 ? retval : -(zts_errno); return retval > -1 ? retval : -(zts_errno);
} }
JNIEXPORT jint JNICALL Java_com_zerotier_sdk_ZeroTierNative_zts_1close(JNIEnv* env, jobject thisObj, jint fd) JNIEXPORT jint JNICALL Java_com_zerotier_sdk_ZeroTierNative_zts_1bsd_1close(JNIEnv* env, jobject thisObj, jint fd)
{ {
return zts_close(fd); return zts_bsd_close(fd);
} }
JNIEXPORT jint JNICALL Java_com_zerotier_sdk_ZeroTierNative_zts_1select( JNIEXPORT jint JNICALL Java_com_zerotier_sdk_ZeroTierNative_zts_1bsd_1select(
JNIEnv* env, JNIEnv* env,
jobject thisObj, jobject thisObj,
jint nfds, jint nfds,
@@ -245,7 +250,7 @@ JNIEXPORT jint JNICALL Java_com_zerotier_sdk_ZeroTierNative_zts_1select(
e = &_exceptfds; e = &_exceptfds;
ztfdset2fdset(env, nfds, exceptfds, &_exceptfds); ztfdset2fdset(env, nfds, exceptfds, &_exceptfds);
} }
int retval = zts_select(nfds, r, w, e, &_timeout); int retval = zts_bsd_select(nfds, r, w, e, &_timeout);
if (readfds) { if (readfds) {
fdset2ztfdset(env, nfds, &_readfds, readfds); fdset2ztfdset(env, nfds, &_readfds, readfds);
} }
@@ -259,19 +264,19 @@ JNIEXPORT jint JNICALL Java_com_zerotier_sdk_ZeroTierNative_zts_1select(
} }
JNIEXPORT jint JNICALL JNIEXPORT jint JNICALL
Java_com_zerotier_sdk_ZeroTierNative_zts_1fcntl(JNIEnv* env, jobject thisObj, jint fd, jint cmd, jint flags) Java_com_zerotier_sdk_ZeroTierNative_zts_1bsd_1fcntl(JNIEnv* env, jobject thisObj, jint fd, jint cmd, jint flags)
{ {
int retval = zts_fcntl(fd, cmd, flags); int retval = zts_bsd_fcntl(fd, cmd, flags);
return retval > -1 ? retval : -(zts_errno); return retval > -1 ? retval : -(zts_errno);
} }
JNIEXPORT int JNICALL JNIEXPORT int JNICALL
Java_com_zerotier_sdk_ZeroTierNative_zts_1ioctl(JNIEnv* env, jobject thisObj, jint fd, jlong request, jobject argp) Java_com_zerotier_sdk_ZeroTierNative_zts_1bsd_1ioctl(JNIEnv* env, jobject thisObj, jint fd, jlong request, jobject argp)
{ {
int retval = ZTS_ERR_OK; int retval = ZTS_ERR_OK;
if (request == FIONREAD) { if (request == FIONREAD) {
int bytesRemaining = 0; int bytesRemaining = 0;
retval = zts_ioctl(fd, request, &bytesRemaining); retval = zts_bsd_ioctl(fd, request, &bytesRemaining);
// set value in general object // set value in general object
jclass c = env->GetObjectClass(argp); jclass c = env->GetObjectClass(argp);
if (! c) { if (! c) {
@@ -283,21 +288,21 @@ Java_com_zerotier_sdk_ZeroTierNative_zts_1ioctl(JNIEnv* env, jobject thisObj, ji
if (request == FIONBIO) { if (request == FIONBIO) {
// TODO: double check // TODO: double check
int meaninglessVariable = 0; int meaninglessVariable = 0;
retval = zts_ioctl(fd, request, &meaninglessVariable); retval = zts_bsd_ioctl(fd, request, &meaninglessVariable);
} }
return retval > -1 ? retval : -(zts_errno); return retval > -1 ? retval : -(zts_errno);
} }
JNIEXPORT jint JNICALL JNIEXPORT jint JNICALL
Java_com_zerotier_sdk_ZeroTierNative_zts_1send(JNIEnv* env, jobject thisObj, jint fd, jbyteArray buf, int flags) Java_com_zerotier_sdk_ZeroTierNative_zts_1bsd_1send(JNIEnv* env, jobject thisObj, jint fd, jbyteArray buf, int flags)
{ {
void* data = env->GetPrimitiveArrayCritical(buf, NULL); void* data = env->GetPrimitiveArrayCritical(buf, NULL);
int retval = zts_send(fd, data, env->GetArrayLength(buf), flags); int retval = zts_bsd_send(fd, data, env->GetArrayLength(buf), flags);
env->ReleasePrimitiveArrayCritical(buf, data, 0); env->ReleasePrimitiveArrayCritical(buf, data, 0);
return retval > -1 ? retval : -(zts_errno); return retval > -1 ? retval : -(zts_errno);
} }
JNIEXPORT jint JNICALL Java_com_zerotier_sdk_ZeroTierNative_zts_1sendto( JNIEXPORT jint JNICALL Java_com_zerotier_sdk_ZeroTierNative_zts_1bsd_1sendto(
JNIEnv* env, JNIEnv* env,
jobject thisObj, jobject thisObj,
jint fd, jint fd,
@@ -310,21 +315,21 @@ JNIEXPORT jint JNICALL Java_com_zerotier_sdk_ZeroTierNative_zts_1sendto(
zta2ss(env, &ss, addr); zta2ss(env, &ss, addr);
zts_socklen_t addrlen = zts_socklen_t addrlen =
ss.ss_family == ZTS_AF_INET ? sizeof(struct zts_sockaddr_in) : sizeof(struct zts_sockaddr_in6); ss.ss_family == ZTS_AF_INET ? sizeof(struct zts_sockaddr_in) : sizeof(struct zts_sockaddr_in6);
int retval = zts_sendto(fd, data, env->GetArrayLength(buf), flags, (struct zts_sockaddr*)&ss, addrlen); int retval = zts_bsd_sendto(fd, data, env->GetArrayLength(buf), flags, (struct zts_sockaddr*)&ss, addrlen);
env->ReleasePrimitiveArrayCritical(buf, data, 0); env->ReleasePrimitiveArrayCritical(buf, data, 0);
return retval > -1 ? retval : -(zts_errno); return retval > -1 ? retval : -(zts_errno);
} }
JNIEXPORT jint JNICALL JNIEXPORT jint JNICALL
Java_com_zerotier_sdk_ZeroTierNative_zts_1recv(JNIEnv* env, jobject thisObj, jint fd, jbyteArray buf, jint flags) Java_com_zerotier_sdk_ZeroTierNative_zts_1bsd_1recv(JNIEnv* env, jobject thisObj, jint fd, jbyteArray buf, jint flags)
{ {
void* data = env->GetPrimitiveArrayCritical(buf, NULL); void* data = env->GetPrimitiveArrayCritical(buf, NULL);
int retval = zts_recv(fd, data, env->GetArrayLength(buf), flags); int retval = zts_bsd_recv(fd, data, env->GetArrayLength(buf), flags);
env->ReleasePrimitiveArrayCritical(buf, data, 0); env->ReleasePrimitiveArrayCritical(buf, data, 0);
return retval > -1 ? retval : -(zts_errno); return retval > -1 ? retval : -(zts_errno);
} }
JNIEXPORT jint JNICALL Java_com_zerotier_sdk_ZeroTierNative_zts_1recvfrom( JNIEXPORT jint JNICALL Java_com_zerotier_sdk_ZeroTierNative_zts_1bsd_1recvfrom(
JNIEnv* env, JNIEnv* env,
jobject thisObj, jobject thisObj,
jint fd, jint fd,
@@ -335,28 +340,28 @@ JNIEXPORT jint JNICALL Java_com_zerotier_sdk_ZeroTierNative_zts_1recvfrom(
zts_socklen_t addrlen = sizeof(struct zts_sockaddr_storage); zts_socklen_t addrlen = sizeof(struct zts_sockaddr_storage);
struct zts_sockaddr_storage ss; struct zts_sockaddr_storage ss;
void* data = env->GetPrimitiveArrayCritical(buf, NULL); void* data = env->GetPrimitiveArrayCritical(buf, NULL);
int retval = zts_recvfrom(fd, data, env->GetArrayLength(buf), flags, (struct zts_sockaddr*)&ss, &addrlen); int retval = zts_bsd_recvfrom(fd, data, env->GetArrayLength(buf), flags, (struct zts_sockaddr*)&ss, &addrlen);
env->ReleasePrimitiveArrayCritical(buf, data, 0); env->ReleasePrimitiveArrayCritical(buf, data, 0);
ss2zta(env, &ss, addr); ss2zta(env, &ss, addr);
return retval > -1 ? retval : -(zts_errno); return retval > -1 ? retval : -(zts_errno);
} }
JNIEXPORT jint JNICALL JNIEXPORT jint JNICALL
Java_com_zerotier_sdk_ZeroTierNative_zts_1read(JNIEnv* env, jobject thisObj, jint fd, jbyteArray buf) Java_com_zerotier_sdk_ZeroTierNative_zts_1bsd_1read(JNIEnv* env, jobject thisObj, jint fd, jbyteArray buf)
{ {
void* data = env->GetPrimitiveArrayCritical(buf, NULL); void* data = env->GetPrimitiveArrayCritical(buf, NULL);
int retval = zts_read(fd, data, env->GetArrayLength(buf)); int retval = zts_bsd_read(fd, data, env->GetArrayLength(buf));
env->ReleasePrimitiveArrayCritical(buf, data, 0); env->ReleasePrimitiveArrayCritical(buf, data, 0);
return retval > -1 ? retval : -(zts_errno); return retval > -1 ? retval : -(zts_errno);
} }
ssize_t zts_read_offset(int fd, void* buf, size_t offset, size_t len) ssize_t zts_bsd_read_offset(int fd, void* buf, size_t offset, size_t len)
{ {
char* cbuf = (char*)buf; char* cbuf = (char*)buf;
return zts_read(fd, &(cbuf[offset]), len); return zts_bsd_read(fd, &(cbuf[offset]), len);
} }
JNIEXPORT jint JNICALL Java_com_zerotier_sdk_ZeroTierNative_zts_1read_1offset( JNIEXPORT jint JNICALL Java_com_zerotier_sdk_ZeroTierNative_zts_1bsd_1read_1offset(
JNIEnv* env, JNIEnv* env,
jobject thisObj, jobject thisObj,
jint fd, jint fd,
@@ -365,30 +370,34 @@ JNIEXPORT jint JNICALL Java_com_zerotier_sdk_ZeroTierNative_zts_1read_1offset(
jint len) jint len)
{ {
void* data = env->GetPrimitiveArrayCritical(buf, NULL); void* data = env->GetPrimitiveArrayCritical(buf, NULL);
int retval = zts_read_offset(fd, data, offset, len); int retval = zts_bsd_read_offset(fd, data, offset, len);
env->ReleasePrimitiveArrayCritical(buf, data, 0);
return retval > -1 ? retval : -(zts_errno);
}
JNIEXPORT jint JNICALL Java_com_zerotier_sdk_ZeroTierNative_zts_1bsd_1read_1length(
JNIEnv* env,
jobject thisObj,
jint fd,
jbyteArray buf,
jint len)
{
void* data = env->GetPrimitiveArrayCritical(buf, NULL);
int retval = zts_bsd_read(fd, data, len);
env->ReleasePrimitiveArrayCritical(buf, data, 0); env->ReleasePrimitiveArrayCritical(buf, data, 0);
return retval > -1 ? retval : -(zts_errno); return retval > -1 ? retval : -(zts_errno);
} }
JNIEXPORT jint JNICALL JNIEXPORT jint JNICALL
Java_com_zerotier_sdk_ZeroTierNative_zts_1read_1length(JNIEnv* env, jobject thisObj, jint fd, jbyteArray buf, jint len) Java_com_zerotier_sdk_ZeroTierNative_zts_1bsd_1write__IB(JNIEnv* env, jobject thisObj, jint fd, jbyteArray buf)
{ {
void* data = env->GetPrimitiveArrayCritical(buf, NULL); void* data = env->GetPrimitiveArrayCritical(buf, NULL);
int retval = zts_read(fd, data, len); int retval = zts_bsd_write(fd, data, env->GetArrayLength(buf));
env->ReleasePrimitiveArrayCritical(buf, data, 0); env->ReleasePrimitiveArrayCritical(buf, data, 0);
return retval > -1 ? retval : -(zts_errno); return retval > -1 ? retval : -(zts_errno);
} }
JNIEXPORT jint JNICALL JNIEXPORT jint JNICALL Java_com_zerotier_sdk_ZeroTierNative_zts_1bsd_1write_1offset(
Java_com_zerotier_sdk_ZeroTierNative_zts_1write__IB(JNIEnv* env, jobject thisObj, jint fd, jbyteArray buf)
{
void* data = env->GetPrimitiveArrayCritical(buf, NULL);
int retval = zts_write(fd, data, env->GetArrayLength(buf));
env->ReleasePrimitiveArrayCritical(buf, data, 0);
return retval > -1 ? retval : -(zts_errno);
}
JNIEXPORT jint JNICALL Java_com_zerotier_sdk_ZeroTierNative_zts_1write_1offset(
JNIEnv* env, JNIEnv* env,
jobject thisObj, jobject thisObj,
jint fd, jint fd,
@@ -397,21 +406,22 @@ JNIEXPORT jint JNICALL Java_com_zerotier_sdk_ZeroTierNative_zts_1write_1offset(
jint len) jint len)
{ {
void* data = env->GetPrimitiveArrayCritical(&(buf[offset]), NULL); // PENDING: check? void* data = env->GetPrimitiveArrayCritical(&(buf[offset]), NULL); // PENDING: check?
int retval = zts_write(fd, data, len); int retval = zts_bsd_write(fd, data, len);
env->ReleasePrimitiveArrayCritical(buf, data, 0); env->ReleasePrimitiveArrayCritical(buf, data, 0);
return retval > -1 ? retval : -(zts_errno); return retval > -1 ? retval : -(zts_errno);
} }
JNIEXPORT jint JNICALL JNIEXPORT jint JNICALL
Java_com_zerotier_sdk_ZeroTierNative_zts_1write_1byte(JNIEnv* env, jobject thisObj, jint fd, jbyte buf) Java_com_zerotier_sdk_ZeroTierNative_zts_1bsd_1write_1byte(JNIEnv* env, jobject thisObj, jint fd, jbyte buf)
{ {
int retval = zts_write(fd, &buf, 1); int retval = zts_bsd_write(fd, &buf, 1);
return retval > -1 ? retval : -(zts_errno); return retval > -1 ? retval : -(zts_errno);
} }
JNIEXPORT jint JNICALL Java_com_zerotier_sdk_ZeroTierNative_zts_1shutdown(JNIEnv* env, jobject thisObj, int fd, int how) JNIEXPORT jint JNICALL
Java_com_zerotier_sdk_ZeroTierNative_zts_1bsd_1shutdown(JNIEnv* env, jobject thisObj, int fd, int how)
{ {
return zts_shutdown(fd, how); return zts_bsd_shutdown(fd, how);
} }
void ztfdset2fdset(JNIEnv* env, int nfds, jobject src_ztfd_set, zts_fd_set* dest_fd_set) void ztfdset2fdset(JNIEnv* env, int nfds, jobject src_ztfd_set, zts_fd_set* dest_fd_set)
@@ -844,7 +854,7 @@ Java_com_zerotier_sdk_ZeroTierNative_zts_1moon_1deorbit(JNIEnv* jenv, jobject th
return zts_moon_deorbit(moon_roots_id); return zts_moon_deorbit(moon_roots_id);
} }
JNIEXPORT jint JNICALL Java_com_zerotier_sdk_ZeroTierNative_zts_1simple_1connect( JNIEXPORT jint JNICALL Java_com_zerotier_sdk_ZeroTierNative_zts_1connect(
JNIEnv* jenv, JNIEnv* jenv,
jobject thisObj, jobject thisObj,
jint fd, jint fd,
@@ -859,13 +869,13 @@ JNIEXPORT jint JNICALL Java_com_zerotier_sdk_ZeroTierNative_zts_1simple_1connect
if (! utf_string) { if (! utf_string) {
return ZTS_ERR_GENERAL; return ZTS_ERR_GENERAL;
} }
int retval = zts_simple_connect(fd, utf_string, port, timeout_ms); int retval = zts_connect(fd, utf_string, port, timeout_ms);
jenv->ReleaseStringUTFChars(ipstr, utf_string); jenv->ReleaseStringUTFChars(ipstr, utf_string);
return retval; return retval;
} }
JNIEXPORT jint JNICALL JNIEXPORT jint JNICALL
Java_com_zerotier_sdk_ZeroTierNative_zts_1simple_1bind(JNIEnv* jenv, jobject thisObj, jint fd, jstring ipstr, jint port) Java_com_zerotier_sdk_ZeroTierNative_zts_1bind(JNIEnv* jenv, jobject thisObj, jint fd, jstring ipstr, jint port)
{ {
if (! ipstr) { if (! ipstr) {
return ZTS_ERR_ARG; return ZTS_ERR_ARG;
@@ -874,12 +884,12 @@ Java_com_zerotier_sdk_ZeroTierNative_zts_1simple_1bind(JNIEnv* jenv, jobject thi
if (! utf_string) { if (! utf_string) {
return ZTS_ERR_GENERAL; return ZTS_ERR_GENERAL;
} }
int retval = zts_simple_bind(fd, utf_string, port); int retval = zts_bind(fd, utf_string, port);
jenv->ReleaseStringUTFChars(ipstr, utf_string); jenv->ReleaseStringUTFChars(ipstr, utf_string);
return retval; return retval;
} }
JNIEXPORT jint JNICALL Java_com_zerotier_sdk_ZeroTierNative_zts_1simple_1accept( JNIEXPORT jint JNICALL Java_com_zerotier_sdk_ZeroTierNative_zts_1accept(
JNIEnv* jenv, JNIEnv* jenv,
jobject thisObj, jobject thisObj,
int fd, int fd,
@@ -895,7 +905,7 @@ JNIEXPORT jint JNICALL Java_com_zerotier_sdk_ZeroTierNative_zts_1simple_1accept(
if (! utf_string) { if (! utf_string) {
return ZTS_ERR_GENERAL; return ZTS_ERR_GENERAL;
} }
int retval = zts_simple_bind(fd, utf_string, port); int retval = zts_bind(fd, utf_string, port);
jenv->ReleaseStringUTFChars(ipstr, utf_string); jenv->ReleaseStringUTFChars(ipstr, utf_string);
return retval; return retval;
@@ -909,162 +919,149 @@ JNIEXPORT jint JNICALL Java_com_zerotier_sdk_ZeroTierNative_zts_1simple_1accept(
} }
JNIEXPORT jint JNICALL JNIEXPORT jint JNICALL
Java_com_zerotier_sdk_ZeroTierNative_zts_1simple_1udp_1client(JNIEnv* jenv, jobject thisObj, jstring remote_ipstr) Java_com_zerotier_sdk_ZeroTierNative_zts_1udp_1client(JNIEnv* jenv, jobject thisObj, jstring remote_ipstr)
{ {
return ZTS_ERR_OK; return ZTS_ERR_OK;
} }
JNIEXPORT jint JNICALL JNIEXPORT jint JNICALL
Java_com_zerotier_sdk_ZeroTierNative_zts_1simple_1set_1no_1delay(JNIEnv* jenv, jobject thisObj, jint fd, jint enabled) Java_com_zerotier_sdk_ZeroTierNative_zts_1set_1no_1delay(JNIEnv* jenv, jobject thisObj, jint fd, jint enabled)
{ {
return zts_simple_set_no_delay(fd, enabled); return zts_set_no_delay(fd, enabled);
}
JNIEXPORT jint JNICALL Java_com_zerotier_sdk_ZeroTierNative_zts_1get_1no_1delay(JNIEnv* jenv, jobject thisObj, jint fd)
{
return zts_get_no_delay(fd);
} }
JNIEXPORT jint JNICALL JNIEXPORT jint JNICALL
Java_com_zerotier_sdk_ZeroTierNative_zts_1simple_1get_1no_1delay(JNIEnv* jenv, jobject thisObj, jint fd) Java_com_zerotier_sdk_ZeroTierNative_zts_1set_1linger(JNIEnv* jenv, jobject thisObj, jint fd, jint enabled, jint value)
{ {
return zts_simple_get_no_delay(fd); return zts_set_linger(fd, enabled, value);
}
JNIEXPORT jint JNICALL Java_com_zerotier_sdk_ZeroTierNative_zts_1simple_1set_1linger(
JNIEnv* jenv,
jobject thisObj,
jint fd,
jint enabled,
jint value)
{
return zts_simple_set_linger(fd, enabled, value);
} }
JNIEXPORT jint JNICALL JNIEXPORT jint JNICALL
Java_com_zerotier_sdk_ZeroTierNative_zts_1simple_1get_1linger_1enabled(JNIEnv* jenv, jobject thisObj, jint fd) Java_com_zerotier_sdk_ZeroTierNative_zts_1get_1linger_1enabled(JNIEnv* jenv, jobject thisObj, jint fd)
{ {
return zts_simple_get_linger_enabled(fd); return zts_get_linger_enabled(fd);
} }
JNIEXPORT jint JNICALL JNIEXPORT jint JNICALL
Java_com_zerotier_sdk_ZeroTierNative_zts_1simple_1get_1linger_1value(JNIEnv* jenv, jobject thisObj, jint fd) Java_com_zerotier_sdk_ZeroTierNative_zts_1get_1linger_1value(JNIEnv* jenv, jobject thisObj, jint fd)
{ {
return zts_simple_get_linger_value(fd); return zts_get_linger_value(fd);
} }
JNIEXPORT jint JNICALL JNIEXPORT jint JNICALL
Java_com_zerotier_sdk_ZeroTierNative_zts_1simple_1get_1pending_1data_1size(JNIEnv* jenv, jobject thisObj, jint fd) Java_com_zerotier_sdk_ZeroTierNative_zts_1get_1pending_1data_1size(JNIEnv* jenv, jobject thisObj, jint fd)
{ {
return zts_simple_get_pending_data_size(fd); return zts_get_pending_data_size(fd);
} }
JNIEXPORT jint JNICALL JNIEXPORT jint JNICALL
Java_com_zerotier_sdk_ZeroTierNative_zts_1simple_1set_1reuse_1addr(JNIEnv* jenv, jobject thisObj, jint fd, jint enabled) Java_com_zerotier_sdk_ZeroTierNative_zts_1set_1reuse_1addr(JNIEnv* jenv, jobject thisObj, jint fd, jint enabled)
{ {
return zts_simple_set_reuse_addr(fd, enabled); return zts_set_reuse_addr(fd, enabled);
} }
JNIEXPORT jint JNICALL JNIEXPORT jint JNICALL
Java_com_zerotier_sdk_ZeroTierNative_zts_1simple_1get_1reuse_1addr(JNIEnv* jenv, jobject thisObj, jint fd) Java_com_zerotier_sdk_ZeroTierNative_zts_1get_1reuse_1addr(JNIEnv* jenv, jobject thisObj, jint fd)
{ {
return zts_simple_get_reuse_addr(fd); return zts_get_reuse_addr(fd);
} }
JNIEXPORT jint JNICALL Java_com_zerotier_sdk_ZeroTierNative_zts_1simple_1set_1recv_1timeout( JNIEXPORT jint JNICALL Java_com_zerotier_sdk_ZeroTierNative_zts_1set_1recv_1timeout(
JNIEnv* jenv, JNIEnv* jenv,
jobject thisObj, jobject thisObj,
jint fd, jint fd,
jint seconds, jint seconds,
jint microseconds) jint microseconds)
{ {
return zts_simple_set_recv_timeout(fd, seconds, microseconds); return zts_set_recv_timeout(fd, seconds, microseconds);
} }
JNIEXPORT jint JNICALL JNIEXPORT jint JNICALL
Java_com_zerotier_sdk_ZeroTierNative_zts_1simple_1get_1recv_1timeout(JNIEnv* jenv, jobject thisObj, jint fd) Java_com_zerotier_sdk_ZeroTierNative_zts_1get_1recv_1timeout(JNIEnv* jenv, jobject thisObj, jint fd)
{ {
return zts_simple_get_recv_timeout(fd); return zts_get_recv_timeout(fd);
} }
JNIEXPORT jint JNICALL Java_com_zerotier_sdk_ZeroTierNative_zts_1simple_1set_1send_1timeout( JNIEXPORT jint JNICALL Java_com_zerotier_sdk_ZeroTierNative_zts_1set_1send_1timeout(
JNIEnv* jenv, JNIEnv* jenv,
jobject thisObj, jobject thisObj,
jint fd, jint fd,
jint seconds, jint seconds,
jint microseconds) jint microseconds)
{ {
return zts_simple_set_send_timeout(fd, seconds, microseconds); return zts_set_send_timeout(fd, seconds, microseconds);
} }
JNIEXPORT jint JNICALL JNIEXPORT jint JNICALL
Java_com_zerotier_sdk_ZeroTierNative_zts_1simple_1get_1send_1timeout(JNIEnv* jenv, jobject thisObj, jint fd) Java_com_zerotier_sdk_ZeroTierNative_zts_1get_1send_1timeout(JNIEnv* jenv, jobject thisObj, jint fd)
{ {
return zts_simple_get_send_timeout(fd); return zts_get_send_timeout(fd);
}
JNIEXPORT jint JNICALL Java_com_zerotier_sdk_ZeroTierNative_zts_1simple_1set_1send_1buf_1size(
JNIEnv* jenv,
jobject thisObj,
jint fd,
jint size)
{
return zts_simple_set_send_buf_size(fd, size);
} }
JNIEXPORT jint JNICALL JNIEXPORT jint JNICALL
Java_com_zerotier_sdk_ZeroTierNative_zts_1simple_1get_1send_1buf_1size(JNIEnv* jenv, jobject thisObj, jint fd) Java_com_zerotier_sdk_ZeroTierNative_zts_1set_1send_1buf_1size(JNIEnv* jenv, jobject thisObj, jint fd, jint size)
{ {
return zts_simple_get_send_buf_size(fd); return zts_set_send_buf_size(fd, size);
}
JNIEXPORT jint JNICALL Java_com_zerotier_sdk_ZeroTierNative_zts_1simple_1set_1recv_1buf_1size(
JNIEnv* jenv,
jobject thisObj,
jint fd,
jint size)
{
return zts_simple_set_recv_buf_size(fd, size);
} }
JNIEXPORT jint JNICALL JNIEXPORT jint JNICALL
Java_com_zerotier_sdk_ZeroTierNative_zts_1simple_1get_1recv_1buf_1size(JNIEnv* jenv, jobject thisObj, jint fd) Java_com_zerotier_sdk_ZeroTierNative_zts_1get_1send_1buf_1size(JNIEnv* jenv, jobject thisObj, jint fd)
{ {
return zts_simple_get_recv_buf_size(fd); return zts_get_send_buf_size(fd);
} }
JNIEXPORT jint JNICALL JNIEXPORT jint JNICALL
Java_com_zerotier_sdk_ZeroTierNative_zts_1simple_1set_1ttl(JNIEnv* jenv, jobject thisObj, jint fd, jint ttl) Java_com_zerotier_sdk_ZeroTierNative_zts_1set_1recv_1buf_1size(JNIEnv* jenv, jobject thisObj, jint fd, jint size)
{ {
return zts_simple_set_ttl(fd, ttl); return zts_set_recv_buf_size(fd, size);
} }
JNIEXPORT jint JNICALL JNIEXPORT jint JNICALL
Java_com_zerotier_sdk_ZeroTierNative_zts_1simple_1get_1ttl(JNIEnv* jenv, jobject thisObj, jint fd) Java_com_zerotier_sdk_ZeroTierNative_zts_1get_1recv_1buf_1size(JNIEnv* jenv, jobject thisObj, jint fd)
{ {
return zts_simple_get_ttl(fd); return zts_get_recv_buf_size(fd);
} }
JNIEXPORT jint JNICALL JNIEXPORT jint JNICALL
Java_com_zerotier_sdk_ZeroTierNative_zts_1simple_1set_1blocking(JNIEnv* jenv, jobject thisObj, jint fd, jint enabled) Java_com_zerotier_sdk_ZeroTierNative_zts_1set_1ttl(JNIEnv* jenv, jobject thisObj, jint fd, jint ttl)
{ {
return zts_simple_set_blocking(fd, enabled); return zts_set_ttl(fd, ttl);
}
JNIEXPORT jint JNICALL Java_com_zerotier_sdk_ZeroTierNative_zts_1get_1ttl(JNIEnv* jenv, jobject thisObj, jint fd)
{
return zts_get_ttl(fd);
} }
JNIEXPORT jint JNICALL JNIEXPORT jint JNICALL
Java_com_zerotier_sdk_ZeroTierNative_zts_1simple_1get_1blocking(JNIEnv* jenv, jobject thisObj, jint fd) Java_com_zerotier_sdk_ZeroTierNative_zts_1set_1blocking(JNIEnv* jenv, jobject thisObj, jint fd, jint enabled)
{ {
return zts_simple_get_blocking(fd); return zts_set_blocking(fd, enabled);
}
JNIEXPORT jint JNICALL Java_com_zerotier_sdk_ZeroTierNative_zts_1get_1blocking(JNIEnv* jenv, jobject thisObj, jint fd)
{
return zts_get_blocking(fd);
} }
JNIEXPORT jint JNICALL JNIEXPORT jint JNICALL
Java_com_zerotier_sdk_ZeroTierNative_zts_1simple_1set_1keepalive(JNIEnv* jenv, jobject thisObj, jint fd, jint enabled) Java_com_zerotier_sdk_ZeroTierNative_zts_1set_1keepalive(JNIEnv* jenv, jobject thisObj, jint fd, jint enabled)
{ {
return zts_simple_set_keepalive(fd, enabled); return zts_set_keepalive(fd, enabled);
} }
JNIEXPORT jint JNICALL JNIEXPORT jint JNICALL Java_com_zerotier_sdk_ZeroTierNative_zts_1get_1keepalive(JNIEnv* jenv, jobject thisObj, jint fd)
Java_com_zerotier_sdk_ZeroTierNative_zts_1simple_1get_1keepalive(JNIEnv* jenv, jobject thisObj, jint fd)
{ {
return zts_simple_get_keepalive(fd); return zts_get_keepalive(fd);
} }
struct hostent* Java_com_zerotier_sdk_ZeroTierNative_zts_1gethostbyname(JNIEnv* jenv, jobject thisObj, jstring name) struct hostent*
Java_com_zerotier_sdk_ZeroTierNative_zts_1bsd_1gethostbyname(JNIEnv* jenv, jobject thisObj, jstring name)
{ {
return NULL; return NULL;
} }

View File

@@ -37,7 +37,7 @@ public class ZeroTierInputStream extends InputStream {
that aspect of the socket but not actually close it and free resources. Resources that aspect of the socket but not actually close it and free resources. Resources
will be properly freed when the socket implementation's close() is called or if will be properly freed when the socket implementation's close() is called or if
both I/OStreams are closed separately */ both I/OStreams are closed separately */
ZeroTierNative.zts_shutdown(zfd, ZeroTierNative.ZTS_SHUT_RD); ZeroTierNative.zts_bsd_shutdown(zfd, ZeroTierNative.ZTS_SHUT_RD);
zfd = -1; zfd = -1;
} }
@@ -52,7 +52,7 @@ public class ZeroTierInputStream extends InputStream {
Objects.requireNonNull(destStream, "destStream must not be null"); Objects.requireNonNull(destStream, "destStream must not be null");
int bytesTransferred = 0, bytesRead; int bytesTransferred = 0, bytesRead;
byte[] buf = new byte[8192]; byte[] buf = new byte[8192];
while (((bytesRead = ZeroTierNative.zts_read(zfd, buf)) >= 0)) { while (((bytesRead = ZeroTierNative.zts_bsd_read(zfd, buf)) >= 0)) {
destStream.write(buf, 0, bytesRead); destStream.write(buf, 0, bytesRead);
bytesTransferred += bytesRead; bytesTransferred += bytesRead;
} }
@@ -68,7 +68,7 @@ public class ZeroTierInputStream extends InputStream {
{ {
byte[] buf = new byte[1]; byte[] buf = new byte[1];
// Unlike a native read(), if nothing is read we should return -1 // Unlike a native read(), if nothing is read we should return -1
int retval = ZeroTierNative.zts_read(zfd, buf); int retval = ZeroTierNative.zts_bsd_read(zfd, buf);
if ((retval == 0) | (retval == -104) /* EINTR, from SO_RCVTIMEO */) { if ((retval == 0) | (retval == -104) /* EINTR, from SO_RCVTIMEO */) {
return -1; return -1;
} }
@@ -88,7 +88,7 @@ public class ZeroTierInputStream extends InputStream {
{ {
Objects.requireNonNull(destBuffer, "input byte array must not be null"); Objects.requireNonNull(destBuffer, "input byte array must not be null");
// Unlike a native read(), if nothing is read we should return -1 // Unlike a native read(), if nothing is read we should return -1
int retval = ZeroTierNative.zts_read(zfd, destBuffer); int retval = ZeroTierNative.zts_bsd_read(zfd, destBuffer);
if ((retval == 0) | (retval == -104) /* EINTR, from SO_RCVTIMEO */) { if ((retval == 0) | (retval == -104) /* EINTR, from SO_RCVTIMEO */) {
return -1; return -1;
} }
@@ -122,7 +122,7 @@ public class ZeroTierInputStream extends InputStream {
return 0; return 0;
} }
// Unlike a native read(), if nothing is read we should return -1 // Unlike a native read(), if nothing is read we should return -1
int retval = ZeroTierNative.zts_read_offset(zfd, destBuffer, offset, numBytes); int retval = ZeroTierNative.zts_bsd_read_offset(zfd, destBuffer, offset, numBytes);
if ((retval == 0) | (retval == -104) /* EINTR, from SO_RCVTIMEO */) { if ((retval == 0) | (retval == -104) /* EINTR, from SO_RCVTIMEO */) {
return -1; return -1;
} }
@@ -139,9 +139,9 @@ public class ZeroTierInputStream extends InputStream {
*/ */
public byte[] readAllBytes() throws IOException public byte[] readAllBytes() throws IOException
{ {
int pendingDataSize = ZeroTierNative.zts_simple_get_pending_data_size(zfd); int pendingDataSize = ZeroTierNative.zts_get_pending_data_size(zfd);
byte[] buf = new byte[pendingDataSize]; byte[] buf = new byte[pendingDataSize];
int retval = ZeroTierNative.zts_read(zfd, buf); int retval = ZeroTierNative.zts_bsd_read(zfd, buf);
if ((retval == 0) | (retval == -104) /* EINTR, from SO_RCVTIMEO */) { if ((retval == 0) | (retval == -104) /* EINTR, from SO_RCVTIMEO */) {
// No action needed // No action needed
} }
@@ -174,7 +174,7 @@ public class ZeroTierInputStream extends InputStream {
if (numBytes == 0) { if (numBytes == 0) {
return 0; return 0;
} }
int retval = ZeroTierNative.zts_read_offset(zfd, destBuffer, offset, numBytes); int retval = ZeroTierNative.zts_bsd_read_offset(zfd, destBuffer, offset, numBytes);
if ((retval == 0) | (retval == -104) /* EINTR, from SO_RCVTIMEO */) { if ((retval == 0) | (retval == -104) /* EINTR, from SO_RCVTIMEO */) {
// No action needed // No action needed
} }
@@ -199,7 +199,8 @@ public class ZeroTierInputStream extends InputStream {
int bufSize = (int)Math.min(2048, bytesRemaining); int bufSize = (int)Math.min(2048, bytesRemaining);
byte[] buf = new byte[bufSize]; byte[] buf = new byte[bufSize];
while (bytesRemaining > 0) { while (bytesRemaining > 0) {
if ((bytesRead = ZeroTierNative.zts_read_length(zfd, buf, (int)Math.min(bufSize, bytesRemaining))) < 0) { if ((bytesRead = ZeroTierNative.zts_bsd_read_length(zfd, buf, (int)Math.min(bufSize, bytesRemaining)))
< 0) {
break; break;
} }
bytesRemaining -= bytesRead; bytesRemaining -= bytesRead;

View File

@@ -473,20 +473,20 @@ public class ZeroTierNative {
public static native int zts_moon_orbit(long moon_roots_id, long moon_seed); public static native int zts_moon_orbit(long moon_roots_id, long moon_seed);
public static native int zts_moon_deorbit(long moon_roots_id); public static native int zts_moon_deorbit(long moon_roots_id);
// public static native int zts_socket(int family, int type, int protocol); // public static native int zts_bsd_socket(int family, int type, int protocol);
// public static native int zts_connect(int fd, /*const*/ struct sockaddr* addr, socklen_t addrlen); // public static native int zts_bsd_connect(int fd, /*const*/ struct sockaddr* addr, socklen_t addrlen);
// public static native int zts_bind(int fd, /*const*/ struct sockaddr* addr, socklen_t addrlen); // public static native int zts_bsd_bind(int fd, /*const*/ struct sockaddr* addr, socklen_t addrlen);
// public static native int zts_listen(int fd, int backlog); // public static native int zts_bsd_listen(int fd, int backlog);
// public static native int zts_accept(int fd, struct sockaddr* addr, socklen_t* addrlen); // public static native int zts_bsd_accept(int fd, struct sockaddr* addr, socklen_t* addrlen);
// public static native int zts_setsockopt(int fd, int level, int optname, /*const*/ void* optval, socklen_t // public static native int zts_bsd_setsockopt(int fd, int level, int optname, /*const*/ void* optval, socklen_t
// optlen); public static native int zts_getsockopt(int fd, int level, int optname, void* optval, socklen_t* // optlen); public static native int zts_bsd_getsockopt(int fd, int level, int optname, void* optval, socklen_t*
// optlen); public static native int zts_getsockname(int fd, struct sockaddr* addr, socklen_t* addrlen); public // optlen); public static native int zts_bsd_getsockname(int fd, struct sockaddr* addr, socklen_t* addrlen); public
// static native int zts_getpeername(int fd, struct sockaddr* addr, socklen_t* addrlen); public static native int // static native int zts_bsd_getpeername(int fd, struct sockaddr* addr, socklen_t* addrlen); public static native
// zts_close(int fd); public static native int zts_select(int nfds, fd_set* readfds, fd_set* writefds, fd_set* // int zts_bsd_close(int fd); public static native int zts_bsd_select(int nfds, fd_set* readfds, fd_set* writefds,
// exceptfds, struct timeval* timeout); public static native int zts_fcntl(int fd, int cmd, int flags); public // fd_set* exceptfds, struct timeval* timeout); public static native int zts_bsd_fcntl(int fd, int cmd, int flags);
// static native int zts_poll(struct pollfd* fds, nfds_t nfds, int timeout); public static native int zts_ioctl(int // public static native int zts_bsd_poll(struct pollfd* fds, nfds_t nfds, int timeout); public static native int
// fd, long request, void* argp); public static native int send(int fd, /*const*/ void* buf, size_t len, int // zts_bsd_ioctl(int fd, long request, void* argp); public static native int send(int fd, /*const*/ void* buf,
// flags); public static native int sendto(int fd, // size_t len, int flags); public static native int sendto(int fd,
// /*const*/ void* buf, size_t len, int flags, /*const*/ struct sockaddr* addr, socklen_t addrlen); public static // /*const*/ void* buf, size_t len, int flags, /*const*/ struct sockaddr* addr, socklen_t addrlen); public static
// native int sendmsg(int fd, /*const*/ struct msghdr* msg, int flags); public static native int recv(int fd, // native int sendmsg(int fd, /*const*/ struct msghdr* msg, int flags); public static native int recv(int fd,
// void* buf, size_t len, int flags); public static native int recvfrom(int fd, void* buf, size_t len, int flags, // void* buf, size_t len, int flags); public static native int recvfrom(int fd, void* buf, size_t len, int flags,
@@ -495,36 +495,36 @@ public class ZeroTierNative {
// /*const*/ struct iovec* iov, int iovcnt); public static native int write(int fd, /*const*/ void* buf, size_t // /*const*/ struct iovec* iov, int iovcnt); public static native int write(int fd, /*const*/ void* buf, size_t
// len); public static native int writev(int fd, /*const*/ struct iovec* iov, int iovcnt); public static native int // len); public static native int writev(int fd, /*const*/ struct iovec* iov, int iovcnt); public static native int
// shutdown(int fd, int how); // shutdown(int fd, int how);
public static native int zts_simple_connect(int fd, /*const*/ String ipstr, int port, int timeout_ms); public static native int zts_connect(int fd, /*const*/ String ipstr, int port, int timeout_ms);
public static native int zts_simple_bind(int fd, /*const*/ String ipstr, int port); public static native int zts_bind(int fd, /*const*/ String ipstr, int port);
// public static native int zts_simple_accept(int fd, String remote_addr, int len, int* port); // public static native int zts_accept(int fd, String remote_addr, int len, int* port);
public static native int zts_simple_tcp_client(/*const*/ String remote_ipstr, int remote_port); public static native int zts_tcp_client(/*const*/ String remote_ipstr, int remote_port);
// public static native int zts_simple_tcp_server(/*const*/ String local_ipstr, int local_port, String remote_ipstr, // public static native int zts_tcp_server(/*const*/ String local_ipstr, int local_port, String remote_ipstr,
// int len, int* remote_port); // int len, int* remote_port);
public static native int zts_simple_udp_server(/*const*/ String local_ipstr, int local_port); public static native int zts_udp_server(/*const*/ String local_ipstr, int local_port);
public static native int zts_simple_udp_client(/*const*/ String remote_ipstr); public static native int zts_udp_client(/*const*/ String remote_ipstr);
public static native int zts_simple_set_no_delay(int fd, int enabled); public static native int zts_set_no_delay(int fd, int enabled);
public static native int zts_simple_get_no_delay(int fd); public static native int zts_get_no_delay(int fd);
public static native int zts_simple_set_linger(int fd, int enabled, int value); public static native int zts_set_linger(int fd, int enabled, int value);
public static native int zts_simple_get_linger_enabled(int fd); public static native int zts_get_linger_enabled(int fd);
public static native int zts_simple_get_linger_value(int fd); public static native int zts_get_linger_value(int fd);
public static native int zts_simple_get_pending_data_size(int fd); public static native int zts_get_pending_data_size(int fd);
public static native int zts_simple_set_reuse_addr(int fd, int enabled); public static native int zts_set_reuse_addr(int fd, int enabled);
public static native int zts_simple_get_reuse_addr(int fd); public static native int zts_get_reuse_addr(int fd);
public static native int zts_simple_set_recv_timeout(int fd, int seconds, int microseconds); public static native int zts_set_recv_timeout(int fd, int seconds, int microseconds);
public static native int zts_simple_get_recv_timeout(int fd); public static native int zts_get_recv_timeout(int fd);
public static native int zts_simple_set_send_timeout(int fd, int seconds, int microseconds); public static native int zts_set_send_timeout(int fd, int seconds, int microseconds);
public static native int zts_simple_get_send_timeout(int fd); public static native int zts_get_send_timeout(int fd);
public static native int zts_simple_set_send_buf_size(int fd, int size); public static native int zts_set_send_buf_size(int fd, int size);
public static native int zts_simple_get_send_buf_size(int fd); public static native int zts_get_send_buf_size(int fd);
public static native int zts_simple_set_recv_buf_size(int fd, int size); public static native int zts_set_recv_buf_size(int fd, int size);
public static native int zts_simple_get_recv_buf_size(int fd); public static native int zts_get_recv_buf_size(int fd);
public static native int zts_simple_set_ttl(int fd, int ttl); public static native int zts_set_ttl(int fd, int ttl);
public static native int zts_simple_get_ttl(int fd); public static native int zts_get_ttl(int fd);
public static native int zts_simple_set_blocking(int fd, int enabled); public static native int zts_set_blocking(int fd, int enabled);
public static native int zts_simple_get_blocking(int fd); public static native int zts_get_blocking(int fd);
public static native int zts_simple_set_keepalive(int fd, int enabled); public static native int zts_set_keepalive(int fd, int enabled);
public static native int zts_simple_get_keepalive(int fd); public static native int zts_get_keepalive(int fd);
// struct hostent* gethostbyname(/*const*/ String name); // struct hostent* gethostbyname(/*const*/ String name);
// public static native int zts_dns_set_server(uint8_t index, /*const*/ ip_addr* addr); // public static native int zts_dns_set_server(uint8_t index, /*const*/ ip_addr* addr);
// ZTS_API /*const*/ ip_addr* ZTCALL dns_get_server(uint8_t index); // ZTS_API /*const*/ ip_addr* ZTCALL dns_get_server(uint8_t index);
@@ -565,35 +565,35 @@ public class ZeroTierNative {
// Socket API // // Socket API //
////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////
public static native int zts_socket(int family, int type, int protocol); public static native int zts_bsd_socket(int family, int type, int protocol);
// public static native int zts_connect(int fd, ZeroTierSocketAddress addr); // public static native int zts_bsd_connect(int fd, ZeroTierSocketAddress addr);
// public static native int zts_bind(int fd, ZeroTierSocketAddress addr); // public static native int zts_bsd_bind(int fd, ZeroTierSocketAddress addr);
public static native int zts_listen(int fd, int backlog); public static native int zts_bsd_listen(int fd, int backlog);
public static native int zts_accept(int fd, ZeroTierSocketAddress addr); public static native int zts_bsd_accept(int fd, ZeroTierSocketAddress addr);
// public static native int zts_setsockopt(int fd, int level, int optname, ZeroTierSocketOptionValue optval); // public static native int zts_bsd_setsockopt(int fd, int level, int optname, ZeroTierSocketOptionValue optval);
// public static native int zts_getsockopt(int fd, int level, int optname, ZeroTierSocketOptionValue optval); // public static native int zts_bsd_getsockopt(int fd, int level, int optname, ZeroTierSocketOptionValue optval);
public static native int zts_read(int fd, byte[] buf); public static native int zts_bsd_read(int fd, byte[] buf);
public static native int zts_read_offset(int fd, byte[] buf, int offset, int len); public static native int zts_bsd_read_offset(int fd, byte[] buf, int offset, int len);
public static native int zts_read_length(int fd, byte[] buf, int len); public static native int zts_bsd_read_length(int fd, byte[] buf, int len);
public static native int zts_recv(int fd, byte[] buf, int flags); public static native int zts_bsd_recv(int fd, byte[] buf, int flags);
public static native int zts_recvfrom(int fd, byte[] buf, int flags, ZeroTierSocketAddress addr); public static native int zts_bsd_recvfrom(int fd, byte[] buf, int flags, ZeroTierSocketAddress addr);
public static native int zts_write(int fd, byte[] buf); public static native int zts_bsd_write(int fd, byte[] buf);
public static native int zts_write_byte(int fd, byte b); public static native int zts_bsd_write_byte(int fd, byte b);
public static native int zts_write_offset(int fd, byte[] buf, int offset, int len); public static native int zts_bsd_write_offset(int fd, byte[] buf, int offset, int len);
public static native int zts_sendto(int fd, byte[] buf, int flags, ZeroTierSocketAddress addr); public static native int zts_bsd_sendto(int fd, byte[] buf, int flags, ZeroTierSocketAddress addr);
public static native int zts_send(int fd, byte[] buf, int flags); public static native int zts_bsd_send(int fd, byte[] buf, int flags);
public static native int zts_shutdown(int fd, int how); public static native int zts_bsd_shutdown(int fd, int how);
public static native int zts_close(int fd); public static native int zts_bsd_close(int fd);
public static native boolean zts_getsockname(int fd, ZeroTierSocketAddress addr); public static native boolean zts_bsd_getsockname(int fd, ZeroTierSocketAddress addr);
public static native int zts_getpeername(int fd, ZeroTierSocketAddress addr); public static native int zts_bsd_getpeername(int fd, ZeroTierSocketAddress addr);
public static native int zts_fcntl(int sock, int cmd, int flag); public static native int zts_bsd_fcntl(int sock, int cmd, int flag);
// public static native int zts_ioctl(int fd, long request, ZeroTierIoctlArg arg); // public static native int zts_bsd_ioctl(int fd, long request, ZeroTierIoctlArg arg);
public static native int zts_select( public static native int zts_bsd_select(
int nfds, int nfds,
ZeroTierFileDescriptorSet readfds, ZeroTierFileDescriptorSet readfds,
ZeroTierFileDescriptorSet writefds, ZeroTierFileDescriptorSet writefds,

View File

@@ -39,7 +39,7 @@ public class ZeroTierOutputStream extends OutputStream {
it and free resources. Resources will be properly freed when the it and free resources. Resources will be properly freed when the
socket implementation's native close() is called or if both I/OStreams socket implementation's native close() is called or if both I/OStreams
are closed separately */ are closed separately */
ZeroTierNative.zts_shutdown(zfd, ZeroTierNative.ZTS_SHUT_WR); ZeroTierNative.zts_bsd_shutdown(zfd, ZeroTierNative.ZTS_SHUT_WR);
zfd = -1; zfd = -1;
} }
@@ -50,7 +50,7 @@ public class ZeroTierOutputStream extends OutputStream {
*/ */
public void write(byte[] originBuffer) throws IOException public void write(byte[] originBuffer) throws IOException
{ {
int bytesWritten = ZeroTierNative.zts_write(zfd, originBuffer); int bytesWritten = ZeroTierNative.zts_bsd_write(zfd, originBuffer);
if (bytesWritten < 0) { if (bytesWritten < 0) {
throw new IOException("write(originBuffer[]), errno=" + bytesWritten); throw new IOException("write(originBuffer[]), errno=" + bytesWritten);
} }
@@ -75,7 +75,7 @@ public class ZeroTierOutputStream extends OutputStream {
if ((offset + numBytes) > originBuffer.length) { if ((offset + numBytes) > originBuffer.length) {
throw new IndexOutOfBoundsException("(offset+numBytes) > originBuffer.length"); throw new IndexOutOfBoundsException("(offset+numBytes) > originBuffer.length");
} }
int bytesWritten = ZeroTierNative.zts_write_offset(zfd, originBuffer, offset, numBytes); int bytesWritten = ZeroTierNative.zts_bsd_write_offset(zfd, originBuffer, offset, numBytes);
if (bytesWritten < 0) { if (bytesWritten < 0) {
throw new IOException("write(originBuffer[],offset,numBytes), errno=" + bytesWritten); throw new IOException("write(originBuffer[],offset,numBytes), errno=" + bytesWritten);
} }
@@ -89,7 +89,7 @@ public class ZeroTierOutputStream extends OutputStream {
public void write(int d) throws IOException public void write(int d) throws IOException
{ {
byte lowByte = (byte)(d & 0xFF); byte lowByte = (byte)(d & 0xFF);
int bytesWritten = ZeroTierNative.zts_write_byte(zfd, lowByte); int bytesWritten = ZeroTierNative.zts_bsd_write_byte(zfd, lowByte);
if (bytesWritten < 0) { if (bytesWritten < 0) {
throw new IOException("write(d), errno=" + bytesWritten); throw new IOException("write(d), errno=" + bytesWritten);
} }

View File

@@ -76,7 +76,7 @@ public class ZeroTierSocket {
if (_zfd > -1) { if (_zfd > -1) {
throw new IOException("This socket has already been created (fd=" + _zfd + ")"); throw new IOException("This socket has already been created (fd=" + _zfd + ")");
} }
_zfd = ZeroTierNative.zts_socket(ZeroTierNative.ZTS_AF_INET, ZeroTierNative.ZTS_SOCK_STREAM, protocol); _zfd = ZeroTierNative.zts_bsd_socket(ZeroTierNative.ZTS_AF_INET, ZeroTierNative.ZTS_SOCK_STREAM, protocol);
if (_zfd < 0) { if (_zfd < 0) {
throw new IOException("Error while creating socket (" + _zfd + ")"); throw new IOException("Error while creating socket (" + _zfd + ")");
} }
@@ -105,7 +105,7 @@ public class ZeroTierSocket {
throw new IOException("Invalid address type. Socket is of type AF_INET6"); throw new IOException("Invalid address type. Socket is of type AF_INET6");
} }
int err; int err;
if ((err = ZeroTierNative.zts_simple_connect(_zfd, remoteAddr.getHostAddress(), remotePort, 0)) < 0) { if ((err = ZeroTierNative.zts_connect(_zfd, remoteAddr.getHostAddress(), remotePort, 0)) < 0) {
throw new IOException("Error while connecting to remote host (" + err + ")"); throw new IOException("Error while connecting to remote host (" + err + ")");
} }
_isConnected = true; _isConnected = true;
@@ -155,7 +155,7 @@ public class ZeroTierSocket {
throw new IOException("Invalid address type. Socket is of type AF_INET6"); throw new IOException("Invalid address type. Socket is of type AF_INET6");
} }
int err; int err;
if ((err = ZeroTierNative.zts_simple_bind(_zfd, localAddr.getHostAddress(), localPort)) < 0) { if ((err = ZeroTierNative.zts_bind(_zfd, localAddr.getHostAddress(), localPort)) < 0) {
throw new IOException("Error while connecting to remote host (" + err + ")"); throw new IOException("Error while connecting to remote host (" + err + ")");
} }
_localPort = localPort; _localPort = localPort;
@@ -190,7 +190,7 @@ public class ZeroTierSocket {
throw new IOException("Invalid backlog value"); throw new IOException("Invalid backlog value");
} }
int err; int err;
if ((err = ZeroTierNative.zts_listen(_zfd, backlog)) < 0) { if ((err = ZeroTierNative.zts_bsd_listen(_zfd, backlog)) < 0) {
throw new IOException("Error while putting socket into listening state (" + err + ")"); throw new IOException("Error while putting socket into listening state (" + err + ")");
} }
} }
@@ -207,7 +207,7 @@ public class ZeroTierSocket {
} }
int accetpedFd = -1; int accetpedFd = -1;
ZeroTierSocketAddress addr = new ZeroTierSocketAddress(); ZeroTierSocketAddress addr = new ZeroTierSocketAddress();
if ((accetpedFd = ZeroTierNative.zts_accept(_zfd, addr)) < 0) { if ((accetpedFd = ZeroTierNative.zts_bsd_accept(_zfd, addr)) < 0) {
throw new IOException("Error while accepting connection (" + accetpedFd + ")"); throw new IOException("Error while accepting connection (" + accetpedFd + ")");
} }
return new ZeroTierSocket(_family, _type, _protocol, accetpedFd); return new ZeroTierSocket(_family, _type, _protocol, accetpedFd);
@@ -223,7 +223,7 @@ public class ZeroTierSocket {
if (_zfd < 0) { if (_zfd < 0) {
throw new IOException("Invalid socket (fd < 0)"); throw new IOException("Invalid socket (fd < 0)");
} }
ZeroTierNative.zts_close(_zfd); ZeroTierNative.zts_bsd_close(_zfd);
_isClosed = true; _isClosed = true;
} }
@@ -237,7 +237,7 @@ public class ZeroTierSocket {
if (_isClosed) { if (_isClosed) {
throw new SocketException("Error: ZeroTierSocket is closed"); throw new SocketException("Error: ZeroTierSocket is closed");
} }
return ZeroTierNative.zts_simple_get_keepalive(_zfd) == 1; return ZeroTierNative.zts_get_keepalive(_zfd) == 1;
} }
/** /**
@@ -298,7 +298,7 @@ public class ZeroTierSocket {
if (_isClosed) { if (_isClosed) {
throw new SocketException("Error: ZeroTierSocket is closed"); throw new SocketException("Error: ZeroTierSocket is closed");
} }
return ZeroTierNative.zts_simple_get_recv_buf_size(_zfd); return ZeroTierNative.zts_get_recv_buf_size(_zfd);
} }
/** /**
@@ -311,7 +311,7 @@ public class ZeroTierSocket {
if (_isClosed) { if (_isClosed) {
throw new SocketException("Error: ZeroTierSocket is closed"); throw new SocketException("Error: ZeroTierSocket is closed");
} }
return ZeroTierNative.zts_simple_get_send_buf_size(_zfd); return ZeroTierNative.zts_get_send_buf_size(_zfd);
} }
/** /**
@@ -324,7 +324,7 @@ public class ZeroTierSocket {
if (_isClosed) { if (_isClosed) {
throw new SocketException("Error: ZeroTierSocket is closed"); throw new SocketException("Error: ZeroTierSocket is closed");
} }
return ZeroTierNative.zts_simple_get_reuse_addr(_zfd) == 1; return ZeroTierNative.zts_get_reuse_addr(_zfd) == 1;
} }
/** /**
@@ -337,7 +337,7 @@ public class ZeroTierSocket {
if (_isClosed) { if (_isClosed) {
throw new SocketException("Error: ZeroTierSocket is closed"); throw new SocketException("Error: ZeroTierSocket is closed");
} }
return ZeroTierNative.zts_simple_get_linger_value(_zfd); return ZeroTierNative.zts_get_linger_value(_zfd);
} }
/** /**
@@ -350,7 +350,7 @@ public class ZeroTierSocket {
if (_isClosed) { if (_isClosed) {
throw new SocketException("Error: ZeroTierSocket is closed"); throw new SocketException("Error: ZeroTierSocket is closed");
} }
return ZeroTierNative.zts_simple_get_recv_timeout(_zfd); return ZeroTierNative.zts_get_recv_timeout(_zfd);
} }
/** /**
@@ -363,7 +363,7 @@ public class ZeroTierSocket {
if (_isClosed) { if (_isClosed) {
throw new SocketException("Error: ZeroTierSocket is closed"); throw new SocketException("Error: ZeroTierSocket is closed");
} }
return ZeroTierNative.zts_simple_get_no_delay(_zfd) == 1; return ZeroTierNative.zts_get_no_delay(_zfd) == 1;
} }
/** /**
@@ -409,7 +409,7 @@ public class ZeroTierSocket {
if (_inputHasBeenShutdown) { if (_inputHasBeenShutdown) {
throw new SocketException("Error: ZeroTierSocket input has been shut down"); throw new SocketException("Error: ZeroTierSocket input has been shut down");
} }
ZeroTierNative.zts_shutdown(_zfd, ZeroTierNative.ZTS_SHUT_RD); ZeroTierNative.zts_bsd_shutdown(_zfd, ZeroTierNative.ZTS_SHUT_RD);
_inputHasBeenShutdown = true; _inputHasBeenShutdown = true;
} }
@@ -429,7 +429,7 @@ public class ZeroTierSocket {
if (_outputHasBeenShutdown) { if (_outputHasBeenShutdown) {
throw new SocketException("Error: ZeroTierSocket output has been shut down"); throw new SocketException("Error: ZeroTierSocket output has been shut down");
} }
ZeroTierNative.zts_shutdown(_zfd, ZeroTierNative.ZTS_SHUT_WR); ZeroTierNative.zts_bsd_shutdown(_zfd, ZeroTierNative.ZTS_SHUT_WR);
_outputHasBeenShutdown = true; _outputHasBeenShutdown = true;
} }
@@ -500,7 +500,7 @@ public class ZeroTierSocket {
if (_isClosed) { if (_isClosed) {
throw new SocketException("Error: ZeroTierSocket is closed"); throw new SocketException("Error: ZeroTierSocket is closed");
} }
if (ZeroTierNative.zts_simple_set_keepalive(_zfd, (enabled ? 1 : 0)) != ZeroTierNative.ZTS_ERR_OK) { if (ZeroTierNative.zts_set_keepalive(_zfd, (enabled ? 1 : 0)) != ZeroTierNative.ZTS_ERR_OK) {
throw new SocketException("Error: Could not set SO_KEEPALIVE"); throw new SocketException("Error: Could not set SO_KEEPALIVE");
} }
} }
@@ -519,7 +519,7 @@ public class ZeroTierSocket {
if (bufferSize <= 0) { if (bufferSize <= 0) {
throw new IllegalArgumentException("Error: bufferSize <= 0"); throw new IllegalArgumentException("Error: bufferSize <= 0");
} }
if (ZeroTierNative.zts_simple_set_recv_buf_size(_zfd, bufferSize) != ZeroTierNative.ZTS_ERR_OK) { if (ZeroTierNative.zts_set_recv_buf_size(_zfd, bufferSize) != ZeroTierNative.ZTS_ERR_OK) {
throw new SocketException("Error: Could not set receive buffer size"); throw new SocketException("Error: Could not set receive buffer size");
} }
} }
@@ -535,7 +535,7 @@ public class ZeroTierSocket {
if (_isClosed) { if (_isClosed) {
throw new SocketException("Error: ZeroTierSocket is closed"); throw new SocketException("Error: ZeroTierSocket is closed");
} }
if (ZeroTierNative.zts_simple_set_reuse_addr(_zfd, (enabled ? 1 : 0)) != ZeroTierNative.ZTS_ERR_OK) { if (ZeroTierNative.zts_set_reuse_addr(_zfd, (enabled ? 1 : 0)) != ZeroTierNative.ZTS_ERR_OK) {
throw new SocketException("Error: Could not set SO_REUSEADDR"); throw new SocketException("Error: Could not set SO_REUSEADDR");
} }
} }
@@ -554,7 +554,7 @@ public class ZeroTierSocket {
if (bufferSize <= 0) { if (bufferSize <= 0) {
throw new IllegalArgumentException("Error: bufferSize <= 0"); throw new IllegalArgumentException("Error: bufferSize <= 0");
} }
if (ZeroTierNative.zts_simple_set_send_buf_size(_zfd, bufferSize) != ZeroTierNative.ZTS_ERR_OK) { if (ZeroTierNative.zts_set_send_buf_size(_zfd, bufferSize) != ZeroTierNative.ZTS_ERR_OK) {
throw new SocketException("Error: Could not set SO_SNDBUF"); throw new SocketException("Error: Could not set SO_SNDBUF");
} }
} }
@@ -574,7 +574,7 @@ public class ZeroTierSocket {
if (lingerTime < 0) { if (lingerTime < 0) {
throw new IllegalArgumentException("Error: lingerTime < 0"); throw new IllegalArgumentException("Error: lingerTime < 0");
} }
if (ZeroTierNative.zts_simple_set_linger(_zfd, (enabled ? 1 : 0), lingerTime) != ZeroTierNative.ZTS_ERR_OK) { if (ZeroTierNative.zts_set_linger(_zfd, (enabled ? 1 : 0), lingerTime) != ZeroTierNative.ZTS_ERR_OK) {
throw new SocketException("Error: Could not set ZTS_SO_LINGER"); throw new SocketException("Error: Could not set ZTS_SO_LINGER");
} }
} }
@@ -594,7 +594,7 @@ public class ZeroTierSocket {
throw new IllegalArgumentException("Error: SO_TIMEOUT < 0"); throw new IllegalArgumentException("Error: SO_TIMEOUT < 0");
} }
// TODO: This is incorrect // TODO: This is incorrect
if (ZeroTierNative.zts_simple_set_recv_timeout(_zfd, timeout, timeout) != ZeroTierNative.ZTS_ERR_OK) { if (ZeroTierNative.zts_set_recv_timeout(_zfd, timeout, timeout) != ZeroTierNative.ZTS_ERR_OK) {
throw new SocketException("Error: Could not set SO_RCVTIMEO"); throw new SocketException("Error: Could not set SO_RCVTIMEO");
} }
} }
@@ -610,7 +610,7 @@ public class ZeroTierSocket {
if (_isClosed) { if (_isClosed) {
throw new SocketException("Error: ZeroTierSocket is closed"); throw new SocketException("Error: ZeroTierSocket is closed");
} }
if (ZeroTierNative.zts_simple_set_no_delay(_zfd, (enabled ? 1 : 0)) != ZeroTierNative.ZTS_ERR_OK) { if (ZeroTierNative.zts_set_no_delay(_zfd, (enabled ? 1 : 0)) != ZeroTierNative.ZTS_ERR_OK) {
throw new SocketException("Error: Could not set TCP_NODELAY"); throw new SocketException("Error: Could not set TCP_NODELAY");
} }
} }

View File

@@ -29,7 +29,7 @@ int zts_py_setblocking(int fd, int block)
{ {
int new_flags, cur_flags, err = 0; int new_flags, cur_flags, err = 0;
Py_BEGIN_ALLOW_THREADS cur_flags = zts_fcntl(fd, F_GETFL, 0); Py_BEGIN_ALLOW_THREADS cur_flags = zts_bsd_fcntl(fd, F_GETFL, 0);
if (cur_flags < 0) { if (cur_flags < 0) {
err = ZTS_ERR_SOCKET; err = ZTS_ERR_SOCKET;
@@ -44,7 +44,7 @@ int zts_py_setblocking(int fd, int block)
} }
if (new_flags != cur_flags) { if (new_flags != cur_flags) {
err = zts_fcntl(fd, F_SETFL, new_flags); err = zts_bsd_fcntl(fd, F_SETFL, new_flags);
} }
done: done:
@@ -57,7 +57,7 @@ int zts_py_getblocking(int fd)
{ {
int flags; int flags;
Py_BEGIN_ALLOW_THREADS flags = zts_fcntl(fd, F_GETFL, 0); Py_BEGIN_ALLOW_THREADS flags = zts_bsd_fcntl(fd, F_GETFL, 0);
Py_END_ALLOW_THREADS Py_END_ALLOW_THREADS
if (flags < 0) if (flags < 0)
@@ -103,7 +103,7 @@ PyObject* zts_py_accept(int fd)
{ {
struct zts_sockaddr_in addrbuf = { 0 }; struct zts_sockaddr_in addrbuf = { 0 };
socklen_t addrlen = sizeof(addrbuf); socklen_t addrlen = sizeof(addrbuf);
int err = zts_accept(fd, (struct zts_sockaddr*)&addrbuf, &addrlen); int err = zts_bsd_accept(fd, (struct zts_sockaddr*)&addrbuf, &addrlen);
char ipstr[ZTS_INET_ADDRSTRLEN] = { 0 }; char ipstr[ZTS_INET_ADDRSTRLEN] = { 0 };
zts_inet_ntop(ZTS_AF_INET, &(addrbuf.sin_addr), ipstr, ZTS_INET_ADDRSTRLEN); zts_inet_ntop(ZTS_AF_INET, &(addrbuf.sin_addr), ipstr, ZTS_INET_ADDRSTRLEN);
PyObject* t; PyObject* t;
@@ -120,7 +120,7 @@ int zts_py_listen(int fd, int backlog)
if (backlog < 0) { if (backlog < 0) {
backlog = 128; backlog = 128;
} }
return zts_listen(fd, backlog); return zts_bsd_listen(fd, backlog);
} }
int zts_py_bind(int fd, int family, int type, PyObject* addr_obj) int zts_py_bind(int fd, int family, int type, PyObject* addr_obj)
@@ -131,7 +131,7 @@ int zts_py_bind(int fd, int family, int type, PyObject* addr_obj)
if (zts_py_tuple_to_sockaddr(family, addr_obj, (struct zts_sockaddr*)&addrbuf, &addrlen) != ZTS_ERR_OK) { if (zts_py_tuple_to_sockaddr(family, addr_obj, (struct zts_sockaddr*)&addrbuf, &addrlen) != ZTS_ERR_OK) {
return ZTS_ERR_ARG; return ZTS_ERR_ARG;
} }
Py_BEGIN_ALLOW_THREADS err = zts_bind(fd, (struct zts_sockaddr*)&addrbuf, addrlen); Py_BEGIN_ALLOW_THREADS err = zts_bsd_bind(fd, (struct zts_sockaddr*)&addrbuf, addrlen);
Py_END_ALLOW_THREADS return err; Py_END_ALLOW_THREADS return err;
} }
@@ -143,7 +143,7 @@ int zts_py_connect(int fd, int family, int type, PyObject* addr_obj)
if (zts_py_tuple_to_sockaddr(family, addr_obj, (struct zts_sockaddr*)&addrbuf, &addrlen) != ZTS_ERR_OK) { if (zts_py_tuple_to_sockaddr(family, addr_obj, (struct zts_sockaddr*)&addrbuf, &addrlen) != ZTS_ERR_OK) {
return ZTS_ERR_ARG; return ZTS_ERR_ARG;
} }
Py_BEGIN_ALLOW_THREADS err = zts_connect(fd, (struct zts_sockaddr*)&addrbuf, addrlen); Py_BEGIN_ALLOW_THREADS err = zts_bsd_connect(fd, (struct zts_sockaddr*)&addrbuf, addrlen);
Py_END_ALLOW_THREADS return err; Py_END_ALLOW_THREADS return err;
} }
@@ -157,7 +157,7 @@ PyObject* zts_py_recv(int fd, int len, int flags)
return NULL; return NULL;
} }
bytes_read = zts_recv(fd, PyBytes_AS_STRING(buf), len, flags); bytes_read = zts_bsd_recv(fd, PyBytes_AS_STRING(buf), len, flags);
t = PyTuple_New(2); t = PyTuple_New(2);
PyTuple_SetItem(t, 0, PyLong_FromLong(bytes_read)); PyTuple_SetItem(t, 0, PyLong_FromLong(bytes_read));
@@ -187,7 +187,7 @@ int zts_py_send(int fd, PyObject* buf, int flags)
return 0; return 0;
} }
bytes_sent = zts_send(fd, output.buf, output.len, flags); bytes_sent = zts_bsd_send(fd, output.buf, output.len, flags);
PyBuffer_Release(&output); PyBuffer_Release(&output);
return bytes_sent; return bytes_sent;
@@ -196,7 +196,7 @@ int zts_py_send(int fd, PyObject* buf, int flags)
int zts_py_close(int fd) int zts_py_close(int fd)
{ {
int err; int err;
Py_BEGIN_ALLOW_THREADS err = zts_close(fd); Py_BEGIN_ALLOW_THREADS err = zts_bsd_close(fd);
Py_END_ALLOW_THREADS return err; Py_END_ALLOW_THREADS return err;
} }

1217
src/bindings/python/libzt.py Normal file → Executable file

File diff suppressed because it is too large Load Diff

View File

@@ -46,7 +46,7 @@ class socket:
# Only create native socket if no fd was provided. We may have # Only create native socket if no fd was provided. We may have
# accepted a connection # accepted a connection
if sock_fd is None: if sock_fd is None:
self._fd = libzt.zts_socket(sock_family, sock_type, sock_proto) self._fd = libzt.zts_bsd_socket(sock_family, sock_type, sock_proto)
def has_dualstack_ipv6(self): def has_dualstack_ipv6(self):
"""Return whether libzt supports dual stack sockets: yes""" """Return whether libzt supports dual stack sockets: yes"""
@@ -427,4 +427,4 @@ class socket:
- ZTS_SHUT_WR - Shut down writing side of socket. - ZTS_SHUT_WR - Shut down writing side of socket.
- ZTS_SHUT_RDWR - Both ends of the socket. - ZTS_SHUT_RDWR - Both ends of the socket.
""" """
libzt.zts_shutdown(self._fd, how) libzt.zts_bsd_shutdown(self._fd, how)

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,63 @@
/* ----------------------------------------------------------------------------
* This file was automatically generated by SWIG (http://www.swig.org).
* Version 4.0.2
*
* This file is not intended to be easily readable and contains a number of
* coding conventions designed to improve portability and efficiency. Do not make
* changes to this file unless you know what you are doing--modify the SWIG
* interface file instead.
* ----------------------------------------------------------------------------- */
#ifndef SWIG_libzt_WRAP_H_
#define SWIG_libzt_WRAP_H_
#include <map>
#include <string>
class SwigDirector_PythonDirectorCallbackClass
: public PythonDirectorCallbackClass
, public Swig::Director {
public:
SwigDirector_PythonDirectorCallbackClass(PyObject* self);
virtual void on_zerotier_event(zts_event_msg_t* msg);
virtual ~SwigDirector_PythonDirectorCallbackClass();
/* Internal director utilities */
public:
bool swig_get_inner(const char* swig_protected_method_name) const
{
std::map<std::string, bool>::const_iterator iv = swig_inner.find(swig_protected_method_name);
return (iv != swig_inner.end() ? iv->second : false);
}
void swig_set_inner(const char* swig_protected_method_name, bool swig_val) const
{
swig_inner[swig_protected_method_name] = swig_val;
}
private:
mutable std::map<std::string, bool> swig_inner;
#if defined(SWIG_PYTHON_DIRECTOR_VTABLE)
/* VTable implementation */
PyObject* swig_get_method(size_t method_index, const char* method_name) const
{
PyObject* method = vtable[method_index];
if (! method) {
swig::SwigVar_PyObject name = SWIG_Python_str_FromChar(method_name);
method = PyObject_GetAttr(swig_get_self(), name);
if (! method) {
std::string msg = "Method in class PythonDirectorCallbackClass doesn't exist, undefined ";
msg += method_name;
Swig::DirectorMethodException::raise(msg.c_str());
}
vtable[method_index] = method;
}
return method;
}
private:
mutable swig::SwigVar_PyObject vtable[1];
#endif
};
#endif