[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [PATCH 02/10] vubr: add client mode
From: |
Yuanhan Liu |
Subject: |
Re: [Qemu-devel] [PATCH 02/10] vubr: add client mode |
Date: |
Tue, 10 May 2016 10:19:10 -0700 |
User-agent: |
Mutt/1.5.23 (2014-03-12) |
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, address@hidden wrote:
> From: Marc-André Lureau <address@hidden>
>
> If -c is specified, vubr will try to connect to the socket instead of
> listening for connections.
>
> Signed-off-by: Marc-André Lureau <address@hidden>
> ---
> 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
- [Qemu-devel] [PATCH 00/10] RFCv3: vhost-user: simple reconnection support, marcandre . lureau, 2016/05/10
- [Qemu-devel] [PATCH 01/10] vhost-user: add ability to know vhost-user backend disconnection, marcandre . lureau, 2016/05/10
- [Qemu-devel] [PATCH 03/10] vubr: workaround stale vring base, marcandre . lureau, 2016/05/10
- [Qemu-devel] [PATCH 02/10] vubr: add client mode, marcandre . lureau, 2016/05/10
- Re: [Qemu-devel] [PATCH 02/10] vubr: add client mode,
Yuanhan Liu <=
- [Qemu-devel] [PATCH 04/10] qemu-char: add qemu_chr_disconnect to close a fd accepted by listen fd, marcandre . lureau, 2016/05/10
- [Qemu-devel] [PATCH 09/10] tests: append i386 tests, marcandre . lureau, 2016/05/10
- [Qemu-devel] [PATCH 05/10] vhost-user: disconnect on start failure, marcandre . lureau, 2016/05/10
- [Qemu-devel] [PATCH 06/10] vhost-net: do not crash if backend is not present, marcandre . lureau, 2016/05/10
- [Qemu-devel] [PATCH 08/10] vhost-net: save & restore vring enable state, marcandre . lureau, 2016/05/10
- [Qemu-devel] [PATCH 07/10] vhost-net: save & restore vhost-user acked features, marcandre . lureau, 2016/05/10
- [Qemu-devel] [PATCH 10/10] test: start vhost-user reconnect test, marcandre . lureau, 2016/05/10
- Re: [Qemu-devel] [PATCH 00/10] RFCv3: vhost-user: simple reconnection support, Michael S. Tsirkin, 2016/05/10