From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:51788) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1bAweb-0004oO-1Z for qemu-devel@nongnu.org; Thu, 09 Jun 2016 05:53:34 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1bAweW-0002P1-PI for qemu-devel@nongnu.org; Thu, 09 Jun 2016 05:53:32 -0400 Received: from mx1.redhat.com ([209.132.183.28]:40930) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1bAweW-0002Ot-HL for qemu-devel@nongnu.org; Thu, 09 Jun 2016 05:53:28 -0400 Date: Thu, 9 Jun 2016 12:53:24 +0300 From: Victor Kaplansky Message-ID: <20160609125006-mutt-send-email-victork@redhat.com> References: <1465231508-30183-1-git-send-email-marcandre.lureau@redhat.com> <1465231508-30183-3-git-send-email-marcandre.lureau@redhat.com> MIME-Version: 1.0 Content-Type: text/plain; charset=iso-8859-1 Content-Disposition: inline In-Reply-To: <1465231508-30183-3-git-send-email-marcandre.lureau@redhat.com> Content-Transfer-Encoding: quoted-printable Subject: Re: [Qemu-devel] [PATCH 02/10] tests/vhost-user-bridge: add client mode List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: marcandre.lureau@redhat.com Cc: qemu-devel@nongnu.org, "Michael S . Tsirkin" , Tetsuya Mukawa , jonshin@cisco.com, Ilya Maximets , Yuanhan Liu On Mon, Jun 06, 2016 at 06:45:00PM +0200, marcandre.lureau@redhat.com wro= te: > From: Marc-Andr=E9 Lureau >=20 > If -c is specified, vubr will try to connect to the socket instead of > listening for connections. >=20 > Signed-off-by: Marc-Andr=E9 Lureau > Tested-by: Yuanhan Liu > Reviewed-by: Yuanhan Liu > --- > tests/vhost-user-bridge.c | 38 ++++++++++++++++++++++++++------------ > 1 file changed, 26 insertions(+), 12 deletions(-) >=20 > 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) > } > =20 > static VubrDev * > -vubr_new(const char *path) > +vubr_new(const char *path, bool client) > { > VubrDev *dev =3D (VubrDev *) calloc(1, sizeof(VubrDev)); > dev->nregions =3D 0; > int i; > struct sockaddr_un un; > + CallbackFunc cb; > size_t len; > =20 > for (i =3D 0; i < MAX_NR_VIRTQUEUE; i++) { > @@ -1238,19 +1239,27 @@ vubr_new(const char *path) > un.sun_family =3D AF_UNIX; > strcpy(un.sun_path, path); > len =3D sizeof(un.sun_family) + strlen(path); > - unlink(path); > =20 > - if (bind(dev->sock, (struct sockaddr *) &un, len) =3D=3D -1) { > - vubr_die("bind"); > - } > + if (!client) { > + unlink(path); > + > + if (bind(dev->sock, (struct sockaddr *) &un, len) =3D=3D -1) { > + vubr_die("bind"); > + } > =20 > - if (listen(dev->sock, 1) =3D=3D -1) { > - vubr_die("listen"); > + if (listen(dev->sock, 1) =3D=3D -1) { > + vubr_die("listen"); > + } > + cb =3D vubr_accept_cb; > + } else { > + if (connect(dev->sock, (struct sockaddr *)&un, len) =3D=3D -1)= { > + vubr_die("connect"); > + } > + cb =3D vubr_receive_cb; > } > =20 > dispatcher_init(&dev->dispatcher); > - dispatcher_add(&dev->dispatcher, dev->sock, (void *)dev, > - vubr_accept_cb); > + dispatcher_add(&dev->dispatcher, dev->sock, (void *)dev, cb); > =20 > DPRINT("Waiting for connections on UNIX socket %s ...\n", path); I think this message should be issued only for server mode. > return dev; > @@ -1369,8 +1378,9 @@ main(int argc, char *argv[]) > { > VubrDev *dev; > int opt; > + bool client =3D false; > =20 > - while ((opt =3D getopt(argc, argv, "l:r:u:")) !=3D -1) { > + while ((opt =3D getopt(argc, argv, "l:r:u:c")) !=3D -1) { > =20 > switch (opt) { > case 'l': > @@ -1386,16 +1396,20 @@ main(int argc, char *argv[]) > case 'u': > ud_socket_path =3D strdup(optarg); > break; > + case 'c': > + client =3D true; > + break; > default: > goto out; > } > } > =20 > - 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); > =20 > - dev =3D vubr_new(ud_socket_path); > + dev =3D vubr_new(ud_socket_path, client); > if (!dev) { > return 1; > } > --=20 > 2.7.4 >=20