From: Thomas Huth <thuth@redhat.com>
To: Yonggang Luo <luoyonggang@gmail.com>,
qemu-devel@nongnu.org, Paolo Bonzini <pbonzini@redhat.com>,
"Daniel P. Berrange" <berrange@redhat.com>
Cc: Kevin Wolf <kwolf@redhat.com>, Ed Maste <emaste@freebsd.org>,
qemu-block@nongnu.org, Stefan Weil <sw@weilnetz.de>,
Xie Changlong <xiechanglong.d@gmail.com>,
Peter Lieven <pl@kamp.de>,
Michael Roth <mdroth@linux.vnet.ibm.com>,
Markus Armbruster <armbru@redhat.com>,
Richard Henderson <richard.henderson@linaro.org>,
Gerd Hoffmann <kraxel@redhat.com>,
Wen Congyang <wencongyang2@huawei.com>,
Max Reitz <mreitz@redhat.com>, Li-Wen Hsu <lwhsu@freebsd.org>
Subject: Re: [PATCH v8 13/27] tests: Enable crypto tests under msys2/mingw
Date: Mon, 14 Sep 2020 09:23:33 +0200 [thread overview]
Message-ID: <119be52f-fc8b-dd37-e3d6-04a13109c845@redhat.com> (raw)
In-Reply-To: <20200912224431.1428-14-luoyonggang@gmail.com>
On 13/09/2020 00.44, Yonggang Luo wrote:
> Fixes following tests on msys2/mingw
> 'test-crypto-tlscredsx509': ['crypto-tls-x509-helpers.c', 'pkix_asn1_tab.c',
> tasn1, crypto],
> 'test-crypto-tlssession': ['crypto-tls-x509-helpers.c', 'pkix_asn1_tab.c', 'crypto-tls-psk-helpers.c',
> tasn1, crypto],
> 'test-io-channel-tls': ['io-channel-helpers.c', 'crypto-tls-x509-helpers.c', 'pkix_asn1_tab.c',
> tasn1, io, crypto]}
> These tests are failure with:
> ERROR test-crypto-tlscredsx509 - missing test plan
> ERROR test-crypto-tlssession - missing test plan
> ERROR test-io-channel-tls - missing test plan
>
> Because on win32 those test case are all disabled in the header
>
> Add qemu_socket_pair for cross platform support, convert file system
> handling functions to glib
> Add qemu_link function instead posix only link function.
> Use send ad recv from qemu that convert Windows Socks error
> to errno properly.
>
> Signed-off-by: Yonggang Luo <luoyonggang@gmail.com>
> ---
[...]
> +static int __stream_socketpair(struct addrinfo* addr_info, int sock[2]){
> + SOCKET listener, client, server;
> + int opt = 1;
> +
> + listener = server = client = INVALID_SOCKET;
> + listener = socket(addr_info->ai_family, addr_info->ai_socktype, addr_info->ai_protocol);
> + if (INVALID_SOCKET == listener)
> + goto fail;
> +
> + setsockopt(listener, SOL_SOCKET, SO_REUSEADDR,(const char*)&opt, sizeof(opt));
> +
> + if(SOCKET_ERROR == bind(listener, addr_info->ai_addr, addr_info->ai_addrlen))
> + goto fail;
> +
> + if (SOCKET_ERROR == getsockname(listener, addr_info->ai_addr, (int*)&addr_info->ai_addrlen))
> + goto fail;
> +
> + if(SOCKET_ERROR == listen(listener, 5))
> + goto fail;
> +
> + client = socket(addr_info->ai_family, addr_info->ai_socktype, addr_info->ai_protocol);
> +
> + if (INVALID_SOCKET == client)
> + goto fail;
> +
> + if (SOCKET_ERROR == connect(client,addr_info->ai_addr,addr_info->ai_addrlen))
> + goto fail;
> +
> + server = accept(listener, 0, 0);
> +
> + if (INVALID_SOCKET == server)
> + goto fail;
> +
> + closesocket(listener);
> +
> + sock[0] = client;
> + sock[1] = server;
> +
> + return 0;
> +fail:
> + if(INVALID_SOCKET!=listener)
> + closesocket(listener);
> + if (INVALID_SOCKET!=client)
> + closesocket(client);
> + return -1;
> +}
> +
> +static int __dgram_socketpair(struct addrinfo* addr_info, int sock[2])
> +{
> + SOCKET client, server;
> + struct addrinfo addr, *result = NULL;
> + const char* address;
> + int opt = 1;
> +
> + server = client = INVALID_SOCKET;
> +
> + server = socket(addr_info->ai_family, addr_info->ai_socktype, addr_info->ai_protocol);
> + if (INVALID_SOCKET == server)
> + goto fail;
> +
> + setsockopt(server, SOL_SOCKET,SO_REUSEADDR, (const char*)&opt, sizeof(opt));
> +
> + if(SOCKET_ERROR == bind(server, addr_info->ai_addr, addr_info->ai_addrlen))
> + goto fail;
> +
> + if (SOCKET_ERROR == getsockname(server, addr_info->ai_addr, (int*)&addr_info->ai_addrlen))
> + goto fail;
> +
> + client = socket(addr_info->ai_family, addr_info->ai_socktype, addr_info->ai_protocol);
> + if (INVALID_SOCKET == client)
> + goto fail;
> +
> + memset(&addr,0,sizeof(addr));
> + addr.ai_family = addr_info->ai_family;
> + addr.ai_socktype = addr_info->ai_socktype;
> + addr.ai_protocol = addr_info->ai_protocol;
> +
> + if (AF_INET6==addr.ai_family)
> + address = "0:0:0:0:0:0:0:1";
> + else
> + address = "127.0.0.1";
> +
> + if (getaddrinfo(address, "0", &addr, &result))
> + goto fail;
> +
> + setsockopt(client,SOL_SOCKET,SO_REUSEADDR,(const char*)&opt, sizeof(opt));
> + if(SOCKET_ERROR == bind(client, result->ai_addr, result->ai_addrlen))
> + goto fail;
> +
> + if (SOCKET_ERROR == getsockname(client, result->ai_addr, (int*)&result->ai_addrlen))
> + goto fail;
> +
> + if (SOCKET_ERROR == connect(server, result->ai_addr, result->ai_addrlen))
> + goto fail;
> +
> + if (SOCKET_ERROR == connect(client, addr_info->ai_addr, addr_info->ai_addrlen))
> + goto fail;
> +
> + freeaddrinfo(result);
> + sock[0] = client;
> + sock[1] = server;
> + return 0;
> +
> +fail:
> + if (INVALID_SOCKET!=client)
> + closesocket(client);
> + if (INVALID_SOCKET!=server)
> + closesocket(server);
> + if (result)
> + freeaddrinfo(result);
> + return -1;
> +}
> +
> +int qemu_socketpair(int family, int type, int protocol,int recv[2]){
> + const char* address;
> + struct addrinfo addr_info,*p_addrinfo;
> + int result = -1;
> +
> + if (family == AF_UNIX)
> + {
> + family = AF_INET;
> + }
> +
> + memset(&addr_info, 0, sizeof(addr_info));
> + addr_info.ai_family = family;
> + addr_info.ai_socktype = type;
> + addr_info.ai_protocol = protocol;
> + if (AF_INET6==family)
> + address = "0:0:0:0:0:0:0:1";
> + else
> + address = "127.0.0.1";
> +
> + if (0 == getaddrinfo(address, "0", &addr_info, &p_addrinfo)){
> + if (SOCK_STREAM == type)
> + result = __stream_socketpair(p_addrinfo, recv);
> + else if(SOCK_DGRAM == type)
> + result = __dgram_socketpair(p_addrinfo, recv);
> + freeaddrinfo(p_addrinfo);
> + }
> + return result;
> +}
Where do you've got this code from? It seems like this has been taken
from a 3rd party source? E.g.:
https://blog.csdn.net/wufuhuai/article/details/79761889
What's the license of this new code? ... please clarify such details in
the commit description.
Thanks,
Thomas
next prev parent reply other threads:[~2020-09-14 7:27 UTC|newest]
Thread overview: 71+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-09-12 22:44 [PATCH v8 00/27] W32, W64 msys2/mingw patches Yonggang Luo
2020-09-12 22:44 ` [PATCH v8 01/27] rcu: Implement drain_call_rcu Yonggang Luo
2020-09-12 22:44 ` [PATCH v8 02/27] block: Fixes nfs compiling error on msys2/mingw Yonggang Luo
2020-09-13 15:47 ` Philippe Mathieu-Daudé
2020-09-13 16:00 ` 罗勇刚(Yonggang Luo)
2020-09-13 18:58 ` Philippe Mathieu-Daudé
2020-09-14 10:26 ` 罗勇刚(Yonggang Luo)
2020-09-12 22:44 ` [PATCH v8 03/27] ci: fixes msys2 build by upgrading capstone to 4.0.2 Yonggang Luo
2020-09-14 7:10 ` Thomas Huth
2020-09-14 7:15 ` 罗勇刚(Yonggang Luo)
2020-09-12 22:44 ` [PATCH v8 04/27] configure: Fixes ncursesw detection under msys2/mingw and enable curses Yonggang Luo
2020-09-12 22:44 ` [PATCH v8 05/27] win32: Simplify gmtime_r detection direct base on _POSIX_THREAD_SAFE_FUNCTIONS Yonggang Luo
2020-09-12 22:44 ` [PATCH v8 06/27] curses: Fixes curses compiling errors Yonggang Luo
2020-09-12 22:44 ` [PATCH v8 07/27] tests: disable /char/stdio/* tests in test-char.c on win32 Yonggang Luo
2020-09-12 22:44 ` [PATCH v8 08/27] tests: Fixes test-replication.c on msys2/mingw Yonggang Luo
2020-09-13 15:37 ` Philippe Mathieu-Daudé
2020-09-12 22:44 ` [PATCH v8 09/27] tests: test-replication disable /replication/secondary/* " Yonggang Luo
2020-09-12 22:44 ` [PATCH v8 10/27] osdep: file locking functions are not available on Win32 Yonggang Luo
2020-09-13 15:36 ` Philippe Mathieu-Daudé
2020-09-12 22:44 ` [PATCH v8 11/27] meson: Use -b to ignore CR vs. CR-LF issues on Windows Yonggang Luo
2020-09-13 15:35 ` Philippe Mathieu-Daudé
2020-09-13 16:01 ` 罗勇刚(Yonggang Luo)
2020-09-13 18:49 ` Philippe Mathieu-Daudé
2020-09-14 14:41 ` Peter Maydell
2020-09-14 15:20 ` 罗勇刚(Yonggang Luo)
2020-09-14 14:01 ` Eric Blake
2020-09-12 22:44 ` [PATCH v8 12/27] gcrypt: test_tls_psk_init should write binary file instead text file Yonggang Luo
2020-09-13 15:31 ` Philippe Mathieu-Daudé
2020-09-12 22:44 ` [PATCH v8 13/27] tests: Enable crypto tests under msys2/mingw Yonggang Luo
2020-09-14 7:23 ` Thomas Huth [this message]
2020-09-14 8:19 ` 罗勇刚(Yonggang Luo)
2020-09-14 11:07 ` Thomas Huth
2020-09-14 15:58 ` 罗勇刚(Yonggang Luo)
2020-09-14 16:13 ` Daniel P. Berrangé
2020-09-14 18:31 ` 罗勇刚(Yonggang Luo)
2020-09-12 22:44 ` [PATCH v8 14/27] meson: remove empty else and duplicated gio deps Yonggang Luo
2020-09-12 22:44 ` [PATCH v8 15/27] vmstate: Fixes test-vmstate.c on msys2/mingw Yonggang Luo
2020-09-12 22:44 ` [PATCH v8 16/27] cirrus: Building freebsd in a single short Yonggang Luo
2020-09-14 7:27 ` Thomas Huth
2020-09-14 8:50 ` Philippe Mathieu-Daudé
2020-09-14 10:43 ` Thomas Huth
2020-09-12 22:44 ` [PATCH v8 17/27] tests: Convert g_free to g_autofree macro in test-logging.c Yonggang Luo
2020-09-12 22:44 ` [PATCH v8 18/27] tests: Fixes test-io-channel-socket.c tests under msys2/mingw Yonggang Luo
2020-09-12 22:44 ` [PATCH v8 19/27] tests: fixes aio-win32 about aio_remove_fd_handler, get it consistence with aio-posix.c Yonggang Luo
2020-09-12 22:44 ` [PATCH v8 20/27] tests: Fixes test-io-channel-file by mask only owner file state mask bits Yonggang Luo
2020-09-13 15:28 ` Philippe Mathieu-Daudé
2020-09-12 22:44 ` [PATCH v8 21/27] tests: fix test-util-sockets.c Yonggang Luo
2020-09-12 22:44 ` [PATCH v8 22/27] tests: Fixes test-qdev-global-props.c Yonggang Luo
2020-09-12 22:44 ` [PATCH v8 23/27] rcu: fixes test-logging.c by call drain_call_rcu before rmdir_full Yonggang Luo
2020-09-12 22:44 ` [PATCH v8 24/27] ci: Enable msys2 ci in cirrus Yonggang Luo
2020-09-14 7:38 ` Thomas Huth
2020-09-14 8:25 ` Stefan Weil
2020-09-12 22:44 ` [PATCH v8 25/27] meson: upgrade meson for execute custom ninjatool under msys2 properly Yonggang Luo
2020-09-12 22:44 ` [PATCH v8 26/27] meson: remove --ninja option in configure Yonggang Luo
2020-09-12 22:44 ` [PATCH v8 27/27] Revert "configure: add --ninja option" Yonggang Luo
2020-09-13 14:08 ` Paolo Bonzini
2020-09-13 16:03 ` 罗勇刚(Yonggang Luo)
2020-09-13 16:12 ` Paolo Bonzini
2020-09-13 16:16 ` 罗勇刚(Yonggang Luo)
2020-09-13 16:14 ` 罗勇刚(Yonggang Luo)
2020-09-14 8:45 ` Paolo Bonzini
2020-09-14 8:48 ` 罗勇刚(Yonggang Luo)
2020-09-15 11:44 ` Thomas Huth
2020-09-15 11:56 ` 罗勇刚(Yonggang Luo)
2020-09-12 23:06 ` [PATCH v8 00/27] W32, W64 msys2/mingw patches no-reply
2020-09-14 7:00 ` 罗勇刚(Yonggang Luo)
2020-09-14 6:10 ` Thomas Huth
2020-09-14 6:27 ` 罗勇刚(Yonggang Luo)
2020-09-14 6:37 ` Stefan Weil
2020-09-14 6:54 ` 罗勇刚(Yonggang Luo)
2020-09-14 6:49 ` Philippe Mathieu-Daudé
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=119be52f-fc8b-dd37-e3d6-04a13109c845@redhat.com \
--to=thuth@redhat.com \
--cc=armbru@redhat.com \
--cc=berrange@redhat.com \
--cc=emaste@freebsd.org \
--cc=kraxel@redhat.com \
--cc=kwolf@redhat.com \
--cc=luoyonggang@gmail.com \
--cc=lwhsu@freebsd.org \
--cc=mdroth@linux.vnet.ibm.com \
--cc=mreitz@redhat.com \
--cc=pbonzini@redhat.com \
--cc=pl@kamp.de \
--cc=qemu-block@nongnu.org \
--cc=qemu-devel@nongnu.org \
--cc=richard.henderson@linaro.org \
--cc=sw@weilnetz.de \
--cc=wencongyang2@huawei.com \
--cc=xiechanglong.d@gmail.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).