From: Geliang Tang <tanggeliang@kylinos.cn>
Replaces read() with recvmsg() to enable control message (CMSG) handling,
preparing for TCP_INQ support in subsequent patches.
Signed-off-by: Geliang Tang <tanggeliang@kylinos.cn>
---
.../selftests/net/mptcp/mptcp_sockopt.c | 19 ++++++++++++++++---
1 file changed, 16 insertions(+), 3 deletions(-)
diff --git a/tools/testing/selftests/net/mptcp/mptcp_sockopt.c b/tools/testing/selftests/net/mptcp/mptcp_sockopt.c
index d69b10d2dbe3..71cb311fcc50 100644
--- a/tools/testing/selftests/net/mptcp/mptcp_sockopt.c
+++ b/tools/testing/selftests/net/mptcp/mptcp_sockopt.c
@@ -665,8 +665,19 @@ static void connect_one_server(int fd, int unixfd)
static void process_one_client(int fd, int unixfd)
{
ssize_t ret, ret2, ret3;
+ char msg_buf[4096];
struct so_state s;
char buf[4096];
+ struct iovec iov = {
+ .iov_base = buf,
+ .iov_len = 1,
+ };
+ struct msghdr msg = {
+ .msg_iov = &iov,
+ .msg_iovlen = 1,
+ .msg_control = msg_buf,
+ .msg_controllen = sizeof(msg_buf),
+ };
memset(&s, 0, sizeof(s));
do_getsockopts(&s, fd, 0, 0);
@@ -674,9 +685,10 @@ static void process_one_client(int fd, int unixfd)
ret = write(unixfd, "xmit", 4);
assert(ret == 4);
- ret = read(fd, buf, sizeof(buf));
+ iov.iov_len = sizeof(buf);
+ ret = recvmsg(fd, &msg, 0);
if (ret < 0)
- die_perror("read");
+ die_perror("recvmsg");
assert(s.mptcpi_rcv_delta <= (uint64_t)ret);
@@ -708,7 +720,8 @@ static void process_one_client(int fd, int unixfd)
}
/* wait for hangup */
- ret3 = read(fd, buf, 1);
+ iov.iov_len = 1;
+ ret3 = recvmsg(fd, &msg, 0);
if (ret3 != 0)
xerror("expected EOF, got %lu", ret3);
--
2.48.1