From: "Daniel P. Berrange" <berrange@xxxxxxxxxx> --- libvirt-gconfig/libvirt-gconfig-domain-channel.c | 23 ++++++++++++++++++++++ libvirt-gconfig/libvirt-gconfig-domain-channel.h | 11 ++++++++++ libvirt-gconfig/libvirt-gconfig-domain-console.c | 12 +++++++++++ libvirt-gconfig/libvirt-gconfig-domain-console.h | 12 +++++++++++ libvirt-gconfig/libvirt-gconfig-object-private.h | 5 ++++ libvirt-gconfig/libvirt-gconfig-object.c | 15 ++++++++++++++ libvirt-gconfig/libvirt-gconfig.sym | 5 ++++ 7 files changed, 83 insertions(+), 0 deletions(-) diff --git a/libvirt-gconfig/libvirt-gconfig-domain-channel.c b/libvirt-gconfig/libvirt-gconfig-domain-channel.c index 02f8fe7..a4f9527 100644 --- a/libvirt-gconfig/libvirt-gconfig-domain-channel.c +++ b/libvirt-gconfig/libvirt-gconfig-domain-channel.c @@ -23,6 +23,7 @@ #include <config.h> #include "libvirt-gconfig/libvirt-gconfig.h" +#include "libvirt-gconfig/libvirt-gconfig-private.h" #define GVIR_CONFIG_DOMAIN_CHANNEL_GET_PRIVATE(obj) \ (G_TYPE_INSTANCE_GET_PRIVATE((obj), GVIR_CONFIG_TYPE_DOMAIN_CHANNEL, GVirConfigDomainChannelPrivate)) @@ -68,3 +69,25 @@ GVirConfigDomainChannel *gvir_config_domain_channel_new_from_xml(const gchar *xm return NULL; return GVIR_CONFIG_DOMAIN_CHANNEL(object); } + + +void gvir_config_domain_channel_set_target_type(GVirConfigDomainChannel *channel, + GVirConfigDomainChannelTargetType type) +{ + g_return_if_fail(GVIR_CONFIG_IS_DOMAIN_CHANNEL(channel)); + + gvir_config_object_add_child_with_attribute_enum(GVIR_CONFIG_OBJECT(channel), + "target", "type", + GVIR_CONFIG_TYPE_DOMAIN_CHANNEL_TARGET_TYPE, + type); +} + + +void gvir_config_domain_channel_set_target_name(GVirConfigDomainChannel *channel, + const gchar *name) +{ + g_return_if_fail(GVIR_CONFIG_IS_DOMAIN_CHANNEL(channel)); + + gvir_config_object_add_child_with_attribute(GVIR_CONFIG_OBJECT(channel), + "target", "name", name); +} diff --git a/libvirt-gconfig/libvirt-gconfig-domain-channel.h b/libvirt-gconfig/libvirt-gconfig-domain-channel.h index 0e48bcf..a8a3020 100644 --- a/libvirt-gconfig/libvirt-gconfig-domain-channel.h +++ b/libvirt-gconfig/libvirt-gconfig-domain-channel.h @@ -56,12 +56,23 @@ struct _GVirConfigDomainChannelClass gpointer padding[20]; }; +typedef enum { + GVIR_CONFIG_DOMAIN_CONSOLE_TARGET_GUESTFWD, + GVIR_CONFIG_DOMAIN_CHANNEL_TARGET_VIRTIO, +} GVirConfigDomainChannelTargetType; + GType gvir_config_domain_channel_get_type(void); GVirConfigDomainChannel *gvir_config_domain_channel_new(void); GVirConfigDomainChannel *gvir_config_domain_channel_new_from_xml(const gchar *xml, GError **error); +void gvir_config_domain_channel_set_target_type(GVirConfigDomainChannel *channel, + GVirConfigDomainChannelTargetType type); +void gvir_config_domain_channel_set_target_name(GVirConfigDomainChannel *channel, + const gchar *name); + + G_END_DECLS #endif /* __LIBVIRT_GCONFIG_DOMAIN_CHANNEL_H__ */ diff --git a/libvirt-gconfig/libvirt-gconfig-domain-console.c b/libvirt-gconfig/libvirt-gconfig-domain-console.c index 03ee1a7..db97322 100644 --- a/libvirt-gconfig/libvirt-gconfig-domain-console.c +++ b/libvirt-gconfig/libvirt-gconfig-domain-console.c @@ -23,6 +23,7 @@ #include <config.h> #include "libvirt-gconfig/libvirt-gconfig.h" +#include "libvirt-gconfig/libvirt-gconfig-private.h" #define GVIR_CONFIG_DOMAIN_CONSOLE_GET_PRIVATE(obj) \ (G_TYPE_INSTANCE_GET_PRIVATE((obj), GVIR_CONFIG_TYPE_DOMAIN_CONSOLE, GVirConfigDomainConsolePrivate)) @@ -68,3 +69,14 @@ GVirConfigDomainConsole *gvir_config_domain_console_new_from_xml(const gchar *xm return NULL; return GVIR_CONFIG_DOMAIN_CONSOLE(object); } + +void gvir_config_domain_console_set_target_type(GVirConfigDomainConsole *console, + GVirConfigDomainConsoleTargetType type) +{ + g_return_if_fail(GVIR_CONFIG_IS_DOMAIN_CONSOLE(console)); + + gvir_config_object_add_child_with_attribute_enum(GVIR_CONFIG_OBJECT(console), + "target", "type", + GVIR_CONFIG_TYPE_DOMAIN_CONSOLE_TARGET_TYPE, + type); +} diff --git a/libvirt-gconfig/libvirt-gconfig-domain-console.h b/libvirt-gconfig/libvirt-gconfig-domain-console.h index 00e142a..1c735e9 100644 --- a/libvirt-gconfig/libvirt-gconfig-domain-console.h +++ b/libvirt-gconfig/libvirt-gconfig-domain-console.h @@ -57,11 +57,23 @@ struct _GVirConfigDomainConsoleClass }; +typedef enum { + GVIR_CONFIG_DOMAIN_CONSOLE_TARGET_XEN, + GVIR_CONFIG_DOMAIN_CONSOLE_TARGET_SERIAL, + GVIR_CONFIG_DOMAIN_CONSOLE_TARGET_UML, + GVIR_CONFIG_DOMAIN_CONSOLE_TARGET_VIRTIO, + GVIR_CONFIG_DOMAIN_CONSOLE_TARGET_LXC, + GVIR_CONFIG_DOMAIN_CONSOLE_TARGET_OPENVZ, +} GVirConfigDomainConsoleTargetType; + GType gvir_config_domain_console_get_type(void); GVirConfigDomainConsole *gvir_config_domain_console_new(void); GVirConfigDomainConsole *gvir_config_domain_console_new_from_xml(const gchar *xml, GError **error); +void gvir_config_domain_console_set_target_type(GVirConfigDomainConsole *console, + GVirConfigDomainConsoleTargetType type); + G_END_DECLS #endif /* __LIBVIRT_GCONFIG_DOMAIN_CONSOLE_H__ */ diff --git a/libvirt-gconfig/libvirt-gconfig-object-private.h b/libvirt-gconfig/libvirt-gconfig-object-private.h index 0c0c44f..6d01e26 100644 --- a/libvirt-gconfig/libvirt-gconfig-object-private.h +++ b/libvirt-gconfig/libvirt-gconfig-object-private.h @@ -59,6 +59,11 @@ void gvir_config_object_add_child_with_attribute(GVirConfigObject *object, const char *child_name, const char *attr_name, const char *attr_value); +void gvir_config_object_add_child_with_attribute_enum(GVirConfigObject *object, + const char *child_name, + const char *attr_name, + GType attr_type, + unsigned int attr_value); GVirConfigObject *gvir_config_object_replace_child(GVirConfigObject *object, const char *child_name); void gvir_config_object_replace_child_with_attribute(GVirConfigObject *object, diff --git a/libvirt-gconfig/libvirt-gconfig-object.c b/libvirt-gconfig/libvirt-gconfig-object.c index a3b7109..5645490 100644 --- a/libvirt-gconfig/libvirt-gconfig-object.c +++ b/libvirt-gconfig/libvirt-gconfig-object.c @@ -419,6 +419,21 @@ gvir_config_object_add_child_with_attribute(GVirConfigObject *object, g_object_unref(G_OBJECT(child)); } + +void gvir_config_object_add_child_with_attribute_enum(GVirConfigObject *object, + const char *child_name, + const char *attr_name, + GType attr_type, + unsigned int attr_value) +{ + GVirConfigObject *child; + + child = gvir_config_object_add_child(object, child_name); + gvir_config_object_set_attribute_with_type(child, attr_name, attr_type, attr_value, NULL); + g_object_unref(G_OBJECT(child)); +} + + G_GNUC_INTERNAL GVirConfigObject * gvir_config_object_replace_child(GVirConfigObject *object, const char *child_name) diff --git a/libvirt-gconfig/libvirt-gconfig.sym b/libvirt-gconfig/libvirt-gconfig.sym index 7cf3c3d..1c11729 100644 --- a/libvirt-gconfig/libvirt-gconfig.sym +++ b/libvirt-gconfig/libvirt-gconfig.sym @@ -33,6 +33,9 @@ LIBVIRT_GCONFIG_0.0.3 { gvir_config_domain_channel_get_type; gvir_config_domain_channel_new; gvir_config_domain_channel_new_from_xml; + gvir_config_domain_channel_set_target_type; + gvir_config_domain_channel_set_target_name; + gvir_config_domain_channel_target_type_get_type; gvir_config_domain_chardev_get_type; gvir_config_domain_chardev_set_source; @@ -55,6 +58,8 @@ LIBVIRT_GCONFIG_0.0.3 { gvir_config_domain_console_get_type; gvir_config_domain_console_new; gvir_config_domain_console_new_from_xml; + gvir_config_domain_console_set_target_type; + gvir_config_domain_console_target_type_get_type; gvir_config_domain_device_get_type; -- 1.7.7.5 -- libvir-list mailing list libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list