Patchwork [RFC,RESEND,v1,07/15] virtproxy: add vp_new() VPDriver constructor

login
register
mail settings
Submitter Michael Roth
Date Nov. 3, 2010, 3:28 p.m.
Message ID <1288798090-7127-8-git-send-email-mdroth@linux.vnet.ibm.com>
Download mbox | patch
Permalink /patch/70029/
State New
Headers show

Comments

Michael Roth - Nov. 3, 2010, 3:28 p.m.
Signed-off-by: Michael Roth <mdroth@linux.vnet.ibm.com>
---
 virtproxy.c |   23 +++++++++++++++++++++++
 virtproxy.h |    3 +++
 2 files changed, 26 insertions(+), 0 deletions(-)
Adam Litke - Nov. 3, 2010, 11:45 p.m.
Be more descriptive here please.

On Wed, 2010-11-03 at 10:28 -0500, Michael Roth wrote:
> Signed-off-by: Michael Roth <mdroth@linux.vnet.ibm.com>
> ---
>  virtproxy.c |   23 +++++++++++++++++++++++
>  virtproxy.h |    3 +++
>  2 files changed, 26 insertions(+), 0 deletions(-)
> 
> diff --git a/virtproxy.c b/virtproxy.c
> index c9c3022..cc0ac9a 100644
> --- a/virtproxy.c
> +++ b/virtproxy.c
> @@ -313,3 +313,26 @@ static void vp_channel_read(void *opaque)
>          drv->buflen += count;
>      }
>  }
> +
> +/* create/init VPDriver object */
> +VPDriver *vp_new(int fd, bool listen)
> +{
> +    VPDriver *drv = NULL;
> +
> +    drv = qemu_mallocz(sizeof(VPDriver));
> +    drv->listen_fd = -1;
> +    drv->channel_fd = -1;
> +    QLIST_INIT(&drv->oforwards);
> +    QLIST_INIT(&drv->conns);
> +
> +    if (listen) {
> +        /* provided FD is to be listened on for channel connection */
> +        drv->listen_fd = fd;
> +        vp_set_fd_handler(drv->listen_fd, vp_channel_accept, NULL, drv);
> +    } else {
> +        drv->channel_fd = fd;
> +        vp_set_fd_handler(drv->channel_fd, vp_channel_read, NULL, drv);
> +    }
> +
> +    return drv;
> +}
> diff --git a/virtproxy.h b/virtproxy.h
> index 0203421..3df1691 100644
> --- a/virtproxy.h
> +++ b/virtproxy.h
> @@ -31,4 +31,7 @@ int vp_set_fd_handler(int fd,
>                          IOHandler *fd_write,
>                          void *opaque);
> 
> +/* virtproxy interface */
> +VPDriver *vp_new(int fd, bool listen);
> +
>  #endif /* VIRTPROXY_H */

Patch

diff --git a/virtproxy.c b/virtproxy.c
index c9c3022..cc0ac9a 100644
--- a/virtproxy.c
+++ b/virtproxy.c
@@ -313,3 +313,26 @@  static void vp_channel_read(void *opaque)
         drv->buflen += count;
     }
 }
+
+/* create/init VPDriver object */
+VPDriver *vp_new(int fd, bool listen)
+{
+    VPDriver *drv = NULL;
+
+    drv = qemu_mallocz(sizeof(VPDriver));
+    drv->listen_fd = -1;
+    drv->channel_fd = -1;
+    QLIST_INIT(&drv->oforwards);
+    QLIST_INIT(&drv->conns);
+
+    if (listen) {
+        /* provided FD is to be listened on for channel connection */
+        drv->listen_fd = fd;
+        vp_set_fd_handler(drv->listen_fd, vp_channel_accept, NULL, drv);
+    } else {
+        drv->channel_fd = fd;
+        vp_set_fd_handler(drv->channel_fd, vp_channel_read, NULL, drv);
+    }
+
+    return drv;
+}
diff --git a/virtproxy.h b/virtproxy.h
index 0203421..3df1691 100644
--- a/virtproxy.h
+++ b/virtproxy.h
@@ -31,4 +31,7 @@  int vp_set_fd_handler(int fd,
                         IOHandler *fd_write,
                         void *opaque);
 
+/* virtproxy interface */
+VPDriver *vp_new(int fd, bool listen);
+
 #endif /* VIRTPROXY_H */