Lines Matching +full:max +full:- +full:msg

1 // SPDX-License-Identifier: GPL-2.0
45 #define CONST_MSS_V4 (CONST_MTU_TEST - CONST_HDRLEN_V4)
46 #define CONST_MSS_V6 (CONST_MTU_TEST - CONST_HDRLEN_V6)
58 static int cfg_specific_test_id = -1;
69 int r_len_last; /* recv(): size of last non-mss dgram, if any */
139 /* send MAX segs */
146 /* send MAX bytes */
147 .tlen = ETH_MAX_MTU - CONST_HDRLEN_V4,
150 .r_len_last = ETH_MAX_MTU - CONST_HDRLEN_V4 -
154 /* send MAX + 1: fail */
155 .tlen = ETH_MAX_MTU - CONST_HDRLEN_V4 + 1,
179 /* send max number of min sized segments */
185 /* send max number + 1 of min sized segments: fail */
255 /* send MAX segs */
262 /* send MAX bytes */
263 .tlen = IP6_MAX_MTU - CONST_HDRLEN_V6,
266 .r_len_last = IP6_MAX_MTU - CONST_HDRLEN_V6 -
270 /* send MAX + 1: fail */
271 .tlen = IP6_MAX_MTU - CONST_HDRLEN_V6 + 1,
302 /* send max number of min sized segments */
308 /* send max number + 1 of min sized segments: fail */
356 static bool __send_one(int fd, struct msghdr *msg, int flags) in __send_one() argument
360 ret = sendmsg(fd, msg, flags); in __send_one()
361 if (ret == -1 && in __send_one()
364 if (ret == -1) in __send_one()
366 if (ret != msg->msg_iov->iov_len) in __send_one()
368 (unsigned long long)msg->msg_iov->iov_len); in __send_one()
369 if (msg->msg_flags) in __send_one()
370 error(1, 0, "sendmsg: return flags 0x%x\n", msg->msg_flags); in __send_one()
379 struct msghdr msg = {0}; in send_one() local
386 msg.msg_iov = &iov; in send_one()
387 msg.msg_iovlen = 1; in send_one()
389 msg.msg_name = addr; in send_one()
390 msg.msg_namelen = alen; in send_one()
393 msg.msg_control = control; in send_one()
394 msg.msg_controllen = sizeof(control); in send_one()
396 cm = CMSG_FIRSTHDR(&msg); in send_one()
397 cm->cmsg_level = SOL_UDP; in send_one()
398 cm->cmsg_type = UDP_SEGMENT; in send_one()
399 cm->cmsg_len = CMSG_LEN(sizeof(uint16_t)); in send_one()
406 if (!__send_one(fd, &msg, MSG_MORE)) in send_one()
410 iov.iov_len = len - 1; in send_one()
413 return __send_one(fd, &msg, 0); in send_one()
421 if (ret == -1 && errno == EAGAIN && (flags & MSG_DONTWAIT)) in recv_one()
423 if (ret == -1) in recv_one()
436 addr->sa_family == AF_INET ? 4 : 6, in run_one()
437 test->tlen, test->gso_len, in run_one()
438 test->v6_ext_hdr ? "ext-hdr " : "", in run_one()
439 test->tfail ? "(fail)" : ""); in run_one()
441 if (test->v6_ext_hdr) { in run_one()
447 val = test->gso_len; in run_one()
453 sent = send_one(fdt, test->tlen, test->gso_len, addr, alen); in run_one()
454 if (sent && test->tfail) in run_one()
456 if (!sent && !test->tfail) in run_one()
459 if (test->v6_ext_hdr) { in run_one()
470 if (test->gso_len) in run_one()
471 mss = test->gso_len; in run_one()
473 mss = addr->sa_family == AF_INET ? CONST_MSS_V4 : CONST_MSS_V6; in run_one()
477 for (i = 0; i < test->r_num_mss; i++) { in run_one()
483 /* Recv the non-full last datagram, if tlen was not a multiple of mss */ in run_one()
484 if (test->r_len_last) { in run_one()
486 if (ret != test->r_len_last) in run_one()
488 i, ret, test->r_len_last); in run_one()
501 tests = addr->sa_family == AF_INET ? testcases_v4 : testcases_v6; in run_all()
503 for (test = tests; test->tlen; test++) { in run_all()
505 if (cfg_specific_test_id == -1 || in run_all()
506 cfg_specific_test_id == test - tests) in run_all()
516 fdr = socket(addr->sa_family, SOCK_DGRAM, 0); in run_test()
517 if (fdr == -1) in run_test()
529 fdt = socket(addr->sa_family, SOCK_DGRAM, 0); in run_test()
530 if (fdt == -1) in run_test()
534 set_pmtu_discover(fdt, addr->sa_family == AF_INET); in run_test()
543 val = get_path_mtu(fdt, addr->sa_family == AF_INET); in run_test()
582 while ((c = getopt(argc, argv, "46cCmRst:")) != -1) { in parse_opts()