Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
freebsd
GitHub Repository: freebsd/freebsd-ports-gnome
Path: blob/main/benchmarks/netio/files/patch-netio.c
16124 views
1
--- netio.c.orig 2019-03-26 20:22:31.238439000 +0100
2
+++ netio.c 2019-03-26 20:25:57.485700000 +0100
3
@@ -142,6 +142,7 @@
4
#include <signal.h>
5
#include <time.h>
6
#if defined(UNIX) || defined(DJGPP)
7
+#include <arpa/inet.h>
8
#include <sys/time.h>
9
#include <unistd.h>
10
#include <errno.h>
11
@@ -559,7 +560,7 @@
12
13
int recv_data(int socket, void *buffer, size_t size, int flags)
14
{
15
- size_t rc = recv(socket, buffer, size, flags);
16
+ ssize_t rc = recv(socket, buffer, size, flags);
17
18
if (rc < 0)
19
{
20
@@ -576,8 +577,13 @@
21
const int sobufsize = 131072;
22
int nPort = DEFAULTPORT;
23
int nAuxPort = DEFAULTPORT + 1;
24
+#ifdef USE_IPV6
25
+struct in6_addr addr_server;
26
+struct in6_addr addr_local;
27
+#else
28
struct in_addr addr_server;
29
struct in_addr addr_local;
30
+#endif
31
32
int udpsocket, udpd;
33
unsigned long nUDPCount;
34
@@ -590,7 +596,11 @@
35
TIMER nTimer;
36
long nTime;
37
long long nData;
38
+#ifdef USE_IPV6
39
+ struct sockaddr_in6 sa_server, sa_client;
40
+#else
41
struct sockaddr_in sa_server, sa_client;
42
+#endif
43
int server, client;
44
socklen_type length;
45
struct timeval tv;
46
@@ -605,7 +615,11 @@
47
return THREADRESULT;
48
}
49
50
+#ifdef USE_IPV6
51
+ if ((server = socket(PF_INET6, SOCK_STREAM, 0)) < 0)
52
+#else
53
if ((server = socket(PF_INET, SOCK_STREAM, 0)) < 0)
54
+#endif
55
{
56
psock_errno("socket()");
57
free(cBuffer);
58
@@ -616,9 +630,15 @@
59
setsockopt(server, SOL_SOCKET, SO_SNDBUF, (char *) &sobufsize, sizeof(sobufsize));
60
setsockopt(server, IPPROTO_TCP, TCP_NODELAY, (char *) &flag, sizeof(int));
61
62
+#ifdef USE_IPV6
63
+ sa_server.sin6_family = AF_INET6;
64
+ sa_server.sin6_port = htons(nPort);
65
+ sa_server.sin6_addr = addr_local;
66
+#else
67
sa_server.sin_family = AF_INET;
68
sa_server.sin_port = htons(nPort);
69
sa_server.sin_addr = addr_local;
70
+#endif
71
72
if (bind(server, (struct sockaddr *) &sa_server, sizeof(sa_server)) < 0)
73
{
74
@@ -768,7 +788,11 @@
75
long nTime;
76
long long nData;
77
int i;
78
+#ifdef USE_IPV6
79
+ struct sockaddr_in6 sa_server, sa_client;
80
+#else
81
struct sockaddr_in sa_server, sa_client;
82
+#endif
83
int server;
84
int rc;
85
int nByte;
86
@@ -780,7 +804,11 @@
87
return;
88
}
89
90
+#ifdef USE_IPV6
91
+ if ((server = socket(PF_INET6, SOCK_STREAM, 0)) < 0)
92
+#else
93
if ((server = socket(PF_INET, SOCK_STREAM, 0)) < 0)
94
+#endif
95
{
96
psock_errno("socket()");
97
free(cBuffer);
98
@@ -791,9 +819,15 @@
99
setsockopt(server, SOL_SOCKET, SO_SNDBUF, (char *) &sobufsize, sizeof(sobufsize));
100
setsockopt(server, IPPROTO_TCP, TCP_NODELAY, (char *) &flag, sizeof(int));
101
102
+#ifdef USE_IPV6
103
+ sa_client.sin6_family = AF_INET6;
104
+ sa_client.sin6_port = htons(0);
105
+ sa_client.sin6_addr = addr_local;
106
+#else
107
sa_client.sin_family = AF_INET;
108
sa_client.sin_port = htons(0);
109
sa_client.sin_addr = addr_local;
110
+#endif
111
112
if (bind(server, (struct sockaddr *) &sa_client, sizeof(sa_client)) < 0)
113
{
114
@@ -803,9 +837,15 @@
115
return;
116
}
117
118
+#ifdef USE_IPV6
119
+ sa_server.sin6_family = AF_INET6;
120
+ sa_server.sin6_port = htons(nPort);
121
+ sa_server.sin6_addr = addr_server;
122
+#else
123
sa_server.sin_family = AF_INET;
124
sa_server.sin_port = htons(nPort);
125
sa_server.sin_addr = addr_server;
126
+#endif
127
128
if (connect(server, (struct sockaddr *) &sa_server, sizeof(sa_server)) < 0)
129
{
130
@@ -928,7 +968,11 @@
131
THREAD UDP_Receiver(void *arg)
132
{
133
char *cBuffer;
134
+#ifdef USE_IPV6
135
+ struct sockaddr_in6 sa_server, sa_client;
136
+#else
137
struct sockaddr_in sa_server, sa_client;
138
+#endif
139
int rc;
140
socklen_type nBytes;
141
142
@@ -938,7 +982,11 @@
143
return THREADRESULT;
144
}
145
146
+#ifdef USE_IPV6
147
+ if ((udpsocket = socket(PF_INET6, SOCK_DGRAM, 0)) < 0)
148
+#else
149
if ((udpsocket = socket(PF_INET, SOCK_DGRAM, 0)) < 0)
150
+#endif
151
{
152
psock_errno("socket(DGRAM)");
153
free(cBuffer);
154
@@ -948,9 +996,15 @@
155
setsockopt(udpsocket, SOL_SOCKET, SO_RCVBUF, (char *) &sobufsize, sizeof(sobufsize));
156
setsockopt(udpsocket, SOL_SOCKET, SO_SNDBUF, (char *) &sobufsize, sizeof(sobufsize));
157
158
+#ifdef USE_IPV6
159
+ sa_server.sin6_family = AF_INET6;
160
+ sa_server.sin6_port = htons(nAuxPort);
161
+ sa_server.sin6_addr = addr_local;
162
+#else
163
sa_server.sin_family = AF_INET;
164
sa_server.sin_port = htons(nAuxPort);
165
sa_server.sin_addr = addr_local;
166
+#endif
167
168
if (bind(udpsocket, (struct sockaddr *) &sa_server, sizeof(sa_server)) < 0)
169
{
170
@@ -990,7 +1044,11 @@
171
TIMER nTimer;
172
long nTime;
173
long long nData;
174
+#ifdef USE_IPV6
175
+ struct sockaddr_in6 sa_server, sa_client;
176
+#else
177
struct sockaddr_in sa_server, sa_client;
178
+#endif
179
int server, client;
180
struct timeval tv;
181
fd_set fds;
182
@@ -1003,7 +1061,11 @@
183
return THREADRESULT;
184
}
185
186
+#ifdef USE_IPV6
187
+ if ((server = socket(PF_INET6, SOCK_STREAM, 0)) < 0)
188
+#else
189
if ((server = socket(PF_INET, SOCK_STREAM, 0)) < 0)
190
+#endif
191
{
192
psock_errno("socket(STREAM)");
193
free(cBuffer);
194
@@ -1013,9 +1075,15 @@
195
setsockopt(server, SOL_SOCKET, SO_RCVBUF, (char *) &sobufsize, sizeof(sobufsize));
196
setsockopt(server, SOL_SOCKET, SO_SNDBUF, (char *) &sobufsize, sizeof(sobufsize));
197
198
+#ifdef USE_IPV6
199
+ sa_server.sin6_family = AF_INET6;
200
+ sa_server.sin6_port = htons(nAuxPort);
201
+ sa_server.sin6_addr = addr_local;
202
+#else
203
sa_server.sin_family = AF_INET;
204
sa_server.sin_port = htons(nAuxPort);
205
sa_server.sin_addr = addr_local;
206
+#endif
207
208
if (bind(server, (struct sockaddr *) &sa_server, sizeof(sa_server)) < 0)
209
{
210
@@ -1061,7 +1129,11 @@
211
printf("UDP connection established ... ");
212
fflush(stdout);
213
214
+#ifdef USE_IPV6
215
+ sa_client.sin6_port = htons(nAuxPort);
216
+#else
217
sa_client.sin_port = htons(nAuxPort);
218
+#endif
219
220
for (;;)
221
{
222
@@ -1177,7 +1249,11 @@
223
long nResult;
224
long long nData;
225
int i;
226
+#ifdef USE_IPV6
227
+ struct sockaddr_in6 sa_server, sa_client;
228
+#else
229
struct sockaddr_in sa_server, sa_client;
230
+#endif
231
int server;
232
int rc, nByte;
233
234
@@ -1187,7 +1263,11 @@
235
return;
236
}
237
238
+#ifdef USE_IPV6
239
+ if ((server = socket(PF_INET6, SOCK_STREAM, 0)) < 0)
240
+#else
241
if ((server = socket(PF_INET, SOCK_STREAM, 0)) < 0)
242
+#endif
243
{
244
psock_errno("socket()");
245
free(cBuffer);
246
@@ -1197,9 +1277,15 @@
247
setsockopt(server, SOL_SOCKET, SO_RCVBUF, (char *) &sobufsize, sizeof(sobufsize));
248
setsockopt(server, SOL_SOCKET, SO_SNDBUF, (char *) &sobufsize, sizeof(sobufsize));
249
250
+#ifdef USE_IPV6
251
+ sa_client.sin6_family = AF_INET6;
252
+ sa_client.sin6_port = htons(0);
253
+ sa_client.sin6_addr = addr_local;
254
+#else
255
sa_client.sin_family = AF_INET;
256
- sa_client.sin_port = htons(0);
257
+ sa_client.sin_port = htons(0);
258
sa_client.sin_addr = addr_local;
259
+#endif
260
261
if (bind(server, (struct sockaddr *) &sa_client, sizeof(sa_client)) < 0)
262
{
263
@@ -1209,9 +1295,15 @@
264
return;
265
}
266
267
+#ifdef USE_IPV6
268
+ sa_server.sin6_family = AF_INET6;
269
+ sa_server.sin6_port = htons(nAuxPort);
270
+ sa_server.sin6_addr = addr_server;
271
+#else
272
sa_server.sin_family = AF_INET;
273
sa_server.sin_port = htons(nAuxPort);
274
sa_server.sin_addr = addr_server;
275
+#endif
276
277
if (connect(server, (struct sockaddr *) &sa_server, sizeof(sa_server)) < 0)
278
{
279
@@ -1442,17 +1534,29 @@
280
return psock_errno("sock_init()"), 1;
281
282
if (szLocal == 0)
283
+#ifdef USE_IPV6
284
+ addr_local = in6addr_any;
285
+#else
286
addr_local.s_addr = INADDR_ANY;
287
+#endif
288
else
289
{
290
if (isdigit(*szLocal))
291
+#ifdef USE_IPV6
292
+ inet_pton(AF_INET6, szLocal, &addr_local);
293
+#else
294
addr_local.s_addr = inet_addr(szLocal);
295
+#endif
296
else
297
{
298
if ((host = gethostbyname(szLocal)) == NULL)
299
return psock_errno("gethostbyname()"), 1;
300
301
+#ifdef USE_IPV6
302
+ addr_local = * (struct in6_addr *) (host->h_addr);
303
+#else
304
addr_local = * (struct in_addr *) (host->h_addr);
305
+#endif
306
}
307
}
308
309
@@ -1462,13 +1566,21 @@
310
usage();
311
312
if (isdigit(*argv[optind]))
313
+#ifdef USE_IPV6
314
+ inet_pton(AF_INET6, argv[optind], &addr_server);
315
+#else
316
addr_server.s_addr = inet_addr(argv[optind]);
317
+#endif
318
else
319
{
320
if ((host = gethostbyname(argv[optind])) == NULL)
321
return psock_errno("gethostbyname()"), 1;
322
323
+#ifdef USE_IPV6
324
+ addr_server = * (struct in6_addr *) (host->h_addr);
325
+#else
326
addr_server = * (struct in_addr *) (host->h_addr);
327
+#endif
328
}
329
}
330
}
331
332