From mboxrd@z Thu Jan 1 00:00:00 1970 Received: by passt.top (Postfix, from userid 1000) id 169E55A0272; Wed, 8 Mar 2023 23:50:06 +0100 (CET) From: Stefano Brivio To: passt-dev@passt.top Subject: [PATCH] contrib: Drop QEMU out-of-tree patches Date: Wed, 8 Mar 2023 23:50:06 +0100 Message-Id: <20230308225006.2589905-1-sbrivio@redhat.com> X-Mailer: git-send-email 2.39.2 MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Message-ID-Hash: KYL7FDNWT3WML4COESYY5XALYRGYSZOM X-Message-ID-Hash: KYL7FDNWT3WML4COESYY5XALYRGYSZOM X-MailFrom: sbrivio@passt.top X-Mailman-Rule-Misses: dmarc-mitigation; no-senders; approved; emergency; loop; banned-address; member-moderation; nonmember-moderation; administrivia; implicit-dest; max-recipients; max-size; news-moderation; no-subject; digests; suspicious-header X-Mailman-Version: 3.3.8 Precedence: list List-Id: Development discussion and patches for passt Archived-At: Archived-At: List-Archive: List-Archive: List-Help: List-Owner: List-Post: List-Subscribe: List-Unsubscribe: Native support was introduced with commit 13c6be96618c, QEMU 7.2. Signed-off-by: Stefano Brivio --- ...NIX-domain-sockets-to-be-used-as-net.patch | 171 ------------------ ...e-EINVAL-on-netdev-socket-connection.patch | 37 ---- 2 files changed, 208 deletions(-) delete mode 100644 contrib/qemu/0001-net-Allow-also-UNIX-domain-sockets-to-be-used-as-net.patch delete mode 100644 contrib/qemu/0002-net-Don-t-ignore-EINVAL-on-netdev-socket-connection.patch diff --git a/contrib/qemu/0001-net-Allow-also-UNIX-domain-sockets-to-be-used-as-net.patch b/contrib/qemu/0001-net-Allow-also-UNIX-domain-sockets-to-be-used-as-net.patch deleted file mode 100644 index 9e71f88..0000000 --- a/contrib/qemu/0001-net-Allow-also-UNIX-domain-sockets-to-be-used-as-net.patch +++ /dev/null @@ -1,171 +0,0 @@ -From 83c3f76b8fe6b4a6bb45dcf5cfad65ec6f98a10e Mon Sep 17 00:00:00 2001 -From: Stefano Brivio -Date: Wed, 26 Jan 2022 16:45:15 +0100 -Subject: [PATCH 1/2] net: Allow also UNIX domain sockets to be used as -netdev - socket - -It has lower overhead compared to TCP, doesn't need a free port -and the adaptation is trivial. - -Signed-off-by: Stefano Brivio ---- -SPDX-FileCopyrightText: 2020-2022 Red Hat GmbH -SPDX-License-Identifier: AGPL-3.0-or-later - - net/socket.c | 106 ++++++++++++++++++++++++++++++++++++++++++--------- - 1 file changed, 87 insertions(+), 19 deletions(-) - -diff --git a/net/socket.c b/net/socket.c -index 2e5f3ac923..b901e22836 100644 ---- a/net/socket.c -+++ b/net/socket.c -@@ -511,26 +511,59 @@ static int net_socket_listen_init(NetClientState *peer, - { - NetClientState *nc; - NetSocketState *s; -- struct sockaddr_in saddr; -- int fd, ret; -+ struct sockaddr_storage saddr; -+ struct sockaddr_in *saddr_in = (struct sockaddr_in *)&saddr; -+ struct sockaddr_un *saddr_un = (struct sockaddr_un *)&saddr; -+ size_t saddr_size; -+ int fd, ret, pf; -+ -+#ifndef WIN32 -+ if (strchr(host_str, ':')) { -+#endif -+ if (parse_host_port(saddr_in, host_str, errp) < 0) -+ return -1; - -- if (parse_host_port(&saddr, host_str, errp) < 0) { -- return -1; -- } -+ pf = PF_INET; -+ saddr_size = sizeof(*saddr_in); -+#ifndef WIN32 -+ } else { -+ struct stat sb; -+ -+ if (stat(host_str, &sb) == -1) { -+ error_setg_errno(errp, errno, "can't stat socket path"); -+ return -1; -+ } -+ -+ if ((sb.st_mode & S_IFMT) != S_IFSOCK) { -+ error_setg_errno(errp, errno, "path provided is not a socket"); -+ return -1; -+ } - -- fd = qemu_socket(PF_INET, SOCK_STREAM, 0); -+ saddr_un->sun_family = PF_UNIX; -+ strncpy(saddr_un->sun_path, host_str, sizeof(saddr_un->sun_path)); -+ -+ pf = PF_UNIX; -+ saddr_size = sizeof(*saddr_un); -+ } -+#endif /* !WIN32 */ -+ fd = qemu_socket(pf, SOCK_STREAM, 0); - if (fd < 0) { - error_setg_errno(errp, errno, "can't create stream socket"); - return -1; - } - qemu_set_nonblock(fd); - -- socket_set_fast_reuse(fd); -+ if (pf == PF_INET) -+ socket_set_fast_reuse(fd); - -- ret = bind(fd, (struct sockaddr *)&saddr, sizeof(saddr)); -+ ret = bind(fd, (struct sockaddr *)&saddr, saddr_size); - if (ret < 0) { -- error_setg_errno(errp, errno, "can't bind ip=%s to socket", -- inet_ntoa(saddr.sin_addr)); -+ if (pf == PF_INET) -+ error_setg_errno(errp, errno, "can't bind ip=%s to socket", -+ inet_ntoa(saddr_in->sin_addr)); -+ else if (pf == PF_UNIX) -+ error_setg_errno(errp, errno, "can't create socket with path: %s", -+ host_str); - closesocket(fd); - return -1; - } -@@ -559,14 +592,43 @@ static int net_socket_connect_init(NetClientState *peer, - Error **errp) - { - NetSocketState *s; -- int fd, connected, ret; -- struct sockaddr_in saddr; -+ int fd, connected, ret, pf; -+ struct sockaddr_storage saddr; -+ size_t saddr_size; -+ struct sockaddr_in *saddr_in = (struct sockaddr_in *)&saddr; -+#ifndef WIN32 -+ struct sockaddr_un *saddr_un = (struct sockaddr_un *)&saddr; -+ -+ if (strchr(host_str, ':')) { -+#endif -+ if (parse_host_port(saddr_in, host_str, errp) < 0) -+ return -1; - -- if (parse_host_port(&saddr, host_str, errp) < 0) { -- return -1; -+ pf = PF_INET; -+ saddr_size = sizeof(*saddr_in); -+#ifndef WIN32 -+ } else { -+ struct stat sb; -+ -+ if (stat(host_str, &sb) == -1) { -+ error_setg_errno(errp, errno, "can't stat socket path"); -+ return -1; -+ } -+ -+ if ((sb.st_mode & S_IFMT) != S_IFSOCK) { -+ error_setg_errno(errp, errno, "provided path is not a socket"); -+ return -1; -+ } -+ -+ saddr_un->sun_family = PF_UNIX; -+ strncpy(saddr_un->sun_path, host_str, sizeof(saddr_un->sun_path)); -+ -+ pf = PF_UNIX; -+ saddr_size = sizeof(*saddr_un); - } -+#endif /* !WIN32 */ - -- fd = qemu_socket(PF_INET, SOCK_STREAM, 0); -+ fd = qemu_socket(pf, SOCK_STREAM, 0); - if (fd < 0) { - error_setg_errno(errp, errno, "can't create stream socket"); - return -1; -@@ -575,7 +637,7 @@ static int net_socket_connect_init(NetClientState *peer, - - connected = 0; - for(;;) { -- ret = connect(fd, (struct sockaddr *)&saddr, sizeof(saddr)); -+ ret = connect(fd, (struct sockaddr *)&saddr, saddr_size); - if (ret < 0) { - if (errno == EINTR || errno == EWOULDBLOCK) { - /* continue */ -@@ -597,9 +659,15 @@ static int net_socket_connect_init(NetClientState *peer, - return -1; - } - -- snprintf(s->nc.info_str, sizeof(s->nc.info_str), -- "socket: connect to %s:%d", -- inet_ntoa(saddr.sin_addr), ntohs(saddr.sin_port)); -+ if (pf == PF_INET) { -+ snprintf(s->nc.info_str, sizeof(s->nc.info_str), -+ "socket: connect to %s:%d", -+ inet_ntoa(saddr_in->sin_addr), ntohs(saddr_in->sin_port)); -+ } else if (pf == PF_UNIX) { -+ snprintf(s->nc.info_str, sizeof(s->nc.info_str), -+ "socket: connect to %s", saddr_un->sun_path); -+ } -+ - return 0; - } - --- -2.28.0 - diff --git a/contrib/qemu/0002-net-Don-t-ignore-EINVAL-on-netdev-socket-connection.patch b/contrib/qemu/0002-net-Don-t-ignore-EINVAL-on-netdev-socket-connection.patch deleted file mode 100644 index 0e31a1b..0000000 --- a/contrib/qemu/0002-net-Don-t-ignore-EINVAL-on-netdev-socket-connection.patch +++ /dev/null @@ -1,37 +0,0 @@ -From a6d475147682de1fe3b14eb325f4247e013e8440 Mon Sep 17 00:00:00 2001 -Message-Id: -In-Reply-To: -References: -From: Stefano Brivio -Date: Wed, 21 Apr 2021 18:52:16 +0200 -Subject: [PATCH 2/2] net: Don't ignore EINVAL on netdev socket connection - -Other errors are treated as failure by net_socket_connect_init(), -but if connect() returns EINVAL, we'll fail silently. Remove the -related exception. - -Signed-off-by: Stefano Brivio ---- -SPDX-FileCopyrightText: 2020-2021 Red Hat GmbH -SPDX-License-Identifier: AGPL-3.0-or-later - - net/socket.c | 3 +-- - 1 file changed, 1 insertion(+), 2 deletions(-) - -diff --git a/net/socket.c b/net/socket.c -index aadd11dae2b3..d3293ac12e82 100644 ---- a/net/socket.c -+++ b/net/socket.c -@@ -644,8 +644,7 @@ static int net_socket_connect_init(NetClientState *peer, - if (errno == EINTR || errno == EWOULDBLOCK) { - /* continue */ - } else if (errno == EINPROGRESS || -- errno == EALREADY || -- errno == EINVAL) { -+ errno == EALREADY) { - break; - } else { - error_setg_errno(errp, errno, "can't connect socket"); --- -2.29.2 - -- 2.39.2