qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
From: Paolo Bonzini <pbonzini@redhat.com>
To: Markus Armbruster <armbru@redhat.com>
Cc: qemu-devel@nongnu.org, lcapitulino@redhat.com
Subject: Re: [Qemu-devel] [PATCH 22/25] qemu-sockets: add socket_listen, socket_connect, socket_parse
Date: Fri, 19 Oct 2012 04:37:08 -0400 (EDT)	[thread overview]
Message-ID: <9071096.13349802.1350635828498.JavaMail.root@redhat.com> (raw)
In-Reply-To: <87391alvwk.fsf@blackfin.pond.sub.org>


> > These are QAPI-friendly versions of the qemu-sockets functions.
> > They support IP sockets, Unix sockets, and named file descriptors, using
> > a QAPI union to dispatch to the correct function.
> >
> > Reviewed-by: Luiz Capitulino <lcapitulino@redhat.com>
> > Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
> > ---
> >  Makefile       |  2 +-
> >  qemu-sockets.c | 99
> >  ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
> >  qemu-tool.c    |  6 ++++
> >  qemu_socket.h  |  5 +++
> >  4 file modificati, 111 inserzioni(+). 1 rimozione(-)
> >
> > diff --git a/Makefile b/Makefile
> > index a9c22bf..b8b1f3c 100644
> > --- a/Makefile
> > +++ b/Makefile
> > @@ -159,7 +159,7 @@ qemu-img.o: qemu-img-cmds.h
> >  
> >  tools-obj-y = $(oslib-obj-y) $(trace-obj-y) qemu-tool.o
> >  qemu-timer.o \
> >  	qemu-timer-common.o main-loop.o notify.o \
> > -	iohandler.o cutils.o iov.o async.o
> > +	iohandler.o cutils.o iov.o async.o error.o
> >  tools-obj-$(CONFIG_POSIX) += compatfd.o
> >  
> >  qemu-img$(EXESUF): qemu-img.o $(tools-obj-y) $(block-obj-y)
> >  $(qapi-obj-y) \
> > diff --git a/qemu-sockets.c b/qemu-sockets.c
> > index 5946962..e8d0a3c 100644
> > --- a/qemu-sockets.c
> > +++ b/qemu-sockets.c
> > @@ -22,6 +22,7 @@
> >  #include <errno.h>
> >  #include <unistd.h>
> >  
> > +#include "monitor.h"
> >  #include "qemu_socket.h"
> >  #include "qemu-common.h" /* for qemu_isdigit */
> >  #include "main-loop.h"
> > @@ -845,6 +846,104 @@ int unix_nonblocking_connect(const char
> > *path,
> >      return sock;
> >  }
> >  
> > +SocketAddress *socket_parse(const char *str, Error **errp)
> > +{
> > +    SocketAddress *addr = NULL;
> > +
> > +    addr = g_new(SocketAddress, 1);
> > +    if (strstart(str, "unix:", NULL)) {
> > +        if (str[5] == '\0') {
> > +            error_setg(errp, "invalid Unix socket address\n");
> > +            goto fail;
> > +        } else {
> > +            addr->kind = SOCKET_ADDRESS_KIND_UNIX;
> > +            addr->q_unix = g_new(UnixSocketAddress, 1);
> > +            addr->q_unix->path = g_strdup(str + 5);
> > +        }
> > +    } else if (strstart(str, "fd:", NULL)) {
> > +        if (str[3] == '\0') {
> > +            error_setg(errp, "invalid file descriptor address\n");
> > +            goto fail;
> > +        } else {
> > +            addr->kind = SOCKET_ADDRESS_KIND_FD;
> > +            addr->fd = g_new(String, 1);
> > +            addr->fd->str = g_strdup(str + 3);
> > +        }
> > +    } else {
> > +        addr->kind = SOCKET_ADDRESS_KIND_INET;
> > +        addr->inet = g_new(IPSocketAddress, 1);
> > +        addr->inet = inet_parse(str, errp);
> > +        if (addr->inet == NULL) {
> > +            goto fail;
> > +        }
> > +    }
> > +    return addr;
> > +
> > +fail:
> > +    qapi_free_SocketAddress(addr);
> > +    return NULL;
> > +}
> 
> Yet another ad hoc parser.  Have you considered sticking to QemuOpts
> syntax?

This is legacy/HMP syntax support.  You may wonder why introduce
_more_ legacy support, and the plan there is basically to replace
all the legacy-syntax _connect and _listen calls with socket_parse + 
socket_connect/socket_listen, so that they automatically gain
Unix and FD support.  This should also allow unification
of migration-tcp.c and migration-unix.c (not sure about migration-fd.c,
it's possible that incoming migration screws up the plan there).

> Hmm, I guess it's for use with the existing ad hoc parser
> inet_parse().
> Correct?

Roughly, see above.

Paolo

  reply	other threads:[~2012-10-19  8:37 UTC|newest]

Thread overview: 72+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2012-10-10 14:02 [Qemu-devel] [PULL for Luiz 00/25] Combined qemu-sockets cleanup v2 + NBD server Paolo Bonzini
2012-10-10 14:02 ` [Qemu-devel] [PATCH 01/25] error: add error_set_errno and error_setg_errno Paolo Bonzini
2012-10-10 14:02 ` [Qemu-devel] [PATCH 02/25] qemu-sockets: add Error ** to all functions Paolo Bonzini
2012-10-10 14:02 ` [Qemu-devel] [PATCH 03/25] qemu-sockets: unix_listen and unix_connect are portable Paolo Bonzini
2012-10-10 14:02 ` [Qemu-devel] [PATCH 04/25] qemu-sockets: add nonblocking connect for Unix sockets Paolo Bonzini
2012-10-17 13:33   ` Markus Armbruster
2012-10-17 13:44     ` Paolo Bonzini
2012-10-10 14:02 ` [Qemu-devel] [PATCH 05/25] migration: avoid using error_is_set and thus relying on errp != NULL Paolo Bonzini
2012-10-17 13:36   ` Markus Armbruster
2012-10-17 13:37     ` Paolo Bonzini
2012-10-17 15:44       ` Markus Armbruster
2012-10-10 14:02 ` [Qemu-devel] [PATCH 06/25] migration: centralize call to migrate_fd_error() Paolo Bonzini
2012-10-10 14:02 ` [Qemu-devel] [PATCH 07/25] migration: use qemu-sockets to establish Unix sockets Paolo Bonzini
2012-10-17 14:30   ` Markus Armbruster
2012-10-10 14:02 ` [Qemu-devel] [PATCH 08/25] migration (outgoing): add error propagation for all protocols Paolo Bonzini
2012-10-17 14:43   ` Markus Armbruster
2012-10-17 14:50     ` Paolo Bonzini
2012-10-17 15:43       ` Markus Armbruster
2012-10-10 14:02 ` [Qemu-devel] [PATCH 09/25] migration (incoming): add error propagation to fd and exec protocols Paolo Bonzini
2012-10-10 14:02 ` [Qemu-devel] [PATCH 10/25] qemu-char: ask and print error information from qemu-sockets Paolo Bonzini
2012-10-10 14:02 ` [Qemu-devel] [PATCH 11/25] nbd: " Paolo Bonzini
2012-10-17 14:51   ` Markus Armbruster
2012-10-17 14:53     ` Paolo Bonzini
2012-10-10 14:02 ` [Qemu-devel] [PATCH 12/25] qemu-ga: " Paolo Bonzini
2012-10-10 14:02 ` [Qemu-devel] [PATCH 13/25] vnc: add error propagation to vnc_display_open Paolo Bonzini
2012-10-17 15:17   ` Markus Armbruster
2012-10-17 15:48     ` Paolo Bonzini
2012-10-19  7:49       ` Markus Armbruster
2012-10-19  8:40         ` Paolo Bonzini
2012-10-10 14:02 ` [Qemu-devel] [PATCH 14/25] qemu-sockets: include strerror or gai_strerror output in error messages Paolo Bonzini
2012-10-10 14:02 ` [Qemu-devel] [PATCH 15/25] qemu-sockets: add error propagation to inet_connect_addr Paolo Bonzini
2012-10-16 12:53   ` Luiz Capitulino
2012-10-17 15:40   ` Markus Armbruster
2012-10-17 15:50     ` Paolo Bonzini
2012-10-19  7:59       ` Markus Armbruster
2012-10-19  8:50         ` Paolo Bonzini
2012-10-10 14:02 ` [Qemu-devel] [PATCH 16/25] qemu-sockets: add error propagation to inet_dgram_opts Paolo Bonzini
2012-10-10 14:02 ` [Qemu-devel] [PATCH 17/25] qemu-sockets: add error propagation to inet_parse Paolo Bonzini
2012-10-10 14:02 ` [Qemu-devel] [PATCH 18/25] qemu-sockets: add error propagation to Unix socket functions Paolo Bonzini
2012-10-10 14:03 ` [Qemu-devel] [PATCH 19/25] build: add QAPI files to the tools Paolo Bonzini
2012-10-10 14:03 ` [Qemu-devel] [PATCH 20/25] qapi: add socket address types Paolo Bonzini
2012-10-17 16:43   ` Markus Armbruster
2012-10-17 16:48     ` Paolo Bonzini
2012-10-17 16:50       ` Luiz Capitulino
2012-10-19  8:10       ` Markus Armbruster
2012-10-19  8:39         ` Paolo Bonzini
2012-10-10 14:03 ` [Qemu-devel] [PATCH 21/25] qemu-sockets: return IPSocketAddress from inet_parse Paolo Bonzini
2012-10-17 16:49   ` Markus Armbruster
2012-10-10 14:03 ` [Qemu-devel] [PATCH 22/25] qemu-sockets: add socket_listen, socket_connect, socket_parse Paolo Bonzini
2012-10-19  8:15   ` Markus Armbruster
2012-10-19  8:37     ` Paolo Bonzini [this message]
2012-10-10 14:03 ` [Qemu-devel] [PATCH 23/25] block: add close notifiers Paolo Bonzini
2012-10-19  8:21   ` Markus Armbruster
2012-10-19  9:38     ` Paolo Bonzini
2012-10-19  8:26   ` Markus Armbruster
2012-10-10 14:03 ` [Qemu-devel] [PATCH 24/25] qmp: add NBD server commands Paolo Bonzini
2012-10-10 20:41   ` Eric Blake
2012-10-11 13:06     ` Paolo Bonzini
2012-10-11 13:14       ` Eric Blake
2012-10-11 13:22         ` Paolo Bonzini
2012-10-19  8:31   ` Markus Armbruster
2012-10-10 14:03 ` [Qemu-devel] [PATCH 25/25] hmp: " Paolo Bonzini
2012-10-19  8:34   ` Markus Armbruster
2012-10-19  8:58     ` Paolo Bonzini
2012-10-19 12:44       ` Luiz Capitulino
2012-10-19 12:44       ` Markus Armbruster
2012-10-19 13:11         ` Paolo Bonzini
2012-10-19 13:53           ` Markus Armbruster
2012-10-19 13:57             ` Paolo Bonzini
2012-10-16 13:09 ` [Qemu-devel] [PULL for Luiz 00/25] Combined qemu-sockets cleanup v2 + NBD server Luiz Capitulino
2012-10-16 13:10   ` Paolo Bonzini
2012-10-17 17:02 ` Markus Armbruster

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=9071096.13349802.1350635828498.JavaMail.root@redhat.com \
    --to=pbonzini@redhat.com \
    --cc=armbru@redhat.com \
    --cc=lcapitulino@redhat.com \
    --cc=qemu-devel@nongnu.org \
    /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).