Path: blob/main/benchmarks/netio/files/patch-netio.c
16124 views
--- netio.c.orig 2019-03-26 20:22:31.238439000 +01001+++ netio.c 2019-03-26 20:25:57.485700000 +01002@@ -142,6 +142,7 @@3#include <signal.h>4#include <time.h>5#if defined(UNIX) || defined(DJGPP)6+#include <arpa/inet.h>7#include <sys/time.h>8#include <unistd.h>9#include <errno.h>10@@ -559,7 +560,7 @@1112int recv_data(int socket, void *buffer, size_t size, int flags)13{14- size_t rc = recv(socket, buffer, size, flags);15+ ssize_t rc = recv(socket, buffer, size, flags);1617if (rc < 0)18{19@@ -576,8 +577,13 @@20const int sobufsize = 131072;21int nPort = DEFAULTPORT;22int nAuxPort = DEFAULTPORT + 1;23+#ifdef USE_IPV624+struct in6_addr addr_server;25+struct in6_addr addr_local;26+#else27struct in_addr addr_server;28struct in_addr addr_local;29+#endif3031int udpsocket, udpd;32unsigned long nUDPCount;33@@ -590,7 +596,11 @@34TIMER nTimer;35long nTime;36long long nData;37+#ifdef USE_IPV638+ struct sockaddr_in6 sa_server, sa_client;39+#else40struct sockaddr_in sa_server, sa_client;41+#endif42int server, client;43socklen_type length;44struct timeval tv;45@@ -605,7 +615,11 @@46return THREADRESULT;47}4849+#ifdef USE_IPV650+ if ((server = socket(PF_INET6, SOCK_STREAM, 0)) < 0)51+#else52if ((server = socket(PF_INET, SOCK_STREAM, 0)) < 0)53+#endif54{55psock_errno("socket()");56free(cBuffer);57@@ -616,9 +630,15 @@58setsockopt(server, SOL_SOCKET, SO_SNDBUF, (char *) &sobufsize, sizeof(sobufsize));59setsockopt(server, IPPROTO_TCP, TCP_NODELAY, (char *) &flag, sizeof(int));6061+#ifdef USE_IPV662+ sa_server.sin6_family = AF_INET6;63+ sa_server.sin6_port = htons(nPort);64+ sa_server.sin6_addr = addr_local;65+#else66sa_server.sin_family = AF_INET;67sa_server.sin_port = htons(nPort);68sa_server.sin_addr = addr_local;69+#endif7071if (bind(server, (struct sockaddr *) &sa_server, sizeof(sa_server)) < 0)72{73@@ -768,7 +788,11 @@74long nTime;75long long nData;76int i;77+#ifdef USE_IPV678+ struct sockaddr_in6 sa_server, sa_client;79+#else80struct sockaddr_in sa_server, sa_client;81+#endif82int server;83int rc;84int nByte;85@@ -780,7 +804,11 @@86return;87}8889+#ifdef USE_IPV690+ if ((server = socket(PF_INET6, SOCK_STREAM, 0)) < 0)91+#else92if ((server = socket(PF_INET, SOCK_STREAM, 0)) < 0)93+#endif94{95psock_errno("socket()");96free(cBuffer);97@@ -791,9 +819,15 @@98setsockopt(server, SOL_SOCKET, SO_SNDBUF, (char *) &sobufsize, sizeof(sobufsize));99setsockopt(server, IPPROTO_TCP, TCP_NODELAY, (char *) &flag, sizeof(int));100101+#ifdef USE_IPV6102+ sa_client.sin6_family = AF_INET6;103+ sa_client.sin6_port = htons(0);104+ sa_client.sin6_addr = addr_local;105+#else106sa_client.sin_family = AF_INET;107sa_client.sin_port = htons(0);108sa_client.sin_addr = addr_local;109+#endif110111if (bind(server, (struct sockaddr *) &sa_client, sizeof(sa_client)) < 0)112{113@@ -803,9 +837,15 @@114return;115}116117+#ifdef USE_IPV6118+ sa_server.sin6_family = AF_INET6;119+ sa_server.sin6_port = htons(nPort);120+ sa_server.sin6_addr = addr_server;121+#else122sa_server.sin_family = AF_INET;123sa_server.sin_port = htons(nPort);124sa_server.sin_addr = addr_server;125+#endif126127if (connect(server, (struct sockaddr *) &sa_server, sizeof(sa_server)) < 0)128{129@@ -928,7 +968,11 @@130THREAD UDP_Receiver(void *arg)131{132char *cBuffer;133+#ifdef USE_IPV6134+ struct sockaddr_in6 sa_server, sa_client;135+#else136struct sockaddr_in sa_server, sa_client;137+#endif138int rc;139socklen_type nBytes;140141@@ -938,7 +982,11 @@142return THREADRESULT;143}144145+#ifdef USE_IPV6146+ if ((udpsocket = socket(PF_INET6, SOCK_DGRAM, 0)) < 0)147+#else148if ((udpsocket = socket(PF_INET, SOCK_DGRAM, 0)) < 0)149+#endif150{151psock_errno("socket(DGRAM)");152free(cBuffer);153@@ -948,9 +996,15 @@154setsockopt(udpsocket, SOL_SOCKET, SO_RCVBUF, (char *) &sobufsize, sizeof(sobufsize));155setsockopt(udpsocket, SOL_SOCKET, SO_SNDBUF, (char *) &sobufsize, sizeof(sobufsize));156157+#ifdef USE_IPV6158+ sa_server.sin6_family = AF_INET6;159+ sa_server.sin6_port = htons(nAuxPort);160+ sa_server.sin6_addr = addr_local;161+#else162sa_server.sin_family = AF_INET;163sa_server.sin_port = htons(nAuxPort);164sa_server.sin_addr = addr_local;165+#endif166167if (bind(udpsocket, (struct sockaddr *) &sa_server, sizeof(sa_server)) < 0)168{169@@ -990,7 +1044,11 @@170TIMER nTimer;171long nTime;172long long nData;173+#ifdef USE_IPV6174+ struct sockaddr_in6 sa_server, sa_client;175+#else176struct sockaddr_in sa_server, sa_client;177+#endif178int server, client;179struct timeval tv;180fd_set fds;181@@ -1003,7 +1061,11 @@182return THREADRESULT;183}184185+#ifdef USE_IPV6186+ if ((server = socket(PF_INET6, SOCK_STREAM, 0)) < 0)187+#else188if ((server = socket(PF_INET, SOCK_STREAM, 0)) < 0)189+#endif190{191psock_errno("socket(STREAM)");192free(cBuffer);193@@ -1013,9 +1075,15 @@194setsockopt(server, SOL_SOCKET, SO_RCVBUF, (char *) &sobufsize, sizeof(sobufsize));195setsockopt(server, SOL_SOCKET, SO_SNDBUF, (char *) &sobufsize, sizeof(sobufsize));196197+#ifdef USE_IPV6198+ sa_server.sin6_family = AF_INET6;199+ sa_server.sin6_port = htons(nAuxPort);200+ sa_server.sin6_addr = addr_local;201+#else202sa_server.sin_family = AF_INET;203sa_server.sin_port = htons(nAuxPort);204sa_server.sin_addr = addr_local;205+#endif206207if (bind(server, (struct sockaddr *) &sa_server, sizeof(sa_server)) < 0)208{209@@ -1061,7 +1129,11 @@210printf("UDP connection established ... ");211fflush(stdout);212213+#ifdef USE_IPV6214+ sa_client.sin6_port = htons(nAuxPort);215+#else216sa_client.sin_port = htons(nAuxPort);217+#endif218219for (;;)220{221@@ -1177,7 +1249,11 @@222long nResult;223long long nData;224int i;225+#ifdef USE_IPV6226+ struct sockaddr_in6 sa_server, sa_client;227+#else228struct sockaddr_in sa_server, sa_client;229+#endif230int server;231int rc, nByte;232233@@ -1187,7 +1263,11 @@234return;235}236237+#ifdef USE_IPV6238+ if ((server = socket(PF_INET6, SOCK_STREAM, 0)) < 0)239+#else240if ((server = socket(PF_INET, SOCK_STREAM, 0)) < 0)241+#endif242{243psock_errno("socket()");244free(cBuffer);245@@ -1197,9 +1277,15 @@246setsockopt(server, SOL_SOCKET, SO_RCVBUF, (char *) &sobufsize, sizeof(sobufsize));247setsockopt(server, SOL_SOCKET, SO_SNDBUF, (char *) &sobufsize, sizeof(sobufsize));248249+#ifdef USE_IPV6250+ sa_client.sin6_family = AF_INET6;251+ sa_client.sin6_port = htons(0);252+ sa_client.sin6_addr = addr_local;253+#else254sa_client.sin_family = AF_INET;255- sa_client.sin_port = htons(0);256+ sa_client.sin_port = htons(0);257sa_client.sin_addr = addr_local;258+#endif259260if (bind(server, (struct sockaddr *) &sa_client, sizeof(sa_client)) < 0)261{262@@ -1209,9 +1295,15 @@263return;264}265266+#ifdef USE_IPV6267+ sa_server.sin6_family = AF_INET6;268+ sa_server.sin6_port = htons(nAuxPort);269+ sa_server.sin6_addr = addr_server;270+#else271sa_server.sin_family = AF_INET;272sa_server.sin_port = htons(nAuxPort);273sa_server.sin_addr = addr_server;274+#endif275276if (connect(server, (struct sockaddr *) &sa_server, sizeof(sa_server)) < 0)277{278@@ -1442,17 +1534,29 @@279return psock_errno("sock_init()"), 1;280281if (szLocal == 0)282+#ifdef USE_IPV6283+ addr_local = in6addr_any;284+#else285addr_local.s_addr = INADDR_ANY;286+#endif287else288{289if (isdigit(*szLocal))290+#ifdef USE_IPV6291+ inet_pton(AF_INET6, szLocal, &addr_local);292+#else293addr_local.s_addr = inet_addr(szLocal);294+#endif295else296{297if ((host = gethostbyname(szLocal)) == NULL)298return psock_errno("gethostbyname()"), 1;299300+#ifdef USE_IPV6301+ addr_local = * (struct in6_addr *) (host->h_addr);302+#else303addr_local = * (struct in_addr *) (host->h_addr);304+#endif305}306}307308@@ -1462,13 +1566,21 @@309usage();310311if (isdigit(*argv[optind]))312+#ifdef USE_IPV6313+ inet_pton(AF_INET6, argv[optind], &addr_server);314+#else315addr_server.s_addr = inet_addr(argv[optind]);316+#endif317else318{319if ((host = gethostbyname(argv[optind])) == NULL)320return psock_errno("gethostbyname()"), 1;321322+#ifdef USE_IPV6323+ addr_server = * (struct in6_addr *) (host->h_addr);324+#else325addr_server = * (struct in_addr *) (host->h_addr);326+#endif327}328}329}330331332