From f1ddc12b68b4e4c8087962de25260470e6df2bea Mon Sep 17 00:00:00 2001 From: Connor Thomson Date: Tue, 8 Sep 2026 18:27:39 -0700 Subject: Add tuxanci2 files --- src/net/CMakeLists.txt | 7 - src/net/dns.c | 26 ---- src/net/dns.h | 6 - src/net/tcp.c | 337 ------------------------------------------------- src/net/tcp.h | 45 ------- src/net/udp.c | 328 ----------------------------------------------- src/net/udp.h | 37 ------ 7 files changed, 786 deletions(-) delete mode 100644 src/net/CMakeLists.txt delete mode 100644 src/net/dns.c delete mode 100644 src/net/dns.h delete mode 100644 src/net/tcp.c delete mode 100644 src/net/tcp.h delete mode 100644 src/net/udp.c delete mode 100644 src/net/udp.h (limited to 'src/net') diff --git a/src/net/CMakeLists.txt b/src/net/CMakeLists.txt deleted file mode 100644 index 2e93cef..0000000 --- a/src/net/CMakeLists.txt +++ /dev/null @@ -1,7 +0,0 @@ -############################################################################### -# tuxanci/src/*/CMakeLists.txt -############################################################################### -# Generate source_code files from .c files we find in directory -############################################################################### -MacroAddSources() -############################################################################### diff --git a/src/net/dns.c b/src/net/dns.c deleted file mode 100644 index 83853e2..0000000 --- a/src/net/dns.c +++ /dev/null @@ -1,26 +0,0 @@ -#ifndef __WIN32__ -#include -#include -#include -#include -#else -#include -#include -#endif - -#include -#include "main.h" -#include "dns.h" - -char *dns_resolv(char *domain) -{ - struct hostent *host; - - host = gethostbyname(domain); - - if (host == NULL || host->h_addr_list[0] == NULL) { - return NULL; - } - - return strdup(inet_ntoa(*((struct in_addr *) host->h_addr_list[0]))); -} diff --git a/src/net/dns.h b/src/net/dns.h deleted file mode 100644 index 082c01f..0000000 --- a/src/net/dns.h +++ /dev/null @@ -1,6 +0,0 @@ -#ifndef DNS_H -#define DNS_H - -extern char *dns_resolv(char *domain); - -#endif /* DNS_H */ diff --git a/src/net/tcp.c b/src/net/tcp.c deleted file mode 100644 index 20ab3aa..0000000 --- a/src/net/tcp.c +++ /dev/null @@ -1,337 +0,0 @@ -#include -#include -#include - -#ifndef __WIN32__ -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#else /* __WIN32__ */ -#include -#include -#endif /* __WIN32__ */ - -#include -#include - -#include "tcp.h" - -sock_tcp_t *sock_tcp_new(void) -{ - sock_tcp_t *new; - - new = malloc(sizeof(sock_tcp_t)); - memset(new, 0, sizeof(sock_tcp_t)); - - return new; -} - -void sock_tcp_destroy(sock_tcp_t *p) -{ - assert(p != NULL); - free(p); -} - -static int getProto(char *str) -{ - if (strstr(str, ".") != NULL) - return PROTO_TCPv4; - if (strstr(str, ":") != NULL) - return PROTO_TCPv6; - - fatal("Network protocol not detected"); - return -1; -} - -sock_tcp_t *sock_tcp_bind(char *address, int port) -{ - sock_tcp_t *new; - unsigned long param_setsock = 1; - int len; - int ret; - - assert(port > 0 && port < 65535); - - new = sock_tcp_new(); - new->proto = getProto(address); - ret = -1; /* no warnings */ - - assert(new != NULL); - - if (new->proto == PROTO_TCPv4) { - new->sock = socket(AF_INET, SOCK_STREAM, 0); - } -#ifdef SUPPORT_IPv6 - if (new->proto == PROTO_TCPv6) { - new->sock = socket(AF_INET6, SOCK_STREAM, 0); - } -#endif - - if (new->sock < 0) { - error("Unable to create TCP socket"); - sock_tcp_destroy(new); -#ifdef __WIN32__ - WSACleanup(); -#endif - return NULL; - } - - setsockopt(new->sock, SOL_SOCKET, SO_REUSEADDR, (char *) ¶m_setsock, sizeof(param_setsock)); - - if (new->proto == PROTO_TCPv4) { - new->sockAddr.sin_family = AF_INET; -#ifndef __WIN32__ - inet_pton(AF_INET, address, &(new->sockAddr.sin_addr)); -#else - new->sockAddr.sin_addr.s_addr = inet_addr(address); -#endif - new->sockAddr.sin_port = htons(port); - - len = sizeof(new->sockAddr); - ret = bind(new->sock, (struct sockaddr *) &new->sockAddr, len); - } -#ifdef SUPPORT_IPv6 - if (new->proto == PROTO_TCPv6) { - new->sockAddr6.sin6_family = AF_INET6; - /*new->sockAddr.sin_addr.s_addr = htonl(INADDR_ANY);*/ -#ifndef __WIN32__ - inet_pton(AF_INET6, address, &(new->sockAddr6.sin6_addr)); -#else /* __WIN32__ */ - new->sockAddr6.sin6_addr.s_addr = inet_addr(address); -#endif /* __WIN32__ */ - new->sockAddr6.sin6_port = htons(port); - - len = sizeof(new->sockAddr6); - ret = bind(new->sock, (struct sockaddr *) &new->sockAddr6, len); - } -#endif /* SUPPORT_IPv6 */ - - if (ret < 0) { - error("Unable to bind to TCP port [%d]", port); - sock_tcp_destroy(new); -#ifdef __WIN32__ - WSACleanup(); -#endif - return NULL; - } - - listen(new->sock, 5); - - return new; -} - -sock_tcp_t *sock_tcp_accept(sock_tcp_t *p) -{ - sock_tcp_t *new; - int client_len; - - assert(p != NULL); - assert(p->sock >= 0); - - new = sock_tcp_new(); - new->proto = p->proto; - - if (new->proto == PROTO_TCPv4) { - client_len = sizeof(new->sockAddr); -#ifndef __WIN32__ - new->sock = accept(p->sock, (struct sockaddr *) &new->sockAddr, (socklen_t *) &client_len); -#else - new->sock = accept(p->sock, (struct sockaddr *) &new->sockAddr, (long *) &client_len); -#endif - } -#ifdef SUPPORT_IPv6 - if (new->proto == PROTO_TCPv6) { - client_len = sizeof(new->sockAddr6); -#ifndef __WIN32__ - new->sock = accept(p->sock, (struct sockaddr *) &new->sockAddr6, (socklen_t *) &client_len); -#else /* __WIN32__ */ - new->sock = accept(p->sock, (struct sockaddr *) &new->sockAddr6, (long *) &client_len); -#endif /* __WIN32__ */ - } -#endif /* SUPPORT_IPv6 */ - - if (new->sock < 0) { - sock_tcp_destroy(new); -#ifdef __WIN32__ - WSACleanup(); -#endif - return NULL; - } - - return new; -} - -void sock_tcp_get_ip(sock_tcp_t *p, char *str_ip, int len) -{ - assert(p != NULL); - assert(str_ip != NULL); - - if (p->proto == PROTO_TCPv4) { -#ifndef __WIN32__ - inet_ntop(AF_INET, &(p->sockAddr.sin_addr), str_ip, len); -#else - strcpy(str_ip, inet_ntoa(p->sockAddr.sin_addr)); -#endif - } -#ifdef SUPPORT_IPv6 - if (p->proto == PROTO_TCPv6) { -#ifndef __WIN32__ - inet_ntop(AF_INET6, &(p->sockAddr6.sin6_addr), str_ip, len); -#else /* __WIN32__ */ - /* NOT TESTED */ - strcpy(str_ip, inet_ntoa(p->sockAddr6.sin6_addr)); -#endif /* __WIN32__ */ - } -#endif /* SUPPORT_IPv6 */ -} - -int sock_tcp_get_port(sock_tcp_t *p) -{ - assert(p != NULL); - - if (p->proto == PROTO_TCPv4) { - return htons(p->sockAddr.sin_port); - } -#ifdef SUPPORT_IPv6 - if (p->proto == PROTO_TCPv6) { - return htons(p->sockAddr6.sin6_port); - } -#endif - - fatal("Bad IP protocol"); - - return -1; -} - -sock_tcp_t *sock_tcp_connect(char *ip, int port) -{ - sock_tcp_t *new; - int len; - int ret; - - assert(ip != NULL); - assert(port > 0 && port < 65535); - - new = sock_tcp_new(); - new->proto = getProto(ip); - ret = -1; /* no warnings */ - - if (new->proto == PROTO_TCPv4) { - new->sock = socket(AF_INET, SOCK_STREAM, 0); - } -#ifdef SUPPORT_IPv6 - if (new->proto == PROTO_TCPv6) { - new->sock = socket(AF_INET6, SOCK_STREAM, 0); - } -#endif - - if (new->sock < 0) { - error("Unable to create TCP socket for connecting"); - sock_tcp_destroy(new); -#ifdef __WIN32__ - WSACleanup(); -#endif - return NULL; - } - - if (new->proto == PROTO_TCPv4) { - new->sockAddr.sin_family = AF_INET; - new->sockAddr.sin_addr.s_addr = inet_addr(ip); - new->sockAddr.sin_port = htons(port); - - len = sizeof(new->sockAddr); - ret = connect(new->sock, (struct sockaddr *) &new->sockAddr, len); - } -#ifdef SUPPORT_IPv6 - if (new->proto == PROTO_TCPv6) { - new->sockAddr6.sin6_family = AF_INET6; - inet_pton(AF_INET6, ip, &(new->sockAddr6.sin6_addr)); - new->sockAddr6.sin6_port = htons(port); - - len = sizeof(new->sockAddr6); - ret = connect(new->sock, (struct sockaddr *) &new->sockAddr6, len); - } -#endif - - if (ret < 0) { - error("Unable to connect to [%s]:%d", ip, port); - sock_tcp_destroy(new); -#ifdef __WIN32__ - WSACleanup(); -#endif - return NULL; - } - - return new; -} - -int sock_tcp_disable_nagle(sock_tcp_t *p) -{ - int flag = 1; - int result; - - result = setsockopt(p->sock, /* affected socket */ - IPPROTO_TCP, /* set option at TCP level */ - TCP_NODELAY, /* name of the option */ - (char *) &flag, /* the cast is a historical cruft */ - sizeof(int)); /* length of the option value */ - - return result; -} - -int sock_tcp_set_non_block(sock_tcp_t *p) -{ - /* set to nonblocking socket mode */ -#ifndef __WIN32__ - int oldFlag; - - oldFlag = fcntl(p->sock, F_GETFL, 0); - - if (fcntl(p->sock, F_SETFL, oldFlag | O_NONBLOCK) == -1) { - return -1; - } -#else - unsigned long arg = 1; - /* operation is FIONBIO; parameter is a pointer on non-zero number */ - if (ioctlsocket(p->sock, FIONBIO, &arg) == SOCKET_ERROR) { - WSACleanup(); - return -1; - } -#endif - return 0; -} - -int sock_tcp_read(sock_tcp_t *p, void *address, int len) -{ - assert(p != NULL); - assert(address != NULL); - - return read(p->sock, address, len); -} - -int sock_tcp_write(sock_tcp_t *p, void *address, int len) -{ - assert(p != NULL); - assert(address != NULL); - - return write(p->sock, address, len); -} - -void sock_tcp_close(sock_tcp_t *p) -{ - assert(p != NULL); - - close(p->sock); - sock_tcp_destroy(p); -#ifdef __WIN32__ - WSACleanup(); -#endif -} diff --git a/src/net/tcp.h b/src/net/tcp.h deleted file mode 100644 index 20d4136..0000000 --- a/src/net/tcp.h +++ /dev/null @@ -1,45 +0,0 @@ -#ifndef MY_TCP_H -#define MY_TCP_H - -#include "main.h" - -#ifndef __WIN32__ -#include -#include -#include -#else -#include -#include -#endif - -#define PROTO_TCPv4 0 -#define PROTO_TCPv6 1 - -typedef struct struct_sock_tcp_t { -#ifndef __WIN32_ - int sock; -#else - SOCKET sock; -#endif - int proto; - - struct sockaddr_in sockAddr; -# ifdef SUPPORT_IPv6 - struct sockaddr_in6 sockAddr6; -# endif -} sock_tcp_t; - -extern sock_tcp_t *sock_tcp_new(void); -extern void sock_tcp_destroy(sock_tcp_t *p); -extern sock_tcp_t *sock_tcp_bind(char *addresss, int port); -extern sock_tcp_t *sock_tcp_accept(sock_tcp_t *p); -extern void sock_tcp_get_ip(sock_tcp_t *p, char *str_ip, int len); -extern int sock_tcp_get_port(sock_tcp_t *p); -extern sock_tcp_t *sock_tcp_connect(char *ip, int port); -extern int sock_tcp_disable_nagle(sock_tcp_t *p); -extern int sock_tcp_set_non_block(sock_tcp_t *p); -extern int sock_tcp_read(sock_tcp_t *p, void *address, int len); -extern int sock_tcp_write(sock_tcp_t *p, void *address, int len); -extern void sock_tcp_close(sock_tcp_t *p); - -#endif /* MY_TCP_H */ diff --git a/src/net/udp.c b/src/net/udp.c deleted file mode 100644 index 1771222..0000000 --- a/src/net/udp.c +++ /dev/null @@ -1,328 +0,0 @@ -#include -#include -#include - -#ifndef __WIN32__ -#include -#include -#include -#include -#include -#else -#include -#include -#endif - -#include -#include -#include - -#include "main.h" -#include "net_multiplayer.h" - -#include "udp.h" -#include "dns.h" - -#define BUFSIZE 1000 - -static int getProto(char *str) -{ - if (strstr(str, ".") != NULL) - return PROTO_UDPv4; - if (strstr(str, ":") != NULL) - return PROTO_UDPv6; - - fatal("Network protocol not detected"); - return -1; -} - -sock_udp_t *sock_udp_new(void) -{ - sock_udp_t *new; - - new = malloc(sizeof(sock_udp_t)); - memset(new, 0, sizeof(sock_udp_t)); - - return new; -} - -void sock_udp_destroy(sock_udp_t *p) -{ - assert(p != NULL); - free(p); -} - -sock_udp_t *sock_udp_bind(char *address, int port) -{ - sock_udp_t *new; - int res = -1; /* no warnings */ - - assert(port > 0 && port < 65535); - - new = sock_udp_new(); - new->proto = getProto(address); - - assert(new != NULL); - - if (new->proto == PROTO_UDPv4) { - new->sock = socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP); - } -#ifdef SUPPORT_IPv6 - if (new->proto == PROTO_UDPv6) { - new->sock = socket(AF_INET6, SOCK_DGRAM, IPPROTO_UDP); - } -#endif - - if (new->sock < 0) { - error("Unable to create UDP socket"); - sock_udp_destroy(new); -#ifdef __WIN32__ - WSACleanup(); -#endif - return NULL; - } - - memset(&(new->sockAddr), 0, sizeof(new->sockAddr)); - - if (new->proto == PROTO_UDPv4) { - new->sockAddr.sin_family = AF_INET; - new->sockAddr.sin_port = htons(port); - new->sockAddr.sin_addr.s_addr = inet_addr(address); - - res = bind(new->sock, (struct sockaddr *) &(new->sockAddr), sizeof(new->sockAddr)); - } -#ifdef SUPPORT_IPv6 - if (new->proto == PROTO_UDPv6) { - new->sockAddr6.sin6_family = AF_INET6; - new->sockAddr6.sin6_port = htons(port); - inet_pton(AF_INET6, address, &(new->sockAddr6.sin6_addr)); - - res = bind(new->sock, (struct sockaddr *) &(new->sockAddr6), sizeof(new->sockAddr6)); - } -#endif - - if (res < 0) { - error("Unable to bind UDP socket to [%s]:%d", address, port); - sock_udp_destroy(new); -#ifdef __WIN32__ - WSACleanup(); -#endif - return NULL; - } - - return new; -} - -sock_udp_t *sock_udp_connect(char *address, int port) -{ - sock_udp_t *new; - char *domain; - - assert(address != NULL); - assert(port > 0 && port < 65536); - - new = sock_udp_new(); - new->proto = getProto(address); - - assert(new != NULL); - - if (new->proto == PROTO_UDPv4) { - new->sock = socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP); - } -#ifdef SUPPORT_IPv6 - if (new->proto == PROTO_UDPv6) { - new->sock = socket(AF_INET6, SOCK_DGRAM, IPPROTO_UDP); - } -#endif - - if (new->sock < 0) { - error("Unable to create UDP socket for connecting"); - sock_udp_destroy(new); -#ifdef __WIN32__ - WSACleanup(); -#endif - return NULL; - } - - domain = dns_resolv(address); - - if (domain) { - address = domain; - } - - memset(&(new->sockAddr), 0, sizeof(new->sockAddr)); - - if (new->proto == PROTO_UDPv4) { - new->sockAddr.sin_family = AF_INET; - new->sockAddr.sin_port = htons(port); - new->sockAddr.sin_addr.s_addr = inet_addr(address); - } -#ifdef SUPPORT_IPv6 - if (new->proto == PROTO_UDPv6) { - new->sockAddr6.sin6_family = AF_INET6; - new->sockAddr6.sin6_port = htons(port); - inet_pton(AF_INET6, address, &(new->sockAddr6.sin6_addr)); - } -#endif - if (domain) { - free(domain); - } - - return new; -} - -int sock_udp_set_non_block(sock_udp_t *p) -{ - /* set to nonblocking socket mode */ -#ifndef __WIN32__ - int oldFlag; - - oldFlag = fcntl(p->sock, F_GETFL, 0); - - if (fcntl(p->sock, F_SETFL, oldFlag | O_NONBLOCK) == -1) { - return -1; - } -#else - unsigned long arg = 1; - /* operation is FIONBIO; parameter is a pointer on non-zero number */ - if (ioctlsocket(p->sock, FIONBIO, &arg) == SOCKET_ERROR) { - WSACleanup(); - return -1; - } -#endif - return 0; -} - -int sock_udp_read(sock_udp_t *src, sock_udp_t *dst, void *address, int len) -{ - int addrlen; - int size = -1; /* no warnings */ - - assert(src != NULL); - assert(dst != NULL); - assert(address != NULL); - - if (src->proto == PROTO_UDPv4) { - addrlen = sizeof(src->sockAddr); - -#ifndef __WIN32 - size = recvfrom(src->sock, address, len, 0, (struct sockaddr *) &dst->sockAddr, (socklen_t *) &addrlen); -#else - size = recvfrom(src->sock, address, len, 0, (struct sockaddr *) &dst->sockAddr, (int *) &addrlen); -#endif - } -#ifdef SUPPORT_IPv6 - if (src->proto == PROTO_UDPv6) { - addrlen = sizeof(src->sockAddr6); - - size = recvfrom(src->sock, address, len, 0, (struct sockaddr *) &dst->sockAddr6, (socklen_t *) &addrlen); - } -#endif - - dst->sock = src->sock; - dst->proto = src->proto; - - if (size < 0) { - char str_ip[STR_IP_SIZE]; - - sock_udp_get_ip(dst, str_ip, STR_IP_SIZE); - - error("Unable to read from UDP socket [%s]:%d (read %d bytes)", str_ip, sock_udp_get_port(dst), size); - -#ifdef __WIN32__ - WSACleanup(); -#endif - return -1; - } - - return size; -} - -int sock_udp_write(sock_udp_t *src, sock_udp_t *dst, void *address, int len) -{ - int addrlen; - int size = -1; /* no warnings */ - - assert(src != NULL); - assert(dst != NULL); - assert(address != NULL); - - if (src->proto == PROTO_UDPv4) { - addrlen = sizeof(src->sockAddr); - - size = sendto(src->sock, address, len, 0, (struct sockaddr *) &dst->sockAddr, addrlen); - } -#ifdef SUPPORT_IPv6 - if (src->proto == PROTO_UDPv6) { - addrlen = sizeof(src->sockAddr6); - - size = sendto(src->sock, address, len, 0, (struct sockaddr *) &dst->sockAddr6, addrlen); - } -#endif - - if (size < 0) { - char str_ip[STR_IP_SIZE]; - - sock_udp_get_ip(dst, str_ip, STR_IP_SIZE); - - error("Unable to write to socket [%s]:%d with protocol %d (written %d bytes)", str_ip, sock_udp_get_port(dst), dst->proto, size); - -#ifdef __WIN32__ - WSACleanup(); -#endif - return -1; - } - - return size; -} - -void sock_udp_get_ip(sock_udp_t *p, char *str_ip, int len) -{ - assert(p != NULL); - assert(str_ip != NULL); - - - if (p->proto == PROTO_UDPv4) { -#ifndef __WIN32__ - inet_ntop(AF_INET, &(p->sockAddr.sin_addr), str_ip, len); -#else - strcpy(str_ip, inet_ntoa(p->sockAddr.sin_addr)); -#endif - } -#ifdef SUPPORT_IPv6 - if (p->proto == PROTO_UDPv6) { - inet_ntop(AF_INET6, &(p->sockAddr6.sin6_addr), str_ip, len); - } -#endif -} - -int sock_udp_get_port(sock_udp_t *p) -{ - assert(p != NULL); - - if (p->proto == PROTO_UDPv4) { - return htons(p->sockAddr.sin_port); - } -#ifdef SUPPORT_IPv6 - if (p->proto == PROTO_UDPv6) { - return htons(p->sockAddr6.sin6_port); - } -#endif - - fatal("Bad IP protocol"); - - return -1; -} - -void sock_udp_close(sock_udp_t *p) -{ - assert(p != NULL); - -#ifndef __WIN32__ - close(p->sock); -#else - closesocket(p->sock); - /*WSACleanup(); -- when the socket is closed correctly, it is not needed to do a cleanup */ -#endif - sock_udp_destroy(p); -} diff --git a/src/net/udp.h b/src/net/udp.h deleted file mode 100644 index 0e54a9c..0000000 --- a/src/net/udp.h +++ /dev/null @@ -1,37 +0,0 @@ -#ifndef MY_UDP_H -#define MY_UDP_H - -#ifndef __WIN32__ -#include -#else -#include -#include -#include -#endif - -typedef struct struct_sock_udp_t { -#ifndef __WIN32__ - int sock; -#else - SOCKET sock; -#endif - int proto; - -#ifdef SUPPORT_IPv6 - struct sockaddr_in6 sockAddr6; -#endif - struct sockaddr_in sockAddr; -} sock_udp_t; - -extern sock_udp_t *sock_udp_new(void); -extern void sock_udp_destroy(sock_udp_t *p); -extern sock_udp_t *sock_udp_bind(char *address, int port); -extern sock_udp_t *sock_udp_connect(char *address, int port); -extern int sock_udp_set_non_block(sock_udp_t *p); -extern int sock_udp_read(sock_udp_t *src, sock_udp_t *dst, void *address, int len); -extern int sock_udp_write(sock_udp_t *src, sock_udp_t *dst, void *address, int len); -extern void sock_udp_get_ip(sock_udp_t *p, char *str_ip, int len); -extern int sock_udp_get_port(sock_udp_t *p); -extern void sock_udp_close(sock_udp_t *p); - -#endif /* MY_UDP_H */ -- cgit v1.2.3