From: Visarion Alexandru <viorel.visarion@xxxxxxxxx> This is needed to be able to change the address a graphics device is listening for. --- libvirt-gconfig/Makefile.am | 2 + ...ibvirt-gconfig-domain-graphics-listen-address.c | 128 +++++++++++++++++++++ ...ibvirt-gconfig-domain-graphics-listen-address.h | 78 +++++++++++++ libvirt-gconfig/libvirt-gconfig.h | 1 + libvirt-gconfig/libvirt-gconfig.sym | 7 ++ 5 files changed, 216 insertions(+) create mode 100644 libvirt-gconfig/libvirt-gconfig-domain-graphics-listen-address.c create mode 100644 libvirt-gconfig/libvirt-gconfig-domain-graphics-listen-address.h diff --git a/libvirt-gconfig/Makefile.am b/libvirt-gconfig/Makefile.am index 09739c5..5e66c4a 100644 --- a/libvirt-gconfig/Makefile.am +++ b/libvirt-gconfig/Makefile.am @@ -47,6 +47,7 @@ GCONFIG_HEADER_FILES = \ libvirt-gconfig-domain-graphics.h \ libvirt-gconfig-domain-graphics-desktop.h \ libvirt-gconfig-domain-graphics-listen.h\ + libvirt-gconfig-domain-graphics-listen-address.h\ libvirt-gconfig-domain-graphics-rdp.h \ libvirt-gconfig-domain-graphics-sdl.h \ libvirt-gconfig-domain-graphics-spice.h \ @@ -141,6 +142,7 @@ GCONFIG_SOURCE_FILES = \ libvirt-gconfig-domain-graphics.c \ libvirt-gconfig-domain-graphics-desktop.c \ libvirt-gconfig-domain-graphics-listen.c\ + libvirt-gconfig-domain-graphics-listen-address.c\ libvirt-gconfig-domain-graphics-rdp.c \ libvirt-gconfig-domain-graphics-sdl.c \ libvirt-gconfig-domain-graphics-spice.c \ diff --git a/libvirt-gconfig/libvirt-gconfig-domain-graphics-listen-address.c b/libvirt-gconfig/libvirt-gconfig-domain-graphics-listen-address.c new file mode 100644 index 0000000..74815a8 --- /dev/null +++ b/libvirt-gconfig/libvirt-gconfig-domain-graphics-listen-address.c @@ -0,0 +1,128 @@ +/* + * libvirt-gconfig-domain-graphics-listen-address.c: libvirt domain graphics listen address configuration + * + * Copyright (C) 2016 Red Hat, Inc. + * Copyright (C) 2016 Visarion Alexandru <viorel.visarion@xxxxxxxxx> + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library. If not, see + * <http://www.gnu.org/licenses/>. + * + * Author: Visarion Alexandru <viorel.visarion@xxxxxxxxx> + */ + +#include <config.h> + +#include <gio/gio.h> + +#include "libvirt-gconfig/libvirt-gconfig.h" +#include "libvirt-gconfig/libvirt-gconfig-private.h" + +#define GVIR_CONFIG_DOMAIN_GRAPHICS_LISTEN_ADDRESS_GET_PRIVATE(obj) \ + (G_TYPE_INSTANCE_GET_PRIVATE((obj), GVIR_CONFIG_TYPE_DOMAIN_GRAPHICS_LISTEN_ADDRESS, GVirConfigDomainGraphicsListenAddressPrivate)) + +struct _GVirConfigDomainGraphicsListenAddressPrivate +{ + gboolean unused; +}; + +G_DEFINE_TYPE(GVirConfigDomainGraphicsListenAddress, gvir_config_domain_graphics_listen_address, GVIR_CONFIG_TYPE_DOMAIN_GRAPHICS_LISTEN); + + +static void gvir_config_domain_graphics_listen_address_class_init(GVirConfigDomainGraphicsListenAddressClass *klass) +{ + g_type_class_add_private(klass, sizeof(GVirConfigDomainGraphicsListenAddressPrivate)); +} + + +static void gvir_config_domain_graphics_listen_address_init(GVirConfigDomainGraphicsListenAddress *address) +{ + address->priv = GVIR_CONFIG_DOMAIN_GRAPHICS_LISTEN_ADDRESS_GET_PRIVATE(address); +} + + +GVirConfigDomainGraphicsListenAddress *gvir_config_domain_graphics_listen_address_new(void) +{ + GVirConfigObject *object; + + object = gvir_config_object_new(GVIR_CONFIG_TYPE_DOMAIN_GRAPHICS_LISTEN_ADDRESS, "listen", NULL); + gvir_config_object_set_attribute(object, + "type", "address", + NULL); + + return GVIR_CONFIG_DOMAIN_GRAPHICS_LISTEN_ADDRESS(object); +} + + +GVirConfigDomainGraphicsListenAddress *gvir_config_domain_graphics_listen_address_new_from_xml(const gchar *xml, + GError **error) +{ + GVirConfigObject *object; + + object = gvir_config_object_new_from_xml(GVIR_CONFIG_TYPE_DOMAIN_GRAPHICS_LISTEN_ADDRESS, + "listen", NULL, xml, error); + if (g_strcmp0(gvir_config_object_get_attribute(object, NULL, "type"), "address") != 0) { + g_object_unref(G_OBJECT(object)); + g_return_val_if_reached(NULL); + } + return GVIR_CONFIG_DOMAIN_GRAPHICS_LISTEN_ADDRESS(object); +} + +void gvir_config_domain_graphics_listen_address_set_address(GVirConfigDomainGraphicsListenAddress *listen, + const gchar *address) +{ + g_return_if_fail(GVIR_CONFIG_IS_DOMAIN_GRAPHICS_LISTEN_ADDRESS(listen)); + + gvir_config_object_set_attribute(GVIR_CONFIG_OBJECT(listen), + "address", address, + NULL); +} + +const gchar * +gvir_config_domain_graphics_listen_address_get_address(GVirConfigDomainGraphicsListenAddress *listen) +{ + g_return_val_if_fail(GVIR_CONFIG_IS_DOMAIN_GRAPHICS_LISTEN_ADDRESS(listen), NULL); + + return gvir_config_object_get_attribute(GVIR_CONFIG_OBJECT(listen), + NULL, + "address"); +} + +void gvir_config_domain_graphics_listen_address_set_inet_address(GVirConfigDomainGraphicsListenAddress *listen, + GInetAddress *address) +{ + g_return_if_fail(GVIR_CONFIG_IS_DOMAIN_GRAPHICS_LISTEN_ADDRESS(listen)); + + gvir_config_object_set_attribute(GVIR_CONFIG_OBJECT(listen), + "address", g_inet_address_to_string (address), + NULL); +} + +/** + * gvir_config_domain_graphics_listen_address_get_inet_address: + * + * Returns the #GInetAddress associated with the #GVirConfigDomainGraphicsListenAddress. + * + * Returns: (transfer full): a #GInetAddress. + * + */ +GInetAddress * +gvir_config_domain_graphics_listen_address_get_inet_address(GVirConfigDomainGraphicsListenAddress *listen) +{ + g_return_val_if_fail(GVIR_CONFIG_IS_DOMAIN_GRAPHICS_LISTEN_ADDRESS(listen), NULL); + + const gchar *address = gvir_config_object_get_attribute(GVIR_CONFIG_OBJECT(listen), + NULL, + "address"); + return g_inet_address_new_from_string(address); +} \ No newline at end of file diff --git a/libvirt-gconfig/libvirt-gconfig-domain-graphics-listen-address.h b/libvirt-gconfig/libvirt-gconfig-domain-graphics-listen-address.h new file mode 100644 index 0000000..1178b9f --- /dev/null +++ b/libvirt-gconfig/libvirt-gconfig-domain-graphics-listen-address.h @@ -0,0 +1,78 @@ +/* + * libvirt-gconfig-domain-graphics-listen-address.h: libvirt domain graphics listen address configuration + * + * Copyright (C) 2016 Red Hat, Inc. + * Copyright (C) 2016 Visarion Alexandru <viorel.visarion@xxxxxxxxx> + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library. If not, see + * <http://www.gnu.org/licenses/>. + * + * Author: Visarion Alexandru <viorel.visarion@xxxxxxxxx> + */ + +#if !defined(__LIBVIRT_GCONFIG_H__) && !defined(LIBVIRT_GCONFIG_BUILD) +#error "Only <libvirt-gconfig/libvirt-gconfig.h> can be included directly." +#endif + +#ifndef __LIBVIRT_GCONFIG_DOMAIN_GRAPHICS_LISTEN_ADDRESS_H__ +#define __LIBVIRT_GCONFIG_DOMAIN_GRAPHICS_LISTEN_ADDRESS_H__ + +#include <gio/gio.h> + +G_BEGIN_DECLS + +#define GVIR_CONFIG_TYPE_DOMAIN_GRAPHICS_LISTEN_ADDRESS (gvir_config_domain_graphics_listen_address_get_type ()) +#define GVIR_CONFIG_DOMAIN_GRAPHICS_LISTEN_ADDRESS(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GVIR_CONFIG_TYPE_DOMAIN_GRAPHICS_LISTEN_ADDRESS, GVirConfigDomainGraphicsListenAddress)) +#define GVIR_CONFIG_DOMAIN_GRAPHICS_LISTEN_ADDRESS_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GVIR_CONFIG_TYPE_DOMAIN_GRAPHICS_LISTEN_ADDRESS, GVirConfigDomainGraphicsListenAddressClass)) +#define GVIR_CONFIG_IS_DOMAIN_GRAPHICS_LISTEN_ADDRESS(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GVIR_CONFIG_TYPE_DOMAIN_GRAPHICS_LISTEN_ADDRESS)) +#define GVIR_CONFIG_IS_DOMAIN_GRAPHICS_LISTEN_ADDRESS_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GVIR_CONFIG_TYPE_DOMAIN_GRAPHICS_LISTEN_ADDRESS)) +#define GVIR_CONFIG_DOMAIN_GRAPHICS_LISTEN_ADDRESS_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GVIR_CONFIG_TYPE_DOMAIN_GRAPHICS_LISTEN_ADDRESS, GVirConfigDomainGraphicsListenAddressClass)) + +typedef struct _GVirConfigDomainGraphicsListenAddress GVirConfigDomainGraphicsListenAddress; +typedef struct _GVirConfigDomainGraphicsListenAddressPrivate GVirConfigDomainGraphicsListenAddressPrivate; +typedef struct _GVirConfigDomainGraphicsListenAddressClass GVirConfigDomainGraphicsListenAddressClass; + +struct _GVirConfigDomainGraphicsListenAddress +{ + GVirConfigDomainGraphicsListen parent; + + GVirConfigDomainGraphicsListenAddressPrivate *priv; + + /* Do not add fields to this struct */ +}; + +struct _GVirConfigDomainGraphicsListenAddressClass +{ + GVirConfigDomainGraphicsListenClass parent_class; + + gpointer padding[20]; +}; + + +GType gvir_config_domain_graphics_listen_address_get_type(void); + +GVirConfigDomainGraphicsListenAddress *gvir_config_domain_graphics_listen_address_new(void); +GVirConfigDomainGraphicsListenAddress *gvir_config_domain_graphics_listen_address_new_from_xml(const gchar *xml, + GError **error); + +void gvir_config_domain_graphics_listen_address_set_address(GVirConfigDomainGraphicsListenAddress *listen, + const gchar *address); +const gchar *gvir_config_domain_graphics_listen_address_get_address(GVirConfigDomainGraphicsListenAddress *listen); + +void gvir_config_domain_graphics_listen_address_set_inet_address(GVirConfigDomainGraphicsListenAddress *listen, + GInetAddress *address); +GInetAddress *gvir_config_domain_graphics_listen_address_get_inet_address(GVirConfigDomainGraphicsListenAddress *listen); +G_END_DECLS + +#endif /* __LIBVIRT_GCONFIG_DOMAIN_GRAPHICS_LISTEN_ADDRESS_H__ */ diff --git a/libvirt-gconfig/libvirt-gconfig.h b/libvirt-gconfig/libvirt-gconfig.h index 496986e..6132bc1 100644 --- a/libvirt-gconfig/libvirt-gconfig.h +++ b/libvirt-gconfig/libvirt-gconfig.h @@ -64,6 +64,7 @@ #include <libvirt-gconfig/libvirt-gconfig-domain-graphics.h> #include <libvirt-gconfig/libvirt-gconfig-domain-graphics-desktop.h> #include <libvirt-gconfig/libvirt-gconfig-domain-graphics-listen.h> +#include <libvirt-gconfig/libvirt-gconfig-domain-graphics-listen-address.h> #include <libvirt-gconfig/libvirt-gconfig-domain-graphics-rdp.h> #include <libvirt-gconfig/libvirt-gconfig-domain-graphics-sdl.h> #include <libvirt-gconfig/libvirt-gconfig-domain-graphics-spice.h> diff --git a/libvirt-gconfig/libvirt-gconfig.sym b/libvirt-gconfig/libvirt-gconfig.sym index 32d2c7b..364d8ff 100644 --- a/libvirt-gconfig/libvirt-gconfig.sym +++ b/libvirt-gconfig/libvirt-gconfig.sym @@ -741,6 +741,13 @@ global: gvir_config_domain_address_pci_get_multifunction; gvir_config_domain_address_pci_get_slot; + gvir_config_domain_graphics_listen_address_get_address; + gvir_config_domain_graphics_listen_address_get_inet_address; + gvir_config_domain_graphics_listen_address_get_type; + gvir_config_domain_graphics_listen_address_new; + gvir_config_domain_graphics_listen_address_new_from_xml; + gvir_config_domain_graphics_listen_address_set_address; + gvir_config_domain_graphics_listen_address_set_inet_address; gvir_config_domain_graphics_listen_get_type; gvir_config_domain_graphics_spice_set_gl; -- 2.7.4 -- libvir-list mailing list libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list