[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] Re: [RFC][RESEND][PATCH v1 12/15] virtproxy: interfaces to
From: |
Adam Litke |
Subject: |
[Qemu-devel] Re: [RFC][RESEND][PATCH v1 12/15] virtproxy: interfaces to set/remove VPIForwards |
Date: |
Wed, 03 Nov 2010 20:12:34 -0500 |
Description please.
On Wed, 2010-11-03 at 10:28 -0500, Michael Roth wrote:
> Signed-off-by: Michael Roth <address@hidden>
> ---
> virtproxy.c | 59
> +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
> virtproxy.h | 2 ++
> 2 files changed, 61 insertions(+), 0 deletions(-)
>
> diff --git a/virtproxy.c b/virtproxy.c
> index 5ec4e77..86a8e5b 100644
> --- a/virtproxy.c
> +++ b/virtproxy.c
> @@ -658,3 +658,62 @@ int vp_set_oforward(VPDriver *drv, int fd, const char
> *service_id)
>
> return 0;
> }
> +
> +/* add/modify a service_id -> net/unix socket mapping
> + *
> + * "service_id" is a user-defined id for the service. this is what the
> + * remote end will use to proxy connections to a specific service on
> + * our end.
> + *
> + * if "port" is NULL, "addr" is the address of the net socket the
> + * service is running on. otherwise, addr is the path to the unix socket
> + * the service is running on.
> + *
> + * if "port" AND "addr" are NULL, find and remove the current iforward
> + * for this "service_id" if it exists.
> + *
> + * "ipv6" is a bool denoting whether or not to use ipv6
> + */
> +int vp_set_iforward(VPDriver *drv, const char *service_id, const char *addr,
> + const char *port, bool ipv6)
> +{
> + VPIForward *f = get_iforward(drv, service_id);
> +
> + if (addr == NULL && port == NULL) {
> + if (f != NULL) {
> + qemu_opts_del(f->socket_opts);
> + QLIST_REMOVE(f, next);
> + qemu_free(f);
> + }
> + return 0;
> + }
> +
> + if (f == NULL) {
> + f = qemu_mallocz(sizeof(VPIForward));
> + f->drv = drv;
> + strncpy(f->service_id, service_id, VP_SERVICE_ID_LEN);
> + QLIST_INSERT_HEAD(&drv->iforwards, f, next);
> + } else {
> + qemu_opts_del(f->socket_opts);
> + }
> +
> + /* stick socket-related options in a QemuOpts so we can
> + * utilize qemu socket utility functions directly
> + */
> + f->socket_opts = qemu_opts_create(&vp_socket_opts, NULL, 0);
> + if (port == NULL) {
> + /* no port given, assume unix path */
> + qemu_opt_set(f->socket_opts, "path", addr);
> + } else {
> + qemu_opt_set(f->socket_opts, "host", addr);
> + qemu_opt_set(f->socket_opts, "port", port);
> + }
> +
> + if (ipv6) {
> + qemu_opt_set(f->socket_opts, "ipv6", "on");
> + } else {
> + qemu_opt_set(f->socket_opts, "ipv4", "on");
> + }
> +
> + return 0;
> +}
> diff --git a/virtproxy.h b/virtproxy.h
> index 39d5d40..d2522b3 100644
> --- a/virtproxy.h
> +++ b/virtproxy.h
> @@ -34,5 +34,7 @@ int vp_set_fd_handler(int fd,
> /* virtproxy interface */
> VPDriver *vp_new(int fd, bool listen);
> int vp_set_oforward(VPDriver *drv, int fd, const char *service_id);
> +int vp_set_iforward(VPDriver *drv, const char *service_id, const char *addr,
> + const char *port, bool ipv6);
>
> #endif /* VIRTPROXY_H */
--
Thanks,
Adam
- [Qemu-devel] [RFC][RESEND][PATCH v1 08/15] virtproxy: interfaces to set/remove/handle VPOForwards, (continued)
- [Qemu-devel] [RFC][RESEND][PATCH v1 08/15] virtproxy: interfaces to set/remove/handle VPOForwards, Michael Roth, 2010/11/03
- [Qemu-devel] [RFC][RESEND][PATCH v1 09/15] virtproxy: add handler for data packets, Michael Roth, 2010/11/03
- [Qemu-devel] [RFC][RESEND][PATCH v1 10/15] virtproxy: add handler for control packet, Michael Roth, 2010/11/03
- [Qemu-devel] [RFC][RESEND][PATCH v1 14/15] virtproxy: Makefile/configure changes to build qemu-vp, Michael Roth, 2010/11/03
- [Qemu-devel] [RFC][RESEND][PATCH v1 11/15] virtproxy: add vp_handle_packet(), Michael Roth, 2010/11/03
- [Qemu-devel] [RFC][RESEND][PATCH v1 12/15] virtproxy: interfaces to set/remove VPIForwards, Michael Roth, 2010/11/03
- [Qemu-devel] Re: [RFC][RESEND][PATCH v1 12/15] virtproxy: interfaces to set/remove VPIForwards,
Adam Litke <=
- [Qemu-devel] [RFC][RESEND][PATCH v1 07/15] virtproxy: add vp_new() VPDriver constructor, Michael Roth, 2010/11/03
- [Qemu-devel] [RFC][RESEND][PATCH v1 15/15] virtproxy: qemu-vp, main logic, Michael Roth, 2010/11/03
- [Qemu-devel] [RFC][RESEND][PATCH v1 06/15] virtproxy: add read handler for communication channel, Michael Roth, 2010/11/03
- [Qemu-devel] [RFC][RESEND][PATCH v1 13/15] virtproxy: add read handler for proxied connections, Michael Roth, 2010/11/03
- [Qemu-devel] Re: [RFC][RESEND][PATCH v1 00/15] virtproxy: host/guest communication layer, Adam Litke, 2010/11/03