From: Egor Date: Tue, 17 May 2022 16:28:16 +0000 (+0300) Subject: support IPv4/v6 unconditionally X-Git-Url: https://git.patchysicp.xyz/?a=commitdiff_plain;h=70e51893e44b9ea12a420ae31938fbdc53e07fa7;p=patchyircd.git support IPv4/v6 unconditionally --- diff --git a/config.h b/config.h index b64f021..2e81fb9 100644 --- a/config.h +++ b/config.h @@ -2,8 +2,6 @@ #define LISTENING_PORT_TLS 6697 #define LISTENING_BACKLOG SOMAXCONN #define CLIENTS 30 -#define SUPPORT_IPV4 -#define SUPPORT_IPV6 #define MAX_NICKLEN 32 #ifndef ADMINLOC1 #define ADMINLOC1 "Location 1" diff --git a/main.c b/main.c index 1a0e488..a927c66 100644 --- a/main.c +++ b/main.c @@ -72,14 +72,10 @@ struct client_data *clients[CLIENTS]; fd_set readfds; -#ifdef SUPPORT_IPV4 - struct sockaddr_in serverAddrV4; - size_t serverAddrV4len; -#endif -#ifdef SUPPORT_IPV6 - struct sockaddr_in6 serverAddrV6; - size_t serverAddrV6len; -#endif +struct sockaddr_in serverAddrV4; +size_t serverAddrV4len; +struct sockaddr_in6 serverAddrV6; +size_t serverAddrV6len; FILE *fchanlog = NULL; SOCKET create_listen_sock(int af, struct sockaddr *addr, size_t len) @@ -99,13 +95,10 @@ SOCKET create_listen_sock(int af, struct sockaddr *addr, size_t len) exit(EXIT_FAILURE); } #endif -#ifdef SUPPORT_IPV6 - // IPV6 Only if(af == AF_INET6 && setsockopt(sock, IPPROTO_IPV6, IPV6_V6ONLY, (void*)&opt, sizeof(opt)) == -1) { net_perror("ERROR SOCKET IPV6"); exit(EXIT_FAILURE); } -#endif // Set nonblock net_nonblock(sock); // Bind to socket @@ -114,7 +107,7 @@ SOCKET create_listen_sock(int af, struct sockaddr *addr, size_t len) exit(EXIT_FAILURE); } // Listen to socket - if(listen(sock, SOMAXCONN) == -1) { + if(listen(sock, LISTENING_BACKLOG) == -1) { net_perror("ERROR LISTEN"); exit(EXIT_FAILURE); } @@ -196,7 +189,6 @@ int main() { memset(clients, 0, sizeof(clients)); // Setup structs -#ifdef SUPPORT_IPV4 memset(&serverAddrV4, 0, sizeof(struct sockaddr_in)); serverAddrV4.sin_addr.s_addr = INADDR_ANY; serverAddrV4.sin_port = htons(LISTENING_PORT); @@ -204,17 +196,13 @@ int main() { serverAddrV4len = sizeof(serverAddrV4); listeners_tls[listener_count] = NULL; listeners[listener_count++] = create_listen_sock(AF_INET, (struct sockaddr*)&serverAddrV4, sizeof(struct sockaddr_in)); -#endif -#ifdef SUPPORT_IPV6 memset(&serverAddrV6, 0, sizeof(struct sockaddr_in6)); serverAddrV6.sin6_addr = in6addr_any; - serverAddrV6.sin6_flowinfo = 0; serverAddrV6.sin6_port = htons(LISTENING_PORT); serverAddrV6.sin6_family = AF_INET6; serverAddrV6len = sizeof(serverAddrV6); listeners_tls[listener_count] = NULL; listeners[listener_count++] = create_listen_sock(AF_INET6, (struct sockaddr*)&serverAddrV6, sizeof(struct sockaddr_in6)); -#endif #ifdef HAS_TLS struct tls_config *tls_cfg; struct tls *tls_ctx; @@ -234,16 +222,12 @@ int main() { return fprintf(stderr, "tls_configure: %s\n", tls_error(tls_ctx)), 1; tls_config_free(tls_cfg); -#ifdef SUPPORT_IPV4 serverAddrV4.sin_port = htons(LISTENING_PORT_TLS); listeners_tls[listener_count] = tls_ctx; listeners[listener_count++] = create_listen_sock(AF_INET, (struct sockaddr*)&serverAddrV4, sizeof(struct sockaddr_in)); -#endif -#ifdef SUPPORT_IPV6 serverAddrV6.sin6_port = htons(LISTENING_PORT_TLS); listeners_tls[listener_count] = tls_ctx; listeners[listener_count++] = create_listen_sock(AF_INET6, (struct sockaddr*)&serverAddrV6, sizeof(struct sockaddr_in6)); -#endif #endif FILE *f = fopen("init.txt", "rb");