qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [PATCH] qemu-sockets: add abstract UNIX domain socket support


From: Marc-André Lureau
Subject: Re: [PATCH] qemu-sockets: add abstract UNIX domain socket support
Date: Thu, 23 Apr 2020 12:37:29 +0200

Hi

On Thu, Apr 23, 2020 at 4:48 AM xiaoqiang zhao <address@hidden> wrote:
>
> unix_connect_saddr now support abstract address type
>
> By default qemu does not support abstract UNIX domain
> socket address. Add this ability to make qemu handy
> when abstract address is needed.
> Abstract address is marked by prefixing the address name with a '@'.
>
> Signed-off-by: xiaoqiang zhao <address@hidden>


Reviewed-by: Marc-André Lureau <address@hidden>


> ---
>  util/qemu-sockets.c | 11 ++++++++++-
>  1 file changed, 10 insertions(+), 1 deletion(-)
>
> diff --git a/util/qemu-sockets.c b/util/qemu-sockets.c
> index bcc06d0e01..d4f02a6b1a 100644
> --- a/util/qemu-sockets.c
> +++ b/util/qemu-sockets.c
> @@ -939,6 +939,7 @@ static int unix_connect_saddr(UnixSocketAddress *saddr, 
> Error **errp)
>      struct sockaddr_un un;
>      int sock, rc;
>      size_t pathlen;
> +    socklen_t serverlen;
>
>      if (saddr->path == NULL) {
>          error_setg(errp, "unix connect: no path specified");
> @@ -963,10 +964,18 @@ static int unix_connect_saddr(UnixSocketAddress *saddr, 
> Error **errp)
>      un.sun_family = AF_UNIX;
>      memcpy(un.sun_path, saddr->path, pathlen);
>
> +    if (saddr->path[0] == '@') {
> +        un.sun_path[0] = '\0';
> +        serverlen = strlen(saddr->path) + offsetof(struct sockaddr_un, 
> sun_path);
> +    }
> +    else {
> +        serverlen = sizeof(un);
> +    }
> +
>      /* connect to peer */
>      do {
>          rc = 0;
> -        if (connect(sock, (struct sockaddr *) &un, sizeof(un)) < 0) {
> +        if (connect(sock, (struct sockaddr *) &un, serverlen) < 0) {
>              rc = -errno;
>          }
>      } while (rc == -EINTR);
> --
> 2.17.1
>
>
>


-- 
Marc-André Lureau



reply via email to

[Prev in Thread] Current Thread [Next in Thread]