Lines Matching refs:tcp

121 get_clock_type(struct test_ctx *tcp)  in get_clock_type()  argument
123 switch (tcp->ts_type) { in get_clock_type()
138 get_scm_type(struct test_ctx *tcp) in get_scm_type() argument
140 switch (tcp->ts_type) { in get_scm_type()
159 get_scm_size(struct test_ctx *tcp) in get_scm_size() argument
161 switch (tcp->ts_type) { in get_scm_size()
178 setup_ts_sockopt(struct test_ctx *tcp, int fd) in setup_ts_sockopt() argument
186 switch (tcp->ts_type) { in setup_ts_sockopt()
192 sval2 = tcp->ts_type; in setup_ts_sockopt()
210 err(1, "%s: setup_udp: setsockopt(%d, %d, 1)", tcp->name, in setup_ts_sockopt()
219 tcp->name, fd, oname2, sval2); in setup_ts_sockopt()
225 setup_udp(struct test_ctx *tcp) in setup_udp() argument
230 af_len = sizeof(tcp->sin[0].v4); in setup_udp()
232 tcp->sin[i].v4.sin_len = af_len; in setup_udp()
233 tcp->sin[i].v4.sin_family = AF_INET; in setup_udp()
234 tcp->sin[i].v4.sin_addr.s_addr = htonl(INADDR_LOOPBACK); in setup_udp()
235 tcp->fds[i] = socket(PF_INET, SOCK_DGRAM, 0); in setup_udp()
236 if (tcp->fds[i] < 0) in setup_udp()
237 err(1, "%s: setup_udp: socket", tcp->name); in setup_udp()
238 if (bind(tcp->fds[i], (struct sockaddr *)&tcp->sin[i], af_len) < 0) in setup_udp()
239 err(1, "%s: setup_udp: bind(%s, %d)", tcp->name, in setup_udp()
240 inet_ntoa(tcp->sin[i].v4.sin_addr), 0); in setup_udp()
242 if (getsockname(tcp->fds[i], (struct sockaddr *)&tcp->sin[i], &sin_len) < 0) in setup_udp()
243 err(1, "%s: setup_udp: getsockname(%d)", tcp->name, tcp->fds[i]); in setup_udp()
244 if (tcp->use_recvmsg != 0) { in setup_udp()
245 setup_ts_sockopt(tcp, tcp->fds[i]); in setup_udp()
248 tcp->pfds[i].fd = tcp->fds[i]; in setup_udp()
249 tcp->pfds[i].events = POLLIN; in setup_udp()
252 if (connect(tcp->fds[0], (struct sockaddr *)&tcp->sin[1], af_len) < 0) in setup_udp()
253 err(1, "%s: setup_udp: connect(%s, %d)", tcp->name, in setup_udp()
254 inet_ntoa(tcp->sin[1].v4.sin_addr), ntohs(tcp->sin[1].v4.sin_port)); in setup_udp()
255 if (connect(tcp->fds[1], (struct sockaddr *)&tcp->sin[0], af_len) < 0) in setup_udp()
256 err(1, "%s: setup_udp: connect(%s, %d)", tcp->name, in setup_udp()
257 inet_ntoa(tcp->sin[0].v4.sin_addr), ntohs(tcp->sin[0].v4.sin_port)); in setup_udp()
270 setup_udp6(struct test_ctx *tcp) in setup_udp6() argument
275 af_len = sizeof(tcp->sin[0].v6); in setup_udp6()
277 tcp->sin[i].v6.sin6_len = af_len; in setup_udp6()
278 tcp->sin[i].v6.sin6_family = AF_INET6; in setup_udp6()
279 tcp->sin[i].v6.sin6_addr = in6addr_loopback; in setup_udp6()
280 tcp->fds[i] = socket(PF_INET6, SOCK_DGRAM, 0); in setup_udp6()
281 if (tcp->fds[i] < 0) in setup_udp6()
282 err(1, "%s: setup_udp: socket", tcp->name); in setup_udp6()
283 if (bind(tcp->fds[i], (struct sockaddr *)&tcp->sin[i], af_len) < 0) in setup_udp6()
284 err(1, "%s: setup_udp: bind(%s, %d)", tcp->name, in setup_udp6()
285 inet_ntoa6(&tcp->sin[i].v6.sin6_addr), 0); in setup_udp6()
287 if (getsockname(tcp->fds[i], (struct sockaddr *)&tcp->sin[i], &sin_len) < 0) in setup_udp6()
288 err(1, "%s: setup_udp: getsockname(%d)", tcp->name, tcp->fds[i]); in setup_udp6()
289 if (tcp->use_recvmsg != 0) { in setup_udp6()
290 setup_ts_sockopt(tcp, tcp->fds[i]); in setup_udp6()
293 tcp->pfds[i].fd = tcp->fds[i]; in setup_udp6()
294 tcp->pfds[i].events = POLLIN; in setup_udp6()
297 if (connect(tcp->fds[0], (struct sockaddr *)&tcp->sin[1], af_len) < 0) in setup_udp6()
298 err(1, "%s: setup_udp: connect(%s, %d)", tcp->name, in setup_udp6()
299 inet_ntoa6(&tcp->sin[1].v6.sin6_addr), in setup_udp6()
300 ntohs(tcp->sin[1].v6.sin6_port)); in setup_udp6()
301 if (connect(tcp->fds[1], (struct sockaddr *)&tcp->sin[0], af_len) < 0) in setup_udp6()
302 err(1, "%s: setup_udp: connect(%s, %d)", tcp->name, in setup_udp6()
303 inet_ntoa6(&tcp->sin[0].v6.sin6_addr), in setup_udp6()
304 ntohs(tcp->sin[0].v6.sin6_port)); in setup_udp6()
308 teardown_udp(struct test_ctx *tcp) in teardown_udp() argument
311 close(tcp->fds[0]); in teardown_udp()
312 close(tcp->fds[1]); in teardown_udp()
316 send_pkt(struct test_ctx *tcp, int pnum, int fdidx, const char *face) in send_pkt() argument
321 slen = sizeof(tcp->test_pkts[pnum]); in send_pkt()
322 clock_gettime(get_clock_type(tcp), &tcp->test_pkts[pnum].tss[fdidx].sent); in send_pkt()
323 r = send(tcp->fds[fdidx], &tcp->test_pkts[pnum], slen, 0); in send_pkt()
325 err(1, "%s: %s: send(%d)", tcp->name, face, tcp->fds[fdidx]); in send_pkt()
328 errx(1, "%s: %s: send(%d): short send", tcp->name, face, in send_pkt()
329 tcp->fds[fdidx]); in send_pkt()
331 tcp->nsent += 1; in send_pkt()
334 #define PDATA(tcp, i) ((tcp)->test_pkts[(i)].data) argument
337 hdr_extract_ts(struct test_ctx *tcp, struct msghdr *mhp, struct timespec *tp) in hdr_extract_ts() argument
348 scm_type = get_scm_type(tcp); in hdr_extract_ts()
349 scm_size = get_scm_size(tcp); in hdr_extract_ts()
361 switch (tcp->ts_type) { in hdr_extract_ts()
383 recv_pkt_recvmsg(struct test_ctx *tcp, int fdidx, const char *face, void *buf, in recv_pkt_recvmsg() argument
403 rval = recvmsg(tcp->fds[fdidx], &msg, 0); in recv_pkt_recvmsg()
405 err(1, "%s: %s: recvmsg(%d)", tcp->name, face, tcp->fds[fdidx]); in recv_pkt_recvmsg()
408 errx(1, "%s: %s: recvmsg(%d): short recv", tcp->name, face, in recv_pkt_recvmsg()
409 tcp->fds[fdidx]); in recv_pkt_recvmsg()
412 hdr_extract_ts(tcp, &msg, tp); in recv_pkt_recvmsg()
416 recv_pkt_recv(struct test_ctx *tcp, int fdidx, const char *face, void *buf, in recv_pkt_recv() argument
421 rval = recv(tcp->fds[fdidx], buf, rlen, 0); in recv_pkt_recv()
422 clock_gettime(get_clock_type(tcp), tp); in recv_pkt_recv()
424 err(1, "%s: %s: recv(%d)", tcp->name, face, tcp->fds[fdidx]); in recv_pkt_recv()
427 errx(1, "%s: %s: recv(%d): short recv", tcp->name, face, in recv_pkt_recv()
428 tcp->fds[fdidx]); in recv_pkt_recv()
433 recv_pkt(struct test_ctx *tcp, int fdidx, const char *face, int tout) in recv_pkt() argument
439 pr = poll(&tcp->pfds[fdidx], 1, tout); in recv_pkt()
441 err(1, "%s: %s: poll(%d)", tcp->name, face, tcp->fds[fdidx]); in recv_pkt()
446 if(tcp->pfds[fdidx].revents != POLLIN) { in recv_pkt()
447 errx(1, "%s: %s: poll(%d): unexpected result", tcp->name, face, in recv_pkt()
448 tcp->fds[fdidx]); in recv_pkt()
451 if (tcp->use_recvmsg == 0) { in recv_pkt()
452 recv_pkt_recv(tcp, fdidx, face, &recv_buf, rlen, in recv_pkt()
455 recv_pkt_recvmsg(tcp, fdidx, face, &recv_buf, rlen, in recv_pkt()
459 memcmp(recv_buf.data, PDATA(tcp, recv_buf.pnum), PKT_SIZE) != 0) { in recv_pkt()
460 errx(1, "%s: %s: recv(%d): corrupted data, packet %d", tcp->name, in recv_pkt()
461 face, tcp->fds[fdidx], recv_buf.pnum); in recv_pkt()
463 tcp->nrecvd += 1; in recv_pkt()
464 memcpy(tcp->test_pkts[recv_buf.pnum].tss, recv_buf.tss, in recv_pkt()
466 tcp->test_pkts[recv_buf.pnum].lost = 0; in recv_pkt()
471 test_server(struct test_ctx *tcp) in test_server() argument
476 send_pkt(tcp, i, 0, __FUNCTION__); in test_server()
477 j = recv_pkt(tcp, 0, __FUNCTION__, SRECV_TIMEOUT); in test_server()
487 test_client(struct test_ctx *tcp) in test_client() argument
492 j = recv_pkt(tcp, 1, __FUNCTION__, RRECV_TIMEOUT); in test_client()
503 send_pkt(tcp, j, 1, __FUNCTION__); in test_client()