All of lore.kernel.org
 help / color / mirror / Atom feed
From: Yuanhan Liu <yuanhan.liu@linux.intel.com>
To: marcandre.lureau@redhat.com
Cc: qemu-devel@nongnu.org, "Michael S . Tsirkin" <mst@redhat.com>,
	Tetsuya Mukawa <mukawa@igel.co.jp>,
	jonshin@cisco.com, Ilya Maximets <i.maximets@samsung.com>
Subject: Re: [Qemu-devel] [PATCH 02/10] vubr: add client mode
Date: Tue, 10 May 2016 10:19:10 -0700	[thread overview]
Message-ID: <20160510171910.GQ5641@yliu-dev.sh.intel.com> (raw)
In-Reply-To: <1462896240-30999-3-git-send-email-marcandre.lureau@redhat.com>

Hi,

Just to let you know that as a client, it need to add the reconnect
ability, as the QEMU (as the server) may restart as well. Well, I'm
thinking that you may think it's an example bridge only, so, let it
be simple. Then I'm sorry for the noise.

	--yliu

On Tue, May 10, 2016 at 06:03:52PM +0200, marcandre.lureau@redhat.com wrote:
> From: Marc-André Lureau <marcandre.lureau@redhat.com>
> 
> If -c is specified, vubr will try to connect to the socket instead of
> listening for connections.
> 
> Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
> ---
>  tests/vhost-user-bridge.c | 38 ++++++++++++++++++++++++++------------
>  1 file changed, 26 insertions(+), 12 deletions(-)
> 
> diff --git a/tests/vhost-user-bridge.c b/tests/vhost-user-bridge.c
> index 0779ba2..f907ce7 100644
> --- a/tests/vhost-user-bridge.c
> +++ b/tests/vhost-user-bridge.c
> @@ -1204,12 +1204,13 @@ vubr_accept_cb(int sock, void *ctx)
>  }
>  
>  static VubrDev *
> -vubr_new(const char *path)
> +vubr_new(const char *path, bool client)
>  {
>      VubrDev *dev = (VubrDev *) calloc(1, sizeof(VubrDev));
>      dev->nregions = 0;
>      int i;
>      struct sockaddr_un un;
> +    CallbackFunc cb;
>      size_t len;
>  
>      for (i = 0; i < MAX_NR_VIRTQUEUE; i++) {
> @@ -1238,19 +1239,27 @@ vubr_new(const char *path)
>      un.sun_family = AF_UNIX;
>      strcpy(un.sun_path, path);
>      len = sizeof(un.sun_family) + strlen(path);
> -    unlink(path);
>  
> -    if (bind(dev->sock, (struct sockaddr *) &un, len) == -1) {
> -        vubr_die("bind");
> -    }
> +    if (!client) {
> +        unlink(path);
> +
> +        if (bind(dev->sock, (struct sockaddr *) &un, len) == -1) {
> +            vubr_die("bind");
> +        }
>  
> -    if (listen(dev->sock, 1) == -1) {
> -        vubr_die("listen");
> +        if (listen(dev->sock, 1) == -1) {
> +            vubr_die("listen");
> +        }
> +        cb = vubr_accept_cb;
> +    } else {
> +        if (connect(dev->sock, (struct sockaddr *)&un, len) == -1) {
> +            vubr_die("connect");
> +        }
> +        cb = vubr_receive_cb;
>      }
>  
>      dispatcher_init(&dev->dispatcher);
> -    dispatcher_add(&dev->dispatcher, dev->sock, (void *)dev,
> -                   vubr_accept_cb);
> +    dispatcher_add(&dev->dispatcher, dev->sock, (void *)dev, cb);
>  
>      DPRINT("Waiting for connections on UNIX socket %s ...\n", path);
>      return dev;
> @@ -1369,8 +1378,9 @@ main(int argc, char *argv[])
>  {
>      VubrDev *dev;
>      int opt;
> +    bool client = false;
>  
> -    while ((opt = getopt(argc, argv, "l:r:u:")) != -1) {
> +    while ((opt = getopt(argc, argv, "l:r:u:c")) != -1) {
>  
>          switch (opt) {
>          case 'l':
> @@ -1386,16 +1396,20 @@ main(int argc, char *argv[])
>          case 'u':
>              ud_socket_path = strdup(optarg);
>              break;
> +        case 'c':
> +            client = true;
> +            break;
>          default:
>              goto out;
>          }
>      }
>  
> -    DPRINT("ud socket: %s\n", ud_socket_path);
> +    DPRINT("ud socket: %s (%s)\n", ud_socket_path,
> +           client ? "client" : "server");
>      DPRINT("local:     %s:%s\n", lhost, lport);
>      DPRINT("remote:    %s:%s\n", rhost, rport);
>  
> -    dev = vubr_new(ud_socket_path);
> +    dev = vubr_new(ud_socket_path, client);
>      if (!dev) {
>          return 1;
>      }
> -- 
> 2.7.4

  reply	other threads:[~2016-05-10 17:14 UTC|newest]

Thread overview: 22+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-05-10 16:03 [Qemu-devel] [PATCH 00/10] RFCv3: vhost-user: simple reconnection support marcandre.lureau
2016-05-10 16:03 ` [Qemu-devel] [PATCH 01/10] vhost-user: add ability to know vhost-user backend disconnection marcandre.lureau
2016-05-10 16:03 ` [Qemu-devel] [PATCH 02/10] vubr: add client mode marcandre.lureau
2016-05-10 17:19   ` Yuanhan Liu [this message]
2016-05-10 18:08     ` Marc-André Lureau
2016-05-10 16:03 ` [Qemu-devel] [PATCH 03/10] vubr: workaround stale vring base marcandre.lureau
2016-05-10 16:03 ` [Qemu-devel] [PATCH 04/10] qemu-char: add qemu_chr_disconnect to close a fd accepted by listen fd marcandre.lureau
2016-05-10 16:03 ` [Qemu-devel] [PATCH 05/10] vhost-user: disconnect on start failure marcandre.lureau
2016-05-10 16:03 ` [Qemu-devel] [PATCH 06/10] vhost-net: do not crash if backend is not present marcandre.lureau
2016-05-10 16:03 ` [Qemu-devel] [PATCH 07/10] vhost-net: save & restore vhost-user acked features marcandre.lureau
2016-06-06  9:06   ` Yuanhan Liu
2016-06-06  9:50     ` Marc-André Lureau
2016-05-10 16:03 ` [Qemu-devel] [PATCH 08/10] vhost-net: save & restore vring enable state marcandre.lureau
2016-05-10 16:03 ` [Qemu-devel] [PATCH 09/10] tests: append i386 tests marcandre.lureau
2016-05-10 16:04 ` [Qemu-devel] [PATCH 10/10] test: start vhost-user reconnect test marcandre.lureau
2016-05-10 16:19 ` [Qemu-devel] [PATCH 00/10] RFCv3: vhost-user: simple reconnection support Michael S. Tsirkin
2016-05-10 16:28   ` Marc-André Lureau
2016-05-13 18:30     ` Marc-André Lureau
2016-05-15  9:42       ` Michael S. Tsirkin
2016-05-23 13:40         ` Yuanhan Liu
2016-05-24 13:24           ` Marc-André Lureau
2016-05-10 17:14 ` Yuanhan Liu

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=20160510171910.GQ5641@yliu-dev.sh.intel.com \
    --to=yuanhan.liu@linux.intel.com \
    --cc=i.maximets@samsung.com \
    --cc=jonshin@cisco.com \
    --cc=marcandre.lureau@redhat.com \
    --cc=mst@redhat.com \
    --cc=mukawa@igel.co.jp \
    --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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.