[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PULL 2/6] QIOChannelSocket: Add support for MSG_ZEROCOPY + IPV6
From: |
Daniel P . Berrangé |
Subject: |
[PULL 2/6] QIOChannelSocket: Add support for MSG_ZEROCOPY + IPV6 |
Date: |
Fri, 5 Aug 2022 16:20:10 +0100 |
From: Leonardo Bras <leobras@redhat.com>
For using MSG_ZEROCOPY, there are two steps:
1 - io_writev() the packet, which enqueues the packet for sending, and
2 - io_flush(), which gets confirmation that all packets got correctly sent
Currently, if MSG_ZEROCOPY is used to send packets over IPV6, no error will
be reported in (1), but it will fail in the first time (2) happens.
This happens because (2) currently checks for cmsg_level & cmsg_type
associated with IPV4 only, before reporting any error.
Add checks for cmsg_level & cmsg_type associated with IPV6, and thus enable
support for MSG_ZEROCOPY + IPV6
Fixes: 2bc58ffc29 ("QIOChannelSocket: Implement io_writev zero copy flag &
io_flush for CONFIG_LINUX")
Signed-off-by: Leonardo Bras <leobras@redhat.com>
Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
---
io/channel-socket.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/io/channel-socket.c b/io/channel-socket.c
index 74a936cc1f..b76dca9cc1 100644
--- a/io/channel-socket.c
+++ b/io/channel-socket.c
@@ -746,8 +746,8 @@ static int qio_channel_socket_flush(QIOChannel *ioc,
}
cm = CMSG_FIRSTHDR(&msg);
- if (cm->cmsg_level != SOL_IP &&
- cm->cmsg_type != IP_RECVERR) {
+ if (cm->cmsg_level != SOL_IP && cm->cmsg_type != IP_RECVERR &&
+ cm->cmsg_level != SOL_IPV6 && cm->cmsg_type != IPV6_RECVERR) {
error_setg_errno(errp, EPROTOTYPE,
"Wrong cmsg in errqueue");
return -1;
--
2.37.1
- [PULL 0/6] Misc next patches, Daniel P . Berrangé, 2022/08/05
- [PULL 1/6] docs: build-platforms: Clarify stance on minor releases and backports, Daniel P . Berrangé, 2022/08/05
- [PULL 2/6] QIOChannelSocket: Add support for MSG_ZEROCOPY + IPV6,
Daniel P . Berrangé <=
- [PULL 3/6] target/i386: display deprecation status in '-cpu help', Daniel P . Berrangé, 2022/08/05
- [PULL 4/6] target/s390x: display deprecation status in '-cpu help', Daniel P . Berrangé, 2022/08/05
- [PULL 5/6] target/arm: display deprecation status in '-cpu help', Daniel P . Berrangé, 2022/08/05
- [PULL 6/6] util/qemu-sockets: Replace the call to close a socket with closesocket(), Daniel P . Berrangé, 2022/08/05