Lines Matching refs:tcp

149 get_clock_type(struct test_ctx *tcp)
151 switch (tcp->ts_type) {
166 get_scm_type(struct test_ctx *tcp)
168 switch (tcp->ts_type) {
187 get_scm_size(struct test_ctx *tcp)
189 switch (tcp->ts_type) {
206 setup_ts_sockopt(struct test_ctx *tcp, int fd)
214 switch (tcp->ts_type) {
220 sval2 = tcp->ts_type;
238 err(1, "%s: setup_udp: setsockopt(%d, %d, 1)", tcp->name,
247 tcp->name, fd, oname2, sval2);
253 setup_udp(struct test_ctx *tcp)
258 af_len = sizeof(tcp->sin[0].v4);
260 tcp->sin[i].v4.sin_len = af_len;
261 tcp->sin[i].v4.sin_family = AF_INET;
262 tcp->sin[i].v4.sin_addr.s_addr = htonl(INADDR_LOOPBACK);
263 tcp->fds[i] = socket(PF_INET, SOCK_DGRAM, 0);
264 if (tcp->fds[i] < 0)
265 err(1, "%s: setup_udp: socket", tcp->name);
266 if (bind(tcp->fds[i], (struct sockaddr *)&tcp->sin[i], af_len) < 0)
267 err(1, "%s: setup_udp: bind(%s, %d)", tcp->name,
268 inet_ntoa(tcp->sin[i].v4.sin_addr), 0);
270 if (getsockname(tcp->fds[i], (struct sockaddr *)&tcp->sin[i], &sin_len) < 0)
271 err(1, "%s: setup_udp: getsockname(%d)", tcp->name, tcp->fds[i]);
272 if (tcp->use_recvmsg != 0) {
273 setup_ts_sockopt(tcp, tcp->fds[i]);
276 tcp->pfds[i].fd = tcp->fds[i];
277 tcp->pfds[i].events = POLLIN;
280 if (connect(tcp->fds[0], (struct sockaddr *)&tcp->sin[1], af_len) < 0)
281 err(1, "%s: setup_udp: connect(%s, %d)", tcp->name,
282 inet_ntoa(tcp->sin[1].v4.sin_addr), ntohs(tcp->sin[1].v4.sin_port));
283 if (connect(tcp->fds[1], (struct sockaddr *)&tcp->sin[0], af_len) < 0)
284 err(1, "%s: setup_udp: connect(%s, %d)", tcp->name,
285 inet_ntoa(tcp->sin[0].v4.sin_addr), ntohs(tcp->sin[0].v4.sin_port));
298 setup_udp6(struct test_ctx *tcp)
303 af_len = sizeof(tcp->sin[0].v6);
305 tcp->sin[i].v6.sin6_len = af_len;
306 tcp->sin[i].v6.sin6_family = AF_INET6;
307 tcp->sin[i].v6.sin6_addr = in6addr_loopback;
308 tcp->fds[i] = socket(PF_INET6, SOCK_DGRAM, 0);
309 if (tcp->fds[i] < 0)
310 err(1, "%s: setup_udp: socket", tcp->name);
311 if (bind(tcp->fds[i], (struct sockaddr *)&tcp->sin[i], af_len) < 0)
312 err(1, "%s: setup_udp: bind(%s, %d)", tcp->name,
313 inet_ntoa6(&tcp->sin[i].v6.sin6_addr), 0);
315 if (getsockname(tcp->fds[i], (struct sockaddr *)&tcp->sin[i], &sin_len) < 0)
316 err(1, "%s: setup_udp: getsockname(%d)", tcp->name, tcp->fds[i]);
317 if (tcp->use_recvmsg != 0) {
318 setup_ts_sockopt(tcp, tcp->fds[i]);
321 tcp->pfds[i].fd = tcp->fds[i];
322 tcp->pfds[i].events = POLLIN;
325 if (connect(tcp->fds[0], (struct sockaddr *)&tcp->sin[1], af_len) < 0)
326 err(1, "%s: setup_udp: connect(%s, %d)", tcp->name,
327 inet_ntoa6(&tcp->sin[1].v6.sin6_addr),
328 ntohs(tcp->sin[1].v6.sin6_port));
329 if (connect(tcp->fds[1], (struct sockaddr *)&tcp->sin[0], af_len) < 0)
330 err(1, "%s: setup_udp: connect(%s, %d)", tcp->name,
331 inet_ntoa6(&tcp->sin[0].v6.sin6_addr),
332 ntohs(tcp->sin[0].v6.sin6_port));
336 teardown_udp(struct test_ctx *tcp)
339 close(tcp->fds[0]);
340 close(tcp->fds[1]);
344 send_pkt(struct test_ctx *tcp, int pnum, int fdidx, const char *face)
349 slen = sizeof(tcp->test_pkts[pnum]);
350 clock_gettime(get_clock_type(tcp), &tcp->test_pkts[pnum].tss[fdidx].sent);
351 r = send(tcp->fds[fdidx], &tcp->test_pkts[pnum], slen, 0);
353 err(1, "%s: %s: send(%d)", tcp->name, face, tcp->fds[fdidx]);
356 errx(1, "%s: %s: send(%d): short send", tcp->name, face,
357 tcp->fds[fdidx]);
359 tcp->nsent += 1;
362 #define PDATA(tcp, i) ((tcp)->test_pkts[(i)].data)
365 hdr_extract_ts(struct test_ctx *tcp, struct msghdr *mhp, struct timespec *tp)
376 scm_type = get_scm_type(tcp);
377 scm_size = get_scm_size(tcp);
389 switch (tcp->ts_type) {
411 recv_pkt_recvmsg(struct test_ctx *tcp, int fdidx, const char *face, void *buf,
431 rval = recvmsg(tcp->fds[fdidx], &msg, 0);
433 err(1, "%s: %s: recvmsg(%d)", tcp->name, face, tcp->fds[fdidx]);
436 errx(1, "%s: %s: recvmsg(%d): short recv", tcp->name, face,
437 tcp->fds[fdidx]);
440 hdr_extract_ts(tcp, &msg, tp);
444 recv_pkt_recv(struct test_ctx *tcp, int fdidx, const char *face, void *buf,
449 rval = recv(tcp->fds[fdidx], buf, rlen, 0);
450 clock_gettime(get_clock_type(tcp), tp);
452 err(1, "%s: %s: recv(%d)", tcp->name, face, tcp->fds[fdidx]);
455 errx(1, "%s: %s: recv(%d): short recv", tcp->name, face,
456 tcp->fds[fdidx]);
461 recv_pkt(struct test_ctx *tcp, int fdidx, const char *face, int tout)
467 pr = poll(&tcp->pfds[fdidx], 1, tout);
469 err(1, "%s: %s: poll(%d)", tcp->name, face, tcp->fds[fdidx]);
474 if(tcp->pfds[fdidx].revents != POLLIN) {
475 errx(1, "%s: %s: poll(%d): unexpected result", tcp->name, face,
476 tcp->fds[fdidx]);
479 if (tcp->use_recvmsg == 0) {
480 recv_pkt_recv(tcp, fdidx, face, &recv_buf, rlen,
483 recv_pkt_recvmsg(tcp, fdidx, face, &recv_buf, rlen,
487 memcmp(recv_buf.data, PDATA(tcp, recv_buf.pnum), PKT_SIZE) != 0) {
488 errx(1, "%s: %s: recv(%d): corrupted data, packet %d", tcp->name,
489 face, tcp->fds[fdidx], recv_buf.pnum);
491 tcp->nrecvd += 1;
492 memcpy(tcp->test_pkts[recv_buf.pnum].tss, recv_buf.tss,
494 tcp->test_pkts[recv_buf.pnum].lost = 0;
499 test_server(struct test_ctx *tcp)
504 send_pkt(tcp, i, 0, __FUNCTION__);
505 j = recv_pkt(tcp, 0, __FUNCTION__, SRECV_TIMEOUT);
515 test_client(struct test_ctx *tcp)
520 j = recv_pkt(tcp, 1, __FUNCTION__, RRECV_TIMEOUT);
531 send_pkt(tcp, j, 1, __FUNCTION__);