|
Packit |
a07778 |
/*
|
|
Packit |
a07778 |
* libvirt-gconfig-domain-os.c: libvirt domain OS configuration
|
|
Packit |
a07778 |
*
|
|
Packit |
a07778 |
* Copyright (C) 2011 Red Hat, Inc.
|
|
Packit |
a07778 |
*
|
|
Packit |
a07778 |
* This library is free software; you can redistribute it and/or
|
|
Packit |
a07778 |
* modify it under the terms of the GNU Lesser General Public
|
|
Packit |
a07778 |
* License as published by the Free Software Foundation; either
|
|
Packit |
a07778 |
* version 2.1 of the License, or (at your option) any later version.
|
|
Packit |
a07778 |
*
|
|
Packit |
a07778 |
* This library is distributed in the hope that it will be useful,
|
|
Packit |
a07778 |
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
Packit |
a07778 |
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
Packit |
a07778 |
* Lesser General Public License for more details.
|
|
Packit |
a07778 |
*
|
|
Packit |
a07778 |
* You should have received a copy of the GNU Lesser General Public
|
|
Packit |
a07778 |
* License along with this library. If not, see
|
|
Packit |
a07778 |
* <http://www.gnu.org/licenses/>.
|
|
Packit |
a07778 |
*
|
|
Packit |
a07778 |
* Author: Christophe Fergeau <cfergeau@gmail.com>
|
|
Packit |
a07778 |
*/
|
|
Packit |
a07778 |
|
|
Packit |
a07778 |
#include <config.h>
|
|
Packit |
a07778 |
|
|
Packit |
a07778 |
#include "libvirt-gconfig/libvirt-gconfig.h"
|
|
Packit |
a07778 |
#include "libvirt-gconfig/libvirt-gconfig-private.h"
|
|
Packit |
a07778 |
|
|
Packit |
a07778 |
#define GVIR_CONFIG_DOMAIN_OS_GET_PRIVATE(obj) \
|
|
Packit |
a07778 |
(G_TYPE_INSTANCE_GET_PRIVATE((obj), GVIR_CONFIG_TYPE_DOMAIN_OS, GVirConfigDomainOsPrivate))
|
|
Packit |
a07778 |
|
|
Packit |
a07778 |
struct _GVirConfigDomainOsPrivate
|
|
Packit |
a07778 |
{
|
|
Packit |
a07778 |
gboolean unused;
|
|
Packit |
a07778 |
};
|
|
Packit |
a07778 |
|
|
Packit |
a07778 |
G_DEFINE_TYPE_WITH_PRIVATE(GVirConfigDomainOs, gvir_config_domain_os, GVIR_CONFIG_TYPE_OBJECT);
|
|
Packit |
a07778 |
|
|
Packit |
a07778 |
|
|
Packit |
a07778 |
static void gvir_config_domain_os_class_init(GVirConfigDomainOsClass *klass G_GNUC_UNUSED)
|
|
Packit |
a07778 |
{
|
|
Packit |
a07778 |
}
|
|
Packit |
a07778 |
|
|
Packit |
a07778 |
|
|
Packit |
a07778 |
static void gvir_config_domain_os_init(GVirConfigDomainOs *os)
|
|
Packit |
a07778 |
{
|
|
Packit |
a07778 |
os->priv = GVIR_CONFIG_DOMAIN_OS_GET_PRIVATE(os);
|
|
Packit |
a07778 |
}
|
|
Packit |
a07778 |
|
|
Packit |
a07778 |
|
|
Packit |
a07778 |
GVirConfigDomainOs *gvir_config_domain_os_new(void)
|
|
Packit |
a07778 |
{
|
|
Packit |
a07778 |
GVirConfigObject *object;
|
|
Packit |
a07778 |
|
|
Packit |
a07778 |
object = gvir_config_object_new(GVIR_CONFIG_TYPE_DOMAIN_OS, "os", NULL);
|
|
Packit |
a07778 |
return GVIR_CONFIG_DOMAIN_OS(object);
|
|
Packit |
a07778 |
}
|
|
Packit |
a07778 |
|
|
Packit |
a07778 |
GVirConfigDomainOs *gvir_config_domain_os_new_from_xml(const gchar *xml, GError **error)
|
|
Packit |
a07778 |
{
|
|
Packit |
a07778 |
GVirConfigObject *object;
|
|
Packit |
a07778 |
|
|
Packit |
a07778 |
object = gvir_config_object_new_from_xml(GVIR_CONFIG_TYPE_DOMAIN_OS, "os",
|
|
Packit |
a07778 |
NULL, xml, error);
|
|
Packit |
a07778 |
return GVIR_CONFIG_DOMAIN_OS(object);
|
|
Packit |
a07778 |
}
|
|
Packit |
a07778 |
|
|
Packit |
a07778 |
void gvir_config_domain_os_set_os_type(GVirConfigDomainOs *os,
|
|
Packit |
a07778 |
GVirConfigDomainOsType type)
|
|
Packit |
a07778 |
{
|
|
Packit |
a07778 |
const char *type_str;
|
|
Packit |
a07778 |
|
|
Packit |
a07778 |
g_return_if_fail(GVIR_CONFIG_IS_DOMAIN_OS(os));
|
|
Packit |
a07778 |
|
|
Packit |
a07778 |
type_str = gvir_config_genum_get_nick(GVIR_CONFIG_TYPE_DOMAIN_OS_TYPE, type);
|
|
Packit |
a07778 |
g_return_if_fail(type_str != NULL);
|
|
Packit |
a07778 |
|
|
Packit |
a07778 |
gvir_config_object_set_node_content(GVIR_CONFIG_OBJECT(os),
|
|
Packit |
a07778 |
"type", type_str);
|
|
Packit |
a07778 |
}
|
|
Packit |
a07778 |
|
|
Packit |
a07778 |
GVirConfigDomainOsType gvir_config_domain_os_get_os_type(GVirConfigDomainOs *os)
|
|
Packit |
a07778 |
{
|
|
Packit |
a07778 |
g_return_val_if_fail(GVIR_CONFIG_IS_DOMAIN_OS(os),
|
|
Packit |
a07778 |
GVIR_CONFIG_DOMAIN_OS_TYPE_HVM);
|
|
Packit |
a07778 |
|
|
Packit |
a07778 |
return gvir_config_object_get_node_content_genum
|
|
Packit |
a07778 |
(GVIR_CONFIG_OBJECT(os),
|
|
Packit |
a07778 |
"type",
|
|
Packit |
a07778 |
GVIR_CONFIG_TYPE_DOMAIN_OS_TYPE,
|
|
Packit |
a07778 |
GVIR_CONFIG_DOMAIN_OS_TYPE_HVM);
|
|
Packit |
a07778 |
}
|
|
Packit |
a07778 |
|
|
Packit |
a07778 |
/**
|
|
Packit |
a07778 |
* gvir_config_domain_os_set_kernel:
|
|
Packit |
a07778 |
* @os: a #GVirConfigDomainOs
|
|
Packit |
a07778 |
* @kernel: (allow-none): The kernel path
|
|
Packit |
a07778 |
*/
|
|
Packit |
a07778 |
void gvir_config_domain_os_set_kernel(GVirConfigDomainOs *os,
|
|
Packit |
a07778 |
const char * kernel)
|
|
Packit |
a07778 |
{
|
|
Packit |
a07778 |
gvir_config_object_set_node_content(GVIR_CONFIG_OBJECT(os),
|
|
Packit |
a07778 |
"kernel", kernel);
|
|
Packit |
a07778 |
}
|
|
Packit |
a07778 |
|
|
Packit |
a07778 |
/**
|
|
Packit |
a07778 |
* gvir_config_domain_os_set_ramdisk:
|
|
Packit |
a07778 |
* @os: a #GVirConfigDomainOs
|
|
Packit |
a07778 |
* @ramdisk: (allow-none): The ramdisk path
|
|
Packit |
a07778 |
*/
|
|
Packit |
a07778 |
void gvir_config_domain_os_set_ramdisk(GVirConfigDomainOs *os,
|
|
Packit |
a07778 |
const char * ramdisk)
|
|
Packit |
a07778 |
{
|
|
Packit |
a07778 |
gvir_config_object_set_node_content(GVIR_CONFIG_OBJECT(os),
|
|
Packit |
a07778 |
"initrd", ramdisk);
|
|
Packit |
a07778 |
}
|
|
Packit |
a07778 |
|
|
Packit |
a07778 |
/**
|
|
Packit |
a07778 |
* gvir_config_domain_os_set_cmdline:
|
|
Packit |
a07778 |
* @os: a #GVirConfigDomainOs
|
|
Packit |
a07778 |
* @cmdline: (allow-none): The direct boot commandline
|
|
Packit |
a07778 |
*/
|
|
Packit |
a07778 |
void gvir_config_domain_os_set_cmdline(GVirConfigDomainOs *os,
|
|
Packit |
a07778 |
const char * cmdline)
|
|
Packit |
a07778 |
{
|
|
Packit |
a07778 |
gvir_config_object_set_node_content(GVIR_CONFIG_OBJECT(os),
|
|
Packit |
a07778 |
"cmdline", cmdline);
|
|
Packit |
a07778 |
}
|
|
Packit |
a07778 |
|
|
Packit |
a07778 |
/**
|
|
Packit |
a07778 |
* gvir_config_domain_os_set_init:
|
|
Packit |
a07778 |
* @os: a #GVirConfigDomainOs
|
|
Packit |
a07778 |
* @init: (allow-none):
|
|
Packit |
a07778 |
*/
|
|
Packit |
a07778 |
void gvir_config_domain_os_set_init(GVirConfigDomainOs *os,
|
|
Packit |
a07778 |
const char * init)
|
|
Packit |
a07778 |
{
|
|
Packit |
a07778 |
gvir_config_object_set_node_content(GVIR_CONFIG_OBJECT(os),
|
|
Packit |
a07778 |
"init", init);
|
|
Packit |
a07778 |
}
|
|
Packit |
a07778 |
|
|
Packit |
a07778 |
/**
|
|
Packit |
a07778 |
* gvir_config_domain_os_set_loader:
|
|
Packit |
a07778 |
* @os: a #GVirConfigDomainOs
|
|
Packit |
a07778 |
* @loader: (allow-none):
|
|
Packit |
a07778 |
*/
|
|
Packit |
a07778 |
void gvir_config_domain_os_set_loader(GVirConfigDomainOs *os,
|
|
Packit |
a07778 |
const char * loader)
|
|
Packit |
a07778 |
{
|
|
Packit |
a07778 |
gvir_config_object_set_node_content(GVIR_CONFIG_OBJECT(os),
|
|
Packit |
a07778 |
"loader", loader);
|
|
Packit |
a07778 |
}
|
|
Packit |
a07778 |
|
|
Packit |
a07778 |
void gvir_config_domain_os_enable_boot_menu(GVirConfigDomainOs *os,
|
|
Packit |
a07778 |
gboolean enable)
|
|
Packit |
a07778 |
{
|
|
Packit |
a07778 |
GVirConfigObject *node;
|
|
Packit |
a07778 |
|
|
Packit |
a07778 |
g_return_if_fail(GVIR_CONFIG_IS_DOMAIN_OS(os));
|
|
Packit |
a07778 |
|
|
Packit |
a07778 |
node = gvir_config_object_replace_child(GVIR_CONFIG_OBJECT(os), "bootmenu");
|
|
Packit |
a07778 |
g_return_if_fail(GVIR_CONFIG_IS_OBJECT(node));
|
|
Packit |
a07778 |
gvir_config_object_set_attribute_with_type(node, "enable",
|
|
Packit |
a07778 |
G_TYPE_BOOLEAN, enable,
|
|
Packit |
a07778 |
NULL);
|
|
Packit |
a07778 |
g_object_unref(G_OBJECT(node));
|
|
Packit |
a07778 |
}
|
|
Packit |
a07778 |
|
|
Packit |
a07778 |
void gvir_config_domain_os_bios_enable_serial(GVirConfigDomainOs *os,
|
|
Packit |
a07778 |
gboolean enable)
|
|
Packit |
a07778 |
{
|
|
Packit |
a07778 |
GVirConfigObject *node;
|
|
Packit |
a07778 |
|
|
Packit |
a07778 |
g_return_if_fail(GVIR_CONFIG_IS_DOMAIN_OS(os));
|
|
Packit |
a07778 |
|
|
Packit |
a07778 |
node = gvir_config_object_replace_child(GVIR_CONFIG_OBJECT(os), "bios");
|
|
Packit |
a07778 |
g_return_if_fail(GVIR_CONFIG_IS_OBJECT(node));
|
|
Packit |
a07778 |
gvir_config_object_set_attribute_with_type(node, "useserial",
|
|
Packit |
a07778 |
G_TYPE_BOOLEAN, enable,
|
|
Packit |
a07778 |
NULL);
|
|
Packit |
a07778 |
g_object_unref(G_OBJECT(node));
|
|
Packit |
a07778 |
}
|
|
Packit |
a07778 |
|
|
Packit |
a07778 |
void gvir_config_domain_os_set_smbios_mode(GVirConfigDomainOs *os,
|
|
Packit |
a07778 |
GVirConfigDomainOsSmBiosMode mode)
|
|
Packit |
a07778 |
{
|
|
Packit |
a07778 |
GVirConfigObject *node;
|
|
Packit |
a07778 |
|
|
Packit |
a07778 |
g_return_if_fail(GVIR_CONFIG_IS_DOMAIN_OS(os));
|
|
Packit |
a07778 |
|
|
Packit |
a07778 |
node = gvir_config_object_replace_child(GVIR_CONFIG_OBJECT(os), "smbios");
|
|
Packit |
a07778 |
g_return_if_fail(GVIR_CONFIG_IS_OBJECT(node));
|
|
Packit |
a07778 |
gvir_config_object_set_attribute_with_type(node, "mode",
|
|
Packit |
a07778 |
GVIR_CONFIG_TYPE_DOMAIN_OS_SM_BIOS_MODE,
|
|
Packit |
a07778 |
mode, NULL);
|
|
Packit |
a07778 |
g_object_unref(G_OBJECT(node));
|
|
Packit |
a07778 |
}
|
|
Packit |
a07778 |
|
|
Packit |
a07778 |
/**
|
|
Packit |
a07778 |
* gvir_config_domain_os_set_boot_devices:
|
|
Packit |
a07778 |
* @os: a #GVirConfigDomainOs
|
|
Packit |
a07778 |
* @boot_devices: (in) (element-type LibvirtGConfig.DomainOsBootDevice):
|
|
Packit |
a07778 |
*/
|
|
Packit |
a07778 |
void gvir_config_domain_os_set_boot_devices(GVirConfigDomainOs *os, GList *boot_devices)
|
|
Packit |
a07778 |
{
|
|
Packit |
a07778 |
GList *it;
|
|
Packit |
a07778 |
xmlNodePtr os_node;
|
|
Packit |
a07778 |
xmlNodePtr node;
|
|
Packit |
a07778 |
|
|
Packit |
a07778 |
g_return_if_fail(GVIR_CONFIG_IS_DOMAIN_OS(os));
|
|
Packit |
a07778 |
|
|
Packit |
a07778 |
os_node = gvir_config_object_get_xml_node(GVIR_CONFIG_OBJECT(os));
|
|
Packit |
a07778 |
g_return_if_fail(os_node != NULL);
|
|
Packit |
a07778 |
|
|
Packit |
a07778 |
node = os_node->children;
|
|
Packit |
a07778 |
while (node != NULL) {
|
|
Packit |
a07778 |
xmlNodePtr next_node;
|
|
Packit |
a07778 |
next_node = node->next;
|
|
Packit |
a07778 |
if (g_strcmp0("boot", (char *)node->name) == 0) {
|
|
Packit |
a07778 |
xmlUnlinkNode(node);
|
|
Packit |
a07778 |
xmlFreeNode(node);
|
|
Packit |
a07778 |
}
|
|
Packit |
a07778 |
node = next_node;
|
|
Packit |
a07778 |
}
|
|
Packit |
a07778 |
|
|
Packit |
a07778 |
for (it = boot_devices; it != NULL; it = it->next) {
|
|
Packit |
a07778 |
const char *dev;
|
|
Packit |
a07778 |
|
|
Packit |
a07778 |
dev = gvir_config_genum_get_nick(GVIR_CONFIG_TYPE_DOMAIN_OS_BOOT_DEVICE,
|
|
Packit |
a07778 |
GPOINTER_TO_INT(it->data));
|
|
Packit |
a07778 |
g_warn_if_fail(dev != NULL);
|
|
Packit |
a07778 |
if (dev != NULL) {
|
|
Packit |
a07778 |
node = xmlNewDocNode(NULL, NULL, (xmlChar*)"boot", NULL);
|
|
Packit |
a07778 |
xmlNewProp(node, (xmlChar*)"dev", (xmlChar*)dev);
|
|
Packit |
a07778 |
xmlAddChild(os_node, node);
|
|
Packit |
a07778 |
}
|
|
Packit |
a07778 |
}
|
|
Packit |
a07778 |
}
|
|
Packit |
a07778 |
|
|
Packit |
a07778 |
static gboolean add_boot_device(xmlNodePtr node, gpointer opaque)
|
|
Packit |
a07778 |
{
|
|
Packit |
a07778 |
GList **devices = (GList **)opaque;
|
|
Packit |
a07778 |
const gchar *value;
|
|
Packit |
a07778 |
|
|
Packit |
a07778 |
if (g_strcmp0((const gchar *)node->name, "boot") != 0)
|
|
Packit |
a07778 |
return TRUE;
|
|
Packit |
a07778 |
|
|
Packit |
a07778 |
value = gvir_config_xml_get_attribute_content(node, "dev");
|
|
Packit |
a07778 |
if (value != NULL) {
|
|
Packit |
a07778 |
GVirConfigDomainOsBootDevice device;
|
|
Packit |
a07778 |
|
|
Packit |
a07778 |
device = gvir_config_genum_get_value
|
|
Packit |
a07778 |
(GVIR_CONFIG_TYPE_DOMAIN_OS_BOOT_DEVICE,
|
|
Packit |
a07778 |
value,
|
|
Packit |
a07778 |
GVIR_CONFIG_DOMAIN_OS_BOOT_DEVICE_HD);
|
|
Packit |
a07778 |
*devices = g_list_append(*devices, GINT_TO_POINTER(device));
|
|
Packit |
a07778 |
} else
|
|
Packit |
a07778 |
g_debug("Failed to parse attribute 'dev' of node 'boot'");
|
|
Packit |
a07778 |
|
|
Packit |
a07778 |
return TRUE;
|
|
Packit |
a07778 |
}
|
|
Packit |
a07778 |
|
|
Packit |
a07778 |
/**
|
|
Packit |
a07778 |
* gvir_config_domain_os_get_boot_devices:
|
|
Packit |
a07778 |
* @os: a #GVirConfigDomainOs
|
|
Packit |
a07778 |
*
|
|
Packit |
a07778 |
* Gets the list of devices attached to @os. The returned list should be
|
|
Packit |
a07778 |
* freed with g_list_free().
|
|
Packit |
a07778 |
*
|
|
Packit |
a07778 |
* Returns: (element-type LibvirtGConfig.DomainOsBootDevice) (transfer container):
|
|
Packit |
a07778 |
* a newly allocated #GList of #GVirConfigDomainOsBootDevice.
|
|
Packit |
a07778 |
*/
|
|
Packit |
a07778 |
GList *gvir_config_domain_os_get_boot_devices(GVirConfigDomainOs *os)
|
|
Packit |
a07778 |
{
|
|
Packit |
a07778 |
GList *devices = NULL;
|
|
Packit |
a07778 |
|
|
Packit |
a07778 |
g_return_val_if_fail(GVIR_CONFIG_IS_DOMAIN_OS(os), NULL);
|
|
Packit |
a07778 |
|
|
Packit |
a07778 |
gvir_config_object_foreach_child(GVIR_CONFIG_OBJECT(os),
|
|
Packit |
a07778 |
NULL,
|
|
Packit |
a07778 |
add_boot_device,
|
|
Packit |
a07778 |
&devices);
|
|
Packit |
a07778 |
|
|
Packit |
a07778 |
return devices;
|
|
Packit |
a07778 |
}
|
|
Packit |
a07778 |
|
|
Packit |
a07778 |
const char *gvir_config_domain_os_get_arch(GVirConfigDomainOs *os)
|
|
Packit |
a07778 |
{
|
|
Packit |
a07778 |
return gvir_config_object_get_attribute(GVIR_CONFIG_OBJECT(os),
|
|
Packit |
a07778 |
"type",
|
|
Packit |
a07778 |
"arch");
|
|
Packit |
a07778 |
}
|
|
Packit |
a07778 |
|
|
Packit |
a07778 |
void gvir_config_domain_os_set_arch(GVirConfigDomainOs *os, const char *arch)
|
|
Packit |
a07778 |
{
|
|
Packit |
a07778 |
xmlNodePtr os_node;
|
|
Packit |
a07778 |
xmlNodePtr os_type_node;
|
|
Packit |
a07778 |
|
|
Packit |
a07778 |
g_return_if_fail(GVIR_CONFIG_IS_DOMAIN_OS(os));
|
|
Packit |
a07778 |
|
|
Packit |
a07778 |
os_node = gvir_config_object_get_xml_node(GVIR_CONFIG_OBJECT(os));
|
|
Packit |
a07778 |
g_return_if_fail(os_node != NULL);
|
|
Packit |
a07778 |
|
|
Packit |
a07778 |
os_type_node = gvir_config_xml_get_element(os_node, "type", NULL);
|
|
Packit |
a07778 |
g_return_if_fail(os_type_node != NULL);
|
|
Packit |
a07778 |
|
|
Packit |
a07778 |
xmlNewProp(os_type_node, (xmlChar*)"arch", (xmlChar*)arch);
|
|
Packit |
a07778 |
}
|
|
Packit |
a07778 |
|
|
Packit |
a07778 |
const char *gvir_config_domain_os_get_machine(GVirConfigDomainOs *os)
|
|
Packit |
a07778 |
{
|
|
Packit |
a07778 |
return gvir_config_object_get_attribute(GVIR_CONFIG_OBJECT(os),
|
|
Packit |
a07778 |
"type",
|
|
Packit |
a07778 |
"machine");
|
|
Packit |
a07778 |
}
|
|
Packit |
a07778 |
|
|
Packit |
a07778 |
void gvir_config_domain_os_set_machine(GVirConfigDomainOs *os, const char *machine)
|
|
Packit |
a07778 |
{
|
|
Packit |
a07778 |
xmlNodePtr os_node;
|
|
Packit |
a07778 |
xmlNodePtr os_type_node;
|
|
Packit |
a07778 |
|
|
Packit |
a07778 |
g_return_if_fail(GVIR_CONFIG_IS_DOMAIN_OS(os));
|
|
Packit |
a07778 |
|
|
Packit |
a07778 |
os_node = gvir_config_object_get_xml_node(GVIR_CONFIG_OBJECT(os));
|
|
Packit |
a07778 |
g_return_if_fail(os_node != NULL);
|
|
Packit |
a07778 |
|
|
Packit |
a07778 |
os_type_node = gvir_config_xml_get_element(os_node, "type", NULL);
|
|
Packit |
a07778 |
g_return_if_fail(os_type_node != NULL);
|
|
Packit |
a07778 |
|
|
Packit |
a07778 |
xmlNewProp(os_type_node, (xmlChar*)"machine", (xmlChar*)machine);
|
|
Packit |
a07778 |
}
|
|
Packit |
a07778 |
|
|
Packit |
a07778 |
void gvir_config_domain_os_set_firmware(GVirConfigDomainOs *os, GVirConfigDomainOsFirmware firmware)
|
|
Packit |
a07778 |
{
|
|
Packit |
a07778 |
xmlNodePtr node;
|
|
Packit |
a07778 |
const gchar *firmware_str;
|
|
Packit |
a07778 |
|
|
Packit |
a07778 |
g_return_if_fail(GVIR_CONFIG_IS_DOMAIN_OS(os));
|
|
Packit |
a07778 |
|
|
Packit |
a07778 |
node = gvir_config_object_get_xml_node(GVIR_CONFIG_OBJECT(os));
|
|
Packit |
a07778 |
g_return_if_fail(node != NULL);
|
|
Packit |
a07778 |
|
|
Packit |
a07778 |
firmware_str = gvir_config_genum_get_nick(GVIR_CONFIG_TYPE_DOMAIN_OS_FIRMWARE,
|
|
Packit |
a07778 |
firmware);
|
|
Packit |
a07778 |
g_return_if_fail(firmware_str != NULL);
|
|
Packit |
a07778 |
|
|
Packit |
a07778 |
xmlNewProp(node, (xmlChar*)"firmware", (xmlChar*)firmware_str);
|
|
Packit |
a07778 |
}
|
|
Packit |
a07778 |
|
|
Packit |
a07778 |
GVirConfigDomainOsFirmware gvir_config_domain_os_get_firmware(GVirConfigDomainOs *os)
|
|
Packit |
a07778 |
{
|
|
Packit |
a07778 |
g_return_val_if_fail(GVIR_CONFIG_IS_DOMAIN_OS(os),
|
|
Packit |
a07778 |
GVIR_CONFIG_DOMAIN_OS_FIRMWARE_BIOS);
|
|
Packit |
a07778 |
|
|
Packit |
a07778 |
return gvir_config_object_get_attribute_genum
|
|
Packit |
a07778 |
(GVIR_CONFIG_OBJECT(os),
|
|
Packit |
a07778 |
NULL, "firmware",
|
|
Packit |
a07778 |
GVIR_CONFIG_TYPE_DOMAIN_OS_FIRMWARE,
|
|
Packit |
a07778 |
GVIR_CONFIG_DOMAIN_OS_FIRMWARE_BIOS);
|
|
Packit |
a07778 |
}
|