qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
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



  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).