{}; + socklen_t saddr_len = sizeof(saddr); struct __kernel_timespec ts; struct io_uring_sqe *sqe; struct io_uring_cqe *cqe; @@ -155,13 +156,25 @@ static int test_good_server(unsigned int ring_flags) return T_SETUP_SKIP; } - ret = setup_srv(&ring, &server_addr); + ret = setup_srv(&ring); if (ret != T_SETUP_OK) { fprintf(stderr, "srv startup failed.\n"); return T_EXIT_FAIL; } - if (connect_client(&ring, server_addr.sin_port) != T_SETUP_OK) { + sqe = io_uring_get_sqe(&ring); + io_uring_prep_cmd_getsockname(sqe, SRV_INDEX, (struct sockaddr*)&saddr, + &saddr_len, 0); + sqe->flags |= IOSQE_FIXED_FILE | IOSQE_IO_LINK; + io_uring_submit(&ring); + io_uring_wait_cqe(&ring, &cqe); + if (cqe->res < 0) { + fprintf(stderr, "getsockname server failed. %d\n", cqe->res); + return T_EXIT_FAIL; + } + io_uring_cqe_seen(&ring, cqe); + + if (connect_client(&ring, saddr.sin_port) != T_SETUP_OK) { fprintf(stderr, "cli startup failed.\n"); return T_SETUP_SKIP; } -- 2.51.0[PATCH liburing 2/4] test/bind-listen.t: Use ephemeral portGabriel Krisman Bertazi undefinedaxboe@kernel.dk undefined undefined•CƒÄB