From nobody Mon Apr 29 02:13:31 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of redhat.com designates 209.132.183.28 as permitted sender) client-ip=209.132.183.28; envelope-from=libvir-list-bounces@redhat.com; helo=mx1.redhat.com; Authentication-Results: mx.zohomail.com; spf=pass (zoho.com: domain of redhat.com designates 209.132.183.28 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com; dmarc=pass(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1563538561; cv=none; d=zoho.com; s=zohoarc; b=g+whkMaX5ZEGO2UWmXwsKicSxysa/1eAWyS+6zMBwRzR0HI5llus4CHQMyVuqN03ehy/C9ZRn02pQz+dXES9zsM/x295arvwhAhlWYpmGBb4MYFAkZXZfe19BNNzaFZUh17vb67N0A1wGSCRQr0lC9xPNex6K6v5JKCk5cKLaP8= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1563538561; h=Content-Type:Content-Transfer-Encoding:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To:ARC-Authentication-Results; bh=7uCLzEG4td9qV0dv6EdEVMcxQqqTCOCn4v6bKvyYHBM=; b=cue8G1/Zfi9hIq6cieXA/yMyjFPQoMvUy0TobM7AHWdJC6uNSfvaGKNbrlm4leLa6ukgn3KvBJ40tZwSNQ+vqkGw+v8D2vyLbzmVb2FN3lYFdme+4AdA1uYy1G1hz5diGX1P4c7XxwxQhGyV1C8aoQbOd4IA6jELfk9SpWPM2hI= ARC-Authentication-Results: i=1; mx.zoho.com; spf=pass (zoho.com: domain of redhat.com designates 209.132.183.28 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com; dmarc=pass header.from= (p=none dis=none) header.from= Return-Path: Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by mx.zohomail.com with SMTPS id 15635385616121021.7954758983391; Fri, 19 Jul 2019 05:16:01 -0700 (PDT) Received: from smtp.corp.redhat.com (int-mx06.intmail.prod.int.phx2.redhat.com [10.5.11.16]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id AC499C070E30; Fri, 19 Jul 2019 12:15:59 +0000 (UTC) Received: from colo-mx.corp.redhat.com (colo-mx01.intmail.prod.int.phx2.redhat.com [10.5.11.20]) by smtp.corp.redhat.com (Postfix) with ESMTPS id 80BB95C1A1; Fri, 19 Jul 2019 12:15:59 +0000 (UTC) Received: from lists01.pubmisc.prod.ext.phx2.redhat.com (lists01.pubmisc.prod.ext.phx2.redhat.com [10.5.19.33]) by colo-mx.corp.redhat.com (Postfix) with ESMTP id 1EA891800207; Fri, 19 Jul 2019 12:15:59 +0000 (UTC) Received: from smtp.corp.redhat.com (int-mx03.intmail.prod.int.phx2.redhat.com [10.5.11.13]) by lists01.pubmisc.prod.ext.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id x6JCFuEI020020 for ; Fri, 19 Jul 2019 08:15:56 -0400 Received: by smtp.corp.redhat.com (Postfix) id 74D9B646AB; Fri, 19 Jul 2019 12:15:56 +0000 (UTC) Received: from icr.brq.redhat.com (unknown [10.43.2.100]) by smtp.corp.redhat.com (Postfix) with ESMTP id F39C4646B6 for ; Fri, 19 Jul 2019 12:15:55 +0000 (UTC) From: =?UTF-8?q?J=C3=A1n=20Tomko?= To: libvir-list@redhat.com Date: Fri, 19 Jul 2019 14:15:43 +0200 Message-Id: <7e0d474bae17ba085533d161df44e44ce0d7f18f.1563538286.git.jtomko@redhat.com> In-Reply-To: References: MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.79 on 10.5.11.13 X-loop: libvir-list@redhat.com Subject: [libvirt] [PATCH 1/6] conf: move virNetworkPortDefPtr declaration to virconftypes.h X-BeenThere: libvir-list@redhat.com X-Mailman-Version: 2.1.12 Precedence: junk List-Id: Development discussions about the libvirt library & tools List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Sender: libvir-list-bounces@redhat.com Errors-To: libvir-list-bounces@redhat.com X-Scanned-By: MIMEDefang 2.79 on 10.5.11.16 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.31]); Fri, 19 Jul 2019 12:16:00 +0000 (UTC) We have a file specifically for preventing circular inclusion. Move the virNetworkPortDefPtr typedef there for use by domain_conf.h. Signed-off-by: J=C3=A1n Tomko --- src/conf/domain_conf.h | 5 ----- src/conf/virconftypes.h | 3 +++ src/conf/virnetworkportdef.h | 4 +--- 3 files changed, 4 insertions(+), 8 deletions(-) diff --git a/src/conf/domain_conf.h b/src/conf/domain_conf.h index 48b0af4b04..7daab395aa 100644 --- a/src/conf/domain_conf.h +++ b/src/conf/domain_conf.h @@ -3571,11 +3571,6 @@ bool virDomainDefLifecycleActionAllowed(virDomainLifecycle type, virDomainLifecycleAction action); =20 -// Forward decl to avoid pulling in virnetworkportdef.h because -// that pulls in virhostdev.h which pulls in domain_conf.h (evil) -typedef struct _virNetworkPortDef virNetworkPortDef; -typedef virNetworkPortDef *virNetworkPortDefPtr; - virNetworkPortDefPtr virDomainNetDefToNetworkPort(virDomainDefPtr dom, virDomainNetDefPtr iface); diff --git a/src/conf/virconftypes.h b/src/conf/virconftypes.h index b8f553f7fb..fbd1de4100 100644 --- a/src/conf/virconftypes.h +++ b/src/conf/virconftypes.h @@ -344,3 +344,6 @@ typedef virDomainXMLPrivateDataCallbacks *virDomainXMLP= rivateDataCallbacksPtr; =20 typedef struct _virDomainXenbusControllerOpts virDomainXenbusControllerOpt= s; typedef virDomainXenbusControllerOpts *virDomainXenbusControllerOptsPtr; + +typedef struct _virNetworkPortDef virNetworkPortDef; +typedef virNetworkPortDef *virNetworkPortDefPtr; diff --git a/src/conf/virnetworkportdef.h b/src/conf/virnetworkportdef.h index 3d42b9b6a2..33ee628aa7 100644 --- a/src/conf/virnetworkportdef.h +++ b/src/conf/virnetworkportdef.h @@ -22,6 +22,7 @@ #pragma once =20 #include "internal.h" +#include "virconftypes.h" #include "viruuid.h" #include "virnetdevvlan.h" #include "virnetdevvportprofile.h" @@ -32,9 +33,6 @@ #include "netdev_bandwidth_conf.h" #include "netdev_vlan_conf.h" =20 -typedef struct _virNetworkPortDef virNetworkPortDef; -typedef virNetworkPortDef *virNetworkPortDefPtr; - typedef enum { VIR_NETWORK_PORT_PLUG_TYPE_NONE, VIR_NETWORK_PORT_PLUG_TYPE_NETWORK, --=20 2.19.2 -- libvir-list mailing list libvir-list@redhat.com https://www.redhat.com/mailman/listinfo/libvir-list From nobody Mon Apr 29 02:13:31 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of redhat.com designates 209.132.183.28 as permitted sender) client-ip=209.132.183.28; envelope-from=libvir-list-bounces@redhat.com; helo=mx1.redhat.com; Authentication-Results: mx.zohomail.com; spf=pass (zoho.com: domain of redhat.com designates 209.132.183.28 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com; dmarc=pass(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1563538575; cv=none; d=zoho.com; s=zohoarc; b=IgdwmkoJ7VHcElXowK4jjnEygJOadQSjzo6dvyZnVGgDEa6/92ytQyHGblZIXDoWevmnSrnxp4BuJmQwTMprTF0pI4/H6Ni4nzTfJ5H94dczfmwDCcJbD1wH9LKcCYYhgIG8/HV0QM9GKyoNUx/gURmW4H1IAJTI2DTGgZQb+U4= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1563538575; h=Content-Type:Content-Transfer-Encoding:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To:ARC-Authentication-Results; bh=lFNhuYIZyg/0z0uBCsUzdCharE3kj9tVRhz3H7PRz6Q=; b=culYwjq4in4jHRvB4kQ5z1LlUaCxO+GFGFs88YhxZ3b+d+OLKthuKvZBPtgOtuWOY15nXTnvnINaIh4HHSSJH+/ey6nRD9jwgzXE09LnihIj5khtRPr3pEgKKdrvG9u6nNoP8LCFsCeTs9f8u+/LbTTYFS8yw7coogcBp21zqEU= ARC-Authentication-Results: i=1; mx.zoho.com; spf=pass (zoho.com: domain of redhat.com designates 209.132.183.28 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com; dmarc=pass header.from= (p=none dis=none) header.from= Return-Path: Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by mx.zohomail.com with SMTPS id 1563538575372165.95078472962587; Fri, 19 Jul 2019 05:16:15 -0700 (PDT) Received: from smtp.corp.redhat.com (int-mx08.intmail.prod.int.phx2.redhat.com [10.5.11.23]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id 7878230860D5; Fri, 19 Jul 2019 12:16:13 +0000 (UTC) Received: from colo-mx.corp.redhat.com (colo-mx02.intmail.prod.int.phx2.redhat.com [10.5.11.21]) by smtp.corp.redhat.com (Postfix) with ESMTPS id 4B26D1A8EA; Fri, 19 Jul 2019 12:16:13 +0000 (UTC) Received: from lists01.pubmisc.prod.ext.phx2.redhat.com (lists01.pubmisc.prod.ext.phx2.redhat.com [10.5.19.33]) by colo-mx.corp.redhat.com (Postfix) with ESMTP id 05437C844; Fri, 19 Jul 2019 12:16:13 +0000 (UTC) Received: from smtp.corp.redhat.com (int-mx03.intmail.prod.int.phx2.redhat.com [10.5.11.13]) by lists01.pubmisc.prod.ext.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id x6JCFva4020028 for ; Fri, 19 Jul 2019 08:15:57 -0400 Received: by smtp.corp.redhat.com (Postfix) id 41F34646B6; Fri, 19 Jul 2019 12:15:57 +0000 (UTC) Received: from icr.brq.redhat.com (unknown [10.43.2.100]) by smtp.corp.redhat.com (Postfix) with ESMTP id C0746646B8 for ; Fri, 19 Jul 2019 12:15:56 +0000 (UTC) From: =?UTF-8?q?J=C3=A1n=20Tomko?= To: libvir-list@redhat.com Date: Fri, 19 Jul 2019 14:15:44 +0200 Message-Id: <7e19a64275d9b0c1bd2eba6c1cfb3300cf71655a.1563538286.git.jtomko@redhat.com> In-Reply-To: References: MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.79 on 10.5.11.13 X-loop: libvir-list@redhat.com Subject: [libvirt] [PATCH 2/6] virsh: clean up includes X-BeenThere: libvir-list@redhat.com X-Mailman-Version: 2.1.12 Precedence: junk List-Id: Development discussions about the libvirt library & tools List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Sender: libvir-list-bounces@redhat.com Errors-To: libvir-list-bounces@redhat.com X-Scanned-By: MIMEDefang 2.84 on 10.5.11.23 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.44]); Fri, 19 Jul 2019 12:16:14 +0000 (UTC) We don't need domain_conf or libvirt-{qemu,lxc} in these generic files. Signed-off-by: J=C3=A1n Tomko --- tools/virsh.c | 3 --- tools/vsh.c | 3 --- 2 files changed, 6 deletions(-) diff --git a/tools/virsh.c b/tools/virsh.c index b41304a888..c758e38cbd 100644 --- a/tools/virsh.c +++ b/tools/virsh.c @@ -40,12 +40,9 @@ #include "virerror.h" #include "virbuffer.h" #include "viralloc.h" -#include -#include #include "virfile.h" #include "virthread.h" #include "vircommand.h" -#include "conf/domain_conf.h" #include "virtypedparam.h" #include "virstring.h" #include "virgettext.h" diff --git a/tools/vsh.c b/tools/vsh.c index f2486498c9..5de082cb34 100644 --- a/tools/vsh.c +++ b/tools/vsh.c @@ -41,12 +41,9 @@ #include "virerror.h" #include "virbuffer.h" #include "viralloc.h" -#include -#include #include "virfile.h" #include "virthread.h" #include "vircommand.h" -#include "conf/domain_conf.h" #include "virtypedparam.h" #include "virstring.h" =20 --=20 2.19.2 -- libvir-list mailing list libvir-list@redhat.com https://www.redhat.com/mailman/listinfo/libvir-list From nobody Mon Apr 29 02:13:31 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of redhat.com designates 209.132.183.28 as permitted sender) client-ip=209.132.183.28; envelope-from=libvir-list-bounces@redhat.com; helo=mx1.redhat.com; Authentication-Results: mx.zohomail.com; spf=pass (zoho.com: domain of redhat.com designates 209.132.183.28 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com; dmarc=pass(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1563538579; cv=none; d=zoho.com; s=zohoarc; b=BeM720S4sHPTp5PZZlmS7kQdZCYoEH4LJrJUlbZx+7aGAe/cFn0grFfFOZbodVt8zUOUrFMOsZ/8NWaQxAyNbYDI0Z4Q1ievRp95p5HZ5oXIqqcQeru9Hr4euVAnTy9oaLWOhB5atu4/0KGeGjGxiPnmRalWdpvsxGpXQeVNiNE= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1563538579; h=Content-Type:Content-Transfer-Encoding:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To:ARC-Authentication-Results; bh=+0fb+E6E2VnT3myODuHLWCVbkuOz1riETR2Oehhop+A=; b=j2fU/zBmw8ZPPwczKbZounjWuQFX6QyLSaQW5Ah4tstYCcqrbgrMbEUGmDO8czD62WloyszjkO/ji0+Bvft7ZFp/x/1NCzpJ2oZEwhi2CcUz6xjfdd7kxXcluwAj1dasnL0dKynXO6OeV2wJIL9w5iRwm53WTMvGeDjB8CWWnnU= ARC-Authentication-Results: i=1; mx.zoho.com; spf=pass (zoho.com: domain of redhat.com designates 209.132.183.28 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com; dmarc=pass header.from= (p=none dis=none) header.from= Return-Path: Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by mx.zohomail.com with SMTPS id 1563538579442722.238083508308; Fri, 19 Jul 2019 05:16:19 -0700 (PDT) Received: from smtp.corp.redhat.com (int-mx01.intmail.prod.int.phx2.redhat.com [10.5.11.11]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id 57D15821F1; Fri, 19 Jul 2019 12:16:17 +0000 (UTC) Received: from colo-mx.corp.redhat.com (colo-mx01.intmail.prod.int.phx2.redhat.com [10.5.11.20]) by smtp.corp.redhat.com (Postfix) with ESMTPS id 24FC6620D6; Fri, 19 Jul 2019 12:16:17 +0000 (UTC) Received: from lists01.pubmisc.prod.ext.phx2.redhat.com (lists01.pubmisc.prod.ext.phx2.redhat.com [10.5.19.33]) by colo-mx.corp.redhat.com (Postfix) with ESMTP id C70E318045D1; Fri, 19 Jul 2019 12:16:16 +0000 (UTC) Received: from smtp.corp.redhat.com (int-mx03.intmail.prod.int.phx2.redhat.com [10.5.11.13]) by lists01.pubmisc.prod.ext.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id x6JCFwAt020038 for ; Fri, 19 Jul 2019 08:15:58 -0400 Received: by smtp.corp.redhat.com (Postfix) id AB820646B8; Fri, 19 Jul 2019 12:15:58 +0000 (UTC) Received: from icr.brq.redhat.com (unknown [10.43.2.100]) by smtp.corp.redhat.com (Postfix) with ESMTP id 90B47646B6 for ; Fri, 19 Jul 2019 12:15:57 +0000 (UTC) From: =?UTF-8?q?J=C3=A1n=20Tomko?= To: libvir-list@redhat.com Date: Fri, 19 Jul 2019 14:15:45 +0200 Message-Id: <846e22fd07312d743affc9727900b199aeb5bac1.1563538286.git.jtomko@redhat.com> In-Reply-To: References: MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.79 on 10.5.11.13 X-loop: libvir-list@redhat.com Subject: [libvirt] [PATCH 3/6] conf: introduce virdomaintypes.h X-BeenThere: libvir-list@redhat.com X-Mailman-Version: 2.1.12 Precedence: junk List-Id: Development discussions about the libvirt library & tools List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Sender: libvir-list-bounces@redhat.com Errors-To: libvir-list-bounces@redhat.com X-Scanned-By: MIMEDefang 2.79 on 10.5.11.11 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.28]); Fri, 19 Jul 2019 12:16:17 +0000 (UTC) Put all the virDomainDef* related types into this file. Signed-off-by: J=C3=A1n Tomko --- src/conf/Makefile.inc.am | 1 + src/conf/domain_conf.h | 2676 +----------------------------------- src/conf/virdomaintypes.h | 2692 +++++++++++++++++++++++++++++++++++++ 3 files changed, 2700 insertions(+), 2669 deletions(-) create mode 100644 src/conf/virdomaintypes.h diff --git a/src/conf/Makefile.inc.am b/src/conf/Makefile.inc.am index 16a21c34f3..dba015ff82 100644 --- a/src/conf/Makefile.inc.am +++ b/src/conf/Makefile.inc.am @@ -34,6 +34,7 @@ DOMAIN_CONF_SOURCES =3D \ conf/numa_conf.c \ conf/numa_conf.h \ conf/virconftypes.h \ + conf/virdomaintypes.h \ conf/virdomainobjlist.c \ conf/virdomainobjlist.h \ conf/virdomainmomentobjlist.c \ diff --git a/src/conf/domain_conf.h b/src/conf/domain_conf.h index 7daab395aa..dacbb23a3e 100644 --- a/src/conf/domain_conf.h +++ b/src/conf/domain_conf.h @@ -28,2567 +28,27 @@ =20 #include "internal.h" #include "virconftypes.h" -#include "capabilities.h" +#include "virdomaintypes.h" #include "virstorageencryption.h" #include "cpu_conf.h" #include "virthread.h" -#include "virhash.h" #include "virsocketaddr.h" #include "networkcommon_conf.h" #include "nwfilter_params.h" #include "numa_conf.h" -#include "virnetdevmacvlan.h" -#include "virsysinfo.h" -#include "virnetdev.h" -#include "virnetdevip.h" -#include "virnetdevvportprofile.h" -#include "virnetdevbandwidth.h" -#include "virnetdevvlan.h" #include "virobject.h" -#include "device_conf.h" #include "virbitmap.h" -#include "virstoragefile.h" #include "virseclabel.h" -#include "virprocess.h" -#include "virgic.h" -#include "virperf.h" #include "virtypedparam.h" #include "virsavecookie.h" -#include "virresctrl.h" #include "virenum.h" =20 -/* Flags for the 'type' field in virDomainDeviceDef */ -typedef enum { - VIR_DOMAIN_DEVICE_NONE =3D 0, - VIR_DOMAIN_DEVICE_DISK, - VIR_DOMAIN_DEVICE_LEASE, - VIR_DOMAIN_DEVICE_FS, - VIR_DOMAIN_DEVICE_NET, - VIR_DOMAIN_DEVICE_INPUT, - VIR_DOMAIN_DEVICE_SOUND, - VIR_DOMAIN_DEVICE_VIDEO, - VIR_DOMAIN_DEVICE_HOSTDEV, - VIR_DOMAIN_DEVICE_WATCHDOG, - VIR_DOMAIN_DEVICE_CONTROLLER, - VIR_DOMAIN_DEVICE_GRAPHICS, - VIR_DOMAIN_DEVICE_HUB, - VIR_DOMAIN_DEVICE_REDIRDEV, - VIR_DOMAIN_DEVICE_SMARTCARD, - VIR_DOMAIN_DEVICE_CHR, - VIR_DOMAIN_DEVICE_MEMBALLOON, - VIR_DOMAIN_DEVICE_NVRAM, - VIR_DOMAIN_DEVICE_RNG, - VIR_DOMAIN_DEVICE_SHMEM, - VIR_DOMAIN_DEVICE_TPM, - VIR_DOMAIN_DEVICE_PANIC, - VIR_DOMAIN_DEVICE_MEMORY, - VIR_DOMAIN_DEVICE_IOMMU, - VIR_DOMAIN_DEVICE_VSOCK, - - VIR_DOMAIN_DEVICE_LAST -} virDomainDeviceType; - -struct _virDomainDeviceDef { - int type; /* enum virDomainDeviceType */ - union { - virDomainDiskDefPtr disk; - virDomainControllerDefPtr controller; - virDomainLeaseDefPtr lease; - virDomainFSDefPtr fs; - virDomainNetDefPtr net; - virDomainInputDefPtr input; - virDomainSoundDefPtr sound; - virDomainVideoDefPtr video; - virDomainHostdevDefPtr hostdev; - virDomainWatchdogDefPtr watchdog; - virDomainGraphicsDefPtr graphics; - virDomainHubDefPtr hub; - virDomainRedirdevDefPtr redirdev; - virDomainSmartcardDefPtr smartcard; - virDomainChrDefPtr chr; - virDomainMemballoonDefPtr memballoon; - virDomainNVRAMDefPtr nvram; - virDomainRNGDefPtr rng; - virDomainShmemDefPtr shmem; - virDomainTPMDefPtr tpm; - virDomainPanicDefPtr panic; - virDomainMemoryDefPtr memory; - virDomainIOMMUDefPtr iommu; - virDomainVsockDefPtr vsock; - } data; -}; - -/* Different types of hypervisor */ -/* NB: Keep in sync with virDomainVirtTypeToString impl */ -typedef enum { - VIR_DOMAIN_VIRT_NONE =3D 0, - VIR_DOMAIN_VIRT_QEMU, - VIR_DOMAIN_VIRT_KQEMU, - VIR_DOMAIN_VIRT_KVM, - VIR_DOMAIN_VIRT_XEN, - VIR_DOMAIN_VIRT_LXC, - VIR_DOMAIN_VIRT_UML, - VIR_DOMAIN_VIRT_OPENVZ, - VIR_DOMAIN_VIRT_TEST, - VIR_DOMAIN_VIRT_VMWARE, - VIR_DOMAIN_VIRT_HYPERV, - VIR_DOMAIN_VIRT_VBOX, - VIR_DOMAIN_VIRT_PHYP, - VIR_DOMAIN_VIRT_PARALLELS, - VIR_DOMAIN_VIRT_BHYVE, - VIR_DOMAIN_VIRT_VZ, - - VIR_DOMAIN_VIRT_LAST -} virDomainVirtType; - -typedef enum { - VIR_DOMAIN_OSTYPE_HVM, - VIR_DOMAIN_OSTYPE_XEN, - VIR_DOMAIN_OSTYPE_LINUX, - VIR_DOMAIN_OSTYPE_EXE, - VIR_DOMAIN_OSTYPE_UML, - VIR_DOMAIN_OSTYPE_XENPVH, - - VIR_DOMAIN_OSTYPE_LAST -} virDomainOSType; -VIR_ENUM_DECL(virDomainOS); - - -struct _virDomainHostdevOrigStates { - union { - struct { - /* Does the device need to unbind from stub when - * reattaching to host? - */ - bool unbind_from_stub; - - /* Does it need to use remove_slot when reattaching - * the device to host? - */ - bool remove_slot; - - /* Does it need to reprobe driver for the device when - * reattaching to host? - */ - bool reprobe; - } pci; - - /* Perhaps 'usb' in future */ - } states; -}; - -struct _virDomainLeaseDef { - char *lockspace; - char *key; - char *path; - unsigned long long offset; -}; - - -typedef enum { - VIR_DOMAIN_HOSTDEV_MODE_SUBSYS, - VIR_DOMAIN_HOSTDEV_MODE_CAPABILITIES, - - VIR_DOMAIN_HOSTDEV_MODE_LAST -} virDomainHostdevMode; - -typedef enum { - VIR_DOMAIN_HOSTDEV_SUBSYS_TYPE_USB, - VIR_DOMAIN_HOSTDEV_SUBSYS_TYPE_PCI, - VIR_DOMAIN_HOSTDEV_SUBSYS_TYPE_SCSI, - VIR_DOMAIN_HOSTDEV_SUBSYS_TYPE_SCSI_HOST, - VIR_DOMAIN_HOSTDEV_SUBSYS_TYPE_MDEV, - - VIR_DOMAIN_HOSTDEV_SUBSYS_TYPE_LAST -} virDomainHostdevSubsysType; - -/* the backend driver used for PCI hostdev devices */ -typedef enum { - VIR_DOMAIN_HOSTDEV_PCI_BACKEND_DEFAULT, /* detect automatically, prefe= r VFIO */ - VIR_DOMAIN_HOSTDEV_PCI_BACKEND_KVM, /* force legacy kvm style */ - VIR_DOMAIN_HOSTDEV_PCI_BACKEND_VFIO, /* force vfio */ - VIR_DOMAIN_HOSTDEV_PCI_BACKEND_XEN, /* force legacy xen style, use = pciback */ - - VIR_DOMAIN_HOSTDEV_PCI_BACKEND_TYPE_LAST -} virDomainHostdevSubsysPCIBackendType; - -VIR_ENUM_DECL(virDomainHostdevSubsysPCIBackend); - -typedef enum { - VIR_DOMAIN_HOSTDEV_SCSI_PROTOCOL_TYPE_NONE, - VIR_DOMAIN_HOSTDEV_SCSI_PROTOCOL_TYPE_ISCSI, - - VIR_DOMAIN_HOSTDEV_SCSI_PROTOCOL_TYPE_LAST, -} virDomainHostdevSCSIProtocolType; - -VIR_ENUM_DECL(virDomainHostdevSubsysSCSIProtocol); - -struct _virDomainHostdevSubsysUSB { - bool autoAddress; /* bus/device were filled automatically based - on vendor/product */ - unsigned bus; - unsigned device; - - unsigned vendor; - unsigned product; -}; - -struct _virDomainHostdevSubsysPCI { - virPCIDeviceAddress addr; /* host address */ - int backend; /* enum virDomainHostdevSubsysPCIBackendType */ -}; - -struct _virDomainHostdevSubsysSCSIHost { - char *adapter; - unsigned bus; - unsigned target; - unsigned long long unit; -}; - -struct _virDomainHostdevSubsysSCSIiSCSI { - virStorageSourcePtr src; -}; - -struct _virDomainHostdevSubsysSCSI { - int protocol; /* enum virDomainHostdevSCSIProtocolType */ - int sgio; /* enum virDomainDeviceSGIO */ - int rawio; /* enum virTristateBool */ - union { - virDomainHostdevSubsysSCSIHost host; - virDomainHostdevSubsysSCSIiSCSI iscsi; - } u; -}; - -struct _virDomainHostdevSubsysMediatedDev { - int model; /* enum virMediatedDeviceModelType= */ - int display; /* virTristateSwitch */ - char uuidstr[VIR_UUID_STRING_BUFLEN]; /* mediated device's uuid stri= ng */ -}; - -typedef enum { - VIR_DOMAIN_HOSTDEV_SUBSYS_SCSI_HOST_PROTOCOL_TYPE_NONE, - VIR_DOMAIN_HOSTDEV_SUBSYS_SCSI_HOST_PROTOCOL_TYPE_VHOST, - - VIR_DOMAIN_HOSTDEV_SUBSYS_SCSI_HOST_PROTOCOL_TYPE_LAST, -} virDomainHostdevSubsysSCSIHostProtocolType; - -VIR_ENUM_DECL(virDomainHostdevSubsysSCSIHostProtocol); - -typedef enum { - VIR_DOMAIN_HOSTDEV_SUBSYS_SCSI_VHOST_MODEL_TYPE_DEFAULT, - VIR_DOMAIN_HOSTDEV_SUBSYS_SCSI_VHOST_MODEL_TYPE_VIRTIO, - VIR_DOMAIN_HOSTDEV_SUBSYS_SCSI_VHOST_MODEL_TYPE_VIRTIO_TRANSITIONAL, - VIR_DOMAIN_HOSTDEV_SUBSYS_SCSI_VHOST_MODEL_TYPE_VIRTIO_NON_TRANSITIONA= L, - - VIR_DOMAIN_HOSTDEV_SUBSYS_SCSI_VHOST_MODEL_TYPE_LAST, -} virDomainHostdevSubsysSCSIVHostModelType; - -VIR_ENUM_DECL(virDomainHostdevSubsysSCSIVHostModel); - -struct _virDomainHostdevSubsysSCSIVHost { - int protocol; /* enum virDomainHostdevSubsysSCSIHostProtocolType */ - char *wwpn; - int model; /* enum virDomainHostdevSubsysSCSIVHostModelType */ -}; - -struct _virDomainHostdevSubsys { - int type; /* enum virDomainHostdevSubsysType */ - union { - virDomainHostdevSubsysUSB usb; - virDomainHostdevSubsysPCI pci; - virDomainHostdevSubsysSCSI scsi; - virDomainHostdevSubsysSCSIVHost scsi_host; - virDomainHostdevSubsysMediatedDev mdev; - } u; -}; - - -typedef enum { - VIR_DOMAIN_HOSTDEV_CAPS_TYPE_STORAGE, - VIR_DOMAIN_HOSTDEV_CAPS_TYPE_MISC, - VIR_DOMAIN_HOSTDEV_CAPS_TYPE_NET, - - VIR_DOMAIN_HOSTDEV_CAPS_TYPE_LAST -} virDomainHostdevCapsType; - -struct _virDomainHostdevCaps { - int type; /* enum virDOmainHostdevCapsType */ - union { - struct { - char *block; - } storage; - struct { - char *chardev; - } misc; - struct { - char *ifname; - virNetDevIPInfo ip; - } net; - } u; -}; - - -/* basic device for direct passthrough */ -struct _virDomainHostdevDef { - /* If 'parentnet' is non-NULL it means this host dev was - * not originally present in the XML. It was copied from - * a network interface for convenience when handling - * hostdevs internally. This hostdev should never be - * visible to the user except as part of the interface - */ - virDomainNetDefPtr parentnet; - - int mode; /* enum virDomainHostdevMode */ - int startupPolicy; /* enum virDomainStartupPolicy */ - bool managed; - bool missing; - bool readonly; - bool shareable; - union { - virDomainHostdevSubsys subsys; - virDomainHostdevCaps caps; - } source; - virDomainHostdevOrigStates origstates; - virDomainDeviceInfoPtr info; /* Guest address */ -}; - - -/* Types of disk frontend (guest view). For backends (host view), see - * virStorageType in util/virstoragefile.h */ -typedef enum { - VIR_DOMAIN_DISK_DEVICE_DISK, - VIR_DOMAIN_DISK_DEVICE_CDROM, - VIR_DOMAIN_DISK_DEVICE_FLOPPY, - VIR_DOMAIN_DISK_DEVICE_LUN, - - VIR_DOMAIN_DISK_DEVICE_LAST -} virDomainDiskDevice; - -typedef enum { - VIR_DOMAIN_DISK_BUS_IDE, - VIR_DOMAIN_DISK_BUS_FDC, - VIR_DOMAIN_DISK_BUS_SCSI, - VIR_DOMAIN_DISK_BUS_VIRTIO, - VIR_DOMAIN_DISK_BUS_XEN, - VIR_DOMAIN_DISK_BUS_USB, - VIR_DOMAIN_DISK_BUS_UML, - VIR_DOMAIN_DISK_BUS_SATA, - VIR_DOMAIN_DISK_BUS_SD, - - VIR_DOMAIN_DISK_BUS_LAST -} virDomainDiskBus; - -typedef enum { - VIR_DOMAIN_DISK_CACHE_DEFAULT, - VIR_DOMAIN_DISK_CACHE_DISABLE, - VIR_DOMAIN_DISK_CACHE_WRITETHRU, - VIR_DOMAIN_DISK_CACHE_WRITEBACK, - VIR_DOMAIN_DISK_CACHE_DIRECTSYNC, - VIR_DOMAIN_DISK_CACHE_UNSAFE, - - VIR_DOMAIN_DISK_CACHE_LAST -} virDomainDiskCache; - -typedef enum { - VIR_DOMAIN_DISK_ERROR_POLICY_DEFAULT, - VIR_DOMAIN_DISK_ERROR_POLICY_STOP, - VIR_DOMAIN_DISK_ERROR_POLICY_REPORT, - VIR_DOMAIN_DISK_ERROR_POLICY_IGNORE, - VIR_DOMAIN_DISK_ERROR_POLICY_ENOSPACE, - - VIR_DOMAIN_DISK_ERROR_POLICY_LAST -} virDomainDiskErrorPolicy; - - -typedef enum { - VIR_DOMAIN_DISK_TRAY_CLOSED =3D 0, - VIR_DOMAIN_DISK_TRAY_OPEN, - - VIR_DOMAIN_DISK_TRAY_LAST -} virDomainDiskTray; - -typedef enum { - VIR_DOMAIN_DISK_TRANS_DEFAULT =3D 0, - VIR_DOMAIN_DISK_TRANS_NONE, - VIR_DOMAIN_DISK_TRANS_AUTO, - VIR_DOMAIN_DISK_TRANS_LBA, - - VIR_DOMAIN_DISK_TRANS_LAST -} virDomainDiskGeometryTrans; - -typedef enum { - VIR_DOMAIN_DISK_IO_DEFAULT =3D 0, - VIR_DOMAIN_DISK_IO_NATIVE, - VIR_DOMAIN_DISK_IO_THREADS, - - VIR_DOMAIN_DISK_IO_LAST -} virDomainDiskIo; - -typedef enum { - VIR_DOMAIN_STARTUP_POLICY_DEFAULT =3D 0, - VIR_DOMAIN_STARTUP_POLICY_MANDATORY, - VIR_DOMAIN_STARTUP_POLICY_REQUISITE, - VIR_DOMAIN_STARTUP_POLICY_OPTIONAL, - - VIR_DOMAIN_STARTUP_POLICY_LAST -} virDomainStartupPolicy; - - -typedef enum { - VIR_DOMAIN_DEVICE_SGIO_DEFAULT =3D 0, - VIR_DOMAIN_DEVICE_SGIO_FILTERED, - VIR_DOMAIN_DEVICE_SGIO_UNFILTERED, - - VIR_DOMAIN_DEVICE_SGIO_LAST -} virDomainDeviceSGIO; - -typedef enum { - VIR_DOMAIN_DISK_DISCARD_DEFAULT =3D 0, - VIR_DOMAIN_DISK_DISCARD_UNMAP, - VIR_DOMAIN_DISK_DISCARD_IGNORE, - - VIR_DOMAIN_DISK_DISCARD_LAST -} virDomainDiskDiscard; - -typedef enum { - VIR_DOMAIN_DISK_DETECT_ZEROES_DEFAULT =3D 0, - VIR_DOMAIN_DISK_DETECT_ZEROES_OFF, - VIR_DOMAIN_DISK_DETECT_ZEROES_ON, - VIR_DOMAIN_DISK_DETECT_ZEROES_UNMAP, - - VIR_DOMAIN_DISK_DETECT_ZEROES_LAST -} virDomainDiskDetectZeroes; - -typedef enum { - VIR_DOMAIN_DISK_MODEL_DEFAULT =3D 0, - VIR_DOMAIN_DISK_MODEL_VIRTIO, - VIR_DOMAIN_DISK_MODEL_VIRTIO_TRANSITIONAL, - VIR_DOMAIN_DISK_MODEL_VIRTIO_NON_TRANSITIONAL, - - VIR_DOMAIN_DISK_MODEL_LAST -} virDomainDiskModel; - -struct _virDomainBlockIoTuneInfo { - unsigned long long total_bytes_sec; - unsigned long long read_bytes_sec; - unsigned long long write_bytes_sec; - unsigned long long total_iops_sec; - unsigned long long read_iops_sec; - unsigned long long write_iops_sec; - unsigned long long total_bytes_sec_max; - unsigned long long read_bytes_sec_max; - unsigned long long write_bytes_sec_max; - unsigned long long total_iops_sec_max; - unsigned long long read_iops_sec_max; - unsigned long long write_iops_sec_max; - unsigned long long size_iops_sec; - char *group_name; - unsigned long long total_bytes_sec_max_length; - unsigned long long read_bytes_sec_max_length; - unsigned long long write_bytes_sec_max_length; - unsigned long long total_iops_sec_max_length; - unsigned long long read_iops_sec_max_length; - unsigned long long write_iops_sec_max_length; -}; - - -typedef enum { - VIR_DOMAIN_DISK_MIRROR_STATE_NONE =3D 0, /* No job, or job still not s= ynced */ - VIR_DOMAIN_DISK_MIRROR_STATE_READY, /* Job in second phase */ - VIR_DOMAIN_DISK_MIRROR_STATE_ABORT, /* Job aborted, waiting for event = */ - VIR_DOMAIN_DISK_MIRROR_STATE_PIVOT, /* Job pivoted, waiting for event = */ - - VIR_DOMAIN_DISK_MIRROR_STATE_LAST -} virDomainDiskMirrorState; - -typedef enum { - VIR_DOMAIN_MEMORY_SOURCE_NONE =3D 0, /* No memory source defined */ - VIR_DOMAIN_MEMORY_SOURCE_FILE, /* Memory source is set as file */ - VIR_DOMAIN_MEMORY_SOURCE_ANONYMOUS, /* Memory source is set as anonymo= us */ - VIR_DOMAIN_MEMORY_SOURCE_MEMFD, /* Memory source is set as memfd */ - - VIR_DOMAIN_MEMORY_SOURCE_LAST, -} virDomainMemorySource; - -typedef enum { - VIR_DOMAIN_MEMORY_ALLOCATION_NONE =3D 0, /* No memory allocation defi= ned */ - VIR_DOMAIN_MEMORY_ALLOCATION_IMMEDIATE, /* Memory allocation is set as= immediate */ - VIR_DOMAIN_MEMORY_ALLOCATION_ONDEMAND, /* Memory allocation is set as= ondemand */ - - VIR_DOMAIN_MEMORY_ALLOCATION_LAST, -} virDomainMemoryAllocation; - - -/* Stores the virtual disk configuration */ -struct _virDomainDiskDef { - virStorageSourcePtr src; /* non-NULL. XXX Allow NULL for empty cdrom?= */ - - virObjectPtr privateData; - - int device; /* enum virDomainDiskDevice */ - int bus; /* enum virDomainDiskBus */ - char *dst; - int tray_status; /* enum virDomainDiskTray */ - int removable; /* enum virTristateSwitch */ - - virStorageSourcePtr mirror; - int mirrorState; /* enum virDomainDiskMirrorState */ - int mirrorJob; /* virDomainBlockJobType */ - - struct { - unsigned int cylinders; - unsigned int heads; - unsigned int sectors; - int trans; /* enum virDomainDiskGeometryTrans */ - } geometry; - - struct { - unsigned int logical_block_size; - unsigned int physical_block_size; - } blockio; - - virDomainBlockIoTuneInfo blkdeviotune; - - char *driverName; - - char *serial; - char *wwn; - char *vendor; - char *product; - int cachemode; /* enum virDomainDiskCache */ - int error_policy; /* enum virDomainDiskErrorPolicy */ - int rerror_policy; /* enum virDomainDiskErrorPolicy */ - int iomode; /* enum virDomainDiskIo */ - int ioeventfd; /* enum virTristateSwitch */ - int event_idx; /* enum virTristateSwitch */ - int copy_on_read; /* enum virTristateSwitch */ - int snapshot; /* virDomainSnapshotLocation, snapshot_conf.h */ - int startupPolicy; /* enum virDomainStartupPolicy */ - bool transient; - virDomainDeviceInfo info; - int rawio; /* enum virTristateBool */ - int sgio; /* enum virDomainDeviceSGIO */ - int discard; /* enum virDomainDiskDiscard */ - unsigned int iothread; /* unused =3D 0, > 0 specific thread # */ - int detect_zeroes; /* enum virDomainDiskDetectZeroes */ - char *domain_name; /* backend domain name */ - unsigned int queues; - int model; /* enum virDomainDiskModel */ - virDomainVirtioOptionsPtr virtio; -}; - - -typedef enum { - VIR_DOMAIN_CONTROLLER_TYPE_IDE, - VIR_DOMAIN_CONTROLLER_TYPE_FDC, - VIR_DOMAIN_CONTROLLER_TYPE_SCSI, - VIR_DOMAIN_CONTROLLER_TYPE_SATA, - VIR_DOMAIN_CONTROLLER_TYPE_VIRTIO_SERIAL, - VIR_DOMAIN_CONTROLLER_TYPE_CCID, - VIR_DOMAIN_CONTROLLER_TYPE_USB, - VIR_DOMAIN_CONTROLLER_TYPE_PCI, - VIR_DOMAIN_CONTROLLER_TYPE_XENBUS, - - VIR_DOMAIN_CONTROLLER_TYPE_LAST -} virDomainControllerType; - - -typedef enum { - VIR_DOMAIN_CONTROLLER_MODEL_PCI_DEFAULT =3D -1, - VIR_DOMAIN_CONTROLLER_MODEL_PCI_ROOT, - VIR_DOMAIN_CONTROLLER_MODEL_PCIE_ROOT, - VIR_DOMAIN_CONTROLLER_MODEL_PCI_BRIDGE, - VIR_DOMAIN_CONTROLLER_MODEL_DMI_TO_PCI_BRIDGE, - VIR_DOMAIN_CONTROLLER_MODEL_PCIE_TO_PCI_BRIDGE, - VIR_DOMAIN_CONTROLLER_MODEL_PCIE_ROOT_PORT, - VIR_DOMAIN_CONTROLLER_MODEL_PCIE_SWITCH_UPSTREAM_PORT, - VIR_DOMAIN_CONTROLLER_MODEL_PCIE_SWITCH_DOWNSTREAM_PORT, - VIR_DOMAIN_CONTROLLER_MODEL_PCI_EXPANDER_BUS, - VIR_DOMAIN_CONTROLLER_MODEL_PCIE_EXPANDER_BUS, - - VIR_DOMAIN_CONTROLLER_MODEL_PCI_LAST -} virDomainControllerModelPCI; - -typedef enum { - VIR_DOMAIN_CONTROLLER_PCI_MODEL_NAME_NONE =3D 0, - VIR_DOMAIN_CONTROLLER_PCI_MODEL_NAME_PCI_BRIDGE, - VIR_DOMAIN_CONTROLLER_PCI_MODEL_NAME_I82801B11_BRIDGE, - VIR_DOMAIN_CONTROLLER_PCI_MODEL_NAME_IOH3420, - VIR_DOMAIN_CONTROLLER_PCI_MODEL_NAME_X3130_UPSTREAM, - VIR_DOMAIN_CONTROLLER_PCI_MODEL_NAME_XIO3130_DOWNSTREAM, - VIR_DOMAIN_CONTROLLER_PCI_MODEL_NAME_PXB, - VIR_DOMAIN_CONTROLLER_PCI_MODEL_NAME_PXB_PCIE, - VIR_DOMAIN_CONTROLLER_PCI_MODEL_NAME_PCIE_ROOT_PORT, - VIR_DOMAIN_CONTROLLER_PCI_MODEL_NAME_SPAPR_PCI_HOST_BRIDGE, - VIR_DOMAIN_CONTROLLER_PCI_MODEL_NAME_PCIE_PCI_BRIDGE, - - VIR_DOMAIN_CONTROLLER_PCI_MODEL_NAME_LAST -} virDomainControllerPCIModelName; - -typedef enum { - VIR_DOMAIN_CONTROLLER_MODEL_SCSI_DEFAULT =3D -1, - VIR_DOMAIN_CONTROLLER_MODEL_SCSI_AUTO, - VIR_DOMAIN_CONTROLLER_MODEL_SCSI_BUSLOGIC, - VIR_DOMAIN_CONTROLLER_MODEL_SCSI_LSILOGIC, - VIR_DOMAIN_CONTROLLER_MODEL_SCSI_LSISAS1068, - VIR_DOMAIN_CONTROLLER_MODEL_SCSI_VMPVSCSI, - VIR_DOMAIN_CONTROLLER_MODEL_SCSI_IBMVSCSI, - VIR_DOMAIN_CONTROLLER_MODEL_SCSI_VIRTIO_SCSI, - VIR_DOMAIN_CONTROLLER_MODEL_SCSI_LSISAS1078, - VIR_DOMAIN_CONTROLLER_MODEL_SCSI_VIRTIO_TRANSITIONAL, - VIR_DOMAIN_CONTROLLER_MODEL_SCSI_VIRTIO_NON_TRANSITIONAL, - - VIR_DOMAIN_CONTROLLER_MODEL_SCSI_LAST -} virDomainControllerModelSCSI; - -typedef enum { - VIR_DOMAIN_CONTROLLER_MODEL_USB_DEFAULT =3D -1, - VIR_DOMAIN_CONTROLLER_MODEL_USB_PIIX3_UHCI, - VIR_DOMAIN_CONTROLLER_MODEL_USB_PIIX4_UHCI, - VIR_DOMAIN_CONTROLLER_MODEL_USB_EHCI, - VIR_DOMAIN_CONTROLLER_MODEL_USB_ICH9_EHCI1, - VIR_DOMAIN_CONTROLLER_MODEL_USB_ICH9_UHCI1, - VIR_DOMAIN_CONTROLLER_MODEL_USB_ICH9_UHCI2, - VIR_DOMAIN_CONTROLLER_MODEL_USB_ICH9_UHCI3, - VIR_DOMAIN_CONTROLLER_MODEL_USB_VT82C686B_UHCI, - VIR_DOMAIN_CONTROLLER_MODEL_USB_PCI_OHCI, - VIR_DOMAIN_CONTROLLER_MODEL_USB_NEC_XHCI, - VIR_DOMAIN_CONTROLLER_MODEL_USB_QUSB1, - VIR_DOMAIN_CONTROLLER_MODEL_USB_QUSB2, - VIR_DOMAIN_CONTROLLER_MODEL_USB_QEMU_XHCI, - VIR_DOMAIN_CONTROLLER_MODEL_USB_NONE, - - VIR_DOMAIN_CONTROLLER_MODEL_USB_LAST -} virDomainControllerModelUSB; - -typedef enum { - VIR_DOMAIN_CONTROLLER_MODEL_IDE_DEFAULT =3D -1, - VIR_DOMAIN_CONTROLLER_MODEL_IDE_PIIX3, - VIR_DOMAIN_CONTROLLER_MODEL_IDE_PIIX4, - VIR_DOMAIN_CONTROLLER_MODEL_IDE_ICH6, - - VIR_DOMAIN_CONTROLLER_MODEL_IDE_LAST -} virDomainControllerModelIDE; - -typedef enum { - VIR_DOMAIN_CONTROLLER_MODEL_VIRTIO_SERIAL_DEFAULT =3D -1, - VIR_DOMAIN_CONTROLLER_MODEL_VIRTIO_SERIAL_VIRTIO, - VIR_DOMAIN_CONTROLLER_MODEL_VIRTIO_SERIAL_VIRTIO_TRANSITIONAL, - VIR_DOMAIN_CONTROLLER_MODEL_VIRTIO_SERIAL_VIRTIO_NON_TRANSITIONAL, - - VIR_DOMAIN_CONTROLLER_MODEL_VIRTIO_SERIAL_LAST -} virDomainControllerModelVirtioSerial; - -#define IS_USB2_CONTROLLER(ctrl) \ - (((ctrl)->type =3D=3D VIR_DOMAIN_CONTROLLER_TYPE_USB) && \ - ((ctrl)->model =3D=3D VIR_DOMAIN_CONTROLLER_MODEL_USB_ICH9_EHCI1 || \ - (ctrl)->model =3D=3D VIR_DOMAIN_CONTROLLER_MODEL_USB_ICH9_UHCI1 || \ - (ctrl)->model =3D=3D VIR_DOMAIN_CONTROLLER_MODEL_USB_ICH9_UHCI2 || \ - (ctrl)->model =3D=3D VIR_DOMAIN_CONTROLLER_MODEL_USB_ICH9_UHCI3)) - -struct _virDomainVirtioSerialOpts { - int ports; /* -1 =3D=3D undef */ - int vectors; /* -1 =3D=3D undef */ -}; - -struct _virDomainPCIControllerOpts { - bool pcihole64; - unsigned long pcihole64size; - - /* the exact controller name is in the "model" subelement, e.g.: - * - * - * ... - */ - int modelName; /* the exact name of the device in hypervisor */ - - /* the following items are attributes of the "target" subelement - * of controller type=3D'pci'. They are bits of configuration that - * are specified on the qemu commandline and are visible to the - * guest OS, so they must be preserved to ensure ABI - * compatibility. - */ - int chassisNr; /* used by pci-bridge, -1 =3D=3D unspecified */ - /* chassis & port used by - * pcie-root-port/pcie-switch-downstream-port, -1 =3D unspecified */ - int chassis; - int port; - int busNr; /* used by pci-expander-bus, -1 =3D=3D unspecified */ - int targetIndex; /* used by spapr-pci-host-bridge, -1 =3D=3D unspecifi= ed */ - /* numaNode is a *subelement* of target (to match existing - * item in memory target config) -1 =3D=3D unspecified - */ - int numaNode; -}; - -struct _virDomainUSBControllerOpts { - int ports; /* -1 =3D=3D undef */ -}; - -struct _virDomainXenbusControllerOpts { - int maxGrantFrames; /* -1 =3D=3D undef */ -}; - -/* Stores the virtual disk controller configuration */ -struct _virDomainControllerDef { - int type; - int idx; - int model; /* -1 =3D=3D undef */ - unsigned int queues; - unsigned int cmd_per_lun; - unsigned int max_sectors; - int ioeventfd; /* enum virTristateSwitch */ - unsigned int iothread; /* unused =3D 0, > 0 specific thread # */ - union { - virDomainVirtioSerialOpts vioserial; - virDomainPCIControllerOpts pciopts; - virDomainUSBControllerOpts usbopts; - virDomainXenbusControllerOpts xenbusopts; - } opts; - virDomainDeviceInfo info; - virDomainVirtioOptionsPtr virtio; -}; - - -/* Types of disk backends */ -typedef enum { - VIR_DOMAIN_FS_TYPE_MOUNT, /* Mounts (binds) a host dir on a guest dir = */ - VIR_DOMAIN_FS_TYPE_BLOCK, /* Mounts a host block dev on a guest dir */ - VIR_DOMAIN_FS_TYPE_FILE, /* Loopback mounts a host file on a guest di= r */ - VIR_DOMAIN_FS_TYPE_TEMPLATE, /* Expands a OS template to a guest dir */ - VIR_DOMAIN_FS_TYPE_RAM, /* Mount a RAM filesystem on a guest dir */ - VIR_DOMAIN_FS_TYPE_BIND, /* Binds a guest dir to another guest dir */ - VIR_DOMAIN_FS_TYPE_VOLUME, /* Mounts storage pool volume to a guest */ - - VIR_DOMAIN_FS_TYPE_LAST -} virDomainFSType; - -/* Filesystem driver type */ -typedef enum { - VIR_DOMAIN_FS_DRIVER_TYPE_DEFAULT =3D 0, - VIR_DOMAIN_FS_DRIVER_TYPE_PATH, - VIR_DOMAIN_FS_DRIVER_TYPE_HANDLE, - VIR_DOMAIN_FS_DRIVER_TYPE_LOOP, - VIR_DOMAIN_FS_DRIVER_TYPE_NBD, - VIR_DOMAIN_FS_DRIVER_TYPE_PLOOP, - - VIR_DOMAIN_FS_DRIVER_TYPE_LAST -} virDomainFSDriverType; - -/* Filesystem mount access mode */ -typedef enum { - VIR_DOMAIN_FS_ACCESSMODE_PASSTHROUGH, - VIR_DOMAIN_FS_ACCESSMODE_MAPPED, - VIR_DOMAIN_FS_ACCESSMODE_SQUASH, - - VIR_DOMAIN_FS_ACCESSMODE_LAST -} virDomainFSAccessMode; - -/* Filesystem Write policy */ -typedef enum { - VIR_DOMAIN_FS_WRPOLICY_DEFAULT =3D 0, - VIR_DOMAIN_FS_WRPOLICY_IMMEDIATE, - - VIR_DOMAIN_FS_WRPOLICY_LAST -} virDomainFSWrpolicy; - -typedef enum { - VIR_DOMAIN_FS_MODEL_DEFAULT =3D 0, - VIR_DOMAIN_FS_MODEL_VIRTIO, - VIR_DOMAIN_FS_MODEL_VIRTIO_TRANSITIONAL, - VIR_DOMAIN_FS_MODEL_VIRTIO_NON_TRANSITIONAL, - - VIR_DOMAIN_FS_MODEL_LAST -} virDomainFSModel; - -struct _virDomainFSDef { - int type; - int fsdriver; /* enum virDomainFSDriverType */ - int accessmode; /* enum virDomainFSAccessMode */ - int wrpolicy; /* enum virDomainFSWrpolicy */ - int format; /* virStorageFileFormat */ - int model; /* virDomainFSModel */ - unsigned long long usage; /* in bytes */ - virStorageSourcePtr src; - char *dst; - bool readonly; - virDomainDeviceInfo info; - unsigned long long space_hard_limit; /* in bytes */ - unsigned long long space_soft_limit; /* in bytes */ - bool symlinksResolved; - virDomainVirtioOptionsPtr virtio; -}; - - -/* network config types */ -typedef enum { - VIR_DOMAIN_NET_TYPE_USER, - VIR_DOMAIN_NET_TYPE_ETHERNET, - VIR_DOMAIN_NET_TYPE_VHOSTUSER, - VIR_DOMAIN_NET_TYPE_SERVER, - VIR_DOMAIN_NET_TYPE_CLIENT, - VIR_DOMAIN_NET_TYPE_MCAST, - VIR_DOMAIN_NET_TYPE_NETWORK, - VIR_DOMAIN_NET_TYPE_BRIDGE, - VIR_DOMAIN_NET_TYPE_INTERNAL, - VIR_DOMAIN_NET_TYPE_DIRECT, - VIR_DOMAIN_NET_TYPE_HOSTDEV, - VIR_DOMAIN_NET_TYPE_UDP, - - VIR_DOMAIN_NET_TYPE_LAST -} virDomainNetType; - -/* network model types */ -typedef enum { - VIR_DOMAIN_NET_MODEL_UNKNOWN, - VIR_DOMAIN_NET_MODEL_NETFRONT, - VIR_DOMAIN_NET_MODEL_RTL8139, - VIR_DOMAIN_NET_MODEL_VIRTIO, - VIR_DOMAIN_NET_MODEL_E1000, - VIR_DOMAIN_NET_MODEL_E1000E, - VIR_DOMAIN_NET_MODEL_VIRTIO_TRANSITIONAL, - VIR_DOMAIN_NET_MODEL_VIRTIO_NON_TRANSITIONAL, - VIR_DOMAIN_NET_MODEL_USB_NET, - VIR_DOMAIN_NET_MODEL_SPAPR_VLAN, - VIR_DOMAIN_NET_MODEL_LAN9118, - VIR_DOMAIN_NET_MODEL_SMC91C111, - VIR_DOMAIN_NET_MODEL_VLANCE, - VIR_DOMAIN_NET_MODEL_VMXNET, - VIR_DOMAIN_NET_MODEL_VMXNET2, - VIR_DOMAIN_NET_MODEL_VMXNET3, - VIR_DOMAIN_NET_MODEL_AM79C970A, - VIR_DOMAIN_NET_MODEL_AM79C973, - VIR_DOMAIN_NET_MODEL_82540EM, - VIR_DOMAIN_NET_MODEL_82545EM, - VIR_DOMAIN_NET_MODEL_82543GC, - - VIR_DOMAIN_NET_MODEL_LAST -} virDomainNetModelType; - -/* the backend driver used for virtio interfaces */ -typedef enum { - VIR_DOMAIN_NET_BACKEND_TYPE_DEFAULT, /* prefer kernel, fall back to us= er */ - VIR_DOMAIN_NET_BACKEND_TYPE_QEMU, /* userland */ - VIR_DOMAIN_NET_BACKEND_TYPE_VHOST, /* kernel */ - - VIR_DOMAIN_NET_BACKEND_TYPE_LAST -} virDomainNetBackendType; - -/* the TX algorithm used for virtio interfaces */ -typedef enum { - VIR_DOMAIN_NET_VIRTIO_TX_MODE_DEFAULT, /* default for this version of = qemu */ - VIR_DOMAIN_NET_VIRTIO_TX_MODE_IOTHREAD, - VIR_DOMAIN_NET_VIRTIO_TX_MODE_TIMER, - - VIR_DOMAIN_NET_VIRTIO_TX_MODE_LAST -} virDomainNetVirtioTxModeType; - -/* link interface states */ -typedef enum { - VIR_DOMAIN_NET_INTERFACE_LINK_STATE_DEFAULT =3D 0, /* Default link= state (up) */ - VIR_DOMAIN_NET_INTERFACE_LINK_STATE_UP, /* Link is up. ("= cable" connected) */ - VIR_DOMAIN_NET_INTERFACE_LINK_STATE_DOWN , /* Link is down. = ("cable" disconnected) */ - - VIR_DOMAIN_NET_INTERFACE_LINK_STATE_LAST -} virDomainNetInterfaceLinkState; - -/* Config that was actually used to bring up interface, after - * resolving network reference. This is private data, only used within - * libvirt, but still must maintain backward compatibility, because - * different versions of libvirt may read the same data file. - */ -struct _virDomainActualNetDef { - int type; /* enum virDomainNetType */ - union { - struct { - char *brname; - int macTableManager; /* enum virNetworkBridgeMACTableManagerTy= pe */ - } bridge; - struct { - char *linkdev; - int mode; /* enum virMacvtapMode from util/macvtap.h */ - } direct; - struct { - virDomainHostdevDef def; - } hostdev; - } data; - virNetDevVPortProfilePtr virtPortProfile; - virNetDevBandwidthPtr bandwidth; - virNetDevVlan vlan; - int trustGuestRxFilters; /* enum virTristateBool */ - unsigned int class_id; /* class ID for bandwidth 'floor' */ -}; - -/* Stores the virtual network interface configuration */ -struct _virDomainNetDef { - virDomainNetType type; - virMacAddr mac; - bool mac_generated; /* true if mac was *just now* auto-generated by li= bvirt */ - int model; /* virDomainNetModelType */ - char *modelstr; - union { - struct { - virDomainNetBackendType name; /* which driver backend to use */ - virDomainNetVirtioTxModeType txmode; - virTristateSwitch ioeventfd; - virTristateSwitch event_idx; - unsigned int queues; /* Multiqueue virtio-net */ - unsigned int rx_queue_size; - unsigned int tx_queue_size; - struct { - virTristateSwitch csum; - virTristateSwitch gso; - virTristateSwitch tso4; - virTristateSwitch tso6; - virTristateSwitch ecn; - virTristateSwitch ufo; - virTristateSwitch mrg_rxbuf; - } host; - struct { - virTristateSwitch csum; - virTristateSwitch tso4; - virTristateSwitch tso6; - virTristateSwitch ecn; - virTristateSwitch ufo; - } guest; - } virtio; - } driver; - struct { - char *tap; - char *vhost; - } backend; - union { - virDomainChrSourceDefPtr vhostuser; - struct { - char *address; - int port; - char *localaddr; - int localport; - } socket; /* any of NET_CLIENT or NET_SERVER or NET_MCAST */ - struct { - char *name; - char *portgroup; - unsigned char portid[VIR_UUID_BUFLEN]; - /* actual has info about the currently used physical - * device (if the network is of type - * bridge/private/vepa/passthrough). This is saved in the - * domain state, but never written to persistent config, - * since it needs to be re-allocated whenever the domain - * is restarted. It is also never shown to the user, and - * the user cannot specify it in XML documents. - * - * This information is populated from the virNetworkPort - * object associated with the portid UUID above. - */ - virDomainActualNetDefPtr actual; - } network; - struct { - char *brname; - } bridge; - struct { - char *name; - } internal; - struct { - char *linkdev; - int mode; /* enum virMacvtapMode from util/macvtap.h */ - } direct; - struct { - virDomainHostdevDef def; - } hostdev; - } data; - /* virtPortProfile is used by network/bridge/direct/hostdev */ - virNetDevVPortProfilePtr virtPortProfile; - struct { - bool sndbuf_specified; - unsigned long sndbuf; - } tune; - char *script; - char *domain_name; /* backend domain name */ - char *ifname; /* interface name on the host () */ - virNetDevIPInfo hostIP; - char *ifname_guest_actual; - char *ifname_guest; - virNetDevIPInfo guestIP; - virDomainDeviceInfo info; - char *filter; - virHashTablePtr filterparams; - virNetDevBandwidthPtr bandwidth; - virNetDevVlan vlan; - int trustGuestRxFilters; /* enum virTristateBool */ - int linkstate; - unsigned int mtu; - virNetDevCoalescePtr coalesce; - virDomainVirtioOptionsPtr virtio; -}; - -typedef enum { - VIR_DOMAIN_CHR_DEVICE_STATE_DEFAULT =3D 0, - VIR_DOMAIN_CHR_DEVICE_STATE_CONNECTED, - VIR_DOMAIN_CHR_DEVICE_STATE_DISCONNECTED, - - VIR_DOMAIN_CHR_DEVICE_STATE_LAST -} virDomainChrDeviceState; - -VIR_ENUM_DECL(virDomainChrDeviceState); - -typedef enum { - VIR_DOMAIN_CHR_DEVICE_TYPE_PARALLEL =3D 0, - VIR_DOMAIN_CHR_DEVICE_TYPE_SERIAL, - VIR_DOMAIN_CHR_DEVICE_TYPE_CONSOLE, - VIR_DOMAIN_CHR_DEVICE_TYPE_CHANNEL, - - VIR_DOMAIN_CHR_DEVICE_TYPE_LAST -} virDomainChrDeviceType; - -typedef enum { - VIR_DOMAIN_CHR_SERIAL_TARGET_TYPE_NONE =3D 0, - VIR_DOMAIN_CHR_SERIAL_TARGET_TYPE_ISA, - VIR_DOMAIN_CHR_SERIAL_TARGET_TYPE_USB, - VIR_DOMAIN_CHR_SERIAL_TARGET_TYPE_PCI, - VIR_DOMAIN_CHR_SERIAL_TARGET_TYPE_SPAPR_VIO, - VIR_DOMAIN_CHR_SERIAL_TARGET_TYPE_SYSTEM, - VIR_DOMAIN_CHR_SERIAL_TARGET_TYPE_SCLP, - - VIR_DOMAIN_CHR_SERIAL_TARGET_TYPE_LAST -} virDomainChrSerialTargetType; - -typedef enum { - VIR_DOMAIN_CHR_CHANNEL_TARGET_TYPE_NONE =3D 0, - VIR_DOMAIN_CHR_CHANNEL_TARGET_TYPE_GUESTFWD, - VIR_DOMAIN_CHR_CHANNEL_TARGET_TYPE_VIRTIO, - VIR_DOMAIN_CHR_CHANNEL_TARGET_TYPE_XEN, - - VIR_DOMAIN_CHR_CHANNEL_TARGET_TYPE_LAST -} virDomainChrChannelTargetType; - -typedef enum { - VIR_DOMAIN_CHR_CONSOLE_TARGET_TYPE_NONE =3D 0, - VIR_DOMAIN_CHR_CONSOLE_TARGET_TYPE_SERIAL, - VIR_DOMAIN_CHR_CONSOLE_TARGET_TYPE_XEN, - VIR_DOMAIN_CHR_CONSOLE_TARGET_TYPE_UML, - VIR_DOMAIN_CHR_CONSOLE_TARGET_TYPE_VIRTIO, - VIR_DOMAIN_CHR_CONSOLE_TARGET_TYPE_LXC, - VIR_DOMAIN_CHR_CONSOLE_TARGET_TYPE_OPENVZ, - VIR_DOMAIN_CHR_CONSOLE_TARGET_TYPE_SCLP, - VIR_DOMAIN_CHR_CONSOLE_TARGET_TYPE_SCLPLM, - - VIR_DOMAIN_CHR_CONSOLE_TARGET_TYPE_LAST -} virDomainChrConsoleTargetType; - -typedef enum { - VIR_DOMAIN_CHR_SERIAL_TARGET_MODEL_NONE =3D 0, - VIR_DOMAIN_CHR_SERIAL_TARGET_MODEL_ISA_SERIAL, - VIR_DOMAIN_CHR_SERIAL_TARGET_MODEL_USB_SERIAL, - VIR_DOMAIN_CHR_SERIAL_TARGET_MODEL_PCI_SERIAL, - VIR_DOMAIN_CHR_SERIAL_TARGET_MODEL_SPAPR_VTY, - VIR_DOMAIN_CHR_SERIAL_TARGET_MODEL_PL011, - VIR_DOMAIN_CHR_SERIAL_TARGET_MODEL_SCLPCONSOLE, - VIR_DOMAIN_CHR_SERIAL_TARGET_MODEL_SCLPLMCONSOLE, - VIR_DOMAIN_CHR_SERIAL_TARGET_MODEL_16550A, - - VIR_DOMAIN_CHR_SERIAL_TARGET_MODEL_LAST -} virDomainChrSerialTargetModel; - -VIR_ENUM_DECL(virDomainChrSerialTargetModel); - -typedef enum { - VIR_DOMAIN_CHR_TYPE_NULL, - VIR_DOMAIN_CHR_TYPE_VC, - VIR_DOMAIN_CHR_TYPE_PTY, - VIR_DOMAIN_CHR_TYPE_DEV, - VIR_DOMAIN_CHR_TYPE_FILE, - VIR_DOMAIN_CHR_TYPE_PIPE, - VIR_DOMAIN_CHR_TYPE_STDIO, - VIR_DOMAIN_CHR_TYPE_UDP, - VIR_DOMAIN_CHR_TYPE_TCP, - VIR_DOMAIN_CHR_TYPE_UNIX, - VIR_DOMAIN_CHR_TYPE_SPICEVMC, - VIR_DOMAIN_CHR_TYPE_SPICEPORT, - VIR_DOMAIN_CHR_TYPE_NMDM, - - VIR_DOMAIN_CHR_TYPE_LAST -} virDomainChrType; - -typedef enum { - VIR_DOMAIN_CHR_TCP_PROTOCOL_RAW =3D 0, - VIR_DOMAIN_CHR_TCP_PROTOCOL_TELNET, - VIR_DOMAIN_CHR_TCP_PROTOCOL_TELNETS, /* secure telnet */ - VIR_DOMAIN_CHR_TCP_PROTOCOL_TLS, - - VIR_DOMAIN_CHR_TCP_PROTOCOL_LAST -} virDomainChrTcpProtocol; - -typedef enum { - VIR_DOMAIN_CHR_SPICEVMC_VDAGENT, - VIR_DOMAIN_CHR_SPICEVMC_SMARTCARD, - VIR_DOMAIN_CHR_SPICEVMC_USBREDIR, - - VIR_DOMAIN_CHR_SPICEVMC_LAST -} virDomainChrSpicevmcName; - - -struct _virDomainChrSourceReconnectDef { - virTristateBool enabled; - unsigned int timeout; -}; - - -/* The host side information for a character device. */ -struct _virDomainChrSourceDef { - virObject parent; - int type; /* virDomainChrType */ - virObjectPtr privateData; - union { - /* no for null, vc, stdio */ - struct { - char *path; - int append; /* enum virTristateSwitch */ - } file; /* pty, file, pipe, or device */ - struct { - char *master; - char *slave; - } nmdm; - struct { - char *host; - char *service; - bool listen; - int protocol; - bool tlscreds; - int haveTLS; /* enum virTristateBool */ - bool tlsFromConfig; - virDomainChrSourceReconnectDef reconnect; - } tcp; - struct { - char *bindHost; - char *bindService; - char *connectHost; - char *connectService; - } udp; - struct { - char *path; - bool listen; - virDomainChrSourceReconnectDef reconnect; - } nix; - int spicevmc; - struct { - char *channel; - } spiceport; - } data; - char *logfile; - int logappend; - - size_t nseclabels; - virSecurityDeviceLabelDefPtr *seclabels; -}; - -/* A complete character device, both host and domain views. */ -struct _virDomainChrDef { - int deviceType; /* enum virDomainChrDeviceType */ - - int targetType; /* enum virDomainChrConsoleTargetType || - enum virDomainChrChannelTargetType || - enum virDomainChrSerialTargetType according to devi= ceType */ - int targetModel; /* enum virDomainChrSerialTargetModel */ - - union { - int port; /* parallel, serial, console */ - virSocketAddrPtr addr; /* guestfwd */ - char *name; /* virtio */ - } target; - - virDomainChrDeviceState state; - - virDomainChrSourceDefPtr source; - - virDomainDeviceInfo info; -}; - -typedef enum { - VIR_DOMAIN_SMARTCARD_TYPE_HOST, - VIR_DOMAIN_SMARTCARD_TYPE_HOST_CERTIFICATES, - VIR_DOMAIN_SMARTCARD_TYPE_PASSTHROUGH, - - VIR_DOMAIN_SMARTCARD_TYPE_LAST -} virDomainSmartcardType; - -#define VIR_DOMAIN_SMARTCARD_NUM_CERTIFICATES 3 -#define VIR_DOMAIN_SMARTCARD_DEFAULT_DATABASE "/etc/pki/nssdb" - -struct _virDomainSmartcardDef { - int type; /* virDomainSmartcardType */ - union { - /* no extra data for 'host' */ - struct { - char *file[VIR_DOMAIN_SMARTCARD_NUM_CERTIFICATES]; - char *database; - } cert; /* 'host-certificates' */ - virDomainChrSourceDefPtr passthru; /* 'passthrough' */ - } data; - - virDomainDeviceInfo info; -}; - -struct _virDomainHubDef { - int type; - virDomainDeviceInfo info; -}; - -typedef enum { - VIR_DOMAIN_TPM_MODEL_TIS, - VIR_DOMAIN_TPM_MODEL_CRB, - - VIR_DOMAIN_TPM_MODEL_LAST -} virDomainTPMModel; - -typedef enum { - VIR_DOMAIN_TPM_TYPE_PASSTHROUGH, - VIR_DOMAIN_TPM_TYPE_EMULATOR, - - VIR_DOMAIN_TPM_TYPE_LAST -} virDomainTPMBackendType; - -typedef enum { - VIR_DOMAIN_TPM_VERSION_DEFAULT, - VIR_DOMAIN_TPM_VERSION_1_2, - VIR_DOMAIN_TPM_VERSION_2_0, - - VIR_DOMAIN_TPM_VERSION_LAST -} virDomainTPMVersion; - -#define VIR_DOMAIN_TPM_DEFAULT_DEVICE "/dev/tpm0" - -struct _virDomainTPMDef { - int type; /* virDomainTPMBackendType */ - virDomainDeviceInfo info; - int model; /* virDomainTPMModel */ - int version; /* virDomainTPMVersion */ - union { - struct { - virDomainChrSourceDef source; - } passthrough; - struct { - virDomainChrSourceDef source; - char *storagepath; - char *logfile; - } emulator; - } data; -}; - -typedef enum { - VIR_DOMAIN_INPUT_TYPE_MOUSE, - VIR_DOMAIN_INPUT_TYPE_TABLET, - VIR_DOMAIN_INPUT_TYPE_KBD, - VIR_DOMAIN_INPUT_TYPE_PASSTHROUGH, - - VIR_DOMAIN_INPUT_TYPE_LAST -} virDomainInputType; - -typedef enum { - VIR_DOMAIN_INPUT_BUS_PS2, - VIR_DOMAIN_INPUT_BUS_USB, - VIR_DOMAIN_INPUT_BUS_XEN, - VIR_DOMAIN_INPUT_BUS_PARALLELS, /* pseudo device for VNC in containers= */ - VIR_DOMAIN_INPUT_BUS_VIRTIO, - - VIR_DOMAIN_INPUT_BUS_LAST -} virDomainInputBus; - -typedef enum { - VIR_DOMAIN_INPUT_MODEL_DEFAULT =3D 0, - VIR_DOMAIN_INPUT_MODEL_VIRTIO, - VIR_DOMAIN_INPUT_MODEL_VIRTIO_TRANSITIONAL, - VIR_DOMAIN_INPUT_MODEL_VIRTIO_NON_TRANSITIONAL, - - VIR_DOMAIN_INPUT_MODEL_LAST -} virDomainInputModel; - -struct _virDomainInputDef { - int type; - int bus; - int model; /* virDomainInputModel */ - struct { - char *evdev; - } source; - virDomainDeviceInfo info; - virDomainVirtioOptionsPtr virtio; -}; - -typedef enum { - VIR_DOMAIN_SOUND_CODEC_TYPE_DUPLEX, - VIR_DOMAIN_SOUND_CODEC_TYPE_MICRO, - VIR_DOMAIN_SOUND_CODEC_TYPE_OUTPUT, - - VIR_DOMAIN_SOUND_CODEC_TYPE_LAST -} virDomainSoundCodecType; - -typedef enum { - VIR_DOMAIN_SOUND_MODEL_SB16, - VIR_DOMAIN_SOUND_MODEL_ES1370, - VIR_DOMAIN_SOUND_MODEL_PCSPK, - VIR_DOMAIN_SOUND_MODEL_AC97, - VIR_DOMAIN_SOUND_MODEL_ICH6, - VIR_DOMAIN_SOUND_MODEL_ICH9, - VIR_DOMAIN_SOUND_MODEL_USB, - - VIR_DOMAIN_SOUND_MODEL_LAST -} virDomainSoundModel; - -struct _virDomainSoundCodecDef { - int type; - int cad; -}; - -struct _virDomainSoundDef { - int model; - virDomainDeviceInfo info; - - size_t ncodecs; - virDomainSoundCodecDefPtr *codecs; -}; - -typedef enum { - VIR_DOMAIN_WATCHDOG_MODEL_I6300ESB, - VIR_DOMAIN_WATCHDOG_MODEL_IB700, - VIR_DOMAIN_WATCHDOG_MODEL_DIAG288, - - VIR_DOMAIN_WATCHDOG_MODEL_LAST -} virDomainWatchdogModel; - -typedef enum { - VIR_DOMAIN_WATCHDOG_ACTION_RESET, - VIR_DOMAIN_WATCHDOG_ACTION_SHUTDOWN, - VIR_DOMAIN_WATCHDOG_ACTION_POWEROFF, - VIR_DOMAIN_WATCHDOG_ACTION_PAUSE, - VIR_DOMAIN_WATCHDOG_ACTION_DUMP, - VIR_DOMAIN_WATCHDOG_ACTION_NONE, - VIR_DOMAIN_WATCHDOG_ACTION_INJECTNMI, - - VIR_DOMAIN_WATCHDOG_ACTION_LAST -} virDomainWatchdogAction; - -struct _virDomainWatchdogDef { - int model; - int action; - virDomainDeviceInfo info; -}; - - -typedef enum { - VIR_DOMAIN_VIDEO_TYPE_DEFAULT, - VIR_DOMAIN_VIDEO_TYPE_VGA, - VIR_DOMAIN_VIDEO_TYPE_CIRRUS, - VIR_DOMAIN_VIDEO_TYPE_VMVGA, - VIR_DOMAIN_VIDEO_TYPE_XEN, - VIR_DOMAIN_VIDEO_TYPE_VBOX, - VIR_DOMAIN_VIDEO_TYPE_QXL, - VIR_DOMAIN_VIDEO_TYPE_PARALLELS, /* pseudo device for VNC in container= s */ - VIR_DOMAIN_VIDEO_TYPE_VIRTIO, - VIR_DOMAIN_VIDEO_TYPE_GOP, - VIR_DOMAIN_VIDEO_TYPE_NONE, - VIR_DOMAIN_VIDEO_TYPE_BOCHS, - - VIR_DOMAIN_VIDEO_TYPE_LAST -} virDomainVideoType; - - -typedef enum { - VIR_DOMAIN_VIDEO_VGACONF_IO =3D 0, - VIR_DOMAIN_VIDEO_VGACONF_ON, - VIR_DOMAIN_VIDEO_VGACONF_OFF, - - VIR_DOMAIN_VIDEO_VGACONF_LAST -} virDomainVideoVGAConf; - -VIR_ENUM_DECL(virDomainVideoVGAConf); - -struct _virDomainVideoAccelDef { - int accel2d; /* enum virTristateBool */ - int accel3d; /* enum virTristateBool */ -}; - - -struct _virDomainVideoDriverDef { - virDomainVideoVGAConf vgaconf; -}; - -struct _virDomainVideoDef { - int type; /* enum virDomainVideoType */ - unsigned int ram; /* kibibytes (multiples of 1024) */ - unsigned int vram; /* kibibytes (multiples of 1024) */ - unsigned int vram64; /* kibibytes (multiples of 1024) */ - unsigned int vgamem; /* kibibytes (multiples of 1024) */ - unsigned int heads; - bool primary; - virDomainVideoAccelDefPtr accel; - virDomainVideoDriverDefPtr driver; - virDomainDeviceInfo info; - virDomainVirtioOptionsPtr virtio; -}; - -/* graphics console modes */ -typedef enum { - VIR_DOMAIN_GRAPHICS_TYPE_SDL, - VIR_DOMAIN_GRAPHICS_TYPE_VNC, - VIR_DOMAIN_GRAPHICS_TYPE_RDP, - VIR_DOMAIN_GRAPHICS_TYPE_DESKTOP, - VIR_DOMAIN_GRAPHICS_TYPE_SPICE, - VIR_DOMAIN_GRAPHICS_TYPE_EGL_HEADLESS, - - VIR_DOMAIN_GRAPHICS_TYPE_LAST -} virDomainGraphicsType; - -typedef enum { - VIR_DOMAIN_GRAPHICS_VNC_SHARE_DEFAULT =3D 0, - VIR_DOMAIN_GRAPHICS_VNC_SHARE_ALLOW_EXCLUSIVE, - VIR_DOMAIN_GRAPHICS_VNC_SHARE_FORCE_SHARED, - VIR_DOMAIN_GRAPHICS_VNC_SHARE_IGNORE, - - VIR_DOMAIN_GRAPHICS_VNC_SHARE_LAST -} virDomainGraphicsVNCSharePolicy; - -typedef enum { - VIR_DOMAIN_GRAPHICS_AUTH_CONNECTED_DEFAULT =3D 0, - VIR_DOMAIN_GRAPHICS_AUTH_CONNECTED_FAIL, - VIR_DOMAIN_GRAPHICS_AUTH_CONNECTED_DISCONNECT, - VIR_DOMAIN_GRAPHICS_AUTH_CONNECTED_KEEP, - - VIR_DOMAIN_GRAPHICS_AUTH_CONNECTED_LAST -} virDomainGraphicsAuthConnectedType; - -struct _virDomainGraphicsAuthDef { - char *passwd; - bool expires; /* Whether there is an expiry time set */ - time_t validTo; /* seconds since epoch */ - int connected; /* action if connected */ -}; - -typedef enum { - VIR_DOMAIN_GRAPHICS_SPICE_CHANNEL_MAIN, - VIR_DOMAIN_GRAPHICS_SPICE_CHANNEL_DISPLAY, - VIR_DOMAIN_GRAPHICS_SPICE_CHANNEL_INPUT, - VIR_DOMAIN_GRAPHICS_SPICE_CHANNEL_CURSOR, - VIR_DOMAIN_GRAPHICS_SPICE_CHANNEL_PLAYBACK, - VIR_DOMAIN_GRAPHICS_SPICE_CHANNEL_RECORD, - VIR_DOMAIN_GRAPHICS_SPICE_CHANNEL_SMARTCARD, - VIR_DOMAIN_GRAPHICS_SPICE_CHANNEL_USBREDIR, - - VIR_DOMAIN_GRAPHICS_SPICE_CHANNEL_LAST -} virDomainGraphicsSpiceChannelName; - -typedef enum { - VIR_DOMAIN_GRAPHICS_SPICE_CHANNEL_MODE_ANY, - VIR_DOMAIN_GRAPHICS_SPICE_CHANNEL_MODE_SECURE, - VIR_DOMAIN_GRAPHICS_SPICE_CHANNEL_MODE_INSECURE, - - VIR_DOMAIN_GRAPHICS_SPICE_CHANNEL_MODE_LAST -} virDomainGraphicsSpiceChannelMode; - -typedef enum { - VIR_DOMAIN_GRAPHICS_SPICE_IMAGE_COMPRESSION_DEFAULT =3D 0, - VIR_DOMAIN_GRAPHICS_SPICE_IMAGE_COMPRESSION_AUTO_GLZ, - VIR_DOMAIN_GRAPHICS_SPICE_IMAGE_COMPRESSION_AUTO_LZ, - VIR_DOMAIN_GRAPHICS_SPICE_IMAGE_COMPRESSION_QUIC, - VIR_DOMAIN_GRAPHICS_SPICE_IMAGE_COMPRESSION_GLZ, - VIR_DOMAIN_GRAPHICS_SPICE_IMAGE_COMPRESSION_LZ, - VIR_DOMAIN_GRAPHICS_SPICE_IMAGE_COMPRESSION_OFF, - - VIR_DOMAIN_GRAPHICS_SPICE_IMAGE_COMPRESSION_LAST -} virDomainGraphicsSpiceImageCompression; - -typedef enum { - VIR_DOMAIN_GRAPHICS_SPICE_JPEG_COMPRESSION_DEFAULT =3D 0, - VIR_DOMAIN_GRAPHICS_SPICE_JPEG_COMPRESSION_AUTO, - VIR_DOMAIN_GRAPHICS_SPICE_JPEG_COMPRESSION_NEVER, - VIR_DOMAIN_GRAPHICS_SPICE_JPEG_COMPRESSION_ALWAYS, - - VIR_DOMAIN_GRAPHICS_SPICE_JPEG_COMPRESSION_LAST -} virDomainGraphicsSpiceJpegCompression; - -typedef enum { - VIR_DOMAIN_GRAPHICS_SPICE_ZLIB_COMPRESSION_DEFAULT =3D 0, - VIR_DOMAIN_GRAPHICS_SPICE_ZLIB_COMPRESSION_AUTO, - VIR_DOMAIN_GRAPHICS_SPICE_ZLIB_COMPRESSION_NEVER, - VIR_DOMAIN_GRAPHICS_SPICE_ZLIB_COMPRESSION_ALWAYS, - - VIR_DOMAIN_GRAPHICS_SPICE_ZLIB_COMPRESSION_LAST -} virDomainGraphicsSpiceZlibCompression; - -typedef enum { - VIR_DOMAIN_GRAPHICS_SPICE_MOUSE_MODE_DEFAULT =3D 0, - VIR_DOMAIN_GRAPHICS_SPICE_MOUSE_MODE_SERVER, - VIR_DOMAIN_GRAPHICS_SPICE_MOUSE_MODE_CLIENT, - - VIR_DOMAIN_GRAPHICS_SPICE_MOUSE_MODE_LAST -} virDomainGraphicsSpiceMouseMode; - -typedef enum { - VIR_DOMAIN_GRAPHICS_SPICE_STREAMING_MODE_DEFAULT =3D 0, - VIR_DOMAIN_GRAPHICS_SPICE_STREAMING_MODE_FILTER, - VIR_DOMAIN_GRAPHICS_SPICE_STREAMING_MODE_ALL, - VIR_DOMAIN_GRAPHICS_SPICE_STREAMING_MODE_OFF, - - VIR_DOMAIN_GRAPHICS_SPICE_STREAMING_MODE_LAST -} virDomainGraphicsSpiceStreamingMode; - -typedef enum { - VIR_DOMAIN_GRAPHICS_LISTEN_TYPE_NONE =3D 0, - VIR_DOMAIN_GRAPHICS_LISTEN_TYPE_ADDRESS, - VIR_DOMAIN_GRAPHICS_LISTEN_TYPE_NETWORK, - VIR_DOMAIN_GRAPHICS_LISTEN_TYPE_SOCKET, - - VIR_DOMAIN_GRAPHICS_LISTEN_TYPE_LAST -} virDomainGraphicsListenType; - -typedef enum { - VIR_DOMAIN_HUB_TYPE_USB, - - VIR_DOMAIN_HUB_TYPE_LAST -} virDomainHubType; - -struct _virDomainGraphicsListenDef { - virDomainGraphicsListenType type; - char *address; - char *network; - char *socket; - bool fromConfig; /* true if the @address is config file originated = */ - bool autoGenerated; -}; - -struct _virDomainGraphicsDef { - virObjectPtr privateData; - - /* Port value discipline: - * Value -1 is legacy syntax indicating that it should be auto-allocat= ed. - * Value 0 means port wasn't specified in XML at all. - * Positive value is actual port number given in XML. - */ - virDomainGraphicsType type; - union { - struct { - int port; - bool portReserved; - int websocket; - bool websocketGenerated; - bool autoport; - char *keymap; - virDomainGraphicsAuthDef auth; - int sharePolicy; - } vnc; - struct { - char *display; - char *xauth; - bool fullscreen; - virTristateBool gl; - } sdl; - struct { - int port; - bool autoport; - bool replaceUser; - bool multiUser; - } rdp; - struct { - char *display; - bool fullscreen; - } desktop; - struct { - int port; - int tlsPort; - bool portReserved; - bool tlsPortReserved; - virDomainGraphicsSpiceMouseMode mousemode; - char *keymap; - virDomainGraphicsAuthDef auth; - bool autoport; - int channels[VIR_DOMAIN_GRAPHICS_SPICE_CHANNEL_LAST]; - virDomainGraphicsSpiceChannelMode defaultMode; - int image; - int jpeg; - int zlib; - int playback; - int streaming; - virTristateBool copypaste; - virTristateBool filetransfer; - virTristateBool gl; - char *rendernode; - } spice; - struct { - char *rendernode; - } egl_headless; - } data; - /* nListens, listens, and *port are only useful if type is vnc, - * rdp, or spice. They've been extracted from the union only to - * simplify parsing code.*/ - size_t nListens; - virDomainGraphicsListenDefPtr listens; -}; - -typedef enum { - VIR_DOMAIN_REDIRDEV_BUS_USB, - - VIR_DOMAIN_REDIRDEV_BUS_LAST -} virDomainRedirdevBus; - -struct _virDomainRedirdevDef { - int bus; /* enum virDomainRedirdevBus */ - - virDomainChrSourceDefPtr source; - - virDomainDeviceInfo info; /* Guest address */ -}; - -struct _virDomainRedirFilterUSBDevDef { - int usbClass; - int vendor; - int product; - int version; - bool allow; -}; - -struct _virDomainRedirFilterDef { - size_t nusbdevs; - virDomainRedirFilterUSBDevDefPtr *usbdevs; -}; - -typedef enum { - VIR_DOMAIN_MEMBALLOON_MODEL_VIRTIO, - VIR_DOMAIN_MEMBALLOON_MODEL_XEN, - VIR_DOMAIN_MEMBALLOON_MODEL_NONE, - VIR_DOMAIN_MEMBALLOON_MODEL_VIRTIO_TRANSITIONAL, - VIR_DOMAIN_MEMBALLOON_MODEL_VIRTIO_NON_TRANSITIONAL, - - VIR_DOMAIN_MEMBALLOON_MODEL_LAST -} virDomainMemballoonModel; - -struct _virDomainMemballoonDef { - int model; - virDomainDeviceInfo info; - int period; /* seconds between collections */ - int autodeflate; /* enum virTristateSwitch */ - virDomainVirtioOptionsPtr virtio; -}; - -struct _virDomainNVRAMDef { - virDomainDeviceInfo info; -}; - -typedef enum { - VIR_DOMAIN_SHMEM_MODEL_IVSHMEM, - VIR_DOMAIN_SHMEM_MODEL_IVSHMEM_PLAIN, - VIR_DOMAIN_SHMEM_MODEL_IVSHMEM_DOORBELL, - - VIR_DOMAIN_SHMEM_MODEL_LAST -} virDomainShmemModel; - -struct _virDomainShmemDef { - char *name; - unsigned long long size; - int model; /* enum virDomainShmemModel */ - struct { - bool enabled; - virDomainChrSourceDef chr; - } server; - struct { - bool enabled; - unsigned vectors; - virTristateSwitch ioeventfd; - } msi; - virDomainDeviceInfo info; -}; - -typedef enum { - VIR_DOMAIN_SMBIOS_NONE =3D 0, - VIR_DOMAIN_SMBIOS_EMULATE, - VIR_DOMAIN_SMBIOS_HOST, - VIR_DOMAIN_SMBIOS_SYSINFO, - - VIR_DOMAIN_SMBIOS_LAST -} virDomainSmbiosMode; - - -#define VIR_DOMAIN_MAX_BOOT_DEVS 4 - -typedef enum { - VIR_DOMAIN_BOOT_FLOPPY, - VIR_DOMAIN_BOOT_CDROM, - VIR_DOMAIN_BOOT_DISK, - VIR_DOMAIN_BOOT_NET, - - VIR_DOMAIN_BOOT_LAST -} virDomainBootOrder; - -typedef enum { - VIR_DOMAIN_FEATURE_ACPI, - VIR_DOMAIN_FEATURE_APIC, - VIR_DOMAIN_FEATURE_PAE, - VIR_DOMAIN_FEATURE_HAP, - VIR_DOMAIN_FEATURE_VIRIDIAN, - VIR_DOMAIN_FEATURE_PRIVNET, - VIR_DOMAIN_FEATURE_HYPERV, - VIR_DOMAIN_FEATURE_KVM, - VIR_DOMAIN_FEATURE_PVSPINLOCK, - VIR_DOMAIN_FEATURE_CAPABILITIES, - VIR_DOMAIN_FEATURE_PMU, - VIR_DOMAIN_FEATURE_VMPORT, - VIR_DOMAIN_FEATURE_GIC, - VIR_DOMAIN_FEATURE_SMM, - VIR_DOMAIN_FEATURE_IOAPIC, - VIR_DOMAIN_FEATURE_HPT, - VIR_DOMAIN_FEATURE_VMCOREINFO, - VIR_DOMAIN_FEATURE_HTM, - VIR_DOMAIN_FEATURE_NESTED_HV, - VIR_DOMAIN_FEATURE_MSRS, - - VIR_DOMAIN_FEATURE_LAST -} virDomainFeature; - -#define VIR_DOMAIN_HYPERV_VENDOR_ID_MAX 12 - -typedef enum { - VIR_DOMAIN_HYPERV_RELAXED =3D 0, - VIR_DOMAIN_HYPERV_VAPIC, - VIR_DOMAIN_HYPERV_SPINLOCKS, - VIR_DOMAIN_HYPERV_VPINDEX, - VIR_DOMAIN_HYPERV_RUNTIME, - VIR_DOMAIN_HYPERV_SYNIC, - VIR_DOMAIN_HYPERV_STIMER, - VIR_DOMAIN_HYPERV_RESET, - VIR_DOMAIN_HYPERV_VENDOR_ID, - VIR_DOMAIN_HYPERV_FREQUENCIES, - VIR_DOMAIN_HYPERV_REENLIGHTENMENT, - VIR_DOMAIN_HYPERV_TLBFLUSH, - VIR_DOMAIN_HYPERV_IPI, - VIR_DOMAIN_HYPERV_EVMCS, - - VIR_DOMAIN_HYPERV_LAST -} virDomainHyperv; - -typedef enum { - VIR_DOMAIN_KVM_HIDDEN =3D 0, - - VIR_DOMAIN_KVM_LAST -} virDomainKVM; - -typedef enum { - VIR_DOMAIN_MSRS_UNKNOWN =3D 0, - - VIR_DOMAIN_MSRS_LAST -} virDomainMsrs; - -typedef enum { - VIR_DOMAIN_MSRS_UNKNOWN_IGNORE =3D 0, - VIR_DOMAIN_MSRS_UNKNOWN_FAULT, - - VIR_DOMAIN_MSRS_UNKNOWN_LAST -} virDomainMsrsUnknown; - -typedef enum { - VIR_DOMAIN_CAPABILITIES_POLICY_DEFAULT =3D 0, - VIR_DOMAIN_CAPABILITIES_POLICY_ALLOW, - VIR_DOMAIN_CAPABILITIES_POLICY_DENY, - - VIR_DOMAIN_CAPABILITIES_POLICY_LAST -} virDomainCapabilitiesPolicy; - -/* The capabilities are ordered alphabetically to help check for new ones = */ -typedef enum { - VIR_DOMAIN_CAPS_FEATURE_AUDIT_CONTROL =3D 0, - VIR_DOMAIN_CAPS_FEATURE_AUDIT_WRITE, - VIR_DOMAIN_CAPS_FEATURE_BLOCK_SUSPEND, - VIR_DOMAIN_CAPS_FEATURE_CHOWN, - VIR_DOMAIN_CAPS_FEATURE_DAC_OVERRIDE, - VIR_DOMAIN_CAPS_FEATURE_DAC_READ_SEARCH, - VIR_DOMAIN_CAPS_FEATURE_FOWNER, - VIR_DOMAIN_CAPS_FEATURE_FSETID, - VIR_DOMAIN_CAPS_FEATURE_IPC_LOCK, - VIR_DOMAIN_CAPS_FEATURE_IPC_OWNER, - VIR_DOMAIN_CAPS_FEATURE_KILL, - VIR_DOMAIN_CAPS_FEATURE_LEASE, - VIR_DOMAIN_CAPS_FEATURE_LINUX_IMMUTABLE, - VIR_DOMAIN_CAPS_FEATURE_MAC_ADMIN, - VIR_DOMAIN_CAPS_FEATURE_MAC_OVERRIDE, - VIR_DOMAIN_CAPS_FEATURE_MKNOD, - VIR_DOMAIN_CAPS_FEATURE_NET_ADMIN, - VIR_DOMAIN_CAPS_FEATURE_NET_BIND_SERVICE, - VIR_DOMAIN_CAPS_FEATURE_NET_BROADCAST, - VIR_DOMAIN_CAPS_FEATURE_NET_RAW, - VIR_DOMAIN_CAPS_FEATURE_SETGID, - VIR_DOMAIN_CAPS_FEATURE_SETFCAP, - VIR_DOMAIN_CAPS_FEATURE_SETPCAP, - VIR_DOMAIN_CAPS_FEATURE_SETUID, - VIR_DOMAIN_CAPS_FEATURE_SYS_ADMIN, - VIR_DOMAIN_CAPS_FEATURE_SYS_BOOT, - VIR_DOMAIN_CAPS_FEATURE_SYS_CHROOT, - VIR_DOMAIN_CAPS_FEATURE_SYS_MODULE, - VIR_DOMAIN_CAPS_FEATURE_SYS_NICE, - VIR_DOMAIN_CAPS_FEATURE_SYS_PACCT, - VIR_DOMAIN_CAPS_FEATURE_SYS_PTRACE, - VIR_DOMAIN_CAPS_FEATURE_SYS_RAWIO, - VIR_DOMAIN_CAPS_FEATURE_SYS_RESOURCE, - VIR_DOMAIN_CAPS_FEATURE_SYS_TIME, - VIR_DOMAIN_CAPS_FEATURE_SYS_TTY_CONFIG, - VIR_DOMAIN_CAPS_FEATURE_SYSLOG, - VIR_DOMAIN_CAPS_FEATURE_WAKE_ALARM, - VIR_DOMAIN_CAPS_FEATURE_LAST -} virDomainCapsFeature; - -typedef enum { - VIR_DOMAIN_LOCK_FAILURE_DEFAULT, - VIR_DOMAIN_LOCK_FAILURE_POWEROFF, - VIR_DOMAIN_LOCK_FAILURE_RESTART, - VIR_DOMAIN_LOCK_FAILURE_PAUSE, - VIR_DOMAIN_LOCK_FAILURE_IGNORE, - - VIR_DOMAIN_LOCK_FAILURE_LAST -} virDomainLockFailureAction; - -VIR_ENUM_DECL(virDomainLockFailure); - -struct _virDomainBIOSDef { - int useserial; /* enum virTristateBool */ - /* reboot-timeout parameters */ - bool rt_set; - int rt_delay; -}; - -typedef enum { - VIR_DOMAIN_LOADER_TYPE_NONE =3D 0, - VIR_DOMAIN_LOADER_TYPE_ROM, - VIR_DOMAIN_LOADER_TYPE_PFLASH, - - VIR_DOMAIN_LOADER_TYPE_LAST -} virDomainLoader; - -VIR_ENUM_DECL(virDomainLoader); - -struct _virDomainLoaderDef { - char *path; - int readonly; /* enum virTristateBool */ - virDomainLoader type; - int secure; /* enum virTristateBool */ - char *nvram; /* path to non-volatile RAM */ - char *templt; /* user override of path to master nvram */ -}; - -void virDomainLoaderDefFree(virDomainLoaderDefPtr loader); - -typedef enum { - VIR_DOMAIN_IOAPIC_NONE =3D 0, - VIR_DOMAIN_IOAPIC_QEMU, - VIR_DOMAIN_IOAPIC_KVM, - - VIR_DOMAIN_IOAPIC_LAST -} virDomainIOAPIC; - -VIR_ENUM_DECL(virDomainIOAPIC); - -typedef enum { - VIR_DOMAIN_HPT_RESIZING_NONE =3D 0, - VIR_DOMAIN_HPT_RESIZING_ENABLED, - VIR_DOMAIN_HPT_RESIZING_DISABLED, - VIR_DOMAIN_HPT_RESIZING_REQUIRED, - - VIR_DOMAIN_HPT_RESIZING_LAST -} virDomainHPTResizing; - -VIR_ENUM_DECL(virDomainHPTResizing); - -/* Operating system configuration data & machine / arch */ -struct _virDomainOSEnv { - char *name; - char *value; -}; - -typedef enum { - VIR_DOMAIN_OS_DEF_FIRMWARE_NONE =3D 0, - VIR_DOMAIN_OS_DEF_FIRMWARE_BIOS, - VIR_DOMAIN_OS_DEF_FIRMWARE_EFI, - - VIR_DOMAIN_OS_DEF_FIRMWARE_LAST -} virDomainOsDefFirmware; - -VIR_ENUM_DECL(virDomainOsDefFirmware); - -struct _virDomainOSDef { - int type; - virDomainOsDefFirmware firmware; - virArch arch; - char *machine; - size_t nBootDevs; - int bootDevs[VIR_DOMAIN_BOOT_LAST]; - int bootmenu; /* enum virTristateBool */ - unsigned int bm_timeout; - bool bm_timeout_set; - char *init; - char **initargv; - virDomainOSEnvPtr *initenv; - char *initdir; - char *inituser; - char *initgroup; - char *kernel; - char *initrd; - char *cmdline; - char *dtb; - char *root; - char *slic_table; - virDomainLoaderDefPtr loader; - char *bootloader; - char *bootloaderArgs; - int smbios_mode; - - virDomainBIOSDef bios; -}; - -typedef enum { - VIR_DOMAIN_TIMER_NAME_PLATFORM =3D 0, - VIR_DOMAIN_TIMER_NAME_PIT, - VIR_DOMAIN_TIMER_NAME_RTC, - VIR_DOMAIN_TIMER_NAME_HPET, - VIR_DOMAIN_TIMER_NAME_TSC, - VIR_DOMAIN_TIMER_NAME_KVMCLOCK, - VIR_DOMAIN_TIMER_NAME_HYPERVCLOCK, - - VIR_DOMAIN_TIMER_NAME_LAST -} virDomainTimerNameType; - -typedef enum { - VIR_DOMAIN_TIMER_TRACK_BOOT =3D 0, - VIR_DOMAIN_TIMER_TRACK_GUEST, - VIR_DOMAIN_TIMER_TRACK_WALL, - - VIR_DOMAIN_TIMER_TRACK_LAST -} virDomainTimerTrackType; - -typedef enum { - VIR_DOMAIN_TIMER_TICKPOLICY_DELAY =3D 0, - VIR_DOMAIN_TIMER_TICKPOLICY_CATCHUP, - VIR_DOMAIN_TIMER_TICKPOLICY_MERGE, - VIR_DOMAIN_TIMER_TICKPOLICY_DISCARD, - - VIR_DOMAIN_TIMER_TICKPOLICY_LAST -} virDomainTimerTickpolicyType; - -typedef enum { - VIR_DOMAIN_TIMER_MODE_AUTO =3D 0, - VIR_DOMAIN_TIMER_MODE_NATIVE, - VIR_DOMAIN_TIMER_MODE_EMULATE, - VIR_DOMAIN_TIMER_MODE_PARAVIRT, - VIR_DOMAIN_TIMER_MODE_SMPSAFE, - - VIR_DOMAIN_TIMER_MODE_LAST -} virDomainTimerModeType; - -typedef enum { - VIR_DOMAIN_CPU_PLACEMENT_MODE_STATIC =3D 0, - VIR_DOMAIN_CPU_PLACEMENT_MODE_AUTO, - - VIR_DOMAIN_CPU_PLACEMENT_MODE_LAST -} virDomainCpuPlacementMode; - -struct _virDomainThreadSchedParam { - virProcessSchedPolicy policy; - int priority; -}; - -struct _virDomainTimerCatchupDef { - unsigned long threshold; - unsigned long slew; - unsigned long limit; -}; - -struct _virDomainTimerDef { - int name; - int present; /* unspecified =3D -1, no =3D 0, yes =3D 1 */ - int tickpolicy; /* none|catchup|merge|discard */ - - virDomainTimerCatchupDef catchup; - - /* track is only valid for name=3D'platform|rtc' */ - int track; /* host|guest */ - - /* frequency & mode are only valid for name=3D'tsc' */ - unsigned long frequency; /* in Hz, unspecified =3D 0 */ - int mode; /* auto|native|emulate|paravirt */ -}; - -typedef enum { - VIR_DOMAIN_CLOCK_OFFSET_UTC =3D 0, - VIR_DOMAIN_CLOCK_OFFSET_LOCALTIME =3D 1, - VIR_DOMAIN_CLOCK_OFFSET_VARIABLE =3D 2, - VIR_DOMAIN_CLOCK_OFFSET_TIMEZONE =3D 3, - - VIR_DOMAIN_CLOCK_OFFSET_LAST -} virDomainClockOffsetType; - -typedef enum { - VIR_DOMAIN_CLOCK_BASIS_UTC =3D 0, - VIR_DOMAIN_CLOCK_BASIS_LOCALTIME =3D 1, - - VIR_DOMAIN_CLOCK_BASIS_LAST -} virDomainClockBasis; - -struct _virDomainClockDef { - int offset; - - union { - /* Bug-compatibility-mode for Xen utc|localtime */ - int utc_reset; - /* Adjustment in seconds, relative to UTC or LOCALTIME, when - * offset =3D=3D VIR_DOMAIN_CLOCK_OFFSET_VARIABLE */ - struct { - long long adjustment; - int basis; - - /* domain start-time adjustment. This is a - * private/internal read-only value that only exists when - * a domain is running, and only if the clock - * offset=3D'variable' - */ - long long adjustment0; - } variable; - - /* Timezone name, when - * offset =3D=3D VIR_DOMAIN_CLOCK_OFFSET_LOCALTIME */ - char *timezone; - } data; - - size_t ntimers; - virDomainTimerDefPtr *timers; -}; - - -struct _virBlkioDevice { - char *path; - unsigned int weight; - unsigned int riops; - unsigned int wiops; - unsigned long long rbps; - unsigned long long wbps; -}; - -typedef enum { - VIR_DOMAIN_RNG_MODEL_VIRTIO, - VIR_DOMAIN_RNG_MODEL_VIRTIO_TRANSITIONAL, - VIR_DOMAIN_RNG_MODEL_VIRTIO_NON_TRANSITIONAL, - - VIR_DOMAIN_RNG_MODEL_LAST -} virDomainRNGModel; - -typedef enum { - VIR_DOMAIN_RNG_BACKEND_RANDOM, - VIR_DOMAIN_RNG_BACKEND_EGD, - /* VIR_DOMAIN_RNG_BACKEND_POOL, */ - - VIR_DOMAIN_RNG_BACKEND_LAST -} virDomainRNGBackend; - -struct _virDomainRNGDef { - int model; - int backend; - unsigned int rate; /* bytes per period */ - unsigned int period; /* milliseconds */ - - union { - char *file; /* file name for 'random' source */ - virDomainChrSourceDefPtr chardev; /* a char backend for - the EGD source */ - } source; - - virDomainDeviceInfo info; - virDomainVirtioOptionsPtr virtio; -}; - -typedef enum { - VIR_DOMAIN_MEMORY_MODEL_NONE, - VIR_DOMAIN_MEMORY_MODEL_DIMM, /* dimm hotpluggable memory device */ - VIR_DOMAIN_MEMORY_MODEL_NVDIMM, /* nvdimm memory device */ - - VIR_DOMAIN_MEMORY_MODEL_LAST -} virDomainMemoryModel; - -struct _virDomainMemoryDef { - virDomainMemoryAccess access; - virTristateBool discard; - - /* source */ - virBitmapPtr sourceNodes; - unsigned long long pagesize; /* kibibytes */ - char *nvdimmPath; - unsigned long long alignsize; /* kibibytes; valid only for NVDIMM */ - bool nvdimmPmem; /* valid only for NVDIMM */ - - /* target */ - int model; /* virDomainMemoryModel */ - int targetNode; - unsigned long long size; /* kibibytes */ - unsigned long long labelsize; /* kibibytes; valid only for NVDIMM */ - bool readonly; /* valid only for NVDIMM */ - - virDomainDeviceInfo info; -}; - -void virDomainMemoryDefFree(virDomainMemoryDefPtr def); - -struct _virDomainIdMapEntry { - unsigned int start; - unsigned int target; - unsigned int count; -}; - -struct _virDomainIdMapDef { - size_t nuidmap; - virDomainIdMapEntryPtr uidmap; - - size_t ngidmap; - virDomainIdMapEntryPtr gidmap; -}; - - -typedef enum { - VIR_DOMAIN_PANIC_MODEL_DEFAULT, - VIR_DOMAIN_PANIC_MODEL_ISA, - VIR_DOMAIN_PANIC_MODEL_PSERIES, - VIR_DOMAIN_PANIC_MODEL_HYPERV, - VIR_DOMAIN_PANIC_MODEL_S390, - - VIR_DOMAIN_PANIC_MODEL_LAST -} virDomainPanicModel; - -struct _virDomainPanicDef { - int model; /* virDomainPanicModel */ - virDomainDeviceInfo info; -}; - - -void virBlkioDeviceArrayClear(virBlkioDevicePtr deviceWeights, - int ndevices); - -struct _virDomainResourceDef { - char *partition; -}; - -struct _virDomainHugePage { - virBitmapPtr nodemask; /* guest's NUMA node mask */ - unsigned long long size; /* hugepage size in KiB */ -}; - -#define VIR_DOMAIN_CPUMASK_LEN 1024 - -struct _virDomainIOThreadIDDef { - bool autofill; - unsigned int iothread_id; - int thread_id; - virBitmapPtr cpumask; - - virDomainThreadSchedParam sched; -}; - -void virDomainIOThreadIDDefFree(virDomainIOThreadIDDefPtr def); - - -struct _virDomainCputune { - unsigned long long shares; - bool sharesSpecified; - unsigned long long period; - long long quota; - unsigned long long global_period; - long long global_quota; - unsigned long long emulator_period; - long long emulator_quota; - unsigned long long iothread_period; - long long iothread_quota; - virBitmapPtr emulatorpin; - virDomainThreadSchedParamPtr emulatorsched; -}; - - -struct _virDomainResctrlMonDef { - virBitmapPtr vcpus; - virResctrlMonitorType tag; - virResctrlMonitorPtr instance; -}; - -struct _virDomainResctrlDef { - virBitmapPtr vcpus; - virResctrlAllocPtr alloc; - - virDomainResctrlMonDefPtr *monitors; - size_t nmonitors; -}; - - -struct _virDomainVcpuDef { - bool online; - virTristateBool hotpluggable; - unsigned int order; - - virBitmapPtr cpumask; - - virDomainThreadSchedParam sched; - - virObjectPtr privateData; -}; - -struct _virDomainBlkiotune { - unsigned int weight; - - size_t ndevices; - virBlkioDevicePtr devices; -}; - -struct _virDomainMemtune { - /* total memory size including memory modules in kibibytes, this field - * should be accessed only via accessors */ - unsigned long long total_memory; - unsigned long long cur_balloon; /* in kibibytes, capped at ulong thanks - to virDomainGetInfo */ - - virDomainHugePagePtr hugepages; - size_t nhugepages; - - /* maximum supported memory for a guest, for hotplugging */ - unsigned long long max_memory; /* in kibibytes */ - unsigned int memory_slots; /* maximum count of RAM memory slots */ - - bool nosharepages; - bool locked; - int dump_core; /* enum virTristateSwitch */ - unsigned long long hard_limit; /* in kibibytes, limit at off_t bytes */ - unsigned long long soft_limit; /* in kibibytes, limit at off_t bytes */ - unsigned long long min_guarantee; /* in kibibytes, limit at off_t byte= s */ - unsigned long long swap_hard_limit; /* in kibibytes, limit at off_t by= tes */ - - int source; /* enum virDomainMemorySource */ - int access; /* enum virDomainMemoryAccess */ - int allocation; /* enum virDomainMemoryAllocation */ - - virTristateBool discard; -}; - -struct _virDomainPowerManagement { - /* These options are of type enum virTristateBool */ - int s3; - int s4; -}; - -struct _virDomainPerfDef { - /* These options are of type enum virTristateBool */ - int events[VIR_PERF_EVENT_LAST]; -}; - -struct _virDomainKeyWrapDef { - int aes; /* enum virTristateSwitch */ - int dea; /* enum virTristateSwitch */ -}; - -typedef enum { - VIR_DOMAIN_LAUNCH_SECURITY_NONE, - VIR_DOMAIN_LAUNCH_SECURITY_SEV, - - VIR_DOMAIN_LAUNCH_SECURITY_LAST, -} virDomainLaunchSecurity; - - -struct _virDomainSEVDef { - int sectype; /* enum virDomainLaunchSecurity */ - char *dh_cert; - char *session; - unsigned int policy; - unsigned int cbitpos; - unsigned int reduced_phys_bits; -}; - - -typedef enum { - VIR_DOMAIN_IOMMU_MODEL_INTEL, - VIR_DOMAIN_IOMMU_MODEL_SMMUV3, - - VIR_DOMAIN_IOMMU_MODEL_LAST -} virDomainIOMMUModel; - -struct _virDomainIOMMUDef { - virDomainIOMMUModel model; - virTristateSwitch intremap; - virTristateSwitch caching_mode; - virTristateSwitch eim; - virTristateSwitch iotlb; -}; - -typedef enum { - VIR_DOMAIN_VSOCK_MODEL_DEFAULT, - VIR_DOMAIN_VSOCK_MODEL_VIRTIO, - VIR_DOMAIN_VSOCK_MODEL_VIRTIO_TRANSITIONAL, - VIR_DOMAIN_VSOCK_MODEL_VIRTIO_NON_TRANSITIONAL, - - VIR_DOMAIN_VSOCK_MODEL_LAST -} virDomainVsockModel; - -struct _virDomainVsockDef { - virObjectPtr privateData; - - virDomainVsockModel model; - unsigned int guest_cid; - virTristateBool auto_cid; - - virDomainDeviceInfo info; -}; - -struct _virDomainVirtioOptions { - virTristateSwitch iommu; - virTristateSwitch ats; -}; - -/* - * Guest VM main configuration - * - * NB: if adding to this struct, virDomainDefCheckABIStability - * may well need an update - */ -struct _virDomainDef { - int virtType; /* enum virDomainVirtType */ - int id; - unsigned char uuid[VIR_UUID_BUFLEN]; - - unsigned char genid[VIR_UUID_BUFLEN]; - bool genidRequested; - bool genidGenerated; - - char *name; - char *title; - char *description; - - virDomainBlkiotune blkio; - virDomainMemtune mem; - - virDomainVcpuDefPtr *vcpus; - size_t maxvcpus; - /* set if the vcpu definition was specified individually */ - bool individualvcpus; - int placement_mode; - virBitmapPtr cpumask; - - size_t niothreadids; - virDomainIOThreadIDDefPtr *iothreadids; - - virDomainCputune cputune; - - virDomainResctrlDefPtr *resctrls; - size_t nresctrls; - - virDomainNumaPtr numa; - virDomainResourceDefPtr resource; - virDomainIdMapDef idmap; - - /* These 3 are based on virDomainLifeCycleAction enum flags */ - int onReboot; - int onPoweroff; - int onCrash; - - int onLockFailure; /* enum virDomainLockFailureAction */ - - virDomainPowerManagement pm; - - virDomainPerfDef perf; - - virDomainOSDef os; - char *emulator; - /* Most {caps_,hyperv_,kvm_,}feature options utilize a virTristateSwit= ch - * to handle support. A few assign specific data values to the option. - * See virDomainDefFeaturesCheckABIStability() for details. */ - int features[VIR_DOMAIN_FEATURE_LAST]; - int caps_features[VIR_DOMAIN_CAPS_FEATURE_LAST]; - int hyperv_features[VIR_DOMAIN_HYPERV_LAST]; - int kvm_features[VIR_DOMAIN_KVM_LAST]; - int msrs_features[VIR_DOMAIN_MSRS_LAST]; - unsigned int hyperv_spinlocks; - virGICVersion gic_version; - virDomainHPTResizing hpt_resizing; - unsigned long long hpt_maxpagesize; /* Stored in KiB */ - char *hyperv_vendor_id; - int apic_eoi; - - bool tseg_specified; - unsigned long long tseg_size; - - virDomainClockDef clock; - - size_t ngraphics; - virDomainGraphicsDefPtr *graphics; - - size_t ndisks; - virDomainDiskDefPtr *disks; - - size_t ncontrollers; - virDomainControllerDefPtr *controllers; - - size_t nfss; - virDomainFSDefPtr *fss; - - size_t nnets; - virDomainNetDefPtr *nets; - - size_t ninputs; - virDomainInputDefPtr *inputs; - - size_t nsounds; - virDomainSoundDefPtr *sounds; - - size_t nvideos; - virDomainVideoDefPtr *videos; - - size_t nhostdevs; - virDomainHostdevDefPtr *hostdevs; - - size_t nredirdevs; - virDomainRedirdevDefPtr *redirdevs; - - size_t nsmartcards; - virDomainSmartcardDefPtr *smartcards; - - size_t nserials; - virDomainChrDefPtr *serials; - - size_t nparallels; - virDomainChrDefPtr *parallels; - - size_t nchannels; - virDomainChrDefPtr *channels; - - size_t nconsoles; - virDomainChrDefPtr *consoles; - - size_t nleases; - virDomainLeaseDefPtr *leases; - - size_t nhubs; - virDomainHubDefPtr *hubs; - - size_t nseclabels; - virSecurityLabelDefPtr *seclabels; - - size_t nrngs; - virDomainRNGDefPtr *rngs; - - size_t nshmems; - virDomainShmemDefPtr *shmems; - - size_t nmems; - virDomainMemoryDefPtr *mems; - - size_t npanics; - virDomainPanicDefPtr *panics; - - /* Only 1 */ - virDomainWatchdogDefPtr watchdog; - virDomainMemballoonDefPtr memballoon; - virDomainNVRAMDefPtr nvram; - virDomainTPMDefPtr tpm; - virCPUDefPtr cpu; - virSysinfoDefPtr sysinfo; - virDomainRedirFilterDefPtr redirfilter; - virDomainIOMMUDefPtr iommu; - virDomainVsockDefPtr vsock; - - void *namespaceData; - virDomainXMLNamespace ns; - - virDomainKeyWrapDefPtr keywrap; - - /* SEV-specific domain */ - virDomainSEVDefPtr sev; - - /* Application-specific custom metadata */ - xmlNodePtr metadata; - - /* internal fields */ - bool postParseFailed; /* set to true if one of the custom post parse - callbacks failed for a non-critical reason - (was not able to fill in some data) and thus - should be re-run before starting */ -}; - - -unsigned long long virDomainDefGetMemoryInitial(const virDomainDef *def); -void virDomainDefSetMemoryTotal(virDomainDefPtr def, unsigned long long si= ze); -unsigned long long virDomainDefGetMemoryTotal(const virDomainDef *def); -bool virDomainDefHasMemoryHotplug(const virDomainDef *def); - -typedef enum { - VIR_DOMAIN_KEY_WRAP_CIPHER_NAME_AES, - VIR_DOMAIN_KEY_WRAP_CIPHER_NAME_DEA, - - VIR_DOMAIN_KEY_WRAP_CIPHER_NAME_LAST -} virDomainKeyWrapCipherName; - -typedef enum { - VIR_DOMAIN_TAINT_CUSTOM_ARGV, /* Custom ARGV passthrough from XML= */ - VIR_DOMAIN_TAINT_CUSTOM_MONITOR, /* Custom monitor commands issued */ - VIR_DOMAIN_TAINT_HIGH_PRIVILEGES, /* Running with undesirably high pr= ivileges */ - VIR_DOMAIN_TAINT_SHELL_SCRIPTS, /* Network configuration using opaq= ue shell scripts */ - VIR_DOMAIN_TAINT_DISK_PROBING, /* Relying on potentially unsafe di= sk format probing */ - VIR_DOMAIN_TAINT_EXTERNAL_LAUNCH, /* Externally launched guest domain= */ - VIR_DOMAIN_TAINT_HOST_CPU, /* Host CPU passthrough in use */ - VIR_DOMAIN_TAINT_HOOK, /* Domain (possibly) changed via ho= ok script */ - VIR_DOMAIN_TAINT_CDROM_PASSTHROUGH,/* CDROM passthrough */ - VIR_DOMAIN_TAINT_CUSTOM_DTB, /* Custom device tree blob was spec= ified */ - VIR_DOMAIN_TAINT_CUSTOM_GA_COMMAND, /* Custom guest agent command */ - VIR_DOMAIN_TAINT_CUSTOM_HYPERVISOR_FEATURE, /* custom hypervisor featu= re control */ - - VIR_DOMAIN_TAINT_LAST -} virDomainTaintFlags; - -/* Guest VM runtime state */ -typedef struct _virDomainStateReason virDomainStateReason; -struct _virDomainStateReason { - int state; - int reason; -}; - -struct _virDomainObj { - virObjectLockable parent; - virCond cond; - - pid_t pid; - virDomainStateReason state; - - unsigned int autostart : 1; - unsigned int persistent : 1; - unsigned int updated : 1; - unsigned int removing : 1; - - virDomainDefPtr def; /* The current definition */ - virDomainDefPtr newDef; /* New definition to activate at shutdown */ - - virDomainSnapshotObjListPtr snapshots; - - bool hasManagedSave; - - void *privateData; - void (*privateDataFreeFunc)(void *); - - int taint; - - unsigned long long original_memlock; /* Original RLIMIT_MEMLOCK, zero = if no - * restore will be required later= */ -}; - -typedef bool (*virDomainObjListACLFilter)(virConnectPtr conn, - virDomainDefPtr def); - - -/* NB: Any new flag to this list be considered to be set in - * virt-aa-helper code if the flag prevents parsing. */ -typedef enum { - VIR_DOMAIN_DEF_FEATURE_WIDE_SCSI =3D (1 << 0), - VIR_DOMAIN_DEF_FEATURE_MEMORY_HOTPLUG =3D (1 << 1), - VIR_DOMAIN_DEF_FEATURE_OFFLINE_VCPUPIN =3D (1 << 2), - VIR_DOMAIN_DEF_FEATURE_NAME_SLASH =3D (1 << 3), - VIR_DOMAIN_DEF_FEATURE_INDIVIDUAL_VCPUS =3D (1 << 4), - VIR_DOMAIN_DEF_FEATURE_USER_ALIAS =3D (1 << 5), - VIR_DOMAIN_DEF_FEATURE_NO_BOOT_ORDER =3D (1 << 6), - VIR_DOMAIN_DEF_FEATURE_FW_AUTOSELECT =3D (1 << 7), - VIR_DOMAIN_DEF_FEATURE_NET_MODEL_STRING =3D (1 << 8), -} virDomainDefFeatures; - +#define IS_USB2_CONTROLLER(ctrl) \ + (((ctrl)->type =3D=3D VIR_DOMAIN_CONTROLLER_TYPE_USB) && \ + ((ctrl)->model =3D=3D VIR_DOMAIN_CONTROLLER_MODEL_USB_ICH9_EHCI1 || \ + (ctrl)->model =3D=3D VIR_DOMAIN_CONTROLLER_MODEL_USB_ICH9_UHCI1 || \ + (ctrl)->model =3D=3D VIR_DOMAIN_CONTROLLER_MODEL_USB_ICH9_UHCI2 || \ + (ctrl)->model =3D=3D VIR_DOMAIN_CONTROLLER_MODEL_USB_ICH9_UHCI3)) =20 /* Called after everything else has been parsed, for adjusting basics. * This has similar semantics to virDomainDefPostParseCallback, but no @@ -3084,12 +544,6 @@ int virDomainNetDefFormat(virBufferPtr buf, char *prefix, unsigned int flags); =20 -typedef enum { - VIR_DOMAIN_DEVICE_ACTION_ATTACH, - VIR_DOMAIN_DEVICE_ACTION_DETACH, - VIR_DOMAIN_DEVICE_ACTION_UPDATE, -} virDomainDeviceAction; - int virDomainDefCompatibleDevice(virDomainDefPtr def, virDomainDeviceDefPtr dev, virDomainDeviceDefPtr oldDev, @@ -3345,122 +799,6 @@ bool virDomainVsockDefEquals(const virDomainVsockDef= *a, const virDomainVsockDef *b) ATTRIBUTE_NONNULL(1) ATTRIBUTE_NONNULL(2) ATTRIBUTE_RETURN_CHECK; =20 -VIR_ENUM_DECL(virDomainTaint); -VIR_ENUM_DECL(virDomainVirt); -VIR_ENUM_DECL(virDomainBoot); -VIR_ENUM_DECL(virDomainFeature); -VIR_ENUM_DECL(virDomainCapabilitiesPolicy); -VIR_ENUM_DECL(virDomainCapsFeature); -VIR_ENUM_DECL(virDomainLifecycle); -VIR_ENUM_DECL(virDomainLifecycleAction); -VIR_ENUM_DECL(virDomainDevice); -VIR_ENUM_DECL(virDomainDiskDevice); -VIR_ENUM_DECL(virDomainDiskGeometryTrans); -VIR_ENUM_DECL(virDomainDiskBus); -VIR_ENUM_DECL(virDomainDiskCache); -VIR_ENUM_DECL(virDomainDiskErrorPolicy); -VIR_ENUM_DECL(virDomainDiskIo); -VIR_ENUM_DECL(virDomainDeviceSGIO); -VIR_ENUM_DECL(virDomainDiskTray); -VIR_ENUM_DECL(virDomainDiskDiscard); -VIR_ENUM_DECL(virDomainDiskDetectZeroes); -VIR_ENUM_DECL(virDomainDiskModel); -VIR_ENUM_DECL(virDomainDiskMirrorState); -VIR_ENUM_DECL(virDomainController); -VIR_ENUM_DECL(virDomainControllerModelPCI); -VIR_ENUM_DECL(virDomainControllerPCIModelName); -VIR_ENUM_DECL(virDomainControllerModelSCSI); -VIR_ENUM_DECL(virDomainControllerModelUSB); -VIR_ENUM_DECL(virDomainControllerModelIDE); -VIR_ENUM_DECL(virDomainControllerModelVirtioSerial); -VIR_ENUM_DECL(virDomainFS); -VIR_ENUM_DECL(virDomainFSDriver); -VIR_ENUM_DECL(virDomainFSAccessMode); -VIR_ENUM_DECL(virDomainFSWrpolicy); -VIR_ENUM_DECL(virDomainFSModel); -VIR_ENUM_DECL(virDomainNet); -VIR_ENUM_DECL(virDomainNetBackend); -VIR_ENUM_DECL(virDomainNetVirtioTxMode); -VIR_ENUM_DECL(virDomainNetInterfaceLinkState); -VIR_ENUM_DECL(virDomainNetModel); -VIR_ENUM_DECL(virDomainChrDevice); -VIR_ENUM_DECL(virDomainChrChannelTarget); -VIR_ENUM_DECL(virDomainChrConsoleTarget); -VIR_ENUM_DECL(virDomainChrSerialTarget); -VIR_ENUM_DECL(virDomainSmartcard); -VIR_ENUM_DECL(virDomainChr); -VIR_ENUM_DECL(virDomainChrTcpProtocol); -VIR_ENUM_DECL(virDomainChrSpicevmc); -VIR_ENUM_DECL(virDomainSoundCodec); -VIR_ENUM_DECL(virDomainSoundModel); -VIR_ENUM_DECL(virDomainKeyWrapCipherName); -VIR_ENUM_DECL(virDomainMemballoonModel); -VIR_ENUM_DECL(virDomainSmbiosMode); -VIR_ENUM_DECL(virDomainWatchdogModel); -VIR_ENUM_DECL(virDomainWatchdogAction); -VIR_ENUM_DECL(virDomainPanicModel); -VIR_ENUM_DECL(virDomainVideo); -VIR_ENUM_DECL(virDomainHostdevMode); -VIR_ENUM_DECL(virDomainHostdevSubsys); -VIR_ENUM_DECL(virDomainHostdevCaps); -VIR_ENUM_DECL(virDomainHub); -VIR_ENUM_DECL(virDomainRedirdevBus); -VIR_ENUM_DECL(virDomainInput); -VIR_ENUM_DECL(virDomainInputBus); -VIR_ENUM_DECL(virDomainInputModel); -VIR_ENUM_DECL(virDomainGraphics); -VIR_ENUM_DECL(virDomainGraphicsListen); -VIR_ENUM_DECL(virDomainGraphicsAuthConnected); -VIR_ENUM_DECL(virDomainGraphicsSpiceChannelName); -VIR_ENUM_DECL(virDomainGraphicsSpiceChannelMode); -VIR_ENUM_DECL(virDomainGraphicsSpiceImageCompression); -VIR_ENUM_DECL(virDomainGraphicsSpiceJpegCompression); -VIR_ENUM_DECL(virDomainGraphicsSpiceZlibCompression); -VIR_ENUM_DECL(virDomainGraphicsSpiceStreamingMode); -VIR_ENUM_DECL(virDomainGraphicsSpiceMouseMode); -VIR_ENUM_DECL(virDomainGraphicsVNCSharePolicy); -VIR_ENUM_DECL(virDomainHyperv); -VIR_ENUM_DECL(virDomainKVM); -VIR_ENUM_DECL(virDomainMsrsUnknown); -VIR_ENUM_DECL(virDomainRNGModel); -VIR_ENUM_DECL(virDomainRNGBackend); -VIR_ENUM_DECL(virDomainTPMModel); -VIR_ENUM_DECL(virDomainTPMBackend); -VIR_ENUM_DECL(virDomainTPMVersion); -VIR_ENUM_DECL(virDomainMemoryModel); -VIR_ENUM_DECL(virDomainMemoryBackingModel); -VIR_ENUM_DECL(virDomainMemorySource); -VIR_ENUM_DECL(virDomainMemoryAllocation); -VIR_ENUM_DECL(virDomainIOMMUModel); -VIR_ENUM_DECL(virDomainVsockModel); -VIR_ENUM_DECL(virDomainShmemModel); -VIR_ENUM_DECL(virDomainLaunchSecurity); -/* from libvirt.h */ -VIR_ENUM_DECL(virDomainState); -VIR_ENUM_DECL(virDomainNostateReason); -VIR_ENUM_DECL(virDomainRunningReason); -VIR_ENUM_DECL(virDomainBlockedReason); -VIR_ENUM_DECL(virDomainPausedReason); -VIR_ENUM_DECL(virDomainShutdownReason); -VIR_ENUM_DECL(virDomainShutoffReason); -VIR_ENUM_DECL(virDomainCrashedReason); -VIR_ENUM_DECL(virDomainPMSuspendedReason); - -const char *virDomainStateReasonToString(virDomainState state, int reason); -int virDomainStateReasonFromString(virDomainState state, const char *reaso= n); - -VIR_ENUM_DECL(virDomainSeclabel); -VIR_ENUM_DECL(virDomainClockOffset); -VIR_ENUM_DECL(virDomainClockBasis); - -VIR_ENUM_DECL(virDomainTimerName); -VIR_ENUM_DECL(virDomainTimerTrack); -VIR_ENUM_DECL(virDomainTimerTickpolicy); -VIR_ENUM_DECL(virDomainTimerMode); -VIR_ENUM_DECL(virDomainCpuPlacementMode); - -VIR_ENUM_DECL(virDomainStartupPolicy); - virDomainControllerDefPtr virDomainDefAddController(virDomainDefPtr def, int type, int idx, int mode= l); int diff --git a/src/conf/virdomaintypes.h b/src/conf/virdomaintypes.h new file mode 100644 index 0000000000..d3f678edf3 --- /dev/null +++ b/src/conf/virdomaintypes.h @@ -0,0 +1,2692 @@ +/* + * virdomaintypes.h: types for storing the domain definition + * + * Copyright (C) 2006-2019 Red Hat, Inc. + * Copyright (C) 2006-2008 Daniel P. Berrange + * Copyright (c) 2015 SUSE LINUX Products GmbH, Nuernberg, Germany. + * + * 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 + * . + */ + +#pragma once + +#include "internal.h" +#include "virconftypes.h" + +#include "capabilities.h" +#include "device_conf.h" +#include "virenum.h" +#include "virgic.h" +#include "virhash.h" +#include "virnetdev.h" +#include "virnetdevip.h" +#include "virnetdevmacvlan.h" +#include "virnetdevvportprofile.h" +#include "virnetdevbandwidth.h" +#include "virnetdevvlan.h" +#include "virperf.h" +#include "virprocess.h" +#include "virresctrl.h" +#include "virstoragefile.h" +#include "virsysinfo.h" + + +/* Flags for the 'type' field in virDomainDeviceDef */ +typedef enum { + VIR_DOMAIN_DEVICE_NONE =3D 0, + VIR_DOMAIN_DEVICE_DISK, + VIR_DOMAIN_DEVICE_LEASE, + VIR_DOMAIN_DEVICE_FS, + VIR_DOMAIN_DEVICE_NET, + VIR_DOMAIN_DEVICE_INPUT, + VIR_DOMAIN_DEVICE_SOUND, + VIR_DOMAIN_DEVICE_VIDEO, + VIR_DOMAIN_DEVICE_HOSTDEV, + VIR_DOMAIN_DEVICE_WATCHDOG, + VIR_DOMAIN_DEVICE_CONTROLLER, + VIR_DOMAIN_DEVICE_GRAPHICS, + VIR_DOMAIN_DEVICE_HUB, + VIR_DOMAIN_DEVICE_REDIRDEV, + VIR_DOMAIN_DEVICE_SMARTCARD, + VIR_DOMAIN_DEVICE_CHR, + VIR_DOMAIN_DEVICE_MEMBALLOON, + VIR_DOMAIN_DEVICE_NVRAM, + VIR_DOMAIN_DEVICE_RNG, + VIR_DOMAIN_DEVICE_SHMEM, + VIR_DOMAIN_DEVICE_TPM, + VIR_DOMAIN_DEVICE_PANIC, + VIR_DOMAIN_DEVICE_MEMORY, + VIR_DOMAIN_DEVICE_IOMMU, + VIR_DOMAIN_DEVICE_VSOCK, + + VIR_DOMAIN_DEVICE_LAST +} virDomainDeviceType; + +struct _virDomainDeviceDef { + int type; /* enum virDomainDeviceType */ + union { + virDomainDiskDefPtr disk; + virDomainControllerDefPtr controller; + virDomainLeaseDefPtr lease; + virDomainFSDefPtr fs; + virDomainNetDefPtr net; + virDomainInputDefPtr input; + virDomainSoundDefPtr sound; + virDomainVideoDefPtr video; + virDomainHostdevDefPtr hostdev; + virDomainWatchdogDefPtr watchdog; + virDomainGraphicsDefPtr graphics; + virDomainHubDefPtr hub; + virDomainRedirdevDefPtr redirdev; + virDomainSmartcardDefPtr smartcard; + virDomainChrDefPtr chr; + virDomainMemballoonDefPtr memballoon; + virDomainNVRAMDefPtr nvram; + virDomainRNGDefPtr rng; + virDomainShmemDefPtr shmem; + virDomainTPMDefPtr tpm; + virDomainPanicDefPtr panic; + virDomainMemoryDefPtr memory; + virDomainIOMMUDefPtr iommu; + virDomainVsockDefPtr vsock; + } data; +}; + +/* Different types of hypervisor */ +/* NB: Keep in sync with virDomainVirtTypeToString impl */ +typedef enum { + VIR_DOMAIN_VIRT_NONE =3D 0, + VIR_DOMAIN_VIRT_QEMU, + VIR_DOMAIN_VIRT_KQEMU, + VIR_DOMAIN_VIRT_KVM, + VIR_DOMAIN_VIRT_XEN, + VIR_DOMAIN_VIRT_LXC, + VIR_DOMAIN_VIRT_UML, + VIR_DOMAIN_VIRT_OPENVZ, + VIR_DOMAIN_VIRT_TEST, + VIR_DOMAIN_VIRT_VMWARE, + VIR_DOMAIN_VIRT_HYPERV, + VIR_DOMAIN_VIRT_VBOX, + VIR_DOMAIN_VIRT_PHYP, + VIR_DOMAIN_VIRT_PARALLELS, + VIR_DOMAIN_VIRT_BHYVE, + VIR_DOMAIN_VIRT_VZ, + + VIR_DOMAIN_VIRT_LAST +} virDomainVirtType; + +typedef enum { + VIR_DOMAIN_OSTYPE_HVM, + VIR_DOMAIN_OSTYPE_XEN, + VIR_DOMAIN_OSTYPE_LINUX, + VIR_DOMAIN_OSTYPE_EXE, + VIR_DOMAIN_OSTYPE_UML, + VIR_DOMAIN_OSTYPE_XENPVH, + + VIR_DOMAIN_OSTYPE_LAST +} virDomainOSType; +VIR_ENUM_DECL(virDomainOS); + + +struct _virDomainHostdevOrigStates { + union { + struct { + /* Does the device need to unbind from stub when + * reattaching to host? + */ + bool unbind_from_stub; + + /* Does it need to use remove_slot when reattaching + * the device to host? + */ + bool remove_slot; + + /* Does it need to reprobe driver for the device when + * reattaching to host? + */ + bool reprobe; + } pci; + + /* Perhaps 'usb' in future */ + } states; +}; + +struct _virDomainLeaseDef { + char *lockspace; + char *key; + char *path; + unsigned long long offset; +}; + + +typedef enum { + VIR_DOMAIN_HOSTDEV_MODE_SUBSYS, + VIR_DOMAIN_HOSTDEV_MODE_CAPABILITIES, + + VIR_DOMAIN_HOSTDEV_MODE_LAST +} virDomainHostdevMode; + +typedef enum { + VIR_DOMAIN_HOSTDEV_SUBSYS_TYPE_USB, + VIR_DOMAIN_HOSTDEV_SUBSYS_TYPE_PCI, + VIR_DOMAIN_HOSTDEV_SUBSYS_TYPE_SCSI, + VIR_DOMAIN_HOSTDEV_SUBSYS_TYPE_SCSI_HOST, + VIR_DOMAIN_HOSTDEV_SUBSYS_TYPE_MDEV, + + VIR_DOMAIN_HOSTDEV_SUBSYS_TYPE_LAST +} virDomainHostdevSubsysType; + +/* the backend driver used for PCI hostdev devices */ +typedef enum { + VIR_DOMAIN_HOSTDEV_PCI_BACKEND_DEFAULT, /* detect automatically, prefe= r VFIO */ + VIR_DOMAIN_HOSTDEV_PCI_BACKEND_KVM, /* force legacy kvm style */ + VIR_DOMAIN_HOSTDEV_PCI_BACKEND_VFIO, /* force vfio */ + VIR_DOMAIN_HOSTDEV_PCI_BACKEND_XEN, /* force legacy xen style, use = pciback */ + + VIR_DOMAIN_HOSTDEV_PCI_BACKEND_TYPE_LAST +} virDomainHostdevSubsysPCIBackendType; + +VIR_ENUM_DECL(virDomainHostdevSubsysPCIBackend); + +typedef enum { + VIR_DOMAIN_HOSTDEV_SCSI_PROTOCOL_TYPE_NONE, + VIR_DOMAIN_HOSTDEV_SCSI_PROTOCOL_TYPE_ISCSI, + + VIR_DOMAIN_HOSTDEV_SCSI_PROTOCOL_TYPE_LAST, +} virDomainHostdevSCSIProtocolType; + +VIR_ENUM_DECL(virDomainHostdevSubsysSCSIProtocol); + +struct _virDomainHostdevSubsysUSB { + bool autoAddress; /* bus/device were filled automatically based + on vendor/product */ + unsigned bus; + unsigned device; + + unsigned vendor; + unsigned product; +}; + +struct _virDomainHostdevSubsysPCI { + virPCIDeviceAddress addr; /* host address */ + int backend; /* enum virDomainHostdevSubsysPCIBackendType */ +}; + +struct _virDomainHostdevSubsysSCSIHost { + char *adapter; + unsigned bus; + unsigned target; + unsigned long long unit; +}; + +struct _virDomainHostdevSubsysSCSIiSCSI { + virStorageSourcePtr src; +}; + +struct _virDomainHostdevSubsysSCSI { + int protocol; /* enum virDomainHostdevSCSIProtocolType */ + int sgio; /* enum virDomainDeviceSGIO */ + int rawio; /* enum virTristateBool */ + union { + virDomainHostdevSubsysSCSIHost host; + virDomainHostdevSubsysSCSIiSCSI iscsi; + } u; +}; + +struct _virDomainHostdevSubsysMediatedDev { + int model; /* enum virMediatedDeviceModelType= */ + int display; /* virTristateSwitch */ + char uuidstr[VIR_UUID_STRING_BUFLEN]; /* mediated device's uuid stri= ng */ +}; + +typedef enum { + VIR_DOMAIN_HOSTDEV_SUBSYS_SCSI_HOST_PROTOCOL_TYPE_NONE, + VIR_DOMAIN_HOSTDEV_SUBSYS_SCSI_HOST_PROTOCOL_TYPE_VHOST, + + VIR_DOMAIN_HOSTDEV_SUBSYS_SCSI_HOST_PROTOCOL_TYPE_LAST, +} virDomainHostdevSubsysSCSIHostProtocolType; + +VIR_ENUM_DECL(virDomainHostdevSubsysSCSIHostProtocol); + +typedef enum { + VIR_DOMAIN_HOSTDEV_SUBSYS_SCSI_VHOST_MODEL_TYPE_DEFAULT, + VIR_DOMAIN_HOSTDEV_SUBSYS_SCSI_VHOST_MODEL_TYPE_VIRTIO, + VIR_DOMAIN_HOSTDEV_SUBSYS_SCSI_VHOST_MODEL_TYPE_VIRTIO_TRANSITIONAL, + VIR_DOMAIN_HOSTDEV_SUBSYS_SCSI_VHOST_MODEL_TYPE_VIRTIO_NON_TRANSITIONA= L, + + VIR_DOMAIN_HOSTDEV_SUBSYS_SCSI_VHOST_MODEL_TYPE_LAST, +} virDomainHostdevSubsysSCSIVHostModelType; + +VIR_ENUM_DECL(virDomainHostdevSubsysSCSIVHostModel); + +struct _virDomainHostdevSubsysSCSIVHost { + int protocol; /* enum virDomainHostdevSubsysSCSIHostProtocolType */ + char *wwpn; + int model; /* enum virDomainHostdevSubsysSCSIVHostModelType */ +}; + +struct _virDomainHostdevSubsys { + int type; /* enum virDomainHostdevSubsysType */ + union { + virDomainHostdevSubsysUSB usb; + virDomainHostdevSubsysPCI pci; + virDomainHostdevSubsysSCSI scsi; + virDomainHostdevSubsysSCSIVHost scsi_host; + virDomainHostdevSubsysMediatedDev mdev; + } u; +}; + + +typedef enum { + VIR_DOMAIN_HOSTDEV_CAPS_TYPE_STORAGE, + VIR_DOMAIN_HOSTDEV_CAPS_TYPE_MISC, + VIR_DOMAIN_HOSTDEV_CAPS_TYPE_NET, + + VIR_DOMAIN_HOSTDEV_CAPS_TYPE_LAST +} virDomainHostdevCapsType; + +struct _virDomainHostdevCaps { + int type; /* enum virDOmainHostdevCapsType */ + union { + struct { + char *block; + } storage; + struct { + char *chardev; + } misc; + struct { + char *ifname; + virNetDevIPInfo ip; + } net; + } u; +}; + + +/* basic device for direct passthrough */ +struct _virDomainHostdevDef { + /* If 'parentnet' is non-NULL it means this host dev was + * not originally present in the XML. It was copied from + * a network interface for convenience when handling + * hostdevs internally. This hostdev should never be + * visible to the user except as part of the interface + */ + virDomainNetDefPtr parentnet; + + int mode; /* enum virDomainHostdevMode */ + int startupPolicy; /* enum virDomainStartupPolicy */ + bool managed; + bool missing; + bool readonly; + bool shareable; + union { + virDomainHostdevSubsys subsys; + virDomainHostdevCaps caps; + } source; + virDomainHostdevOrigStates origstates; + virDomainDeviceInfoPtr info; /* Guest address */ +}; + + +/* Types of disk frontend (guest view). For backends (host view), see + * virStorageType in util/virstoragefile.h */ +typedef enum { + VIR_DOMAIN_DISK_DEVICE_DISK, + VIR_DOMAIN_DISK_DEVICE_CDROM, + VIR_DOMAIN_DISK_DEVICE_FLOPPY, + VIR_DOMAIN_DISK_DEVICE_LUN, + + VIR_DOMAIN_DISK_DEVICE_LAST +} virDomainDiskDevice; + +typedef enum { + VIR_DOMAIN_DISK_BUS_IDE, + VIR_DOMAIN_DISK_BUS_FDC, + VIR_DOMAIN_DISK_BUS_SCSI, + VIR_DOMAIN_DISK_BUS_VIRTIO, + VIR_DOMAIN_DISK_BUS_XEN, + VIR_DOMAIN_DISK_BUS_USB, + VIR_DOMAIN_DISK_BUS_UML, + VIR_DOMAIN_DISK_BUS_SATA, + VIR_DOMAIN_DISK_BUS_SD, + + VIR_DOMAIN_DISK_BUS_LAST +} virDomainDiskBus; + +typedef enum { + VIR_DOMAIN_DISK_CACHE_DEFAULT, + VIR_DOMAIN_DISK_CACHE_DISABLE, + VIR_DOMAIN_DISK_CACHE_WRITETHRU, + VIR_DOMAIN_DISK_CACHE_WRITEBACK, + VIR_DOMAIN_DISK_CACHE_DIRECTSYNC, + VIR_DOMAIN_DISK_CACHE_UNSAFE, + + VIR_DOMAIN_DISK_CACHE_LAST +} virDomainDiskCache; + +typedef enum { + VIR_DOMAIN_DISK_ERROR_POLICY_DEFAULT, + VIR_DOMAIN_DISK_ERROR_POLICY_STOP, + VIR_DOMAIN_DISK_ERROR_POLICY_REPORT, + VIR_DOMAIN_DISK_ERROR_POLICY_IGNORE, + VIR_DOMAIN_DISK_ERROR_POLICY_ENOSPACE, + + VIR_DOMAIN_DISK_ERROR_POLICY_LAST +} virDomainDiskErrorPolicy; + + +typedef enum { + VIR_DOMAIN_DISK_TRAY_CLOSED =3D 0, + VIR_DOMAIN_DISK_TRAY_OPEN, + + VIR_DOMAIN_DISK_TRAY_LAST +} virDomainDiskTray; + +typedef enum { + VIR_DOMAIN_DISK_TRANS_DEFAULT =3D 0, + VIR_DOMAIN_DISK_TRANS_NONE, + VIR_DOMAIN_DISK_TRANS_AUTO, + VIR_DOMAIN_DISK_TRANS_LBA, + + VIR_DOMAIN_DISK_TRANS_LAST +} virDomainDiskGeometryTrans; + +typedef enum { + VIR_DOMAIN_DISK_IO_DEFAULT =3D 0, + VIR_DOMAIN_DISK_IO_NATIVE, + VIR_DOMAIN_DISK_IO_THREADS, + + VIR_DOMAIN_DISK_IO_LAST +} virDomainDiskIo; + +typedef enum { + VIR_DOMAIN_STARTUP_POLICY_DEFAULT =3D 0, + VIR_DOMAIN_STARTUP_POLICY_MANDATORY, + VIR_DOMAIN_STARTUP_POLICY_REQUISITE, + VIR_DOMAIN_STARTUP_POLICY_OPTIONAL, + + VIR_DOMAIN_STARTUP_POLICY_LAST +} virDomainStartupPolicy; + + +typedef enum { + VIR_DOMAIN_DEVICE_SGIO_DEFAULT =3D 0, + VIR_DOMAIN_DEVICE_SGIO_FILTERED, + VIR_DOMAIN_DEVICE_SGIO_UNFILTERED, + + VIR_DOMAIN_DEVICE_SGIO_LAST +} virDomainDeviceSGIO; + +typedef enum { + VIR_DOMAIN_DISK_DISCARD_DEFAULT =3D 0, + VIR_DOMAIN_DISK_DISCARD_UNMAP, + VIR_DOMAIN_DISK_DISCARD_IGNORE, + + VIR_DOMAIN_DISK_DISCARD_LAST +} virDomainDiskDiscard; + +typedef enum { + VIR_DOMAIN_DISK_DETECT_ZEROES_DEFAULT =3D 0, + VIR_DOMAIN_DISK_DETECT_ZEROES_OFF, + VIR_DOMAIN_DISK_DETECT_ZEROES_ON, + VIR_DOMAIN_DISK_DETECT_ZEROES_UNMAP, + + VIR_DOMAIN_DISK_DETECT_ZEROES_LAST +} virDomainDiskDetectZeroes; + +typedef enum { + VIR_DOMAIN_DISK_MODEL_DEFAULT =3D 0, + VIR_DOMAIN_DISK_MODEL_VIRTIO, + VIR_DOMAIN_DISK_MODEL_VIRTIO_TRANSITIONAL, + VIR_DOMAIN_DISK_MODEL_VIRTIO_NON_TRANSITIONAL, + + VIR_DOMAIN_DISK_MODEL_LAST +} virDomainDiskModel; + +struct _virDomainBlockIoTuneInfo { + unsigned long long total_bytes_sec; + unsigned long long read_bytes_sec; + unsigned long long write_bytes_sec; + unsigned long long total_iops_sec; + unsigned long long read_iops_sec; + unsigned long long write_iops_sec; + unsigned long long total_bytes_sec_max; + unsigned long long read_bytes_sec_max; + unsigned long long write_bytes_sec_max; + unsigned long long total_iops_sec_max; + unsigned long long read_iops_sec_max; + unsigned long long write_iops_sec_max; + unsigned long long size_iops_sec; + char *group_name; + unsigned long long total_bytes_sec_max_length; + unsigned long long read_bytes_sec_max_length; + unsigned long long write_bytes_sec_max_length; + unsigned long long total_iops_sec_max_length; + unsigned long long read_iops_sec_max_length; + unsigned long long write_iops_sec_max_length; +}; + + +typedef enum { + VIR_DOMAIN_DISK_MIRROR_STATE_NONE =3D 0, /* No job, or job still not s= ynced */ + VIR_DOMAIN_DISK_MIRROR_STATE_READY, /* Job in second phase */ + VIR_DOMAIN_DISK_MIRROR_STATE_ABORT, /* Job aborted, waiting for event = */ + VIR_DOMAIN_DISK_MIRROR_STATE_PIVOT, /* Job pivoted, waiting for event = */ + + VIR_DOMAIN_DISK_MIRROR_STATE_LAST +} virDomainDiskMirrorState; + +typedef enum { + VIR_DOMAIN_MEMORY_SOURCE_NONE =3D 0, /* No memory source defined */ + VIR_DOMAIN_MEMORY_SOURCE_FILE, /* Memory source is set as file */ + VIR_DOMAIN_MEMORY_SOURCE_ANONYMOUS, /* Memory source is set as anonymo= us */ + VIR_DOMAIN_MEMORY_SOURCE_MEMFD, /* Memory source is set as memfd */ + + VIR_DOMAIN_MEMORY_SOURCE_LAST, +} virDomainMemorySource; + +typedef enum { + VIR_DOMAIN_MEMORY_ALLOCATION_NONE =3D 0, /* No memory allocation defi= ned */ + VIR_DOMAIN_MEMORY_ALLOCATION_IMMEDIATE, /* Memory allocation is set as= immediate */ + VIR_DOMAIN_MEMORY_ALLOCATION_ONDEMAND, /* Memory allocation is set as= ondemand */ + + VIR_DOMAIN_MEMORY_ALLOCATION_LAST, +} virDomainMemoryAllocation; + + +/* Stores the virtual disk configuration */ +struct _virDomainDiskDef { + virStorageSourcePtr src; /* non-NULL. XXX Allow NULL for empty cdrom?= */ + + virObjectPtr privateData; + + int device; /* enum virDomainDiskDevice */ + int bus; /* enum virDomainDiskBus */ + char *dst; + int tray_status; /* enum virDomainDiskTray */ + int removable; /* enum virTristateSwitch */ + + virStorageSourcePtr mirror; + int mirrorState; /* enum virDomainDiskMirrorState */ + int mirrorJob; /* virDomainBlockJobType */ + + struct { + unsigned int cylinders; + unsigned int heads; + unsigned int sectors; + int trans; /* enum virDomainDiskGeometryTrans */ + } geometry; + + struct { + unsigned int logical_block_size; + unsigned int physical_block_size; + } blockio; + + virDomainBlockIoTuneInfo blkdeviotune; + + char *driverName; + + char *serial; + char *wwn; + char *vendor; + char *product; + int cachemode; /* enum virDomainDiskCache */ + int error_policy; /* enum virDomainDiskErrorPolicy */ + int rerror_policy; /* enum virDomainDiskErrorPolicy */ + int iomode; /* enum virDomainDiskIo */ + int ioeventfd; /* enum virTristateSwitch */ + int event_idx; /* enum virTristateSwitch */ + int copy_on_read; /* enum virTristateSwitch */ + int snapshot; /* virDomainSnapshotLocation, snapshot_conf.h */ + int startupPolicy; /* enum virDomainStartupPolicy */ + bool transient; + virDomainDeviceInfo info; + int rawio; /* enum virTristateBool */ + int sgio; /* enum virDomainDeviceSGIO */ + int discard; /* enum virDomainDiskDiscard */ + unsigned int iothread; /* unused =3D 0, > 0 specific thread # */ + int detect_zeroes; /* enum virDomainDiskDetectZeroes */ + char *domain_name; /* backend domain name */ + unsigned int queues; + int model; /* enum virDomainDiskModel */ + virDomainVirtioOptionsPtr virtio; +}; + + +typedef enum { + VIR_DOMAIN_CONTROLLER_TYPE_IDE, + VIR_DOMAIN_CONTROLLER_TYPE_FDC, + VIR_DOMAIN_CONTROLLER_TYPE_SCSI, + VIR_DOMAIN_CONTROLLER_TYPE_SATA, + VIR_DOMAIN_CONTROLLER_TYPE_VIRTIO_SERIAL, + VIR_DOMAIN_CONTROLLER_TYPE_CCID, + VIR_DOMAIN_CONTROLLER_TYPE_USB, + VIR_DOMAIN_CONTROLLER_TYPE_PCI, + VIR_DOMAIN_CONTROLLER_TYPE_XENBUS, + + VIR_DOMAIN_CONTROLLER_TYPE_LAST +} virDomainControllerType; + + +typedef enum { + VIR_DOMAIN_CONTROLLER_MODEL_PCI_DEFAULT =3D -1, + VIR_DOMAIN_CONTROLLER_MODEL_PCI_ROOT, + VIR_DOMAIN_CONTROLLER_MODEL_PCIE_ROOT, + VIR_DOMAIN_CONTROLLER_MODEL_PCI_BRIDGE, + VIR_DOMAIN_CONTROLLER_MODEL_DMI_TO_PCI_BRIDGE, + VIR_DOMAIN_CONTROLLER_MODEL_PCIE_TO_PCI_BRIDGE, + VIR_DOMAIN_CONTROLLER_MODEL_PCIE_ROOT_PORT, + VIR_DOMAIN_CONTROLLER_MODEL_PCIE_SWITCH_UPSTREAM_PORT, + VIR_DOMAIN_CONTROLLER_MODEL_PCIE_SWITCH_DOWNSTREAM_PORT, + VIR_DOMAIN_CONTROLLER_MODEL_PCI_EXPANDER_BUS, + VIR_DOMAIN_CONTROLLER_MODEL_PCIE_EXPANDER_BUS, + + VIR_DOMAIN_CONTROLLER_MODEL_PCI_LAST +} virDomainControllerModelPCI; + +typedef enum { + VIR_DOMAIN_CONTROLLER_PCI_MODEL_NAME_NONE =3D 0, + VIR_DOMAIN_CONTROLLER_PCI_MODEL_NAME_PCI_BRIDGE, + VIR_DOMAIN_CONTROLLER_PCI_MODEL_NAME_I82801B11_BRIDGE, + VIR_DOMAIN_CONTROLLER_PCI_MODEL_NAME_IOH3420, + VIR_DOMAIN_CONTROLLER_PCI_MODEL_NAME_X3130_UPSTREAM, + VIR_DOMAIN_CONTROLLER_PCI_MODEL_NAME_XIO3130_DOWNSTREAM, + VIR_DOMAIN_CONTROLLER_PCI_MODEL_NAME_PXB, + VIR_DOMAIN_CONTROLLER_PCI_MODEL_NAME_PXB_PCIE, + VIR_DOMAIN_CONTROLLER_PCI_MODEL_NAME_PCIE_ROOT_PORT, + VIR_DOMAIN_CONTROLLER_PCI_MODEL_NAME_SPAPR_PCI_HOST_BRIDGE, + VIR_DOMAIN_CONTROLLER_PCI_MODEL_NAME_PCIE_PCI_BRIDGE, + + VIR_DOMAIN_CONTROLLER_PCI_MODEL_NAME_LAST +} virDomainControllerPCIModelName; + +typedef enum { + VIR_DOMAIN_CONTROLLER_MODEL_SCSI_DEFAULT =3D -1, + VIR_DOMAIN_CONTROLLER_MODEL_SCSI_AUTO, + VIR_DOMAIN_CONTROLLER_MODEL_SCSI_BUSLOGIC, + VIR_DOMAIN_CONTROLLER_MODEL_SCSI_LSILOGIC, + VIR_DOMAIN_CONTROLLER_MODEL_SCSI_LSISAS1068, + VIR_DOMAIN_CONTROLLER_MODEL_SCSI_VMPVSCSI, + VIR_DOMAIN_CONTROLLER_MODEL_SCSI_IBMVSCSI, + VIR_DOMAIN_CONTROLLER_MODEL_SCSI_VIRTIO_SCSI, + VIR_DOMAIN_CONTROLLER_MODEL_SCSI_LSISAS1078, + VIR_DOMAIN_CONTROLLER_MODEL_SCSI_VIRTIO_TRANSITIONAL, + VIR_DOMAIN_CONTROLLER_MODEL_SCSI_VIRTIO_NON_TRANSITIONAL, + + VIR_DOMAIN_CONTROLLER_MODEL_SCSI_LAST +} virDomainControllerModelSCSI; + +typedef enum { + VIR_DOMAIN_CONTROLLER_MODEL_USB_DEFAULT =3D -1, + VIR_DOMAIN_CONTROLLER_MODEL_USB_PIIX3_UHCI, + VIR_DOMAIN_CONTROLLER_MODEL_USB_PIIX4_UHCI, + VIR_DOMAIN_CONTROLLER_MODEL_USB_EHCI, + VIR_DOMAIN_CONTROLLER_MODEL_USB_ICH9_EHCI1, + VIR_DOMAIN_CONTROLLER_MODEL_USB_ICH9_UHCI1, + VIR_DOMAIN_CONTROLLER_MODEL_USB_ICH9_UHCI2, + VIR_DOMAIN_CONTROLLER_MODEL_USB_ICH9_UHCI3, + VIR_DOMAIN_CONTROLLER_MODEL_USB_VT82C686B_UHCI, + VIR_DOMAIN_CONTROLLER_MODEL_USB_PCI_OHCI, + VIR_DOMAIN_CONTROLLER_MODEL_USB_NEC_XHCI, + VIR_DOMAIN_CONTROLLER_MODEL_USB_QUSB1, + VIR_DOMAIN_CONTROLLER_MODEL_USB_QUSB2, + VIR_DOMAIN_CONTROLLER_MODEL_USB_QEMU_XHCI, + VIR_DOMAIN_CONTROLLER_MODEL_USB_NONE, + + VIR_DOMAIN_CONTROLLER_MODEL_USB_LAST +} virDomainControllerModelUSB; + +typedef enum { + VIR_DOMAIN_CONTROLLER_MODEL_IDE_DEFAULT =3D -1, + VIR_DOMAIN_CONTROLLER_MODEL_IDE_PIIX3, + VIR_DOMAIN_CONTROLLER_MODEL_IDE_PIIX4, + VIR_DOMAIN_CONTROLLER_MODEL_IDE_ICH6, + + VIR_DOMAIN_CONTROLLER_MODEL_IDE_LAST +} virDomainControllerModelIDE; + +typedef enum { + VIR_DOMAIN_CONTROLLER_MODEL_VIRTIO_SERIAL_DEFAULT =3D -1, + VIR_DOMAIN_CONTROLLER_MODEL_VIRTIO_SERIAL_VIRTIO, + VIR_DOMAIN_CONTROLLER_MODEL_VIRTIO_SERIAL_VIRTIO_TRANSITIONAL, + VIR_DOMAIN_CONTROLLER_MODEL_VIRTIO_SERIAL_VIRTIO_NON_TRANSITIONAL, + + VIR_DOMAIN_CONTROLLER_MODEL_VIRTIO_SERIAL_LAST +} virDomainControllerModelVirtioSerial; + +struct _virDomainVirtioSerialOpts { + int ports; /* -1 =3D=3D undef */ + int vectors; /* -1 =3D=3D undef */ +}; + +struct _virDomainPCIControllerOpts { + bool pcihole64; + unsigned long pcihole64size; + + /* the exact controller name is in the "model" subelement, e.g.: + * + * + * ... + */ + int modelName; /* the exact name of the device in hypervisor */ + + /* the following items are attributes of the "target" subelement + * of controller type=3D'pci'. They are bits of configuration that + * are specified on the qemu commandline and are visible to the + * guest OS, so they must be preserved to ensure ABI + * compatibility. + */ + int chassisNr; /* used by pci-bridge, -1 =3D=3D unspecified */ + /* chassis & port used by + * pcie-root-port/pcie-switch-downstream-port, -1 =3D unspecified */ + int chassis; + int port; + int busNr; /* used by pci-expander-bus, -1 =3D=3D unspecified */ + int targetIndex; /* used by spapr-pci-host-bridge, -1 =3D=3D unspecifi= ed */ + /* numaNode is a *subelement* of target (to match existing + * item in memory target config) -1 =3D=3D unspecified + */ + int numaNode; +}; + +struct _virDomainUSBControllerOpts { + int ports; /* -1 =3D=3D undef */ +}; + +struct _virDomainXenbusControllerOpts { + int maxGrantFrames; /* -1 =3D=3D undef */ +}; + +/* Stores the virtual disk controller configuration */ +struct _virDomainControllerDef { + int type; + int idx; + int model; /* -1 =3D=3D undef */ + unsigned int queues; + unsigned int cmd_per_lun; + unsigned int max_sectors; + int ioeventfd; /* enum virTristateSwitch */ + unsigned int iothread; /* unused =3D 0, > 0 specific thread # */ + union { + virDomainVirtioSerialOpts vioserial; + virDomainPCIControllerOpts pciopts; + virDomainUSBControllerOpts usbopts; + virDomainXenbusControllerOpts xenbusopts; + } opts; + virDomainDeviceInfo info; + virDomainVirtioOptionsPtr virtio; +}; + + +/* Types of disk backends */ +typedef enum { + VIR_DOMAIN_FS_TYPE_MOUNT, /* Mounts (binds) a host dir on a guest dir = */ + VIR_DOMAIN_FS_TYPE_BLOCK, /* Mounts a host block dev on a guest dir */ + VIR_DOMAIN_FS_TYPE_FILE, /* Loopback mounts a host file on a guest di= r */ + VIR_DOMAIN_FS_TYPE_TEMPLATE, /* Expands a OS template to a guest dir */ + VIR_DOMAIN_FS_TYPE_RAM, /* Mount a RAM filesystem on a guest dir */ + VIR_DOMAIN_FS_TYPE_BIND, /* Binds a guest dir to another guest dir */ + VIR_DOMAIN_FS_TYPE_VOLUME, /* Mounts storage pool volume to a guest */ + + VIR_DOMAIN_FS_TYPE_LAST +} virDomainFSType; + +/* Filesystem driver type */ +typedef enum { + VIR_DOMAIN_FS_DRIVER_TYPE_DEFAULT =3D 0, + VIR_DOMAIN_FS_DRIVER_TYPE_PATH, + VIR_DOMAIN_FS_DRIVER_TYPE_HANDLE, + VIR_DOMAIN_FS_DRIVER_TYPE_LOOP, + VIR_DOMAIN_FS_DRIVER_TYPE_NBD, + VIR_DOMAIN_FS_DRIVER_TYPE_PLOOP, + + VIR_DOMAIN_FS_DRIVER_TYPE_LAST +} virDomainFSDriverType; + +/* Filesystem mount access mode */ +typedef enum { + VIR_DOMAIN_FS_ACCESSMODE_PASSTHROUGH, + VIR_DOMAIN_FS_ACCESSMODE_MAPPED, + VIR_DOMAIN_FS_ACCESSMODE_SQUASH, + + VIR_DOMAIN_FS_ACCESSMODE_LAST +} virDomainFSAccessMode; + +/* Filesystem Write policy */ +typedef enum { + VIR_DOMAIN_FS_WRPOLICY_DEFAULT =3D 0, + VIR_DOMAIN_FS_WRPOLICY_IMMEDIATE, + + VIR_DOMAIN_FS_WRPOLICY_LAST +} virDomainFSWrpolicy; + +typedef enum { + VIR_DOMAIN_FS_MODEL_DEFAULT =3D 0, + VIR_DOMAIN_FS_MODEL_VIRTIO, + VIR_DOMAIN_FS_MODEL_VIRTIO_TRANSITIONAL, + VIR_DOMAIN_FS_MODEL_VIRTIO_NON_TRANSITIONAL, + + VIR_DOMAIN_FS_MODEL_LAST +} virDomainFSModel; + +struct _virDomainFSDef { + int type; + int fsdriver; /* enum virDomainFSDriverType */ + int accessmode; /* enum virDomainFSAccessMode */ + int wrpolicy; /* enum virDomainFSWrpolicy */ + int format; /* virStorageFileFormat */ + int model; /* virDomainFSModel */ + unsigned long long usage; /* in bytes */ + virStorageSourcePtr src; + char *dst; + bool readonly; + virDomainDeviceInfo info; + unsigned long long space_hard_limit; /* in bytes */ + unsigned long long space_soft_limit; /* in bytes */ + bool symlinksResolved; + virDomainVirtioOptionsPtr virtio; +}; + + +/* network config types */ +typedef enum { + VIR_DOMAIN_NET_TYPE_USER, + VIR_DOMAIN_NET_TYPE_ETHERNET, + VIR_DOMAIN_NET_TYPE_VHOSTUSER, + VIR_DOMAIN_NET_TYPE_SERVER, + VIR_DOMAIN_NET_TYPE_CLIENT, + VIR_DOMAIN_NET_TYPE_MCAST, + VIR_DOMAIN_NET_TYPE_NETWORK, + VIR_DOMAIN_NET_TYPE_BRIDGE, + VIR_DOMAIN_NET_TYPE_INTERNAL, + VIR_DOMAIN_NET_TYPE_DIRECT, + VIR_DOMAIN_NET_TYPE_HOSTDEV, + VIR_DOMAIN_NET_TYPE_UDP, + + VIR_DOMAIN_NET_TYPE_LAST +} virDomainNetType; + +/* network model types */ +typedef enum { + VIR_DOMAIN_NET_MODEL_UNKNOWN, + VIR_DOMAIN_NET_MODEL_NETFRONT, + VIR_DOMAIN_NET_MODEL_RTL8139, + VIR_DOMAIN_NET_MODEL_VIRTIO, + VIR_DOMAIN_NET_MODEL_E1000, + VIR_DOMAIN_NET_MODEL_E1000E, + VIR_DOMAIN_NET_MODEL_VIRTIO_TRANSITIONAL, + VIR_DOMAIN_NET_MODEL_VIRTIO_NON_TRANSITIONAL, + VIR_DOMAIN_NET_MODEL_USB_NET, + VIR_DOMAIN_NET_MODEL_SPAPR_VLAN, + VIR_DOMAIN_NET_MODEL_LAN9118, + VIR_DOMAIN_NET_MODEL_SMC91C111, + VIR_DOMAIN_NET_MODEL_VLANCE, + VIR_DOMAIN_NET_MODEL_VMXNET, + VIR_DOMAIN_NET_MODEL_VMXNET2, + VIR_DOMAIN_NET_MODEL_VMXNET3, + VIR_DOMAIN_NET_MODEL_AM79C970A, + VIR_DOMAIN_NET_MODEL_AM79C973, + VIR_DOMAIN_NET_MODEL_82540EM, + VIR_DOMAIN_NET_MODEL_82545EM, + VIR_DOMAIN_NET_MODEL_82543GC, + + VIR_DOMAIN_NET_MODEL_LAST +} virDomainNetModelType; + +/* the backend driver used for virtio interfaces */ +typedef enum { + VIR_DOMAIN_NET_BACKEND_TYPE_DEFAULT, /* prefer kernel, fall back to us= er */ + VIR_DOMAIN_NET_BACKEND_TYPE_QEMU, /* userland */ + VIR_DOMAIN_NET_BACKEND_TYPE_VHOST, /* kernel */ + + VIR_DOMAIN_NET_BACKEND_TYPE_LAST +} virDomainNetBackendType; + +/* the TX algorithm used for virtio interfaces */ +typedef enum { + VIR_DOMAIN_NET_VIRTIO_TX_MODE_DEFAULT, /* default for this version of = qemu */ + VIR_DOMAIN_NET_VIRTIO_TX_MODE_IOTHREAD, + VIR_DOMAIN_NET_VIRTIO_TX_MODE_TIMER, + + VIR_DOMAIN_NET_VIRTIO_TX_MODE_LAST +} virDomainNetVirtioTxModeType; + +/* link interface states */ +typedef enum { + VIR_DOMAIN_NET_INTERFACE_LINK_STATE_DEFAULT =3D 0, /* Default link= state (up) */ + VIR_DOMAIN_NET_INTERFACE_LINK_STATE_UP, /* Link is up. ("= cable" connected) */ + VIR_DOMAIN_NET_INTERFACE_LINK_STATE_DOWN , /* Link is down. = ("cable" disconnected) */ + + VIR_DOMAIN_NET_INTERFACE_LINK_STATE_LAST +} virDomainNetInterfaceLinkState; + +/* Config that was actually used to bring up interface, after + * resolving network reference. This is private data, only used within + * libvirt, but still must maintain backward compatibility, because + * different versions of libvirt may read the same data file. + */ +struct _virDomainActualNetDef { + int type; /* enum virDomainNetType */ + union { + struct { + char *brname; + int macTableManager; /* enum virNetworkBridgeMACTableManagerTy= pe */ + } bridge; + struct { + char *linkdev; + int mode; /* enum virMacvtapMode from util/macvtap.h */ + } direct; + struct { + virDomainHostdevDef def; + } hostdev; + } data; + virNetDevVPortProfilePtr virtPortProfile; + virNetDevBandwidthPtr bandwidth; + virNetDevVlan vlan; + int trustGuestRxFilters; /* enum virTristateBool */ + unsigned int class_id; /* class ID for bandwidth 'floor' */ +}; + +/* Stores the virtual network interface configuration */ +struct _virDomainNetDef { + virDomainNetType type; + virMacAddr mac; + bool mac_generated; /* true if mac was *just now* auto-generated by li= bvirt */ + int model; /* virDomainNetModelType */ + char *modelstr; + union { + struct { + virDomainNetBackendType name; /* which driver backend to use */ + virDomainNetVirtioTxModeType txmode; + virTristateSwitch ioeventfd; + virTristateSwitch event_idx; + unsigned int queues; /* Multiqueue virtio-net */ + unsigned int rx_queue_size; + unsigned int tx_queue_size; + struct { + virTristateSwitch csum; + virTristateSwitch gso; + virTristateSwitch tso4; + virTristateSwitch tso6; + virTristateSwitch ecn; + virTristateSwitch ufo; + virTristateSwitch mrg_rxbuf; + } host; + struct { + virTristateSwitch csum; + virTristateSwitch tso4; + virTristateSwitch tso6; + virTristateSwitch ecn; + virTristateSwitch ufo; + } guest; + } virtio; + } driver; + struct { + char *tap; + char *vhost; + } backend; + union { + virDomainChrSourceDefPtr vhostuser; + struct { + char *address; + int port; + char *localaddr; + int localport; + } socket; /* any of NET_CLIENT or NET_SERVER or NET_MCAST */ + struct { + char *name; + char *portgroup; + unsigned char portid[VIR_UUID_BUFLEN]; + /* actual has info about the currently used physical + * device (if the network is of type + * bridge/private/vepa/passthrough). This is saved in the + * domain state, but never written to persistent config, + * since it needs to be re-allocated whenever the domain + * is restarted. It is also never shown to the user, and + * the user cannot specify it in XML documents. + * + * This information is populated from the virNetworkPort + * object associated with the portid UUID above. + */ + virDomainActualNetDefPtr actual; + } network; + struct { + char *brname; + } bridge; + struct { + char *name; + } internal; + struct { + char *linkdev; + int mode; /* enum virMacvtapMode from util/macvtap.h */ + } direct; + struct { + virDomainHostdevDef def; + } hostdev; + } data; + /* virtPortProfile is used by network/bridge/direct/hostdev */ + virNetDevVPortProfilePtr virtPortProfile; + struct { + bool sndbuf_specified; + unsigned long sndbuf; + } tune; + char *script; + char *domain_name; /* backend domain name */ + char *ifname; /* interface name on the host () */ + virNetDevIPInfo hostIP; + char *ifname_guest_actual; + char *ifname_guest; + virNetDevIPInfo guestIP; + virDomainDeviceInfo info; + char *filter; + virHashTablePtr filterparams; + virNetDevBandwidthPtr bandwidth; + virNetDevVlan vlan; + int trustGuestRxFilters; /* enum virTristateBool */ + int linkstate; + unsigned int mtu; + virNetDevCoalescePtr coalesce; + virDomainVirtioOptionsPtr virtio; +}; + +typedef enum { + VIR_DOMAIN_CHR_DEVICE_STATE_DEFAULT =3D 0, + VIR_DOMAIN_CHR_DEVICE_STATE_CONNECTED, + VIR_DOMAIN_CHR_DEVICE_STATE_DISCONNECTED, + + VIR_DOMAIN_CHR_DEVICE_STATE_LAST +} virDomainChrDeviceState; + +VIR_ENUM_DECL(virDomainChrDeviceState); + +typedef enum { + VIR_DOMAIN_CHR_DEVICE_TYPE_PARALLEL =3D 0, + VIR_DOMAIN_CHR_DEVICE_TYPE_SERIAL, + VIR_DOMAIN_CHR_DEVICE_TYPE_CONSOLE, + VIR_DOMAIN_CHR_DEVICE_TYPE_CHANNEL, + + VIR_DOMAIN_CHR_DEVICE_TYPE_LAST +} virDomainChrDeviceType; + +typedef enum { + VIR_DOMAIN_CHR_SERIAL_TARGET_TYPE_NONE =3D 0, + VIR_DOMAIN_CHR_SERIAL_TARGET_TYPE_ISA, + VIR_DOMAIN_CHR_SERIAL_TARGET_TYPE_USB, + VIR_DOMAIN_CHR_SERIAL_TARGET_TYPE_PCI, + VIR_DOMAIN_CHR_SERIAL_TARGET_TYPE_SPAPR_VIO, + VIR_DOMAIN_CHR_SERIAL_TARGET_TYPE_SYSTEM, + VIR_DOMAIN_CHR_SERIAL_TARGET_TYPE_SCLP, + + VIR_DOMAIN_CHR_SERIAL_TARGET_TYPE_LAST +} virDomainChrSerialTargetType; + +typedef enum { + VIR_DOMAIN_CHR_CHANNEL_TARGET_TYPE_NONE =3D 0, + VIR_DOMAIN_CHR_CHANNEL_TARGET_TYPE_GUESTFWD, + VIR_DOMAIN_CHR_CHANNEL_TARGET_TYPE_VIRTIO, + VIR_DOMAIN_CHR_CHANNEL_TARGET_TYPE_XEN, + + VIR_DOMAIN_CHR_CHANNEL_TARGET_TYPE_LAST +} virDomainChrChannelTargetType; + +typedef enum { + VIR_DOMAIN_CHR_CONSOLE_TARGET_TYPE_NONE =3D 0, + VIR_DOMAIN_CHR_CONSOLE_TARGET_TYPE_SERIAL, + VIR_DOMAIN_CHR_CONSOLE_TARGET_TYPE_XEN, + VIR_DOMAIN_CHR_CONSOLE_TARGET_TYPE_UML, + VIR_DOMAIN_CHR_CONSOLE_TARGET_TYPE_VIRTIO, + VIR_DOMAIN_CHR_CONSOLE_TARGET_TYPE_LXC, + VIR_DOMAIN_CHR_CONSOLE_TARGET_TYPE_OPENVZ, + VIR_DOMAIN_CHR_CONSOLE_TARGET_TYPE_SCLP, + VIR_DOMAIN_CHR_CONSOLE_TARGET_TYPE_SCLPLM, + + VIR_DOMAIN_CHR_CONSOLE_TARGET_TYPE_LAST +} virDomainChrConsoleTargetType; + +typedef enum { + VIR_DOMAIN_CHR_SERIAL_TARGET_MODEL_NONE =3D 0, + VIR_DOMAIN_CHR_SERIAL_TARGET_MODEL_ISA_SERIAL, + VIR_DOMAIN_CHR_SERIAL_TARGET_MODEL_USB_SERIAL, + VIR_DOMAIN_CHR_SERIAL_TARGET_MODEL_PCI_SERIAL, + VIR_DOMAIN_CHR_SERIAL_TARGET_MODEL_SPAPR_VTY, + VIR_DOMAIN_CHR_SERIAL_TARGET_MODEL_PL011, + VIR_DOMAIN_CHR_SERIAL_TARGET_MODEL_SCLPCONSOLE, + VIR_DOMAIN_CHR_SERIAL_TARGET_MODEL_SCLPLMCONSOLE, + VIR_DOMAIN_CHR_SERIAL_TARGET_MODEL_16550A, + + VIR_DOMAIN_CHR_SERIAL_TARGET_MODEL_LAST +} virDomainChrSerialTargetModel; + +VIR_ENUM_DECL(virDomainChrSerialTargetModel); + +typedef enum { + VIR_DOMAIN_CHR_TYPE_NULL, + VIR_DOMAIN_CHR_TYPE_VC, + VIR_DOMAIN_CHR_TYPE_PTY, + VIR_DOMAIN_CHR_TYPE_DEV, + VIR_DOMAIN_CHR_TYPE_FILE, + VIR_DOMAIN_CHR_TYPE_PIPE, + VIR_DOMAIN_CHR_TYPE_STDIO, + VIR_DOMAIN_CHR_TYPE_UDP, + VIR_DOMAIN_CHR_TYPE_TCP, + VIR_DOMAIN_CHR_TYPE_UNIX, + VIR_DOMAIN_CHR_TYPE_SPICEVMC, + VIR_DOMAIN_CHR_TYPE_SPICEPORT, + VIR_DOMAIN_CHR_TYPE_NMDM, + + VIR_DOMAIN_CHR_TYPE_LAST +} virDomainChrType; + +typedef enum { + VIR_DOMAIN_CHR_TCP_PROTOCOL_RAW =3D 0, + VIR_DOMAIN_CHR_TCP_PROTOCOL_TELNET, + VIR_DOMAIN_CHR_TCP_PROTOCOL_TELNETS, /* secure telnet */ + VIR_DOMAIN_CHR_TCP_PROTOCOL_TLS, + + VIR_DOMAIN_CHR_TCP_PROTOCOL_LAST +} virDomainChrTcpProtocol; + +typedef enum { + VIR_DOMAIN_CHR_SPICEVMC_VDAGENT, + VIR_DOMAIN_CHR_SPICEVMC_SMARTCARD, + VIR_DOMAIN_CHR_SPICEVMC_USBREDIR, + + VIR_DOMAIN_CHR_SPICEVMC_LAST +} virDomainChrSpicevmcName; + + +struct _virDomainChrSourceReconnectDef { + virTristateBool enabled; + unsigned int timeout; +}; + + +/* The host side information for a character device. */ +struct _virDomainChrSourceDef { + virObject parent; + int type; /* virDomainChrType */ + virObjectPtr privateData; + union { + /* no for null, vc, stdio */ + struct { + char *path; + int append; /* enum virTristateSwitch */ + } file; /* pty, file, pipe, or device */ + struct { + char *master; + char *slave; + } nmdm; + struct { + char *host; + char *service; + bool listen; + int protocol; + bool tlscreds; + int haveTLS; /* enum virTristateBool */ + bool tlsFromConfig; + virDomainChrSourceReconnectDef reconnect; + } tcp; + struct { + char *bindHost; + char *bindService; + char *connectHost; + char *connectService; + } udp; + struct { + char *path; + bool listen; + virDomainChrSourceReconnectDef reconnect; + } nix; + int spicevmc; + struct { + char *channel; + } spiceport; + } data; + char *logfile; + int logappend; + + size_t nseclabels; + virSecurityDeviceLabelDefPtr *seclabels; +}; + +/* A complete character device, both host and domain views. */ +struct _virDomainChrDef { + int deviceType; /* enum virDomainChrDeviceType */ + + int targetType; /* enum virDomainChrConsoleTargetType || + enum virDomainChrChannelTargetType || + enum virDomainChrSerialTargetType according to devi= ceType */ + int targetModel; /* enum virDomainChrSerialTargetModel */ + + union { + int port; /* parallel, serial, console */ + virSocketAddrPtr addr; /* guestfwd */ + char *name; /* virtio */ + } target; + + virDomainChrDeviceState state; + + virDomainChrSourceDefPtr source; + + virDomainDeviceInfo info; +}; + +typedef enum { + VIR_DOMAIN_SMARTCARD_TYPE_HOST, + VIR_DOMAIN_SMARTCARD_TYPE_HOST_CERTIFICATES, + VIR_DOMAIN_SMARTCARD_TYPE_PASSTHROUGH, + + VIR_DOMAIN_SMARTCARD_TYPE_LAST +} virDomainSmartcardType; + +#define VIR_DOMAIN_SMARTCARD_NUM_CERTIFICATES 3 +#define VIR_DOMAIN_SMARTCARD_DEFAULT_DATABASE "/etc/pki/nssdb" + +struct _virDomainSmartcardDef { + int type; /* virDomainSmartcardType */ + union { + /* no extra data for 'host' */ + struct { + char *file[VIR_DOMAIN_SMARTCARD_NUM_CERTIFICATES]; + char *database; + } cert; /* 'host-certificates' */ + virDomainChrSourceDefPtr passthru; /* 'passthrough' */ + } data; + + virDomainDeviceInfo info; +}; + +struct _virDomainHubDef { + int type; + virDomainDeviceInfo info; +}; + +typedef enum { + VIR_DOMAIN_TPM_MODEL_TIS, + VIR_DOMAIN_TPM_MODEL_CRB, + + VIR_DOMAIN_TPM_MODEL_LAST +} virDomainTPMModel; + +typedef enum { + VIR_DOMAIN_TPM_TYPE_PASSTHROUGH, + VIR_DOMAIN_TPM_TYPE_EMULATOR, + + VIR_DOMAIN_TPM_TYPE_LAST +} virDomainTPMBackendType; + +typedef enum { + VIR_DOMAIN_TPM_VERSION_DEFAULT, + VIR_DOMAIN_TPM_VERSION_1_2, + VIR_DOMAIN_TPM_VERSION_2_0, + + VIR_DOMAIN_TPM_VERSION_LAST +} virDomainTPMVersion; + +#define VIR_DOMAIN_TPM_DEFAULT_DEVICE "/dev/tpm0" + +struct _virDomainTPMDef { + int type; /* virDomainTPMBackendType */ + virDomainDeviceInfo info; + int model; /* virDomainTPMModel */ + int version; /* virDomainTPMVersion */ + union { + struct { + virDomainChrSourceDef source; + } passthrough; + struct { + virDomainChrSourceDef source; + char *storagepath; + char *logfile; + } emulator; + } data; +}; + +typedef enum { + VIR_DOMAIN_INPUT_TYPE_MOUSE, + VIR_DOMAIN_INPUT_TYPE_TABLET, + VIR_DOMAIN_INPUT_TYPE_KBD, + VIR_DOMAIN_INPUT_TYPE_PASSTHROUGH, + + VIR_DOMAIN_INPUT_TYPE_LAST +} virDomainInputType; + +typedef enum { + VIR_DOMAIN_INPUT_BUS_PS2, + VIR_DOMAIN_INPUT_BUS_USB, + VIR_DOMAIN_INPUT_BUS_XEN, + VIR_DOMAIN_INPUT_BUS_PARALLELS, /* pseudo device for VNC in containers= */ + VIR_DOMAIN_INPUT_BUS_VIRTIO, + + VIR_DOMAIN_INPUT_BUS_LAST +} virDomainInputBus; + +typedef enum { + VIR_DOMAIN_INPUT_MODEL_DEFAULT =3D 0, + VIR_DOMAIN_INPUT_MODEL_VIRTIO, + VIR_DOMAIN_INPUT_MODEL_VIRTIO_TRANSITIONAL, + VIR_DOMAIN_INPUT_MODEL_VIRTIO_NON_TRANSITIONAL, + + VIR_DOMAIN_INPUT_MODEL_LAST +} virDomainInputModel; + +struct _virDomainInputDef { + int type; + int bus; + int model; /* virDomainInputModel */ + struct { + char *evdev; + } source; + virDomainDeviceInfo info; + virDomainVirtioOptionsPtr virtio; +}; + +typedef enum { + VIR_DOMAIN_SOUND_CODEC_TYPE_DUPLEX, + VIR_DOMAIN_SOUND_CODEC_TYPE_MICRO, + VIR_DOMAIN_SOUND_CODEC_TYPE_OUTPUT, + + VIR_DOMAIN_SOUND_CODEC_TYPE_LAST +} virDomainSoundCodecType; + +typedef enum { + VIR_DOMAIN_SOUND_MODEL_SB16, + VIR_DOMAIN_SOUND_MODEL_ES1370, + VIR_DOMAIN_SOUND_MODEL_PCSPK, + VIR_DOMAIN_SOUND_MODEL_AC97, + VIR_DOMAIN_SOUND_MODEL_ICH6, + VIR_DOMAIN_SOUND_MODEL_ICH9, + VIR_DOMAIN_SOUND_MODEL_USB, + + VIR_DOMAIN_SOUND_MODEL_LAST +} virDomainSoundModel; + +struct _virDomainSoundCodecDef { + int type; + int cad; +}; + +struct _virDomainSoundDef { + int model; + virDomainDeviceInfo info; + + size_t ncodecs; + virDomainSoundCodecDefPtr *codecs; +}; + +typedef enum { + VIR_DOMAIN_WATCHDOG_MODEL_I6300ESB, + VIR_DOMAIN_WATCHDOG_MODEL_IB700, + VIR_DOMAIN_WATCHDOG_MODEL_DIAG288, + + VIR_DOMAIN_WATCHDOG_MODEL_LAST +} virDomainWatchdogModel; + +typedef enum { + VIR_DOMAIN_WATCHDOG_ACTION_RESET, + VIR_DOMAIN_WATCHDOG_ACTION_SHUTDOWN, + VIR_DOMAIN_WATCHDOG_ACTION_POWEROFF, + VIR_DOMAIN_WATCHDOG_ACTION_PAUSE, + VIR_DOMAIN_WATCHDOG_ACTION_DUMP, + VIR_DOMAIN_WATCHDOG_ACTION_NONE, + VIR_DOMAIN_WATCHDOG_ACTION_INJECTNMI, + + VIR_DOMAIN_WATCHDOG_ACTION_LAST +} virDomainWatchdogAction; + +struct _virDomainWatchdogDef { + int model; + int action; + virDomainDeviceInfo info; +}; + + +typedef enum { + VIR_DOMAIN_VIDEO_TYPE_DEFAULT, + VIR_DOMAIN_VIDEO_TYPE_VGA, + VIR_DOMAIN_VIDEO_TYPE_CIRRUS, + VIR_DOMAIN_VIDEO_TYPE_VMVGA, + VIR_DOMAIN_VIDEO_TYPE_XEN, + VIR_DOMAIN_VIDEO_TYPE_VBOX, + VIR_DOMAIN_VIDEO_TYPE_QXL, + VIR_DOMAIN_VIDEO_TYPE_PARALLELS, /* pseudo device for VNC in container= s */ + VIR_DOMAIN_VIDEO_TYPE_VIRTIO, + VIR_DOMAIN_VIDEO_TYPE_GOP, + VIR_DOMAIN_VIDEO_TYPE_NONE, + VIR_DOMAIN_VIDEO_TYPE_BOCHS, + + VIR_DOMAIN_VIDEO_TYPE_LAST +} virDomainVideoType; + + +typedef enum { + VIR_DOMAIN_VIDEO_VGACONF_IO =3D 0, + VIR_DOMAIN_VIDEO_VGACONF_ON, + VIR_DOMAIN_VIDEO_VGACONF_OFF, + + VIR_DOMAIN_VIDEO_VGACONF_LAST +} virDomainVideoVGAConf; + +VIR_ENUM_DECL(virDomainVideoVGAConf); + +struct _virDomainVideoAccelDef { + int accel2d; /* enum virTristateBool */ + int accel3d; /* enum virTristateBool */ +}; + + +struct _virDomainVideoDriverDef { + virDomainVideoVGAConf vgaconf; +}; + +struct _virDomainVideoDef { + int type; /* enum virDomainVideoType */ + unsigned int ram; /* kibibytes (multiples of 1024) */ + unsigned int vram; /* kibibytes (multiples of 1024) */ + unsigned int vram64; /* kibibytes (multiples of 1024) */ + unsigned int vgamem; /* kibibytes (multiples of 1024) */ + unsigned int heads; + bool primary; + virDomainVideoAccelDefPtr accel; + virDomainVideoDriverDefPtr driver; + virDomainDeviceInfo info; + virDomainVirtioOptionsPtr virtio; +}; + +/* graphics console modes */ +typedef enum { + VIR_DOMAIN_GRAPHICS_TYPE_SDL, + VIR_DOMAIN_GRAPHICS_TYPE_VNC, + VIR_DOMAIN_GRAPHICS_TYPE_RDP, + VIR_DOMAIN_GRAPHICS_TYPE_DESKTOP, + VIR_DOMAIN_GRAPHICS_TYPE_SPICE, + VIR_DOMAIN_GRAPHICS_TYPE_EGL_HEADLESS, + + VIR_DOMAIN_GRAPHICS_TYPE_LAST +} virDomainGraphicsType; + +typedef enum { + VIR_DOMAIN_GRAPHICS_VNC_SHARE_DEFAULT =3D 0, + VIR_DOMAIN_GRAPHICS_VNC_SHARE_ALLOW_EXCLUSIVE, + VIR_DOMAIN_GRAPHICS_VNC_SHARE_FORCE_SHARED, + VIR_DOMAIN_GRAPHICS_VNC_SHARE_IGNORE, + + VIR_DOMAIN_GRAPHICS_VNC_SHARE_LAST +} virDomainGraphicsVNCSharePolicy; + +typedef enum { + VIR_DOMAIN_GRAPHICS_AUTH_CONNECTED_DEFAULT =3D 0, + VIR_DOMAIN_GRAPHICS_AUTH_CONNECTED_FAIL, + VIR_DOMAIN_GRAPHICS_AUTH_CONNECTED_DISCONNECT, + VIR_DOMAIN_GRAPHICS_AUTH_CONNECTED_KEEP, + + VIR_DOMAIN_GRAPHICS_AUTH_CONNECTED_LAST +} virDomainGraphicsAuthConnectedType; + +struct _virDomainGraphicsAuthDef { + char *passwd; + bool expires; /* Whether there is an expiry time set */ + time_t validTo; /* seconds since epoch */ + int connected; /* action if connected */ +}; + +typedef enum { + VIR_DOMAIN_GRAPHICS_SPICE_CHANNEL_MAIN, + VIR_DOMAIN_GRAPHICS_SPICE_CHANNEL_DISPLAY, + VIR_DOMAIN_GRAPHICS_SPICE_CHANNEL_INPUT, + VIR_DOMAIN_GRAPHICS_SPICE_CHANNEL_CURSOR, + VIR_DOMAIN_GRAPHICS_SPICE_CHANNEL_PLAYBACK, + VIR_DOMAIN_GRAPHICS_SPICE_CHANNEL_RECORD, + VIR_DOMAIN_GRAPHICS_SPICE_CHANNEL_SMARTCARD, + VIR_DOMAIN_GRAPHICS_SPICE_CHANNEL_USBREDIR, + + VIR_DOMAIN_GRAPHICS_SPICE_CHANNEL_LAST +} virDomainGraphicsSpiceChannelName; + +typedef enum { + VIR_DOMAIN_GRAPHICS_SPICE_CHANNEL_MODE_ANY, + VIR_DOMAIN_GRAPHICS_SPICE_CHANNEL_MODE_SECURE, + VIR_DOMAIN_GRAPHICS_SPICE_CHANNEL_MODE_INSECURE, + + VIR_DOMAIN_GRAPHICS_SPICE_CHANNEL_MODE_LAST +} virDomainGraphicsSpiceChannelMode; + +typedef enum { + VIR_DOMAIN_GRAPHICS_SPICE_IMAGE_COMPRESSION_DEFAULT =3D 0, + VIR_DOMAIN_GRAPHICS_SPICE_IMAGE_COMPRESSION_AUTO_GLZ, + VIR_DOMAIN_GRAPHICS_SPICE_IMAGE_COMPRESSION_AUTO_LZ, + VIR_DOMAIN_GRAPHICS_SPICE_IMAGE_COMPRESSION_QUIC, + VIR_DOMAIN_GRAPHICS_SPICE_IMAGE_COMPRESSION_GLZ, + VIR_DOMAIN_GRAPHICS_SPICE_IMAGE_COMPRESSION_LZ, + VIR_DOMAIN_GRAPHICS_SPICE_IMAGE_COMPRESSION_OFF, + + VIR_DOMAIN_GRAPHICS_SPICE_IMAGE_COMPRESSION_LAST +} virDomainGraphicsSpiceImageCompression; + +typedef enum { + VIR_DOMAIN_GRAPHICS_SPICE_JPEG_COMPRESSION_DEFAULT =3D 0, + VIR_DOMAIN_GRAPHICS_SPICE_JPEG_COMPRESSION_AUTO, + VIR_DOMAIN_GRAPHICS_SPICE_JPEG_COMPRESSION_NEVER, + VIR_DOMAIN_GRAPHICS_SPICE_JPEG_COMPRESSION_ALWAYS, + + VIR_DOMAIN_GRAPHICS_SPICE_JPEG_COMPRESSION_LAST +} virDomainGraphicsSpiceJpegCompression; + +typedef enum { + VIR_DOMAIN_GRAPHICS_SPICE_ZLIB_COMPRESSION_DEFAULT =3D 0, + VIR_DOMAIN_GRAPHICS_SPICE_ZLIB_COMPRESSION_AUTO, + VIR_DOMAIN_GRAPHICS_SPICE_ZLIB_COMPRESSION_NEVER, + VIR_DOMAIN_GRAPHICS_SPICE_ZLIB_COMPRESSION_ALWAYS, + + VIR_DOMAIN_GRAPHICS_SPICE_ZLIB_COMPRESSION_LAST +} virDomainGraphicsSpiceZlibCompression; + +typedef enum { + VIR_DOMAIN_GRAPHICS_SPICE_MOUSE_MODE_DEFAULT =3D 0, + VIR_DOMAIN_GRAPHICS_SPICE_MOUSE_MODE_SERVER, + VIR_DOMAIN_GRAPHICS_SPICE_MOUSE_MODE_CLIENT, + + VIR_DOMAIN_GRAPHICS_SPICE_MOUSE_MODE_LAST +} virDomainGraphicsSpiceMouseMode; + +typedef enum { + VIR_DOMAIN_GRAPHICS_SPICE_STREAMING_MODE_DEFAULT =3D 0, + VIR_DOMAIN_GRAPHICS_SPICE_STREAMING_MODE_FILTER, + VIR_DOMAIN_GRAPHICS_SPICE_STREAMING_MODE_ALL, + VIR_DOMAIN_GRAPHICS_SPICE_STREAMING_MODE_OFF, + + VIR_DOMAIN_GRAPHICS_SPICE_STREAMING_MODE_LAST +} virDomainGraphicsSpiceStreamingMode; + +typedef enum { + VIR_DOMAIN_GRAPHICS_LISTEN_TYPE_NONE =3D 0, + VIR_DOMAIN_GRAPHICS_LISTEN_TYPE_ADDRESS, + VIR_DOMAIN_GRAPHICS_LISTEN_TYPE_NETWORK, + VIR_DOMAIN_GRAPHICS_LISTEN_TYPE_SOCKET, + + VIR_DOMAIN_GRAPHICS_LISTEN_TYPE_LAST +} virDomainGraphicsListenType; + +typedef enum { + VIR_DOMAIN_HUB_TYPE_USB, + + VIR_DOMAIN_HUB_TYPE_LAST +} virDomainHubType; + +struct _virDomainGraphicsListenDef { + virDomainGraphicsListenType type; + char *address; + char *network; + char *socket; + bool fromConfig; /* true if the @address is config file originated = */ + bool autoGenerated; +}; + +struct _virDomainGraphicsDef { + virObjectPtr privateData; + + /* Port value discipline: + * Value -1 is legacy syntax indicating that it should be auto-allocat= ed. + * Value 0 means port wasn't specified in XML at all. + * Positive value is actual port number given in XML. + */ + virDomainGraphicsType type; + union { + struct { + int port; + bool portReserved; + int websocket; + bool websocketGenerated; + bool autoport; + char *keymap; + virDomainGraphicsAuthDef auth; + int sharePolicy; + } vnc; + struct { + char *display; + char *xauth; + bool fullscreen; + virTristateBool gl; + } sdl; + struct { + int port; + bool autoport; + bool replaceUser; + bool multiUser; + } rdp; + struct { + char *display; + bool fullscreen; + } desktop; + struct { + int port; + int tlsPort; + bool portReserved; + bool tlsPortReserved; + virDomainGraphicsSpiceMouseMode mousemode; + char *keymap; + virDomainGraphicsAuthDef auth; + bool autoport; + int channels[VIR_DOMAIN_GRAPHICS_SPICE_CHANNEL_LAST]; + virDomainGraphicsSpiceChannelMode defaultMode; + int image; + int jpeg; + int zlib; + int playback; + int streaming; + virTristateBool copypaste; + virTristateBool filetransfer; + virTristateBool gl; + char *rendernode; + } spice; + struct { + char *rendernode; + } egl_headless; + } data; + /* nListens, listens, and *port are only useful if type is vnc, + * rdp, or spice. They've been extracted from the union only to + * simplify parsing code.*/ + size_t nListens; + virDomainGraphicsListenDefPtr listens; +}; + +typedef enum { + VIR_DOMAIN_REDIRDEV_BUS_USB, + + VIR_DOMAIN_REDIRDEV_BUS_LAST +} virDomainRedirdevBus; + +struct _virDomainRedirdevDef { + int bus; /* enum virDomainRedirdevBus */ + + virDomainChrSourceDefPtr source; + + virDomainDeviceInfo info; /* Guest address */ +}; + +struct _virDomainRedirFilterUSBDevDef { + int usbClass; + int vendor; + int product; + int version; + bool allow; +}; + +struct _virDomainRedirFilterDef { + size_t nusbdevs; + virDomainRedirFilterUSBDevDefPtr *usbdevs; +}; + +typedef enum { + VIR_DOMAIN_MEMBALLOON_MODEL_VIRTIO, + VIR_DOMAIN_MEMBALLOON_MODEL_XEN, + VIR_DOMAIN_MEMBALLOON_MODEL_NONE, + VIR_DOMAIN_MEMBALLOON_MODEL_VIRTIO_TRANSITIONAL, + VIR_DOMAIN_MEMBALLOON_MODEL_VIRTIO_NON_TRANSITIONAL, + + VIR_DOMAIN_MEMBALLOON_MODEL_LAST +} virDomainMemballoonModel; + +struct _virDomainMemballoonDef { + int model; + virDomainDeviceInfo info; + int period; /* seconds between collections */ + int autodeflate; /* enum virTristateSwitch */ + virDomainVirtioOptionsPtr virtio; +}; + +struct _virDomainNVRAMDef { + virDomainDeviceInfo info; +}; + +typedef enum { + VIR_DOMAIN_SHMEM_MODEL_IVSHMEM, + VIR_DOMAIN_SHMEM_MODEL_IVSHMEM_PLAIN, + VIR_DOMAIN_SHMEM_MODEL_IVSHMEM_DOORBELL, + + VIR_DOMAIN_SHMEM_MODEL_LAST +} virDomainShmemModel; + +struct _virDomainShmemDef { + char *name; + unsigned long long size; + int model; /* enum virDomainShmemModel */ + struct { + bool enabled; + virDomainChrSourceDef chr; + } server; + struct { + bool enabled; + unsigned vectors; + virTristateSwitch ioeventfd; + } msi; + virDomainDeviceInfo info; +}; + +typedef enum { + VIR_DOMAIN_SMBIOS_NONE =3D 0, + VIR_DOMAIN_SMBIOS_EMULATE, + VIR_DOMAIN_SMBIOS_HOST, + VIR_DOMAIN_SMBIOS_SYSINFO, + + VIR_DOMAIN_SMBIOS_LAST +} virDomainSmbiosMode; + + +#define VIR_DOMAIN_MAX_BOOT_DEVS 4 + +typedef enum { + VIR_DOMAIN_BOOT_FLOPPY, + VIR_DOMAIN_BOOT_CDROM, + VIR_DOMAIN_BOOT_DISK, + VIR_DOMAIN_BOOT_NET, + + VIR_DOMAIN_BOOT_LAST +} virDomainBootOrder; + +typedef enum { + VIR_DOMAIN_FEATURE_ACPI, + VIR_DOMAIN_FEATURE_APIC, + VIR_DOMAIN_FEATURE_PAE, + VIR_DOMAIN_FEATURE_HAP, + VIR_DOMAIN_FEATURE_VIRIDIAN, + VIR_DOMAIN_FEATURE_PRIVNET, + VIR_DOMAIN_FEATURE_HYPERV, + VIR_DOMAIN_FEATURE_KVM, + VIR_DOMAIN_FEATURE_PVSPINLOCK, + VIR_DOMAIN_FEATURE_CAPABILITIES, + VIR_DOMAIN_FEATURE_PMU, + VIR_DOMAIN_FEATURE_VMPORT, + VIR_DOMAIN_FEATURE_GIC, + VIR_DOMAIN_FEATURE_SMM, + VIR_DOMAIN_FEATURE_IOAPIC, + VIR_DOMAIN_FEATURE_HPT, + VIR_DOMAIN_FEATURE_VMCOREINFO, + VIR_DOMAIN_FEATURE_HTM, + VIR_DOMAIN_FEATURE_NESTED_HV, + VIR_DOMAIN_FEATURE_MSRS, + + VIR_DOMAIN_FEATURE_LAST +} virDomainFeature; + +#define VIR_DOMAIN_HYPERV_VENDOR_ID_MAX 12 + +typedef enum { + VIR_DOMAIN_HYPERV_RELAXED =3D 0, + VIR_DOMAIN_HYPERV_VAPIC, + VIR_DOMAIN_HYPERV_SPINLOCKS, + VIR_DOMAIN_HYPERV_VPINDEX, + VIR_DOMAIN_HYPERV_RUNTIME, + VIR_DOMAIN_HYPERV_SYNIC, + VIR_DOMAIN_HYPERV_STIMER, + VIR_DOMAIN_HYPERV_RESET, + VIR_DOMAIN_HYPERV_VENDOR_ID, + VIR_DOMAIN_HYPERV_FREQUENCIES, + VIR_DOMAIN_HYPERV_REENLIGHTENMENT, + VIR_DOMAIN_HYPERV_TLBFLUSH, + VIR_DOMAIN_HYPERV_IPI, + VIR_DOMAIN_HYPERV_EVMCS, + + VIR_DOMAIN_HYPERV_LAST +} virDomainHyperv; + +typedef enum { + VIR_DOMAIN_KVM_HIDDEN =3D 0, + + VIR_DOMAIN_KVM_LAST +} virDomainKVM; + +typedef enum { + VIR_DOMAIN_MSRS_UNKNOWN =3D 0, + + VIR_DOMAIN_MSRS_LAST +} virDomainMsrs; + +typedef enum { + VIR_DOMAIN_MSRS_UNKNOWN_IGNORE =3D 0, + VIR_DOMAIN_MSRS_UNKNOWN_FAULT, + + VIR_DOMAIN_MSRS_UNKNOWN_LAST +} virDomainMsrsUnknown; + +typedef enum { + VIR_DOMAIN_CAPABILITIES_POLICY_DEFAULT =3D 0, + VIR_DOMAIN_CAPABILITIES_POLICY_ALLOW, + VIR_DOMAIN_CAPABILITIES_POLICY_DENY, + + VIR_DOMAIN_CAPABILITIES_POLICY_LAST +} virDomainCapabilitiesPolicy; + +/* The capabilities are ordered alphabetically to help check for new ones = */ +typedef enum { + VIR_DOMAIN_CAPS_FEATURE_AUDIT_CONTROL =3D 0, + VIR_DOMAIN_CAPS_FEATURE_AUDIT_WRITE, + VIR_DOMAIN_CAPS_FEATURE_BLOCK_SUSPEND, + VIR_DOMAIN_CAPS_FEATURE_CHOWN, + VIR_DOMAIN_CAPS_FEATURE_DAC_OVERRIDE, + VIR_DOMAIN_CAPS_FEATURE_DAC_READ_SEARCH, + VIR_DOMAIN_CAPS_FEATURE_FOWNER, + VIR_DOMAIN_CAPS_FEATURE_FSETID, + VIR_DOMAIN_CAPS_FEATURE_IPC_LOCK, + VIR_DOMAIN_CAPS_FEATURE_IPC_OWNER, + VIR_DOMAIN_CAPS_FEATURE_KILL, + VIR_DOMAIN_CAPS_FEATURE_LEASE, + VIR_DOMAIN_CAPS_FEATURE_LINUX_IMMUTABLE, + VIR_DOMAIN_CAPS_FEATURE_MAC_ADMIN, + VIR_DOMAIN_CAPS_FEATURE_MAC_OVERRIDE, + VIR_DOMAIN_CAPS_FEATURE_MKNOD, + VIR_DOMAIN_CAPS_FEATURE_NET_ADMIN, + VIR_DOMAIN_CAPS_FEATURE_NET_BIND_SERVICE, + VIR_DOMAIN_CAPS_FEATURE_NET_BROADCAST, + VIR_DOMAIN_CAPS_FEATURE_NET_RAW, + VIR_DOMAIN_CAPS_FEATURE_SETGID, + VIR_DOMAIN_CAPS_FEATURE_SETFCAP, + VIR_DOMAIN_CAPS_FEATURE_SETPCAP, + VIR_DOMAIN_CAPS_FEATURE_SETUID, + VIR_DOMAIN_CAPS_FEATURE_SYS_ADMIN, + VIR_DOMAIN_CAPS_FEATURE_SYS_BOOT, + VIR_DOMAIN_CAPS_FEATURE_SYS_CHROOT, + VIR_DOMAIN_CAPS_FEATURE_SYS_MODULE, + VIR_DOMAIN_CAPS_FEATURE_SYS_NICE, + VIR_DOMAIN_CAPS_FEATURE_SYS_PACCT, + VIR_DOMAIN_CAPS_FEATURE_SYS_PTRACE, + VIR_DOMAIN_CAPS_FEATURE_SYS_RAWIO, + VIR_DOMAIN_CAPS_FEATURE_SYS_RESOURCE, + VIR_DOMAIN_CAPS_FEATURE_SYS_TIME, + VIR_DOMAIN_CAPS_FEATURE_SYS_TTY_CONFIG, + VIR_DOMAIN_CAPS_FEATURE_SYSLOG, + VIR_DOMAIN_CAPS_FEATURE_WAKE_ALARM, + VIR_DOMAIN_CAPS_FEATURE_LAST +} virDomainCapsFeature; + +typedef enum { + VIR_DOMAIN_LOCK_FAILURE_DEFAULT, + VIR_DOMAIN_LOCK_FAILURE_POWEROFF, + VIR_DOMAIN_LOCK_FAILURE_RESTART, + VIR_DOMAIN_LOCK_FAILURE_PAUSE, + VIR_DOMAIN_LOCK_FAILURE_IGNORE, + + VIR_DOMAIN_LOCK_FAILURE_LAST +} virDomainLockFailureAction; + +VIR_ENUM_DECL(virDomainLockFailure); + +struct _virDomainBIOSDef { + int useserial; /* enum virTristateBool */ + /* reboot-timeout parameters */ + bool rt_set; + int rt_delay; +}; + +typedef enum { + VIR_DOMAIN_LOADER_TYPE_NONE =3D 0, + VIR_DOMAIN_LOADER_TYPE_ROM, + VIR_DOMAIN_LOADER_TYPE_PFLASH, + + VIR_DOMAIN_LOADER_TYPE_LAST +} virDomainLoader; + +VIR_ENUM_DECL(virDomainLoader); + +struct _virDomainLoaderDef { + char *path; + int readonly; /* enum virTristateBool */ + virDomainLoader type; + int secure; /* enum virTristateBool */ + char *nvram; /* path to non-volatile RAM */ + char *templt; /* user override of path to master nvram */ +}; + +void virDomainLoaderDefFree(virDomainLoaderDefPtr loader); + +typedef enum { + VIR_DOMAIN_IOAPIC_NONE =3D 0, + VIR_DOMAIN_IOAPIC_QEMU, + VIR_DOMAIN_IOAPIC_KVM, + + VIR_DOMAIN_IOAPIC_LAST +} virDomainIOAPIC; + +VIR_ENUM_DECL(virDomainIOAPIC); + +typedef enum { + VIR_DOMAIN_HPT_RESIZING_NONE =3D 0, + VIR_DOMAIN_HPT_RESIZING_ENABLED, + VIR_DOMAIN_HPT_RESIZING_DISABLED, + VIR_DOMAIN_HPT_RESIZING_REQUIRED, + + VIR_DOMAIN_HPT_RESIZING_LAST +} virDomainHPTResizing; + +VIR_ENUM_DECL(virDomainHPTResizing); + +/* Operating system configuration data & machine / arch */ +struct _virDomainOSEnv { + char *name; + char *value; +}; + +typedef enum { + VIR_DOMAIN_OS_DEF_FIRMWARE_NONE =3D 0, + VIR_DOMAIN_OS_DEF_FIRMWARE_BIOS, + VIR_DOMAIN_OS_DEF_FIRMWARE_EFI, + + VIR_DOMAIN_OS_DEF_FIRMWARE_LAST +} virDomainOsDefFirmware; + +VIR_ENUM_DECL(virDomainOsDefFirmware); + +struct _virDomainOSDef { + int type; + virDomainOsDefFirmware firmware; + virArch arch; + char *machine; + size_t nBootDevs; + int bootDevs[VIR_DOMAIN_BOOT_LAST]; + int bootmenu; /* enum virTristateBool */ + unsigned int bm_timeout; + bool bm_timeout_set; + char *init; + char **initargv; + virDomainOSEnvPtr *initenv; + char *initdir; + char *inituser; + char *initgroup; + char *kernel; + char *initrd; + char *cmdline; + char *dtb; + char *root; + char *slic_table; + virDomainLoaderDefPtr loader; + char *bootloader; + char *bootloaderArgs; + int smbios_mode; + + virDomainBIOSDef bios; +}; + +typedef enum { + VIR_DOMAIN_TIMER_NAME_PLATFORM =3D 0, + VIR_DOMAIN_TIMER_NAME_PIT, + VIR_DOMAIN_TIMER_NAME_RTC, + VIR_DOMAIN_TIMER_NAME_HPET, + VIR_DOMAIN_TIMER_NAME_TSC, + VIR_DOMAIN_TIMER_NAME_KVMCLOCK, + VIR_DOMAIN_TIMER_NAME_HYPERVCLOCK, + + VIR_DOMAIN_TIMER_NAME_LAST +} virDomainTimerNameType; + +typedef enum { + VIR_DOMAIN_TIMER_TRACK_BOOT =3D 0, + VIR_DOMAIN_TIMER_TRACK_GUEST, + VIR_DOMAIN_TIMER_TRACK_WALL, + + VIR_DOMAIN_TIMER_TRACK_LAST +} virDomainTimerTrackType; + +typedef enum { + VIR_DOMAIN_TIMER_TICKPOLICY_DELAY =3D 0, + VIR_DOMAIN_TIMER_TICKPOLICY_CATCHUP, + VIR_DOMAIN_TIMER_TICKPOLICY_MERGE, + VIR_DOMAIN_TIMER_TICKPOLICY_DISCARD, + + VIR_DOMAIN_TIMER_TICKPOLICY_LAST +} virDomainTimerTickpolicyType; + +typedef enum { + VIR_DOMAIN_TIMER_MODE_AUTO =3D 0, + VIR_DOMAIN_TIMER_MODE_NATIVE, + VIR_DOMAIN_TIMER_MODE_EMULATE, + VIR_DOMAIN_TIMER_MODE_PARAVIRT, + VIR_DOMAIN_TIMER_MODE_SMPSAFE, + + VIR_DOMAIN_TIMER_MODE_LAST +} virDomainTimerModeType; + +typedef enum { + VIR_DOMAIN_CPU_PLACEMENT_MODE_STATIC =3D 0, + VIR_DOMAIN_CPU_PLACEMENT_MODE_AUTO, + + VIR_DOMAIN_CPU_PLACEMENT_MODE_LAST +} virDomainCpuPlacementMode; + +struct _virDomainThreadSchedParam { + virProcessSchedPolicy policy; + int priority; +}; + +struct _virDomainTimerCatchupDef { + unsigned long threshold; + unsigned long slew; + unsigned long limit; +}; + +struct _virDomainTimerDef { + int name; + int present; /* unspecified =3D -1, no =3D 0, yes =3D 1 */ + int tickpolicy; /* none|catchup|merge|discard */ + + virDomainTimerCatchupDef catchup; + + /* track is only valid for name=3D'platform|rtc' */ + int track; /* host|guest */ + + /* frequency & mode are only valid for name=3D'tsc' */ + unsigned long frequency; /* in Hz, unspecified =3D 0 */ + int mode; /* auto|native|emulate|paravirt */ +}; + +typedef enum { + VIR_DOMAIN_CLOCK_OFFSET_UTC =3D 0, + VIR_DOMAIN_CLOCK_OFFSET_LOCALTIME =3D 1, + VIR_DOMAIN_CLOCK_OFFSET_VARIABLE =3D 2, + VIR_DOMAIN_CLOCK_OFFSET_TIMEZONE =3D 3, + + VIR_DOMAIN_CLOCK_OFFSET_LAST +} virDomainClockOffsetType; + +typedef enum { + VIR_DOMAIN_CLOCK_BASIS_UTC =3D 0, + VIR_DOMAIN_CLOCK_BASIS_LOCALTIME =3D 1, + + VIR_DOMAIN_CLOCK_BASIS_LAST +} virDomainClockBasis; + +struct _virDomainClockDef { + int offset; + + union { + /* Bug-compatibility-mode for Xen utc|localtime */ + int utc_reset; + /* Adjustment in seconds, relative to UTC or LOCALTIME, when + * offset =3D=3D VIR_DOMAIN_CLOCK_OFFSET_VARIABLE */ + struct { + long long adjustment; + int basis; + + /* domain start-time adjustment. This is a + * private/internal read-only value that only exists when + * a domain is running, and only if the clock + * offset=3D'variable' + */ + long long adjustment0; + } variable; + + /* Timezone name, when + * offset =3D=3D VIR_DOMAIN_CLOCK_OFFSET_LOCALTIME */ + char *timezone; + } data; + + size_t ntimers; + virDomainTimerDefPtr *timers; +}; + + +struct _virBlkioDevice { + char *path; + unsigned int weight; + unsigned int riops; + unsigned int wiops; + unsigned long long rbps; + unsigned long long wbps; +}; + +typedef enum { + VIR_DOMAIN_RNG_MODEL_VIRTIO, + VIR_DOMAIN_RNG_MODEL_VIRTIO_TRANSITIONAL, + VIR_DOMAIN_RNG_MODEL_VIRTIO_NON_TRANSITIONAL, + + VIR_DOMAIN_RNG_MODEL_LAST +} virDomainRNGModel; + +typedef enum { + VIR_DOMAIN_RNG_BACKEND_RANDOM, + VIR_DOMAIN_RNG_BACKEND_EGD, + /* VIR_DOMAIN_RNG_BACKEND_POOL, */ + + VIR_DOMAIN_RNG_BACKEND_LAST +} virDomainRNGBackend; + +struct _virDomainRNGDef { + int model; + int backend; + unsigned int rate; /* bytes per period */ + unsigned int period; /* milliseconds */ + + union { + char *file; /* file name for 'random' source */ + virDomainChrSourceDefPtr chardev; /* a char backend for + the EGD source */ + } source; + + virDomainDeviceInfo info; + virDomainVirtioOptionsPtr virtio; +}; + +typedef enum { + VIR_DOMAIN_MEMORY_MODEL_NONE, + VIR_DOMAIN_MEMORY_MODEL_DIMM, /* dimm hotpluggable memory device */ + VIR_DOMAIN_MEMORY_MODEL_NVDIMM, /* nvdimm memory device */ + + VIR_DOMAIN_MEMORY_MODEL_LAST +} virDomainMemoryModel; + +struct _virDomainMemoryDef { + virDomainMemoryAccess access; + virTristateBool discard; + + /* source */ + virBitmapPtr sourceNodes; + unsigned long long pagesize; /* kibibytes */ + char *nvdimmPath; + unsigned long long alignsize; /* kibibytes; valid only for NVDIMM */ + bool nvdimmPmem; /* valid only for NVDIMM */ + + /* target */ + int model; /* virDomainMemoryModel */ + int targetNode; + unsigned long long size; /* kibibytes */ + unsigned long long labelsize; /* kibibytes; valid only for NVDIMM */ + bool readonly; /* valid only for NVDIMM */ + + virDomainDeviceInfo info; +}; + +void virDomainMemoryDefFree(virDomainMemoryDefPtr def); + +struct _virDomainIdMapEntry { + unsigned int start; + unsigned int target; + unsigned int count; +}; + +struct _virDomainIdMapDef { + size_t nuidmap; + virDomainIdMapEntryPtr uidmap; + + size_t ngidmap; + virDomainIdMapEntryPtr gidmap; +}; + + +typedef enum { + VIR_DOMAIN_PANIC_MODEL_DEFAULT, + VIR_DOMAIN_PANIC_MODEL_ISA, + VIR_DOMAIN_PANIC_MODEL_PSERIES, + VIR_DOMAIN_PANIC_MODEL_HYPERV, + VIR_DOMAIN_PANIC_MODEL_S390, + + VIR_DOMAIN_PANIC_MODEL_LAST +} virDomainPanicModel; + +struct _virDomainPanicDef { + int model; /* virDomainPanicModel */ + virDomainDeviceInfo info; +}; + + +void virBlkioDeviceArrayClear(virBlkioDevicePtr deviceWeights, + int ndevices); + +struct _virDomainResourceDef { + char *partition; +}; + +struct _virDomainHugePage { + virBitmapPtr nodemask; /* guest's NUMA node mask */ + unsigned long long size; /* hugepage size in KiB */ +}; + +#define VIR_DOMAIN_CPUMASK_LEN 1024 + +struct _virDomainIOThreadIDDef { + bool autofill; + unsigned int iothread_id; + int thread_id; + virBitmapPtr cpumask; + + virDomainThreadSchedParam sched; +}; + +void virDomainIOThreadIDDefFree(virDomainIOThreadIDDefPtr def); + + +struct _virDomainCputune { + unsigned long long shares; + bool sharesSpecified; + unsigned long long period; + long long quota; + unsigned long long global_period; + long long global_quota; + unsigned long long emulator_period; + long long emulator_quota; + unsigned long long iothread_period; + long long iothread_quota; + virBitmapPtr emulatorpin; + virDomainThreadSchedParamPtr emulatorsched; +}; + + +struct _virDomainResctrlMonDef { + virBitmapPtr vcpus; + virResctrlMonitorType tag; + virResctrlMonitorPtr instance; +}; + +struct _virDomainResctrlDef { + virBitmapPtr vcpus; + virResctrlAllocPtr alloc; + + virDomainResctrlMonDefPtr *monitors; + size_t nmonitors; +}; + + +struct _virDomainVcpuDef { + bool online; + virTristateBool hotpluggable; + unsigned int order; + + virBitmapPtr cpumask; + + virDomainThreadSchedParam sched; + + virObjectPtr privateData; +}; + +struct _virDomainBlkiotune { + unsigned int weight; + + size_t ndevices; + virBlkioDevicePtr devices; +}; + +struct _virDomainMemtune { + /* total memory size including memory modules in kibibytes, this field + * should be accessed only via accessors */ + unsigned long long total_memory; + unsigned long long cur_balloon; /* in kibibytes, capped at ulong thanks + to virDomainGetInfo */ + + virDomainHugePagePtr hugepages; + size_t nhugepages; + + /* maximum supported memory for a guest, for hotplugging */ + unsigned long long max_memory; /* in kibibytes */ + unsigned int memory_slots; /* maximum count of RAM memory slots */ + + bool nosharepages; + bool locked; + int dump_core; /* enum virTristateSwitch */ + unsigned long long hard_limit; /* in kibibytes, limit at off_t bytes */ + unsigned long long soft_limit; /* in kibibytes, limit at off_t bytes */ + unsigned long long min_guarantee; /* in kibibytes, limit at off_t byte= s */ + unsigned long long swap_hard_limit; /* in kibibytes, limit at off_t by= tes */ + + int source; /* enum virDomainMemorySource */ + int access; /* enum virDomainMemoryAccess */ + int allocation; /* enum virDomainMemoryAllocation */ + + virTristateBool discard; +}; + +struct _virDomainPowerManagement { + /* These options are of type enum virTristateBool */ + int s3; + int s4; +}; + +struct _virDomainPerfDef { + /* These options are of type enum virTristateBool */ + int events[VIR_PERF_EVENT_LAST]; +}; + +struct _virDomainKeyWrapDef { + int aes; /* enum virTristateSwitch */ + int dea; /* enum virTristateSwitch */ +}; + +typedef enum { + VIR_DOMAIN_LAUNCH_SECURITY_NONE, + VIR_DOMAIN_LAUNCH_SECURITY_SEV, + + VIR_DOMAIN_LAUNCH_SECURITY_LAST, +} virDomainLaunchSecurity; + + +struct _virDomainSEVDef { + int sectype; /* enum virDomainLaunchSecurity */ + char *dh_cert; + char *session; + unsigned int policy; + unsigned int cbitpos; + unsigned int reduced_phys_bits; +}; + + +typedef enum { + VIR_DOMAIN_IOMMU_MODEL_INTEL, + VIR_DOMAIN_IOMMU_MODEL_SMMUV3, + + VIR_DOMAIN_IOMMU_MODEL_LAST +} virDomainIOMMUModel; + +struct _virDomainIOMMUDef { + virDomainIOMMUModel model; + virTristateSwitch intremap; + virTristateSwitch caching_mode; + virTristateSwitch eim; + virTristateSwitch iotlb; +}; + +typedef enum { + VIR_DOMAIN_VSOCK_MODEL_DEFAULT, + VIR_DOMAIN_VSOCK_MODEL_VIRTIO, + VIR_DOMAIN_VSOCK_MODEL_VIRTIO_TRANSITIONAL, + VIR_DOMAIN_VSOCK_MODEL_VIRTIO_NON_TRANSITIONAL, + + VIR_DOMAIN_VSOCK_MODEL_LAST +} virDomainVsockModel; + +struct _virDomainVsockDef { + virObjectPtr privateData; + + virDomainVsockModel model; + unsigned int guest_cid; + virTristateBool auto_cid; + + virDomainDeviceInfo info; +}; + +struct _virDomainVirtioOptions { + virTristateSwitch iommu; + virTristateSwitch ats; +}; + +/* + * Guest VM main configuration + * + * NB: if adding to this struct, virDomainDefCheckABIStability + * may well need an update + */ +struct _virDomainDef { + int virtType; /* enum virDomainVirtType */ + int id; + unsigned char uuid[VIR_UUID_BUFLEN]; + + unsigned char genid[VIR_UUID_BUFLEN]; + bool genidRequested; + bool genidGenerated; + + char *name; + char *title; + char *description; + + virDomainBlkiotune blkio; + virDomainMemtune mem; + + virDomainVcpuDefPtr *vcpus; + size_t maxvcpus; + /* set if the vcpu definition was specified individually */ + bool individualvcpus; + int placement_mode; + virBitmapPtr cpumask; + + size_t niothreadids; + virDomainIOThreadIDDefPtr *iothreadids; + + virDomainCputune cputune; + + virDomainResctrlDefPtr *resctrls; + size_t nresctrls; + + virDomainNumaPtr numa; + virDomainResourceDefPtr resource; + virDomainIdMapDef idmap; + + /* These 3 are based on virDomainLifeCycleAction enum flags */ + int onReboot; + int onPoweroff; + int onCrash; + + int onLockFailure; /* enum virDomainLockFailureAction */ + + virDomainPowerManagement pm; + + virDomainPerfDef perf; + + virDomainOSDef os; + char *emulator; + /* Most {caps_,hyperv_,kvm_,}feature options utilize a virTristateSwit= ch + * to handle support. A few assign specific data values to the option. + * See virDomainDefFeaturesCheckABIStability() for details. */ + int features[VIR_DOMAIN_FEATURE_LAST]; + int caps_features[VIR_DOMAIN_CAPS_FEATURE_LAST]; + int hyperv_features[VIR_DOMAIN_HYPERV_LAST]; + int kvm_features[VIR_DOMAIN_KVM_LAST]; + int msrs_features[VIR_DOMAIN_MSRS_LAST]; + unsigned int hyperv_spinlocks; + virGICVersion gic_version; + virDomainHPTResizing hpt_resizing; + unsigned long long hpt_maxpagesize; /* Stored in KiB */ + char *hyperv_vendor_id; + int apic_eoi; + + bool tseg_specified; + unsigned long long tseg_size; + + virDomainClockDef clock; + + size_t ngraphics; + virDomainGraphicsDefPtr *graphics; + + size_t ndisks; + virDomainDiskDefPtr *disks; + + size_t ncontrollers; + virDomainControllerDefPtr *controllers; + + size_t nfss; + virDomainFSDefPtr *fss; + + size_t nnets; + virDomainNetDefPtr *nets; + + size_t ninputs; + virDomainInputDefPtr *inputs; + + size_t nsounds; + virDomainSoundDefPtr *sounds; + + size_t nvideos; + virDomainVideoDefPtr *videos; + + size_t nhostdevs; + virDomainHostdevDefPtr *hostdevs; + + size_t nredirdevs; + virDomainRedirdevDefPtr *redirdevs; + + size_t nsmartcards; + virDomainSmartcardDefPtr *smartcards; + + size_t nserials; + virDomainChrDefPtr *serials; + + size_t nparallels; + virDomainChrDefPtr *parallels; + + size_t nchannels; + virDomainChrDefPtr *channels; + + size_t nconsoles; + virDomainChrDefPtr *consoles; + + size_t nleases; + virDomainLeaseDefPtr *leases; + + size_t nhubs; + virDomainHubDefPtr *hubs; + + size_t nseclabels; + virSecurityLabelDefPtr *seclabels; + + size_t nrngs; + virDomainRNGDefPtr *rngs; + + size_t nshmems; + virDomainShmemDefPtr *shmems; + + size_t nmems; + virDomainMemoryDefPtr *mems; + + size_t npanics; + virDomainPanicDefPtr *panics; + + /* Only 1 */ + virDomainWatchdogDefPtr watchdog; + virDomainMemballoonDefPtr memballoon; + virDomainNVRAMDefPtr nvram; + virDomainTPMDefPtr tpm; + virCPUDefPtr cpu; + virSysinfoDefPtr sysinfo; + virDomainRedirFilterDefPtr redirfilter; + virDomainIOMMUDefPtr iommu; + virDomainVsockDefPtr vsock; + + void *namespaceData; + virDomainXMLNamespace ns; + + virDomainKeyWrapDefPtr keywrap; + + /* SEV-specific domain */ + virDomainSEVDefPtr sev; + + /* Application-specific custom metadata */ + xmlNodePtr metadata; + + /* internal fields */ + bool postParseFailed; /* set to true if one of the custom post parse + callbacks failed for a non-critical reason + (was not able to fill in some data) and thus + should be re-run before starting */ +}; + + +unsigned long long virDomainDefGetMemoryInitial(const virDomainDef *def); +void virDomainDefSetMemoryTotal(virDomainDefPtr def, unsigned long long si= ze); +unsigned long long virDomainDefGetMemoryTotal(const virDomainDef *def); +bool virDomainDefHasMemoryHotplug(const virDomainDef *def); + +typedef enum { + VIR_DOMAIN_KEY_WRAP_CIPHER_NAME_AES, + VIR_DOMAIN_KEY_WRAP_CIPHER_NAME_DEA, + + VIR_DOMAIN_KEY_WRAP_CIPHER_NAME_LAST +} virDomainKeyWrapCipherName; + +typedef enum { + VIR_DOMAIN_TAINT_CUSTOM_ARGV, /* Custom ARGV passthrough from XML= */ + VIR_DOMAIN_TAINT_CUSTOM_MONITOR, /* Custom monitor commands issued */ + VIR_DOMAIN_TAINT_HIGH_PRIVILEGES, /* Running with undesirably high pr= ivileges */ + VIR_DOMAIN_TAINT_SHELL_SCRIPTS, /* Network configuration using opaq= ue shell scripts */ + VIR_DOMAIN_TAINT_DISK_PROBING, /* Relying on potentially unsafe di= sk format probing */ + VIR_DOMAIN_TAINT_EXTERNAL_LAUNCH, /* Externally launched guest domain= */ + VIR_DOMAIN_TAINT_HOST_CPU, /* Host CPU passthrough in use */ + VIR_DOMAIN_TAINT_HOOK, /* Domain (possibly) changed via ho= ok script */ + VIR_DOMAIN_TAINT_CDROM_PASSTHROUGH,/* CDROM passthrough */ + VIR_DOMAIN_TAINT_CUSTOM_DTB, /* Custom device tree blob was spec= ified */ + VIR_DOMAIN_TAINT_CUSTOM_GA_COMMAND, /* Custom guest agent command */ + VIR_DOMAIN_TAINT_CUSTOM_HYPERVISOR_FEATURE, /* custom hypervisor featu= re control */ + + VIR_DOMAIN_TAINT_LAST +} virDomainTaintFlags; + +/* Guest VM runtime state */ +typedef struct _virDomainStateReason virDomainStateReason; +struct _virDomainStateReason { + int state; + int reason; +}; + +struct _virDomainObj { + virObjectLockable parent; + virCond cond; + + pid_t pid; + virDomainStateReason state; + + unsigned int autostart : 1; + unsigned int persistent : 1; + unsigned int updated : 1; + unsigned int removing : 1; + + virDomainDefPtr def; /* The current definition */ + virDomainDefPtr newDef; /* New definition to activate at shutdown */ + + virDomainSnapshotObjListPtr snapshots; + + bool hasManagedSave; + + void *privateData; + void (*privateDataFreeFunc)(void *); + + int taint; + + unsigned long long original_memlock; /* Original RLIMIT_MEMLOCK, zero = if no + * restore will be required later= */ +}; + +typedef bool (*virDomainObjListACLFilter)(virConnectPtr conn, + virDomainDefPtr def); + + +/* NB: Any new flag to this list be considered to be set in + * virt-aa-helper code if the flag prevents parsing. */ +typedef enum { + VIR_DOMAIN_DEF_FEATURE_WIDE_SCSI =3D (1 << 0), + VIR_DOMAIN_DEF_FEATURE_MEMORY_HOTPLUG =3D (1 << 1), + VIR_DOMAIN_DEF_FEATURE_OFFLINE_VCPUPIN =3D (1 << 2), + VIR_DOMAIN_DEF_FEATURE_NAME_SLASH =3D (1 << 3), + VIR_DOMAIN_DEF_FEATURE_INDIVIDUAL_VCPUS =3D (1 << 4), + VIR_DOMAIN_DEF_FEATURE_USER_ALIAS =3D (1 << 5), + VIR_DOMAIN_DEF_FEATURE_NO_BOOT_ORDER =3D (1 << 6), + VIR_DOMAIN_DEF_FEATURE_FW_AUTOSELECT =3D (1 << 7), + VIR_DOMAIN_DEF_FEATURE_NET_MODEL_STRING =3D (1 << 8), +} virDomainDefFeatures; + + +typedef enum { + VIR_DOMAIN_DEVICE_ACTION_ATTACH, + VIR_DOMAIN_DEVICE_ACTION_DETACH, + VIR_DOMAIN_DEVICE_ACTION_UPDATE, +} virDomainDeviceAction; + +VIR_ENUM_DECL(virDomainTaint); +VIR_ENUM_DECL(virDomainVirt); +VIR_ENUM_DECL(virDomainBoot); +VIR_ENUM_DECL(virDomainFeature); +VIR_ENUM_DECL(virDomainCapabilitiesPolicy); +VIR_ENUM_DECL(virDomainCapsFeature); +VIR_ENUM_DECL(virDomainLifecycle); +VIR_ENUM_DECL(virDomainLifecycleAction); +VIR_ENUM_DECL(virDomainDevice); +VIR_ENUM_DECL(virDomainDiskDevice); +VIR_ENUM_DECL(virDomainDiskGeometryTrans); +VIR_ENUM_DECL(virDomainDiskBus); +VIR_ENUM_DECL(virDomainDiskCache); +VIR_ENUM_DECL(virDomainDiskErrorPolicy); +VIR_ENUM_DECL(virDomainDiskIo); +VIR_ENUM_DECL(virDomainDeviceSGIO); +VIR_ENUM_DECL(virDomainDiskTray); +VIR_ENUM_DECL(virDomainDiskDiscard); +VIR_ENUM_DECL(virDomainDiskDetectZeroes); +VIR_ENUM_DECL(virDomainDiskModel); +VIR_ENUM_DECL(virDomainDiskMirrorState); +VIR_ENUM_DECL(virDomainController); +VIR_ENUM_DECL(virDomainControllerModelPCI); +VIR_ENUM_DECL(virDomainControllerPCIModelName); +VIR_ENUM_DECL(virDomainControllerModelSCSI); +VIR_ENUM_DECL(virDomainControllerModelUSB); +VIR_ENUM_DECL(virDomainControllerModelIDE); +VIR_ENUM_DECL(virDomainControllerModelVirtioSerial); +VIR_ENUM_DECL(virDomainFS); +VIR_ENUM_DECL(virDomainFSDriver); +VIR_ENUM_DECL(virDomainFSAccessMode); +VIR_ENUM_DECL(virDomainFSWrpolicy); +VIR_ENUM_DECL(virDomainFSModel); +VIR_ENUM_DECL(virDomainNet); +VIR_ENUM_DECL(virDomainNetBackend); +VIR_ENUM_DECL(virDomainNetVirtioTxMode); +VIR_ENUM_DECL(virDomainNetInterfaceLinkState); +VIR_ENUM_DECL(virDomainNetModel); +VIR_ENUM_DECL(virDomainChrDevice); +VIR_ENUM_DECL(virDomainChrChannelTarget); +VIR_ENUM_DECL(virDomainChrConsoleTarget); +VIR_ENUM_DECL(virDomainChrSerialTarget); +VIR_ENUM_DECL(virDomainSmartcard); +VIR_ENUM_DECL(virDomainChr); +VIR_ENUM_DECL(virDomainChrTcpProtocol); +VIR_ENUM_DECL(virDomainChrSpicevmc); +VIR_ENUM_DECL(virDomainSoundCodec); +VIR_ENUM_DECL(virDomainSoundModel); +VIR_ENUM_DECL(virDomainKeyWrapCipherName); +VIR_ENUM_DECL(virDomainMemballoonModel); +VIR_ENUM_DECL(virDomainSmbiosMode); +VIR_ENUM_DECL(virDomainWatchdogModel); +VIR_ENUM_DECL(virDomainWatchdogAction); +VIR_ENUM_DECL(virDomainPanicModel); +VIR_ENUM_DECL(virDomainVideo); +VIR_ENUM_DECL(virDomainHostdevMode); +VIR_ENUM_DECL(virDomainHostdevSubsys); +VIR_ENUM_DECL(virDomainHostdevCaps); +VIR_ENUM_DECL(virDomainHub); +VIR_ENUM_DECL(virDomainRedirdevBus); +VIR_ENUM_DECL(virDomainInput); +VIR_ENUM_DECL(virDomainInputBus); +VIR_ENUM_DECL(virDomainInputModel); +VIR_ENUM_DECL(virDomainGraphics); +VIR_ENUM_DECL(virDomainGraphicsListen); +VIR_ENUM_DECL(virDomainGraphicsAuthConnected); +VIR_ENUM_DECL(virDomainGraphicsSpiceChannelName); +VIR_ENUM_DECL(virDomainGraphicsSpiceChannelMode); +VIR_ENUM_DECL(virDomainGraphicsSpiceImageCompression); +VIR_ENUM_DECL(virDomainGraphicsSpiceJpegCompression); +VIR_ENUM_DECL(virDomainGraphicsSpiceZlibCompression); +VIR_ENUM_DECL(virDomainGraphicsSpiceStreamingMode); +VIR_ENUM_DECL(virDomainGraphicsSpiceMouseMode); +VIR_ENUM_DECL(virDomainGraphicsVNCSharePolicy); +VIR_ENUM_DECL(virDomainHyperv); +VIR_ENUM_DECL(virDomainKVM); +VIR_ENUM_DECL(virDomainMsrsUnknown); +VIR_ENUM_DECL(virDomainRNGModel); +VIR_ENUM_DECL(virDomainRNGBackend); +VIR_ENUM_DECL(virDomainTPMModel); +VIR_ENUM_DECL(virDomainTPMBackend); +VIR_ENUM_DECL(virDomainTPMVersion); +VIR_ENUM_DECL(virDomainMemoryModel); +VIR_ENUM_DECL(virDomainMemoryBackingModel); +VIR_ENUM_DECL(virDomainMemorySource); +VIR_ENUM_DECL(virDomainMemoryAllocation); +VIR_ENUM_DECL(virDomainIOMMUModel); +VIR_ENUM_DECL(virDomainVsockModel); +VIR_ENUM_DECL(virDomainShmemModel); +VIR_ENUM_DECL(virDomainLaunchSecurity); +/* from libvirt.h */ +VIR_ENUM_DECL(virDomainState); +VIR_ENUM_DECL(virDomainNostateReason); +VIR_ENUM_DECL(virDomainRunningReason); +VIR_ENUM_DECL(virDomainBlockedReason); +VIR_ENUM_DECL(virDomainPausedReason); +VIR_ENUM_DECL(virDomainShutdownReason); +VIR_ENUM_DECL(virDomainShutoffReason); +VIR_ENUM_DECL(virDomainCrashedReason); +VIR_ENUM_DECL(virDomainPMSuspendedReason); + +const char *virDomainStateReasonToString(virDomainState state, int reason); +int virDomainStateReasonFromString(virDomainState state, const char *reaso= n); + +VIR_ENUM_DECL(virDomainSeclabel); +VIR_ENUM_DECL(virDomainClockOffset); +VIR_ENUM_DECL(virDomainClockBasis); + +VIR_ENUM_DECL(virDomainTimerName); +VIR_ENUM_DECL(virDomainTimerTrack); +VIR_ENUM_DECL(virDomainTimerTickpolicy); +VIR_ENUM_DECL(virDomainTimerMode); +VIR_ENUM_DECL(virDomainCpuPlacementMode); + +VIR_ENUM_DECL(virDomainStartupPolicy); --=20 2.19.2 -- libvir-list mailing list libvir-list@redhat.com https://www.redhat.com/mailman/listinfo/libvir-list From nobody Mon Apr 29 02:13:31 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of redhat.com designates 209.132.183.28 as permitted sender) client-ip=209.132.183.28; envelope-from=libvir-list-bounces@redhat.com; helo=mx1.redhat.com; Authentication-Results: mx.zohomail.com; spf=pass (zoho.com: domain of redhat.com designates 209.132.183.28 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com; dmarc=pass(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1563538575; cv=none; d=zoho.com; s=zohoarc; b=lXiZcNqCZSM1rgMpHvdYoJTzXFo1nZmgqXZzJiN9L868i7V40pXr/1g0ifL5v7WwkmzFwKLIi8c7WeA82G5oetEXUX32fZgPP4+zGetCKtcGLaEVgcVMrXWF7k1wP8321xsOD5AyBwyL6VzCUUEkltDHn3kCCj/hEs+m6jQStvI= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1563538575; h=Content-Type:Content-Transfer-Encoding:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To:ARC-Authentication-Results; bh=5oG5ci7f5IJZjU0y8lJj8cgy4MQgpdn/McS4YMksGe4=; b=QhaJfR8cTPsKeYA5iGutQjm6pz+p8a3m6wGhksWn0bE2d2kD2o4PphI5Vu3X0pLnyfvsJWK4YMvxbMhVn7oSGOaepBpYc4lzxo+RO9oj8LnxJrElckfTQ1K5VheypCFyCt3R00DmZqAlJ22onpTVg/LIkKPIe5Eq/iDM6fwuH0k= ARC-Authentication-Results: i=1; mx.zoho.com; spf=pass (zoho.com: domain of redhat.com designates 209.132.183.28 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com; dmarc=pass header.from= (p=none dis=none) header.from= Return-Path: Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by mx.zohomail.com with SMTPS id 1563538575685657.6184850163327; Fri, 19 Jul 2019 05:16:15 -0700 (PDT) Received: from smtp.corp.redhat.com (int-mx02.intmail.prod.int.phx2.redhat.com [10.5.11.12]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id 7E6C930C7464; Fri, 19 Jul 2019 12:16:13 +0000 (UTC) Received: from colo-mx.corp.redhat.com (colo-mx01.intmail.prod.int.phx2.redhat.com [10.5.11.20]) by smtp.corp.redhat.com (Postfix) with ESMTPS id 4D41F619A9; Fri, 19 Jul 2019 12:16:13 +0000 (UTC) Received: from lists01.pubmisc.prod.ext.phx2.redhat.com (lists01.pubmisc.prod.ext.phx2.redhat.com [10.5.19.33]) by colo-mx.corp.redhat.com (Postfix) with ESMTP id 082B3180020B; Fri, 19 Jul 2019 12:16:13 +0000 (UTC) Received: from smtp.corp.redhat.com (int-mx03.intmail.prod.int.phx2.redhat.com [10.5.11.13]) by lists01.pubmisc.prod.ext.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id x6JCFxox020046 for ; Fri, 19 Jul 2019 08:15:59 -0400 Received: by smtp.corp.redhat.com (Postfix) id 79283646B8; Fri, 19 Jul 2019 12:15:59 +0000 (UTC) Received: from icr.brq.redhat.com (unknown [10.43.2.100]) by smtp.corp.redhat.com (Postfix) with ESMTP id 03D64646B3 for ; Fri, 19 Jul 2019 12:15:58 +0000 (UTC) From: =?UTF-8?q?J=C3=A1n=20Tomko?= To: libvir-list@redhat.com Date: Fri, 19 Jul 2019 14:15:46 +0200 Message-Id: <1054525cd47e0602414abd127b4e083da8420e24.1563538286.git.jtomko@redhat.com> In-Reply-To: References: MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.79 on 10.5.11.13 X-loop: libvir-list@redhat.com Subject: [libvirt] [PATCH 4/6] conf: introduce domain_parse.h X-BeenThere: libvir-list@redhat.com X-Mailman-Version: 2.1.12 Precedence: junk List-Id: Development discussions about the libvirt library & tools List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Sender: libvir-list-bounces@redhat.com Errors-To: libvir-list-bounces@redhat.com X-Scanned-By: MIMEDefang 2.79 on 10.5.11.12 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.46]); Fri, 19 Jul 2019 12:16:14 +0000 (UTC) Move domain and device XML parsing functions as well as validation and ABI stability checking. Signed-off-by: J=C3=A1n Tomko --- src/conf/Makefile.inc.am | 1 + src/conf/domain_conf.h | 295 +---------------------------------- src/conf/domain_parse.h | 321 +++++++++++++++++++++++++++++++++++++++ 3 files changed, 323 insertions(+), 294 deletions(-) create mode 100644 src/conf/domain_parse.h diff --git a/src/conf/Makefile.inc.am b/src/conf/Makefile.inc.am index dba015ff82..3afebb9c7d 100644 --- a/src/conf/Makefile.inc.am +++ b/src/conf/Makefile.inc.am @@ -24,6 +24,7 @@ DOMAIN_CONF_SOURCES =3D \ conf/domain_audit.h \ conf/domain_nwfilter.c \ conf/domain_nwfilter.h \ + conf/domain_parse.h \ conf/virsavecookie.c \ conf/virsavecookie.h \ conf/moment_conf.c \ diff --git a/src/conf/domain_conf.h b/src/conf/domain_conf.h index dacbb23a3e..eb2b84ad03 100644 --- a/src/conf/domain_conf.h +++ b/src/conf/domain_conf.h @@ -31,6 +31,7 @@ #include "virdomaintypes.h" #include "virstorageencryption.h" #include "cpu_conf.h" +#include "domain_parse.h" #include "virthread.h" #include "virsocketaddr.h" #include "networkcommon_conf.h" @@ -40,7 +41,6 @@ #include "virbitmap.h" #include "virseclabel.h" #include "virtypedparam.h" -#include "virsavecookie.h" #include "virenum.h" =20 #define IS_USB2_CONTROLLER(ctrl) \ @@ -50,185 +50,12 @@ (ctrl)->model =3D=3D VIR_DOMAIN_CONTROLLER_MODEL_USB_ICH9_UHCI2 || \ (ctrl)->model =3D=3D VIR_DOMAIN_CONTROLLER_MODEL_USB_ICH9_UHCI3)) =20 -/* Called after everything else has been parsed, for adjusting basics. - * This has similar semantics to virDomainDefPostParseCallback, but no - * parseOpaque is used. This callback is run prior to - * virDomainDefPostParseCallback. */ -typedef int (*virDomainDefPostParseBasicCallback)(virDomainDefPtr def, - virCapsPtr caps, - void *opaque); - -/* Called once after everything else has been parsed, for adjusting - * overall domain defaults. - * @parseOpaque is opaque data passed by virDomainDefParse* caller, - * @opaque is opaque data set by driver (usually pointer to driver - * private data). Non-fatal failures should be reported by returning 1. In - * cases when that is allowed, such failure is translated to a success ret= urn - * value and the failure is noted in def->postParseFailed. Drivers should = then - * re-run the post parse callback when attempting to use such definition. = */ -typedef int (*virDomainDefPostParseCallback)(virDomainDefPtr def, - virCapsPtr caps, - unsigned int parseFlags, - void *opaque, - void *parseOpaque); -/* Called once per device, for adjusting per-device settings while - * leaving the overall domain otherwise unchanged. - * @parseOpaque is opaque data passed by virDomainDefParse* caller, - * @opaque is opaque data set by driver (usually pointer to driver - * private data). */ -typedef int (*virDomainDeviceDefPostParseCallback)(virDomainDeviceDefPtr d= ev, - const virDomainDef *def, - virCapsPtr caps, - unsigned int parseFlags, - void *opaque, - void *parseOpaque); -/* Drive callback for assigning device addresses, called at the end - * of parsing, after all defaults and implicit devices have been added. - * @parseOpaque is opaque data passed by virDomainDefParse* caller, - * @opaque is opaque data set by driver (usually pointer to driver - * private data). */ -typedef int (*virDomainDefAssignAddressesCallback)(virDomainDef *def, - virCapsPtr caps, - unsigned int parseFlags, - void *opaque, - void *parseOpaque); - -typedef int (*virDomainDefPostParseDataAlloc)(const virDomainDef *def, - virCapsPtr caps, - unsigned int parseFlags, - void *opaque, - void **parseOpaque); -typedef void (*virDomainDefPostParseDataFree)(void *parseOpaque); - -/* Called in appropriate places where the domain conf parser can return fa= ilure - * for configurations that were previously accepted. This shall not modify= the - * config. */ -typedef int (*virDomainDefValidateCallback)(const virDomainDef *def, - virCapsPtr caps, - void *opaque); - -/* Called once per device, for adjusting per-device settings while - * leaving the overall domain otherwise unchanged. */ -typedef int (*virDomainDeviceDefValidateCallback)(const virDomainDeviceDef= *dev, - const virDomainDef *def, - void *opaque); - -struct _virDomainDefParserConfig { - /* driver domain definition callbacks */ - virDomainDefPostParseBasicCallback domainPostParseBasicCallback; - virDomainDefPostParseDataAlloc domainPostParseDataAlloc; - virDomainDefPostParseCallback domainPostParseCallback; - virDomainDeviceDefPostParseCallback devicesPostParseCallback; - virDomainDefAssignAddressesCallback assignAddressesCallback; - virDomainDefPostParseDataFree domainPostParseDataFree; - - /* validation callbacks */ - virDomainDefValidateCallback domainValidateCallback; - virDomainDeviceDefValidateCallback deviceValidateCallback; - - /* private data for the callbacks */ - void *priv; - virFreeCallback privFree; - - /* data */ - unsigned int features; /* virDomainDefFeatures */ - unsigned char macPrefix[VIR_MAC_PREFIX_BUFLEN]; -}; - -typedef void *(*virDomainXMLPrivateDataAllocFunc)(void *); -typedef void (*virDomainXMLPrivateDataFreeFunc)(void *); -typedef virObjectPtr (*virDomainXMLPrivateDataNewFunc)(void); -typedef int (*virDomainXMLPrivateDataFormatFunc)(virBufferPtr, - virDomainObjPtr); -typedef int (*virDomainXMLPrivateDataParseFunc)(xmlXPathContextPtr, - virDomainObjPtr, - virDomainDefParserConfigPt= r); - -typedef void *(*virDomainXMLPrivateDataGetParseOpaqueFunc)(virDomainObjPtr= vm); - -typedef int (*virDomainXMLPrivateDataDiskParseFunc)(xmlXPathContextPtr ctx= t, - virDomainDiskDefPtr di= sk); -typedef int (*virDomainXMLPrivateDataDiskFormatFunc)(virDomainDiskDefPtr d= isk, - virBufferPtr buf); - -typedef int (*virDomainXMLPrivateDataStorageSourceParseFunc)(xmlXPathConte= xtPtr ctxt, - virStorageSou= rcePtr src); -typedef int (*virDomainXMLPrivateDataStorageSourceFormatFunc)(virStorageSo= urcePtr src, - virBufferPtr= buf); - - -struct _virDomainXMLPrivateDataCallbacks { - virDomainXMLPrivateDataAllocFunc alloc; - virDomainXMLPrivateDataFreeFunc free; - /* note that private data for devices are not copied when using - * virDomainDefCopy and similar functions */ - virDomainXMLPrivateDataNewFunc diskNew; - virDomainXMLPrivateDataDiskParseFunc diskParse; - virDomainXMLPrivateDataDiskFormatFunc diskFormat; - virDomainXMLPrivateDataNewFunc vcpuNew; - virDomainXMLPrivateDataNewFunc chrSourceNew; - virDomainXMLPrivateDataNewFunc vsockNew; - virDomainXMLPrivateDataNewFunc graphicsNew; - virDomainXMLPrivateDataFormatFunc format; - virDomainXMLPrivateDataParseFunc parse; - /* following function shall return a pointer which will be used as the - * 'parseOpaque' argument for virDomainDefPostParse */ - virDomainXMLPrivateDataGetParseOpaqueFunc getParseOpaque; - virDomainXMLPrivateDataStorageSourceParseFunc storageParse; - virDomainXMLPrivateDataStorageSourceFormatFunc storageFormat; -}; - -typedef bool (*virDomainABIStabilityDomain)(const virDomainDef *src, - const virDomainDef *dst); - -struct _virDomainABIStability { - virDomainABIStabilityDomain domain; -}; - -virDomainXMLOptionPtr virDomainXMLOptionNew(virDomainDefParserConfigPtr co= nfig, - virDomainXMLPrivateDataCallbac= ksPtr priv, - virDomainXMLNamespacePtr xmlns, - virDomainABIStabilityPtr abi, - virSaveCookieCallbacksPtr save= Cookie); - -virSaveCookieCallbacksPtr -virDomainXMLOptionGetSaveCookie(virDomainXMLOptionPtr xmlopt); - -typedef int (*virDomainMomentPostParseCallback)(virDomainMomentDefPtr def); - -void virDomainXMLOptionSetMomentPostParse(virDomainXMLOptionPtr xmlopt, - virDomainMomentPostParseCallback= cb); -int virDomainXMLOptionRunMomentPostParse(virDomainXMLOptionPtr xmlopt, - virDomainMomentDefPtr def); - -void virDomainNetGenerateMAC(virDomainXMLOptionPtr xmlopt, virMacAddrPtr m= ac); - -virDomainXMLNamespacePtr -virDomainXMLOptionGetNamespace(virDomainXMLOptionPtr xmlopt) - ATTRIBUTE_NONNULL(1); - bool virDomainSCSIDriveAddressIsUsed(const virDomainDef *def, const virDomainDeviceDriveAddress *addr); =20 -int virDomainDefPostParse(virDomainDefPtr def, - virCapsPtr caps, - unsigned int parseFlags, - virDomainXMLOptionPtr xmlopt, - void *parseOpaque); bool virDomainDefHasUSB(const virDomainDef *def); =20 -int virDomainDeviceValidateAliasForHotplug(virDomainObjPtr vm, - virDomainDeviceDefPtr dev, - unsigned int flags); - -bool virDomainDeviceAliasIsUserAlias(const char *aliasStr); - -int virDomainDefValidate(virDomainDefPtr def, - virCapsPtr caps, - unsigned int parseFlags, - virDomainXMLOptionPtr xmlopt); - static inline bool virDomainObjIsActive(virDomainObjPtr dom) { @@ -388,43 +215,6 @@ virDomainDefPtr virDomainObjCopyPersistentDef(virDomai= nObjPtr dom, virCapsPtr caps, virDomainXMLOptionPtr xmlopt= ); =20 -typedef enum { - /* parse internal domain status information */ - VIR_DOMAIN_DEF_PARSE_STATUS =3D 1 << 0, - /* Parse only parts of the XML that would be present in an inactive li= bvirt - * XML. Note that the flag does not imply that ABI incompatible - * transformations can be used, since it's used to strip runtime info = when - * restoring save images/migration. */ - VIR_DOMAIN_DEF_PARSE_INACTIVE =3D 1 << 1, - /* parse element */ - VIR_DOMAIN_DEF_PARSE_ACTUAL_NET =3D 1 << 2, - /* parse original states of host PCI device */ - VIR_DOMAIN_DEF_PARSE_PCI_ORIG_STATES =3D 1 << 3, - /* internal flag passed to device info sub-parser to allow using = */ - VIR_DOMAIN_DEF_PARSE_ALLOW_ROM =3D 1 << 4, - /* internal flag passed to device info sub-parser to allow specifying = boot order */ - VIR_DOMAIN_DEF_PARSE_ALLOW_BOOT =3D 1 << 5, - /* parse only source half of */ - VIR_DOMAIN_DEF_PARSE_DISK_SOURCE =3D 1 << 6, - /* perform RNG schema validation on the passed XML document */ - VIR_DOMAIN_DEF_PARSE_VALIDATE_SCHEMA =3D 1 << 7, - /* allow updates in post parse callback that would break ABI otherwise= */ - VIR_DOMAIN_DEF_PARSE_ABI_UPDATE =3D 1 << 8, - /* skip definition validation checks meant to be executed on define ti= me only */ - VIR_DOMAIN_DEF_PARSE_SKIP_VALIDATE =3D 1 << 9, - /* skip parsing of security labels */ - VIR_DOMAIN_DEF_PARSE_SKIP_SECLABEL =3D 1 << 10, - /* Allows updates in post parse callback for incoming persistent migra= tion - * that would break ABI otherwise. This should be used only if it's s= afe - * to do such change. */ - VIR_DOMAIN_DEF_PARSE_ABI_UPDATE_MIGRATION =3D 1 << 11, - /* Allows to ignore certain failures in the post parse callbacks, which - * may happen due to missing packages and can be fixed by re-running t= he - * post parse callbacks before starting. Failure of the post parse cal= lback - * is recorded as def->postParseFail */ - VIR_DOMAIN_DEF_PARSE_ALLOW_POST_PARSE_FAIL =3D 1 << 12, -} virDomainDefParseFlags; - typedef enum { VIR_DOMAIN_DEF_FORMAT_SECURE =3D 1 << 0, VIR_DOMAIN_DEF_FORMAT_INACTIVE =3D 1 << 1, @@ -440,59 +230,6 @@ typedef enum { VIR_DOMAIN_DEF_FORMAT_CLOCK_ADJUST =3D 1 << 8, } virDomainDefFormatFlags; =20 -/* Use these flags to skip specific domain ABI consistency checks done - * in virDomainDefCheckABIStabilityFlags. - */ -typedef enum { - /* Set when domain lock must be released and there exists the possibil= ity - * that some external action could alter the value, such as cur_balloo= n. */ - VIR_DOMAIN_DEF_ABI_CHECK_SKIP_VOLATILE =3D 1 << 0, -} virDomainDefABICheckFlags; - -virDomainDeviceDefPtr virDomainDeviceDefParse(const char *xmlStr, - const virDomainDef *def, - virCapsPtr caps, - virDomainXMLOptionPtr xmlopt, - unsigned int flags); -virDomainDiskDefPtr virDomainDiskDefParse(const char *xmlStr, - const virDomainDef *def, - virDomainXMLOptionPtr xmlopt, - unsigned int flags); -virDomainDefPtr virDomainDefParseString(const char *xmlStr, - virCapsPtr caps, - virDomainXMLOptionPtr xmlopt, - void *parseOpaque, - unsigned int flags); -virDomainDefPtr virDomainDefParseFile(const char *filename, - virCapsPtr caps, - virDomainXMLOptionPtr xmlopt, - void *parseOpaque, - unsigned int flags); -virDomainDefPtr virDomainDefParseNode(xmlDocPtr doc, - xmlNodePtr root, - virCapsPtr caps, - virDomainXMLOptionPtr xmlopt, - void *parseOpaque, - unsigned int flags); -virDomainObjPtr virDomainObjParseNode(xmlDocPtr xml, - xmlNodePtr root, - virCapsPtr caps, - virDomainXMLOptionPtr xmlopt, - unsigned int flags); -virDomainObjPtr virDomainObjParseFile(const char *filename, - virCapsPtr caps, - virDomainXMLOptionPtr xmlopt, - unsigned int flags); - -bool virDomainDefCheckABIStability(virDomainDefPtr src, - virDomainDefPtr dst, - virDomainXMLOptionPtr xmlopt); - -bool virDomainDefCheckABIStabilityFlags(virDomainDefPtr src, - virDomainDefPtr dst, - virDomainXMLOptionPtr xmlopt, - unsigned int flags); - int virDomainDefAddImplicitDevices(virDomainDefPtr def); =20 virDomainIOThreadIDDefPtr virDomainIOThreadIDFind(const virDomainDef *def, @@ -572,8 +309,6 @@ int virDomainDiskInsert(virDomainDefPtr def, ATTRIBUTE_RETURN_CHECK; void virDomainDiskInsertPreAlloced(virDomainDefPtr def, virDomainDiskDefPtr disk); -int virDomainStorageNetworkParseHost(xmlNodePtr hostnode, - virStorageNetHostDefPtr host); int virDomainDiskDefAssignAddress(virDomainXMLOptionPtr xmlopt, virDomainDiskDefPtr def, const virDomainDef *vmdef); @@ -840,14 +575,6 @@ int virDomainObjSetMetadata(virDomainObjPtr vm, const char *configDir, unsigned int flags); =20 -int -virDomainParseMemory(const char *xpath, - const char *units_xpath, - xmlXPathContextPtr ctxt, - unsigned long long *mem, - bool required, - bool capped); - bool virDomainDefNeedsPlacementAdvice(virDomainDefPtr def) ATTRIBUTE_NONNULL(1); =20 @@ -855,26 +582,6 @@ int virDomainDiskDefCheckDuplicateInfo(const virDomain= DiskDef *a, const virDomainDiskDef *b) ATTRIBUTE_NONNULL(1) ATTRIBUTE_NONNULL(2); =20 -virStorageSourcePtr -virDomainStorageSourceParseBase(const char *type, - const char *format, - const char *index) - ATTRIBUTE_RETURN_CHECK; - -int virDomainStorageSourceParse(xmlNodePtr node, - xmlXPathContextPtr ctxt, - virStorageSourcePtr src, - unsigned int flags, - virDomainXMLOptionPtr xmlopt) - ATTRIBUTE_NONNULL(1) ATTRIBUTE_NONNULL(2) ATTRIBUTE_NONNULL(3); - -int -virDomainDiskBackingStoreParse(xmlXPathContextPtr ctxt, - virStorageSourcePtr src, - unsigned int flags, - virDomainXMLOptionPtr xmlopt) - ATTRIBUTE_NONNULL(1) ATTRIBUTE_NONNULL(2) ATTRIBUTE_RETURN_CHECK; - int virDomainDefGetVcpuPinInfoHelper(virDomainDefPtr def, int maplen, int ncpumaps, diff --git a/src/conf/domain_parse.h b/src/conf/domain_parse.h new file mode 100644 index 0000000000..286726adba --- /dev/null +++ b/src/conf/domain_parse.h @@ -0,0 +1,321 @@ +/* + * domain_parse.h: XML parser for the domain definition + * + * Copyright (C) 2006-2019 Red Hat, Inc. + * Copyright (C) 2006-2008 Daniel P. Berrange + * Copyright (c) 2015 SUSE LINUX Products GmbH, Nuernberg, Germany. + * + * 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 + * . + */ + +#pragma once + +#include "internal.h" +#include "virconftypes.h" +#include "virdomaintypes.h" +#include "virsavecookie.h" + +/* Called after everything else has been parsed, for adjusting basics. + * This has similar semantics to virDomainDefPostParseCallback, but no + * parseOpaque is used. This callback is run prior to + * virDomainDefPostParseCallback. */ +typedef int (*virDomainDefPostParseBasicCallback)(virDomainDefPtr def, + virCapsPtr caps, + void *opaque); + +/* Called once after everything else has been parsed, for adjusting + * overall domain defaults. + * @parseOpaque is opaque data passed by virDomainDefParse* caller, + * @opaque is opaque data set by driver (usually pointer to driver + * private data). Non-fatal failures should be reported by returning 1. In + * cases when that is allowed, such failure is translated to a success ret= urn + * value and the failure is noted in def->postParseFailed. Drivers should = then + * re-run the post parse callback when attempting to use such definition. = */ +typedef int (*virDomainDefPostParseCallback)(virDomainDefPtr def, + virCapsPtr caps, + unsigned int parseFlags, + void *opaque, + void *parseOpaque); +/* Called once per device, for adjusting per-device settings while + * leaving the overall domain otherwise unchanged. + * @parseOpaque is opaque data passed by virDomainDefParse* caller, + * @opaque is opaque data set by driver (usually pointer to driver + * private data). */ +typedef int (*virDomainDeviceDefPostParseCallback)(virDomainDeviceDefPtr d= ev, + const virDomainDef *def, + virCapsPtr caps, + unsigned int parseFlags, + void *opaque, + void *parseOpaque); +/* Drive callback for assigning device addresses, called at the end + * of parsing, after all defaults and implicit devices have been added. + * @parseOpaque is opaque data passed by virDomainDefParse* caller, + * @opaque is opaque data set by driver (usually pointer to driver + * private data). */ +typedef int (*virDomainDefAssignAddressesCallback)(virDomainDef *def, + virCapsPtr caps, + unsigned int parseFlags, + void *opaque, + void *parseOpaque); + +typedef int (*virDomainDefPostParseDataAlloc)(const virDomainDef *def, + virCapsPtr caps, + unsigned int parseFlags, + void *opaque, + void **parseOpaque); +typedef void (*virDomainDefPostParseDataFree)(void *parseOpaque); + +/* Called in appropriate places where the domain conf parser can return fa= ilure + * for configurations that were previously accepted. This shall not modify= the + * config. */ +typedef int (*virDomainDefValidateCallback)(const virDomainDef *def, + virCapsPtr caps, + void *opaque); + +/* Called once per device, for adjusting per-device settings while + * leaving the overall domain otherwise unchanged. */ +typedef int (*virDomainDeviceDefValidateCallback)(const virDomainDeviceDef= *dev, + const virDomainDef *def, + void *opaque); + +struct _virDomainDefParserConfig { + /* driver domain definition callbacks */ + virDomainDefPostParseBasicCallback domainPostParseBasicCallback; + virDomainDefPostParseDataAlloc domainPostParseDataAlloc; + virDomainDefPostParseCallback domainPostParseCallback; + virDomainDeviceDefPostParseCallback devicesPostParseCallback; + virDomainDefAssignAddressesCallback assignAddressesCallback; + virDomainDefPostParseDataFree domainPostParseDataFree; + + /* validation callbacks */ + virDomainDefValidateCallback domainValidateCallback; + virDomainDeviceDefValidateCallback deviceValidateCallback; + + /* private data for the callbacks */ + void *priv; + virFreeCallback privFree; + + /* data */ + unsigned int features; /* virDomainDefFeatures */ + unsigned char macPrefix[VIR_MAC_PREFIX_BUFLEN]; +}; + +typedef void *(*virDomainXMLPrivateDataAllocFunc)(void *); +typedef void (*virDomainXMLPrivateDataFreeFunc)(void *); +typedef virObjectPtr (*virDomainXMLPrivateDataNewFunc)(void); +typedef int (*virDomainXMLPrivateDataFormatFunc)(virBufferPtr, + virDomainObjPtr); +typedef int (*virDomainXMLPrivateDataParseFunc)(xmlXPathContextPtr, + virDomainObjPtr, + virDomainDefParserConfigPt= r); + +typedef void *(*virDomainXMLPrivateDataGetParseOpaqueFunc)(virDomainObjPtr= vm); + +typedef int (*virDomainXMLPrivateDataDiskParseFunc)(xmlXPathContextPtr ctx= t, + virDomainDiskDefPtr di= sk); +typedef int (*virDomainXMLPrivateDataDiskFormatFunc)(virDomainDiskDefPtr d= isk, + virBufferPtr buf); + +typedef int (*virDomainXMLPrivateDataStorageSourceParseFunc)(xmlXPathConte= xtPtr ctxt, + virStorageSou= rcePtr src); +typedef int (*virDomainXMLPrivateDataStorageSourceFormatFunc)(virStorageSo= urcePtr src, + virBufferPtr= buf); + + +struct _virDomainXMLPrivateDataCallbacks { + virDomainXMLPrivateDataAllocFunc alloc; + virDomainXMLPrivateDataFreeFunc free; + /* note that private data for devices are not copied when using + * virDomainDefCopy and similar functions */ + virDomainXMLPrivateDataNewFunc diskNew; + virDomainXMLPrivateDataDiskParseFunc diskParse; + virDomainXMLPrivateDataDiskFormatFunc diskFormat; + virDomainXMLPrivateDataNewFunc vcpuNew; + virDomainXMLPrivateDataNewFunc chrSourceNew; + virDomainXMLPrivateDataNewFunc vsockNew; + virDomainXMLPrivateDataNewFunc graphicsNew; + virDomainXMLPrivateDataFormatFunc format; + virDomainXMLPrivateDataParseFunc parse; + /* following function shall return a pointer which will be used as the + * 'parseOpaque' argument for virDomainDefPostParse */ + virDomainXMLPrivateDataGetParseOpaqueFunc getParseOpaque; + virDomainXMLPrivateDataStorageSourceParseFunc storageParse; + virDomainXMLPrivateDataStorageSourceFormatFunc storageFormat; +}; + +typedef bool (*virDomainABIStabilityDomain)(const virDomainDef *src, + const virDomainDef *dst); + +struct _virDomainABIStability { + virDomainABIStabilityDomain domain; +}; + +virDomainXMLOptionPtr virDomainXMLOptionNew(virDomainDefParserConfigPtr co= nfig, + virDomainXMLPrivateDataCallbac= ksPtr priv, + virDomainXMLNamespacePtr xmlns, + virDomainABIStabilityPtr abi, + virSaveCookieCallbacksPtr save= Cookie); + +virSaveCookieCallbacksPtr +virDomainXMLOptionGetSaveCookie(virDomainXMLOptionPtr xmlopt); + +typedef int (*virDomainMomentPostParseCallback)(virDomainMomentDefPtr def); + +void virDomainXMLOptionSetMomentPostParse(virDomainXMLOptionPtr xmlopt, + virDomainMomentPostParseCallback= cb); +int virDomainXMLOptionRunMomentPostParse(virDomainXMLOptionPtr xmlopt, + virDomainMomentDefPtr def); + +void virDomainNetGenerateMAC(virDomainXMLOptionPtr xmlopt, virMacAddrPtr m= ac); + +virDomainXMLNamespacePtr +virDomainXMLOptionGetNamespace(virDomainXMLOptionPtr xmlopt) + ATTRIBUTE_NONNULL(1); + +int virDomainDefPostParse(virDomainDefPtr def, + virCapsPtr caps, + unsigned int parseFlags, + virDomainXMLOptionPtr xmlopt, + void *parseOpaque); + +int virDomainDeviceValidateAliasForHotplug(virDomainObjPtr vm, + virDomainDeviceDefPtr dev, + unsigned int flags); + +bool virDomainDeviceAliasIsUserAlias(const char *aliasStr); + +int virDomainDefValidate(virDomainDefPtr def, + virCapsPtr caps, + unsigned int parseFlags, + virDomainXMLOptionPtr xmlopt); +typedef enum { + /* parse internal domain status information */ + VIR_DOMAIN_DEF_PARSE_STATUS =3D 1 << 0, + /* Parse only parts of the XML that would be present in an inactive li= bvirt + * XML. Note that the flag does not imply that ABI incompatible + * transformations can be used, since it's used to strip runtime info = when + * restoring save images/migration. */ + VIR_DOMAIN_DEF_PARSE_INACTIVE =3D 1 << 1, + /* parse element */ + VIR_DOMAIN_DEF_PARSE_ACTUAL_NET =3D 1 << 2, + /* parse original states of host PCI device */ + VIR_DOMAIN_DEF_PARSE_PCI_ORIG_STATES =3D 1 << 3, + /* internal flag passed to device info sub-parser to allow using = */ + VIR_DOMAIN_DEF_PARSE_ALLOW_ROM =3D 1 << 4, + /* internal flag passed to device info sub-parser to allow specifying = boot order */ + VIR_DOMAIN_DEF_PARSE_ALLOW_BOOT =3D 1 << 5, + /* parse only source half of */ + VIR_DOMAIN_DEF_PARSE_DISK_SOURCE =3D 1 << 6, + /* perform RNG schema validation on the passed XML document */ + VIR_DOMAIN_DEF_PARSE_VALIDATE_SCHEMA =3D 1 << 7, + /* allow updates in post parse callback that would break ABI otherwise= */ + VIR_DOMAIN_DEF_PARSE_ABI_UPDATE =3D 1 << 8, + /* skip definition validation checks meant to be executed on define ti= me only */ + VIR_DOMAIN_DEF_PARSE_SKIP_VALIDATE =3D 1 << 9, + /* skip parsing of security labels */ + VIR_DOMAIN_DEF_PARSE_SKIP_SECLABEL =3D 1 << 10, + /* Allows updates in post parse callback for incoming persistent migra= tion + * that would break ABI otherwise. This should be used only if it's s= afe + * to do such change. */ + VIR_DOMAIN_DEF_PARSE_ABI_UPDATE_MIGRATION =3D 1 << 11, + /* Allows to ignore certain failures in the post parse callbacks, which + * may happen due to missing packages and can be fixed by re-running t= he + * post parse callbacks before starting. Failure of the post parse cal= lback + * is recorded as def->postParseFail */ + VIR_DOMAIN_DEF_PARSE_ALLOW_POST_PARSE_FAIL =3D 1 << 12, +} virDomainDefParseFlags; + +/* Use these flags to skip specific domain ABI consistency checks done + * in virDomainDefCheckABIStabilityFlags. + */ +typedef enum { + /* Set when domain lock must be released and there exists the possibil= ity + * that some external action could alter the value, such as cur_balloo= n. */ + VIR_DOMAIN_DEF_ABI_CHECK_SKIP_VOLATILE =3D 1 << 0, +} virDomainDefABICheckFlags; + +virDomainDeviceDefPtr virDomainDeviceDefParse(const char *xmlStr, + const virDomainDef *def, + virCapsPtr caps, + virDomainXMLOptionPtr xmlopt, + unsigned int flags); +virDomainDiskDefPtr virDomainDiskDefParse(const char *xmlStr, + const virDomainDef *def, + virDomainXMLOptionPtr xmlopt, + unsigned int flags); +virDomainDefPtr virDomainDefParseString(const char *xmlStr, + virCapsPtr caps, + virDomainXMLOptionPtr xmlopt, + void *parseOpaque, + unsigned int flags); +virDomainDefPtr virDomainDefParseFile(const char *filename, + virCapsPtr caps, + virDomainXMLOptionPtr xmlopt, + void *parseOpaque, + unsigned int flags); +virDomainDefPtr virDomainDefParseNode(xmlDocPtr doc, + xmlNodePtr root, + virCapsPtr caps, + virDomainXMLOptionPtr xmlopt, + void *parseOpaque, + unsigned int flags); +virDomainObjPtr virDomainObjParseNode(xmlDocPtr xml, + xmlNodePtr root, + virCapsPtr caps, + virDomainXMLOptionPtr xmlopt, + unsigned int flags); +virDomainObjPtr virDomainObjParseFile(const char *filename, + virCapsPtr caps, + virDomainXMLOptionPtr xmlopt, + unsigned int flags); + +bool virDomainDefCheckABIStability(virDomainDefPtr src, + virDomainDefPtr dst, + virDomainXMLOptionPtr xmlopt); + +bool virDomainDefCheckABIStabilityFlags(virDomainDefPtr src, + virDomainDefPtr dst, + virDomainXMLOptionPtr xmlopt, + unsigned int flags); + +int virDomainStorageNetworkParseHost(xmlNodePtr hostnode, + virStorageNetHostDefPtr host); +int +virDomainParseMemory(const char *xpath, + const char *units_xpath, + xmlXPathContextPtr ctxt, + unsigned long long *mem, + bool required, + bool capped); + +virStorageSourcePtr +virDomainStorageSourceParseBase(const char *type, + const char *format, + const char *index) + ATTRIBUTE_RETURN_CHECK; + +int virDomainStorageSourceParse(xmlNodePtr node, + xmlXPathContextPtr ctxt, + virStorageSourcePtr src, + unsigned int flags, + virDomainXMLOptionPtr xmlopt) + ATTRIBUTE_NONNULL(1) ATTRIBUTE_NONNULL(2) ATTRIBUTE_NONNULL(3); + +int +virDomainDiskBackingStoreParse(xmlXPathContextPtr ctxt, + virStorageSourcePtr src, + unsigned int flags, + virDomainXMLOptionPtr xmlopt) + ATTRIBUTE_NONNULL(1) ATTRIBUTE_NONNULL(2) ATTRIBUTE_RETURN_CHECK; --=20 2.19.2 -- libvir-list mailing list libvir-list@redhat.com https://www.redhat.com/mailman/listinfo/libvir-list From nobody Mon Apr 29 02:13:31 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of redhat.com designates 209.132.183.28 as permitted sender) client-ip=209.132.183.28; envelope-from=libvir-list-bounces@redhat.com; helo=mx1.redhat.com; Authentication-Results: mx.zohomail.com; spf=pass (zoho.com: domain of redhat.com designates 209.132.183.28 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com; dmarc=pass(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1563538584; cv=none; d=zoho.com; s=zohoarc; b=c7KN4CJFnA+bumb9oH6VMTxbWu4HLMHlBId6euYWpHjp52s3jhw07ESEoS64zFpcPXgGBZYdVfpoYXwZZyEP3crZ/IY1Hw5GK6RrZqKZa3YCdsdGbsEbzZCIiAceo3tt+NzEqgH+ujXOKFOa8S3ZdLnbmDUBuYH0b604/s6RGdo= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1563538584; h=Content-Type:Content-Transfer-Encoding:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To:ARC-Authentication-Results; bh=WFWrezyR0dUyAJwoD16XpcFhCr7e11gykEbAIH1bx0k=; b=ZtPVSQ4c6c4D1ouwEtQgpRA1QnjXwECwB7yc9u+a7aRkTUpzcOktcPH3UDy/XP+gEIMpRXjNrELiutbcvzubzFmNT9Q8fUQ/wVlADsAssOX+ZNYslR/NytGENd72OOG3AzstxJ4fgX7ukjEBmCvPlNeNYeoMor+lGR3n+nBzNIs= ARC-Authentication-Results: i=1; mx.zoho.com; spf=pass (zoho.com: domain of redhat.com designates 209.132.183.28 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com; dmarc=pass header.from= (p=none dis=none) header.from= Return-Path: Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by mx.zohomail.com with SMTPS id 1563538584444525.771591055946; Fri, 19 Jul 2019 05:16:24 -0700 (PDT) Received: from smtp.corp.redhat.com (int-mx02.intmail.prod.int.phx2.redhat.com [10.5.11.12]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id 26F8781E0A; Fri, 19 Jul 2019 12:16:21 +0000 (UTC) Received: from colo-mx.corp.redhat.com (colo-mx02.intmail.prod.int.phx2.redhat.com [10.5.11.21]) by smtp.corp.redhat.com (Postfix) with ESMTPS id E4016619AA; Fri, 19 Jul 2019 12:16:20 +0000 (UTC) Received: from lists01.pubmisc.prod.ext.phx2.redhat.com (lists01.pubmisc.prod.ext.phx2.redhat.com [10.5.19.33]) by colo-mx.corp.redhat.com (Postfix) with ESMTP id 8445FC849; Fri, 19 Jul 2019 12:16:20 +0000 (UTC) Received: from smtp.corp.redhat.com (int-mx03.intmail.prod.int.phx2.redhat.com [10.5.11.13]) by lists01.pubmisc.prod.ext.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id x6JCG00F020056 for ; Fri, 19 Jul 2019 08:16:00 -0400 Received: by smtp.corp.redhat.com (Postfix) id 4701A646BD; Fri, 19 Jul 2019 12:16:00 +0000 (UTC) Received: from icr.brq.redhat.com (unknown [10.43.2.100]) by smtp.corp.redhat.com (Postfix) with ESMTP id C50C8646BB for ; Fri, 19 Jul 2019 12:15:59 +0000 (UTC) From: =?UTF-8?q?J=C3=A1n=20Tomko?= To: libvir-list@redhat.com Date: Fri, 19 Jul 2019 14:15:47 +0200 Message-Id: In-Reply-To: References: MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.79 on 10.5.11.13 X-loop: libvir-list@redhat.com Subject: [libvirt] [PATCH 5/6] conf: introduce domain_format.h X-BeenThere: libvir-list@redhat.com X-Mailman-Version: 2.1.12 Precedence: junk List-Id: Development discussions about the libvirt library & tools List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Sender: libvir-list-bounces@redhat.com Errors-To: libvir-list-bounces@redhat.com X-Scanned-By: MIMEDefang 2.79 on 10.5.11.12 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.25]); Fri, 19 Jul 2019 12:16:21 +0000 (UTC) Move functions related to domain XML formatting here. Signed-off-by: J=C3=A1n Tomko --- src/conf/Makefile.inc.am | 1 + src/conf/domain_conf.h | 59 +------------------------- src/conf/domain_format.h | 89 ++++++++++++++++++++++++++++++++++++++++ 3 files changed, 91 insertions(+), 58 deletions(-) create mode 100644 src/conf/domain_format.h diff --git a/src/conf/Makefile.inc.am b/src/conf/Makefile.inc.am index 3afebb9c7d..4a683dc6a7 100644 --- a/src/conf/Makefile.inc.am +++ b/src/conf/Makefile.inc.am @@ -22,6 +22,7 @@ DOMAIN_CONF_SOURCES =3D \ conf/domain_conf.h \ conf/domain_audit.c \ conf/domain_audit.h \ + conf/domain_format.h \ conf/domain_nwfilter.c \ conf/domain_nwfilter.h \ conf/domain_parse.h \ diff --git a/src/conf/domain_conf.h b/src/conf/domain_conf.h index eb2b84ad03..2811ee9610 100644 --- a/src/conf/domain_conf.h +++ b/src/conf/domain_conf.h @@ -31,6 +31,7 @@ #include "virdomaintypes.h" #include "virstorageencryption.h" #include "cpu_conf.h" +#include "domain_format.h" #include "domain_parse.h" #include "virthread.h" #include "virsocketaddr.h" @@ -215,21 +216,6 @@ virDomainDefPtr virDomainObjCopyPersistentDef(virDomai= nObjPtr dom, virCapsPtr caps, virDomainXMLOptionPtr xmlopt= ); =20 -typedef enum { - VIR_DOMAIN_DEF_FORMAT_SECURE =3D 1 << 0, - VIR_DOMAIN_DEF_FORMAT_INACTIVE =3D 1 << 1, - VIR_DOMAIN_DEF_FORMAT_MIGRATABLE =3D 1 << 2, - /* format internal domain status information */ - VIR_DOMAIN_DEF_FORMAT_STATUS =3D 1 << 3, - /* format element */ - VIR_DOMAIN_DEF_FORMAT_ACTUAL_NET =3D 1 << 4, - /* format original states of host PCI device */ - VIR_DOMAIN_DEF_FORMAT_PCI_ORIG_STATES =3D 1 << 5, - VIR_DOMAIN_DEF_FORMAT_ALLOW_ROM =3D 1 << 6, - VIR_DOMAIN_DEF_FORMAT_ALLOW_BOOT =3D 1 << 7, - VIR_DOMAIN_DEF_FORMAT_CLOCK_ADJUST =3D 1 << 8, -} virDomainDefFormatFlags; - int virDomainDefAddImplicitDevices(virDomainDefPtr def); =20 virDomainIOThreadIDDefPtr virDomainIOThreadIDFind(const virDomainDef *def, @@ -238,49 +224,6 @@ virDomainIOThreadIDDefPtr virDomainIOThreadIDAdd(virDo= mainDefPtr def, unsigned int iothread_id); void virDomainIOThreadIDDel(virDomainDefPtr def, unsigned int iothread_id); =20 -/* When extending this list, remember that libvirt 1.2.12-5.0.0 had a - * bug that silently ignored unknown flags. A new flag to add - * information is okay as long as clients still work when an older - * server omits the requested output, but a new flag to suppress - * information could result in a security hole when older libvirt - * supplies the sensitive information in spite of the flag. */ -#define VIR_DOMAIN_XML_COMMON_FLAGS \ - (VIR_DOMAIN_XML_SECURE | VIR_DOMAIN_XML_INACTIVE | \ - VIR_DOMAIN_XML_MIGRATABLE) -unsigned int virDomainDefFormatConvertXMLFlags(unsigned int flags); - -char *virDomainDefFormat(virDomainDefPtr def, - virCapsPtr caps, - unsigned int flags); -char *virDomainObjFormat(virDomainXMLOptionPtr xmlopt, - virDomainObjPtr obj, - virCapsPtr caps, - unsigned int flags); -int virDomainDefFormatInternal(virDomainDefPtr def, - virCapsPtr caps, - unsigned int flags, - virBufferPtr buf, - virDomainXMLOptionPtr xmlopt); - -int virDomainDiskSourceFormat(virBufferPtr buf, - virStorageSourcePtr src, - const char *element, - int policy, - bool attrIndex, - unsigned int flags, - virDomainXMLOptionPtr xmlopt); - -int -virDomainDiskBackingStoreFormat(virBufferPtr buf, - virStorageSourcePtr src, - virDomainXMLOptionPtr xmlopt, - unsigned int flags); - -int virDomainNetDefFormat(virBufferPtr buf, - virDomainNetDefPtr def, - char *prefix, - unsigned int flags); - int virDomainDefCompatibleDevice(virDomainDefPtr def, virDomainDeviceDefPtr dev, virDomainDeviceDefPtr oldDev, diff --git a/src/conf/domain_format.h b/src/conf/domain_format.h new file mode 100644 index 0000000000..3a8b49ddaa --- /dev/null +++ b/src/conf/domain_format.h @@ -0,0 +1,89 @@ +/* +<<<<<<< HEAD + * domain_format.h: XML formatter for the domain definition +=3D=3D=3D=3D=3D=3D=3D + * virconftypes.h: struct typedefs to avoid circular inclusion +>>>>>>> 094a03dc8a... format + * + * Copyright (C) 2006-2019 Red Hat, Inc. + * Copyright (C) 2006-2008 Daniel P. Berrange + * Copyright (c) 2015 SUSE LINUX Products GmbH, Nuernberg, Germany. + * + * 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 + * . + */ + +#pragma once + +#include "internal.h" +#include "virconftypes.h" +#include "virdomaintypes.h" + +typedef enum { + VIR_DOMAIN_DEF_FORMAT_SECURE =3D 1 << 0, + VIR_DOMAIN_DEF_FORMAT_INACTIVE =3D 1 << 1, + VIR_DOMAIN_DEF_FORMAT_MIGRATABLE =3D 1 << 2, + /* format internal domain status information */ + VIR_DOMAIN_DEF_FORMAT_STATUS =3D 1 << 3, + /* format element */ + VIR_DOMAIN_DEF_FORMAT_ACTUAL_NET =3D 1 << 4, + /* format original states of host PCI device */ + VIR_DOMAIN_DEF_FORMAT_PCI_ORIG_STATES =3D 1 << 5, + VIR_DOMAIN_DEF_FORMAT_ALLOW_ROM =3D 1 << 6, + VIR_DOMAIN_DEF_FORMAT_ALLOW_BOOT =3D 1 << 7, + VIR_DOMAIN_DEF_FORMAT_CLOCK_ADJUST =3D 1 << 8, +} virDomainDefFormatFlags; + +/* When extending this list, remember that libvirt 1.2.12-5.0.0 had a + * bug that silently ignored unknown flags. A new flag to add + * information is okay as long as clients still work when an older + * server omits the requested output, but a new flag to suppress + * information could result in a security hole when older libvirt + * supplies the sensitive information in spite of the flag. */ +#define VIR_DOMAIN_XML_COMMON_FLAGS \ + (VIR_DOMAIN_XML_SECURE | VIR_DOMAIN_XML_INACTIVE | \ + VIR_DOMAIN_XML_MIGRATABLE) +unsigned int virDomainDefFormatConvertXMLFlags(unsigned int flags); + +char *virDomainDefFormat(virDomainDefPtr def, + virCapsPtr caps, + unsigned int flags); +char *virDomainObjFormat(virDomainXMLOptionPtr xmlopt, + virDomainObjPtr obj, + virCapsPtr caps, + unsigned int flags); +int virDomainDefFormatInternal(virDomainDefPtr def, + virCapsPtr caps, + unsigned int flags, + virBufferPtr buf, + virDomainXMLOptionPtr xmlopt); + +int virDomainDiskSourceFormat(virBufferPtr buf, + virStorageSourcePtr src, + const char *element, + int policy, + bool attrIndex, + unsigned int flags, + virDomainXMLOptionPtr xmlopt); + +int +virDomainDiskBackingStoreFormat(virBufferPtr buf, + virStorageSourcePtr src, + virDomainXMLOptionPtr xmlopt, + unsigned int flags); + +int virDomainNetDefFormat(virBufferPtr buf, + virDomainNetDefPtr def, + char *prefix, + unsigned int flags); --=20 2.19.2 -- libvir-list mailing list libvir-list@redhat.com https://www.redhat.com/mailman/listinfo/libvir-list From nobody Mon Apr 29 02:13:31 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of redhat.com designates 209.132.183.28 as permitted sender) client-ip=209.132.183.28; envelope-from=libvir-list-bounces@redhat.com; helo=mx1.redhat.com; Authentication-Results: mx.zohomail.com; spf=pass (zoho.com: domain of redhat.com designates 209.132.183.28 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com; dmarc=pass(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1563538579; cv=none; d=zoho.com; s=zohoarc; b=XA70zWjvEDXnKBl0KS/Zcoc91AYv+po9Yv2rIdB/hm8o6muNxBj37SneMKY4LHS8gJjo61SnHIuWSZkDszawFdQWkLSHk579/NZV55aeihqpra/imm0C1jF0hrqj1nXlZkP/z6UiPiKdUX2/tmK3E9U7IMem5Zte+fHD0e3tOHk= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1563538579; h=Content-Type:Content-Transfer-Encoding:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To:ARC-Authentication-Results; bh=f2BEgL6JyDlDLQmRH0U9Ua/g7eLCauAR1kMyLeFCTzc=; b=DzTaEOcJnIUn43twiIVoc/Fj/FPvP6lfVHCFLfaB0C40ozaNlq3oqL3LFy56SOtCs4AyamJUvfk05VLclupyV0Sv6iKiIFhgAnpcUb54q0Pjh75qamiKr+ImUkp5SFE2F+ZFAhj9/vKvdoBzBS6VnYCX4YNgUg/WFn8k0Kl0LOo= ARC-Authentication-Results: i=1; mx.zoho.com; spf=pass (zoho.com: domain of redhat.com designates 209.132.183.28 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com; dmarc=pass header.from= (p=none dis=none) header.from= Return-Path: Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by mx.zohomail.com with SMTPS id 1563538579221326.86553596236865; Fri, 19 Jul 2019 05:16:19 -0700 (PDT) Received: from smtp.corp.redhat.com (int-mx04.intmail.prod.int.phx2.redhat.com [10.5.11.14]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id 3382C335F6; Fri, 19 Jul 2019 12:16:17 +0000 (UTC) Received: from colo-mx.corp.redhat.com (colo-mx02.intmail.prod.int.phx2.redhat.com [10.5.11.21]) by smtp.corp.redhat.com (Postfix) with ESMTPS id 05F975D978; Fri, 19 Jul 2019 12:16:17 +0000 (UTC) Received: from lists01.pubmisc.prod.ext.phx2.redhat.com (lists01.pubmisc.prod.ext.phx2.redhat.com [10.5.19.33]) by colo-mx.corp.redhat.com (Postfix) with ESMTP id B6486C84A; Fri, 19 Jul 2019 12:16:16 +0000 (UTC) Received: from smtp.corp.redhat.com (int-mx03.intmail.prod.int.phx2.redhat.com [10.5.11.13]) by lists01.pubmisc.prod.ext.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id x6JCG1lP020067 for ; Fri, 19 Jul 2019 08:16:01 -0400 Received: by smtp.corp.redhat.com (Postfix) id 1A761646BD; Fri, 19 Jul 2019 12:16:01 +0000 (UTC) Received: from icr.brq.redhat.com (unknown [10.43.2.100]) by smtp.corp.redhat.com (Postfix) with ESMTP id 93E77646BB for ; Fri, 19 Jul 2019 12:16:00 +0000 (UTC) From: =?UTF-8?q?J=C3=A1n=20Tomko?= To: libvir-list@redhat.com Date: Fri, 19 Jul 2019 14:15:48 +0200 Message-Id: <718143a9e9ca40ecc7b125d7f7079984be4db05a.1563538286.git.jtomko@redhat.com> In-Reply-To: References: MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.79 on 10.5.11.13 X-loop: libvir-list@redhat.com Subject: [libvirt] [PATCH 6/6] maint: include virdomaintypes.h instead of domain_conf.h X-BeenThere: libvir-list@redhat.com X-Mailman-Version: 2.1.12 Precedence: junk List-Id: Development discussions about the libvirt library & tools List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Sender: libvir-list-bounces@redhat.com Errors-To: libvir-list-bounces@redhat.com X-Scanned-By: MIMEDefang 2.79 on 10.5.11.14 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.38]); Fri, 19 Jul 2019 12:16:17 +0000 (UTC) Most of the consumers only care about the domain types and do not need to parse/format XML. Include the smaller, more specific header if possible. Signed-off-by: J=C3=A1n Tomko --- src/access/viraccessdriver.h | 2 +- src/access/viraccessmanager.h | 2 +- src/conf/virchrdev.h | 2 +- src/esx/esx_private.h | 2 +- src/interface/interface_backend_udev.c | 2 +- src/libxl/libxl_capabilities.c | 2 +- src/libxl/libxl_domain.h | 2 +- src/locking/domain_lock.h | 2 +- src/locking/lock_driver.h | 2 +- src/locking/sanlock_helper.c | 2 +- src/lxc/lxc_cgroup.h | 2 +- src/lxc/lxc_conf.h | 2 +- src/lxc/lxc_hostdev.h | 2 +- src/lxc/lxc_monitor.h | 2 +- src/lxc/lxc_native.c | 2 +- src/lxc/lxc_native.h | 2 +- src/network/bridge_driver.h | 2 +- src/nwfilter/nwfilter_dhcpsnoop.c | 2 +- src/nwfilter/nwfilter_driver.c | 2 +- src/nwfilter/nwfilter_ebiptables_driver.c | 2 +- src/nwfilter/nwfilter_gentech_driver.c | 2 +- src/nwfilter/nwfilter_learnipaddr.c | 2 +- src/qemu/qemu_alias.h | 2 +- src/qemu/qemu_blockjob.c | 2 +- src/qemu/qemu_capabilities.c | 2 +- src/qemu/qemu_cgroup.h | 2 +- src/qemu/qemu_command.c | 2 +- src/qemu/qemu_command.h | 2 +- src/qemu/qemu_conf.h | 2 +- src/qemu/qemu_domain.h | 2 +- src/qemu/qemu_domain_address.h | 2 +- src/qemu/qemu_driver.c | 2 +- src/qemu/qemu_firmware.h | 2 +- src/qemu/qemu_hostdev.h | 2 +- src/qemu/qemu_hotplug.h | 2 +- src/qemu/qemu_interface.h | 2 +- src/qemu/qemu_monitor.h | 2 +- src/qemu/qemu_processpriv.h | 2 +- src/qemu/qemu_security.h | 2 +- src/qemu/qemu_tpm.c | 2 +- src/remote/remote_daemon_dispatch.c | 2 +- src/security/security_manager.h | 2 +- src/security/virt-aa-helper.c | 2 +- src/storage/storage_driver.h | 2 +- src/test/test_driver.c | 2 +- src/vbox/vbox_driver.c | 2 +- src/vbox/vbox_network.c | 2 +- src/vbox/vbox_storage.c | 2 +- src/vbox/vbox_tmpl.c | 2 +- src/vz/vz_utils.h | 2 +- src/xenapi/xenapi_driver.c | 2 +- src/xenapi/xenapi_utils.c | 2 +- src/xenapi/xenapi_utils.h | 2 +- src/xenconfig/xen_common.h | 2 +- src/xenconfig/xen_xl.c | 2 +- src/xenconfig/xen_xl.h | 2 +- src/xenconfig/xen_xm.h | 2 +- tests/domainconftest.c | 2 +- tests/qemumemlocktest.c | 2 +- tests/qemumonitortestutils.h | 2 +- tests/qemusecuritytest.c | 2 +- tests/testutilslxc.c | 2 +- tests/testutilsqemu.h | 2 +- tests/testutilsxen.c | 2 +- tools/virsh-domain.c | 2 +- 65 files changed, 65 insertions(+), 65 deletions(-) diff --git a/src/access/viraccessdriver.h b/src/access/viraccessdriver.h index 363d75965c..0be181eaf0 100644 --- a/src/access/viraccessdriver.h +++ b/src/access/viraccessdriver.h @@ -20,7 +20,7 @@ =20 #pragma once =20 -#include "conf/domain_conf.h" +#include "virdomaintypes.h" #include "access/viraccessmanager.h" =20 typedef int (*virAccessDriverCheckConnectDrv)(virAccessManagerPtr manager, diff --git a/src/access/viraccessmanager.h b/src/access/viraccessmanager.h index 2c02db4bf2..3ed85df38a 100644 --- a/src/access/viraccessmanager.h +++ b/src/access/viraccessmanager.h @@ -21,7 +21,7 @@ #pragma once =20 #include "viridentity.h" -#include "conf/domain_conf.h" +#include "virdomaintypes.h" #include "conf/network_conf.h" #include "conf/nwfilter_conf.h" #include "conf/node_device_conf.h" diff --git a/src/conf/virchrdev.h b/src/conf/virchrdev.h index e218ea7203..b31d53a204 100644 --- a/src/conf/virchrdev.h +++ b/src/conf/virchrdev.h @@ -22,7 +22,7 @@ #pragma once =20 #include "internal.h" -#include "domain_conf.h" +#include "virdomaintypes.h" =20 typedef struct _virChrdevs virChrdevs; typedef virChrdevs *virChrdevsPtr; diff --git a/src/esx/esx_private.h b/src/esx/esx_private.h index 15edab4aa1..91332608d2 100644 --- a/src/esx/esx_private.h +++ b/src/esx/esx_private.h @@ -24,7 +24,7 @@ #include "internal.h" #include "virerror.h" #include "capabilities.h" -#include "domain_conf.h" +#include "virdomaintypes.h" #include "esx_vi.h" =20 typedef struct _esxPrivate { diff --git a/src/interface/interface_backend_udev.c b/src/interface/interfa= ce_backend_udev.c index fea5108dbc..a867380efb 100644 --- a/src/interface/interface_backend_udev.c +++ b/src/interface/interface_backend_udev.c @@ -27,7 +27,7 @@ #include "virfile.h" #include "c-ctype.h" #include "datatypes.h" -#include "domain_conf.h" +#include "virdomaintypes.h" #include "interface_driver.h" #include "interface_conf.h" #include "viralloc.h" diff --git a/src/libxl/libxl_capabilities.c b/src/libxl/libxl_capabilities.c index 73ae0b3fa1..9b3d4a37ec 100644 --- a/src/libxl/libxl_capabilities.c +++ b/src/libxl/libxl_capabilities.c @@ -29,7 +29,7 @@ #include "virfile.h" #include "viralloc.h" #include "virstring.h" -#include "domain_conf.h" +#include "virdomaintypes.h" #include "capabilities.h" #include "domain_capabilities.h" #include "vircommand.h" diff --git a/src/libxl/libxl_domain.h b/src/libxl/libxl_domain.h index 737ae6accd..e432c90145 100644 --- a/src/libxl/libxl_domain.h +++ b/src/libxl/libxl_domain.h @@ -22,7 +22,7 @@ =20 #include =20 -#include "domain_conf.h" +#include "virdomaintypes.h" #include "libxl_conf.h" #include "virchrdev.h" #include "virenum.h" diff --git a/src/locking/domain_lock.h b/src/locking/domain_lock.h index 6f197bf08b..dca6460cf3 100644 --- a/src/locking/domain_lock.h +++ b/src/locking/domain_lock.h @@ -22,7 +22,7 @@ #pragma once =20 #include "internal.h" -#include "domain_conf.h" +#include "virdomaintypes.h" #include "lock_manager.h" =20 int virDomainLockProcessStart(virLockManagerPluginPtr plugin, diff --git a/src/locking/lock_driver.h b/src/locking/lock_driver.h index e53c28ee33..fdefcea7a4 100644 --- a/src/locking/lock_driver.h +++ b/src/locking/lock_driver.h @@ -22,7 +22,7 @@ #pragma once =20 #include "internal.h" -#include "domain_conf.h" +#include "virdomaintypes.h" =20 typedef struct _virLockManager virLockManager; typedef virLockManager *virLockManagerPtr; diff --git a/src/locking/sanlock_helper.c b/src/locking/sanlock_helper.c index d589576f04..71fac1dd1f 100644 --- a/src/locking/sanlock_helper.c +++ b/src/locking/sanlock_helper.c @@ -3,7 +3,7 @@ #include "internal.h" #include "virconf.h" #include "viralloc.h" -#include "domain_conf.h" +#include "virdomaintypes.h" #include "virgettext.h" =20 =20 diff --git a/src/lxc/lxc_cgroup.h b/src/lxc/lxc_cgroup.h index 63e9e837b0..c26dba0bd2 100644 --- a/src/lxc/lxc_cgroup.h +++ b/src/lxc/lxc_cgroup.h @@ -22,7 +22,7 @@ #pragma once =20 #include "vircgroup.h" -#include "domain_conf.h" +#include "virdomaintypes.h" #include "lxc_fuse.h" #include "virusb.h" =20 diff --git a/src/lxc/lxc_conf.h b/src/lxc/lxc_conf.h index e26ca22d3c..d732e331dd 100644 --- a/src/lxc/lxc_conf.h +++ b/src/lxc/lxc_conf.h @@ -23,7 +23,7 @@ =20 #include "internal.h" #include "libvirt_internal.h" -#include "domain_conf.h" +#include "virdomaintypes.h" #include "domain_event.h" #include "capabilities.h" #include "virthread.h" diff --git a/src/lxc/lxc_hostdev.h b/src/lxc/lxc_hostdev.h index d2cdebddc8..7f321106ea 100644 --- a/src/lxc/lxc_hostdev.h +++ b/src/lxc/lxc_hostdev.h @@ -22,7 +22,7 @@ #pragma once =20 #include "lxc_conf.h" -#include "domain_conf.h" +#include "virdomaintypes.h" =20 int virLXCUpdateActiveUSBHostdevs(virLXCDriverPtr driver, virDomainDefPtr def); diff --git a/src/lxc/lxc_monitor.h b/src/lxc/lxc_monitor.h index 6d0944c301..2af2eff25c 100644 --- a/src/lxc/lxc_monitor.h +++ b/src/lxc/lxc_monitor.h @@ -21,7 +21,7 @@ #pragma once =20 #include "virobject.h" -#include "domain_conf.h" +#include "virdomaintypes.h" #include "lxc_monitor_protocol.h" =20 typedef struct _virLXCMonitor virLXCMonitor; diff --git a/src/lxc/lxc_native.c b/src/lxc/lxc_native.c index b4c6e790d8..1da308b0cd 100644 --- a/src/lxc/lxc_native.c +++ b/src/lxc/lxc_native.c @@ -29,7 +29,7 @@ #include "util/virlog.h" #include "util/virstring.h" #include "util/virconf.h" -#include "conf/domain_conf.h" +#include "virdomaintypes.h" =20 #define VIR_FROM_THIS VIR_FROM_LXC =20 diff --git a/src/lxc/lxc_native.h b/src/lxc/lxc_native.h index f16407f2e6..3c736c56e0 100644 --- a/src/lxc/lxc_native.h +++ b/src/lxc/lxc_native.h @@ -20,7 +20,7 @@ =20 #pragma once =20 -#include "domain_conf.h" +#include "virdomaintypes.h" #include "virenum.h" =20 #define LXC_CONFIG_FORMAT "lxc-tools" diff --git a/src/network/bridge_driver.h b/src/network/bridge_driver.h index b095388a0b..c56b2299ef 100644 --- a/src/network/bridge_driver.h +++ b/src/network/bridge_driver.h @@ -22,7 +22,7 @@ #pragma once =20 #include "internal.h" -#include "domain_conf.h" +#include "virdomaintypes.h" #include "vircommand.h" #include "virdnsmasq.h" #include "virnetworkobj.h" diff --git a/src/nwfilter/nwfilter_dhcpsnoop.c b/src/nwfilter/nwfilter_dhcp= snoop.c index d8a1e7f8a8..d47715b0f1 100644 --- a/src/nwfilter/nwfilter_dhcpsnoop.c +++ b/src/nwfilter/nwfilter_dhcpsnoop.c @@ -52,7 +52,7 @@ #include "virlog.h" #include "datatypes.h" #include "virerror.h" -#include "conf/domain_conf.h" +#include "virdomaintypes.h" #include "nwfilter_gentech_driver.h" #include "nwfilter_dhcpsnoop.h" #include "nwfilter_ipaddrmap.h" diff --git a/src/nwfilter/nwfilter_driver.c b/src/nwfilter/nwfilter_driver.c index 530e4f5872..574059d972 100644 --- a/src/nwfilter/nwfilter_driver.c +++ b/src/nwfilter/nwfilter_driver.c @@ -32,7 +32,7 @@ #include "virerror.h" #include "datatypes.h" #include "viralloc.h" -#include "domain_conf.h" +#include "virdomaintypes.h" #include "domain_nwfilter.h" #include "nwfilter_driver.h" #include "nwfilter_gentech_driver.h" diff --git a/src/nwfilter/nwfilter_ebiptables_driver.c b/src/nwfilter/nwfil= ter_ebiptables_driver.c index 32bbf6d05c..4a21a6f013 100644 --- a/src/nwfilter/nwfilter_ebiptables_driver.c +++ b/src/nwfilter/nwfilter_ebiptables_driver.c @@ -32,7 +32,7 @@ #include "viralloc.h" #include "virlog.h" #include "virerror.h" -#include "domain_conf.h" +#include "virdomaintypes.h" #include "nwfilter_conf.h" #include "nwfilter_driver.h" #include "nwfilter_gentech_driver.h" diff --git a/src/nwfilter/nwfilter_gentech_driver.c b/src/nwfilter/nwfilter= _gentech_driver.c index 6d68189d5f..ed3ad8feb6 100644 --- a/src/nwfilter/nwfilter_gentech_driver.c +++ b/src/nwfilter/nwfilter_gentech_driver.c @@ -26,7 +26,7 @@ =20 #include "viralloc.h" #include "virlog.h" -#include "domain_conf.h" +#include "virdomaintypes.h" #include "virerror.h" #include "nwfilter_gentech_driver.h" #include "nwfilter_ebiptables_driver.h" diff --git a/src/nwfilter/nwfilter_learnipaddr.c b/src/nwfilter/nwfilter_le= arnipaddr.c index cd66e3ea7d..720d0a47c8 100644 --- a/src/nwfilter/nwfilter_learnipaddr.c +++ b/src/nwfilter/nwfilter_learnipaddr.c @@ -48,7 +48,7 @@ #include "virerror.h" #include "virthread.h" #include "conf/nwfilter_params.h" -#include "conf/domain_conf.h" +#include "virdomaintypes.h" #include "nwfilter_gentech_driver.h" #include "nwfilter_ebiptables_driver.h" #include "nwfilter_ipaddrmap.h" diff --git a/src/qemu/qemu_alias.h b/src/qemu/qemu_alias.h index aaac09a1d1..e6df17b2b2 100644 --- a/src/qemu/qemu_alias.h +++ b/src/qemu/qemu_alias.h @@ -21,7 +21,7 @@ =20 #pragma once =20 -#include "domain_conf.h" +#include "virdomaintypes.h" =20 #include "qemu_capabilities.h" #include "qemu_domain.h" diff --git a/src/qemu/qemu_blockjob.c b/src/qemu/qemu_blockjob.c index 292610d089..c0817d96bc 100644 --- a/src/qemu/qemu_blockjob.c +++ b/src/qemu/qemu_blockjob.c @@ -27,7 +27,7 @@ #include "qemu_block.h" #include "qemu_domain.h" =20 -#include "conf/domain_conf.h" +#include "virdomaintypes.h" #include "conf/domain_event.h" =20 #include "virlog.h" diff --git a/src/qemu/qemu_capabilities.c b/src/qemu/qemu_capabilities.c index 65192469da..cde6de86f2 100644 --- a/src/qemu/qemu_capabilities.c +++ b/src/qemu/qemu_capabilities.c @@ -32,7 +32,7 @@ #include "virprocess.h" #include "cpu/cpu.h" #include "cpu/cpu_x86.h" -#include "domain_conf.h" +#include "virdomaintypes.h" #include "vircommand.h" #include "virbitmap.h" #include "virnodesuspend.h" diff --git a/src/qemu/qemu_cgroup.h b/src/qemu/qemu_cgroup.h index 91d0877947..d003910e04 100644 --- a/src/qemu/qemu_cgroup.h +++ b/src/qemu/qemu_cgroup.h @@ -23,7 +23,7 @@ =20 #include "virusb.h" #include "vircgroup.h" -#include "domain_conf.h" +#include "virdomaintypes.h" #include "qemu_conf.h" =20 int qemuSetupImageCgroup(virDomainObjPtr vm, diff --git a/src/qemu/qemu_command.c b/src/qemu/qemu_command.c index 1cf165079f..4ab201edff 100644 --- a/src/qemu/qemu_command.c +++ b/src/qemu/qemu_command.c @@ -44,7 +44,7 @@ #include "domain_nwfilter.h" #include "domain_addr.h" #include "domain_audit.h" -#include "domain_conf.h" +#include "virdomaintypes.h" #include "netdev_bandwidth_conf.h" #include "snapshot_conf.h" #include "storage_conf.h" diff --git a/src/qemu/qemu_command.h b/src/qemu/qemu_command.h index 8695832c16..53e815af36 100644 --- a/src/qemu/qemu_command.h +++ b/src/qemu/qemu_command.h @@ -22,7 +22,7 @@ #pragma once =20 #include "domain_addr.h" -#include "domain_conf.h" +#include "virdomaintypes.h" #include "vircommand.h" #include "virenum.h" #include "capabilities.h" diff --git a/src/qemu/qemu_conf.h b/src/qemu/qemu_conf.h index 2229b76e89..62459866a7 100644 --- a/src/qemu/qemu_conf.h +++ b/src/qemu/qemu_conf.h @@ -27,7 +27,7 @@ #include "internal.h" #include "capabilities.h" #include "network_conf.h" -#include "domain_conf.h" +#include "virdomaintypes.h" #include "snapshot_conf.h" #include "domain_event.h" #include "virthread.h" diff --git a/src/qemu/qemu_domain.h b/src/qemu/qemu_domain.h index b0c465cb22..875901c571 100644 --- a/src/qemu/qemu_domain.h +++ b/src/qemu/qemu_domain.h @@ -25,7 +25,7 @@ #include "vircgroup.h" #include "virperf.h" #include "domain_addr.h" -#include "domain_conf.h" +#include "virdomaintypes.h" #include "snapshot_conf.h" #include "qemu_monitor.h" #include "qemu_agent.h" diff --git a/src/qemu/qemu_domain_address.h b/src/qemu/qemu_domain_address.h index bf04e6bfdb..623189d2e1 100644 --- a/src/qemu/qemu_domain_address.h +++ b/src/qemu/qemu_domain_address.h @@ -22,7 +22,7 @@ #pragma once =20 #include "domain_addr.h" -#include "domain_conf.h" +#include "virdomaintypes.h" #include "qemu_conf.h" #include "qemu_capabilities.h" =20 diff --git a/src/qemu/qemu_driver.c b/src/qemu/qemu_driver.c index 329c166255..93cc9772f7 100644 --- a/src/qemu/qemu_driver.c +++ b/src/qemu/qemu_driver.c @@ -65,7 +65,7 @@ #include "viralloc.h" #include "virarptable.h" #include "viruuid.h" -#include "domain_conf.h" +#include "virdomaintypes.h" #include "domain_audit.h" #include "node_device_conf.h" #include "virpci.h" diff --git a/src/qemu/qemu_firmware.h b/src/qemu/qemu_firmware.h index 6a3b6061f4..59cab09f81 100644 --- a/src/qemu/qemu_firmware.h +++ b/src/qemu/qemu_firmware.h @@ -20,7 +20,7 @@ =20 #pragma once =20 -#include "domain_conf.h" +#include "virdomaintypes.h" #include "qemu_conf.h" #include "virautoclean.h" #include "virarch.h" diff --git a/src/qemu/qemu_hostdev.h b/src/qemu/qemu_hostdev.h index f6d76c1c2a..3267b60254 100644 --- a/src/qemu/qemu_hostdev.h +++ b/src/qemu/qemu_hostdev.h @@ -22,7 +22,7 @@ #pragma once =20 #include "qemu_conf.h" -#include "domain_conf.h" +#include "virdomaintypes.h" =20 bool qemuHostdevHostSupportsPassthroughLegacy(void); bool qemuHostdevHostSupportsPassthroughVFIO(void); diff --git a/src/qemu/qemu_hotplug.h b/src/qemu/qemu_hotplug.h index 896e6c7b98..b9601b86fe 100644 --- a/src/qemu/qemu_hotplug.h +++ b/src/qemu/qemu_hotplug.h @@ -23,7 +23,7 @@ =20 #include "qemu_conf.h" #include "qemu_domain.h" -#include "domain_conf.h" +#include "virdomaintypes.h" =20 int qemuDomainChangeEjectableMedia(virQEMUDriverPtr driver, virDomainObjPtr vm, diff --git a/src/qemu/qemu_interface.h b/src/qemu/qemu_interface.h index 5a2f87e532..4955f20739 100644 --- a/src/qemu/qemu_interface.h +++ b/src/qemu/qemu_interface.h @@ -21,7 +21,7 @@ =20 #pragma once =20 -#include "domain_conf.h" +#include "virdomaintypes.h" #include "qemu_conf.h" #include "qemu_domain.h" =20 diff --git a/src/qemu/qemu_monitor.h b/src/qemu/qemu_monitor.h index 88c9702530..f063ed19e8 100644 --- a/src/qemu/qemu_monitor.h +++ b/src/qemu/qemu_monitor.h @@ -23,7 +23,7 @@ =20 #include "internal.h" =20 -#include "domain_conf.h" +#include "virdomaintypes.h" #include "virbitmap.h" #include "virhash.h" #include "virjson.h" diff --git a/src/qemu/qemu_processpriv.h b/src/qemu/qemu_processpriv.h index 84d6bc8420..ee2ed2d26d 100644 --- a/src/qemu/qemu_processpriv.h +++ b/src/qemu/qemu_processpriv.h @@ -25,7 +25,7 @@ =20 #pragma once =20 -#include "domain_conf.h" +#include "virdomaintypes.h" #include "qemu_monitor.h" =20 /* diff --git a/src/qemu/qemu_security.h b/src/qemu/qemu_security.h index 68e377f418..2c72f7d17f 100644 --- a/src/qemu/qemu_security.h +++ b/src/qemu/qemu_security.h @@ -21,7 +21,7 @@ #pragma once =20 #include "qemu_conf.h" -#include "domain_conf.h" +#include "virdomaintypes.h" #include "security/security_manager.h" =20 int qemuSecuritySetAllLabel(virQEMUDriverPtr driver, diff --git a/src/qemu/qemu_tpm.c b/src/qemu/qemu_tpm.c index cc8c69433b..7165706d5e 100644 --- a/src/qemu/qemu_tpm.c +++ b/src/qemu/qemu_tpm.c @@ -28,7 +28,7 @@ #include "qemu_domain.h" #include "qemu_security.h" =20 -#include "conf/domain_conf.h" +#include "virdomaintypes.h" #include "vircommand.h" #include "viralloc.h" #include "virkmod.h" diff --git a/src/remote/remote_daemon_dispatch.c b/src/remote/remote_daemon= _dispatch.c index 856c5e48e7..ed65bfb0c2 100644 --- a/src/remote/remote_daemon_dispatch.c +++ b/src/remote/remote_daemon_dispatch.c @@ -43,7 +43,7 @@ #include "lxc_protocol.h" #include "virstring.h" #include "object_event.h" -#include "domain_conf.h" +#include "virdomaintypes.h" #include "network_conf.h" #include "virprobe.h" #include "viraccessapicheck.h" diff --git a/src/security/security_manager.h b/src/security/security_manage= r.h index 0d2375b263..516e11a32a 100644 --- a/src/security/security_manager.h +++ b/src/security/security_manager.h @@ -20,7 +20,7 @@ =20 #pragma once =20 -#include "domain_conf.h" +#include "virdomaintypes.h" #include "vircommand.h" #include "virstoragefile.h" =20 diff --git a/src/security/virt-aa-helper.c b/src/security/virt-aa-helper.c index ad9a7dda94..f2d7a2cb0e 100644 --- a/src/security/virt-aa-helper.c +++ b/src/security/virt-aa-helper.c @@ -38,7 +38,7 @@ =20 #include "security_driver.h" #include "security_apparmor.h" -#include "domain_conf.h" +#include "virdomaintypes.h" #include "virxml.h" #include "viruuid.h" #include "virusb.h" diff --git a/src/storage/storage_driver.h b/src/storage/storage_driver.h index 64b3d8bbf8..1696f6e53a 100644 --- a/src/storage/storage_driver.h +++ b/src/storage/storage_driver.h @@ -23,7 +23,7 @@ =20 #include =20 -#include "domain_conf.h" +#include "virdomaintypes.h" #include "virstorageobj.h" =20 virStoragePoolObjPtr virStoragePoolObjFindPoolByUUID(const unsigned char *= uuid) diff --git a/src/test/test_driver.c b/src/test/test_driver.c index 2e33a9dd55..d7f523214c 100644 --- a/src/test/test_driver.c +++ b/src/test/test_driver.c @@ -39,7 +39,7 @@ #include "viralloc.h" #include "virnetworkobj.h" #include "interface_conf.h" -#include "domain_conf.h" +#include "virdomaintypes.h" #include "domain_event.h" #include "network_event.h" #include "snapshot_conf.h" diff --git a/src/vbox/vbox_driver.c b/src/vbox/vbox_driver.c index 1f31fa28df..172e800b45 100644 --- a/src/vbox/vbox_driver.c +++ b/src/vbox/vbox_driver.c @@ -40,7 +40,7 @@ #include "virerror.h" #include "virutil.h" #include "domain_event.h" -#include "domain_conf.h" +#include "virdomaintypes.h" =20 #include "vbox_get_driver.h" =20 diff --git a/src/vbox/vbox_network.c b/src/vbox/vbox_network.c index 814f27155f..6455a7842d 100644 --- a/src/vbox/vbox_network.c +++ b/src/vbox/vbox_network.c @@ -22,7 +22,7 @@ =20 #include "internal.h" #include "datatypes.h" -#include "domain_conf.h" +#include "virdomaintypes.h" #include "domain_event.h" #include "virlog.h" #include "virstring.h" diff --git a/src/vbox/vbox_storage.c b/src/vbox/vbox_storage.c index f879e287cb..5813a5c706 100644 --- a/src/vbox/vbox_storage.c +++ b/src/vbox/vbox_storage.c @@ -22,7 +22,7 @@ =20 #include "internal.h" #include "datatypes.h" -#include "domain_conf.h" +#include "virdomaintypes.h" #include "domain_event.h" #include "virlog.h" #include "virstring.h" diff --git a/src/vbox/vbox_tmpl.c b/src/vbox/vbox_tmpl.c index 88b712c8cb..0be354c519 100644 --- a/src/vbox/vbox_tmpl.c +++ b/src/vbox/vbox_tmpl.c @@ -41,7 +41,7 @@ =20 #include "internal.h" #include "datatypes.h" -#include "domain_conf.h" +#include "virdomaintypes.h" #include "domain_event.h" #include "viralloc.h" #include "virlog.h" diff --git a/src/vz/vz_utils.h b/src/vz/vz_utils.h index f116f9dd1f..a90c00e4df 100644 --- a/src/vz/vz_utils.h +++ b/src/vz/vz_utils.h @@ -25,7 +25,7 @@ #include =20 #include "driver.h" -#include "conf/domain_conf.h" +#include "virdomaintypes.h" #include "conf/snapshot_conf.h" #include "conf/virdomainsnapshotobjlist.h" #include "conf/virdomainobjlist.h" diff --git a/src/xenapi/xenapi_driver.c b/src/xenapi/xenapi_driver.c index 672117822f..21cc1fb9fb 100644 --- a/src/xenapi/xenapi_driver.c +++ b/src/xenapi/xenapi_driver.c @@ -23,7 +23,7 @@ #include #include #include "internal.h" -#include "domain_conf.h" +#include "virdomaintypes.h" #include "virerror.h" #include "datatypes.h" #include "virauth.h" diff --git a/src/xenapi/xenapi_utils.c b/src/xenapi/xenapi_utils.c index 4791f06945..f29b0d1a17 100644 --- a/src/xenapi/xenapi_utils.c +++ b/src/xenapi/xenapi_utils.c @@ -22,7 +22,7 @@ =20 #include #include "internal.h" -#include "domain_conf.h" +#include "virdomaintypes.h" #include "virerror.h" #include "datatypes.h" #include "viruuid.h" diff --git a/src/xenapi/xenapi_utils.h b/src/xenapi/xenapi_utils.h index e394197bfd..d66ef5e4e7 100644 --- a/src/xenapi/xenapi_utils.h +++ b/src/xenapi/xenapi_utils.h @@ -23,7 +23,7 @@ #include #include "internal.h" #include "viruri.h" -#include "domain_conf.h" +#include "virdomaintypes.h" =20 #define NETWORK_DEVID_SIZE (12) =20 diff --git a/src/xenconfig/xen_common.h b/src/xenconfig/xen_common.h index 231fa0d078..df736f178b 100644 --- a/src/xenconfig/xen_common.h +++ b/src/xenconfig/xen_common.h @@ -22,7 +22,7 @@ =20 #include "internal.h" #include "virconf.h" -#include "domain_conf.h" +#include "virdomaintypes.h" =20 #define XEN_CONFIG_FORMAT_XL "xen-xl" #define XEN_CONFIG_FORMAT_XM "xen-xm" diff --git a/src/xenconfig/xen_xl.c b/src/xenconfig/xen_xl.c index ca094d30c2..8fcae8e5bc 100644 --- a/src/xenconfig/xen_xl.c +++ b/src/xenconfig/xen_xl.c @@ -26,7 +26,7 @@ #include "virconf.h" #include "virerror.h" #include "virlog.h" -#include "domain_conf.h" +#include "virdomaintypes.h" #include "viralloc.h" #include "virstring.h" #include "virstoragefile.h" diff --git a/src/xenconfig/xen_xl.h b/src/xenconfig/xen_xl.h index 24f6470283..d424190729 100644 --- a/src/xenconfig/xen_xl.h +++ b/src/xenconfig/xen_xl.h @@ -23,7 +23,7 @@ #pragma once =20 #include "virconf.h" -#include "domain_conf.h" +#include "virdomaintypes.h" #include "xen_common.h" =20 virDomainDefPtr xenParseXL(virConfPtr conn, diff --git a/src/xenconfig/xen_xm.h b/src/xenconfig/xen_xm.h index 5546b2ddf4..2d934bd331 100644 --- a/src/xenconfig/xen_xm.h +++ b/src/xenconfig/xen_xm.h @@ -24,7 +24,7 @@ =20 #include "internal.h" #include "virconf.h" -#include "domain_conf.h" +#include "virdomaintypes.h" =20 virConfPtr xenFormatXM(virConnectPtr conn, virDomainDefPtr def); =20 diff --git a/tests/domainconftest.c b/tests/domainconftest.c index e7bdc99438..d9369ac823 100644 --- a/tests/domainconftest.c +++ b/tests/domainconftest.c @@ -23,7 +23,7 @@ #include "viralloc.h" #include "virlog.h" =20 -#include "domain_conf.h" +#include "virdomaintypes.h" =20 #define VIR_FROM_THIS VIR_FROM_NONE =20 diff --git a/tests/qemumemlocktest.c b/tests/qemumemlocktest.c index 42a4643338..111c083499 100644 --- a/tests/qemumemlocktest.c +++ b/tests/qemumemlocktest.c @@ -12,7 +12,7 @@ # include "datatypes.h" # include "internal.h" # include "virstring.h" -# include "conf/domain_conf.h" +# include "virdomaintypes.h" # include "qemu/qemu_domain.h" =20 # include "testutilsqemu.h" diff --git a/tests/qemumonitortestutils.h b/tests/qemumonitortestutils.h index 75ea63382d..788dd351c8 100644 --- a/tests/qemumonitortestutils.h +++ b/tests/qemumonitortestutils.h @@ -19,7 +19,7 @@ =20 #pragma once =20 -#include "domain_conf.h" +#include "virdomaintypes.h" #include "qemu/qemu_conf.h" #include "qemu/qemu_monitor.h" #include "qemu/qemu_agent.h" diff --git a/tests/qemusecuritytest.c b/tests/qemusecuritytest.c index 2d88979168..cb56504cc9 100644 --- a/tests/qemusecuritytest.c +++ b/tests/qemusecuritytest.c @@ -22,7 +22,7 @@ #include "testutils.h" #include "testutilsqemu.h" #include "security/security_manager.h" -#include "conf/domain_conf.h" +#include "virdomaintypes.h" #include "qemu/qemu_domain.h" #include "qemu/qemu_security.h" =20 diff --git a/tests/testutilslxc.c b/tests/testutilslxc.c index eed18304c4..d05a7e368d 100644 --- a/tests/testutilslxc.c +++ b/tests/testutilslxc.c @@ -4,7 +4,7 @@ # include "testutilslxc.h" # include "testutils.h" # include "viralloc.h" -# include "domain_conf.h" +# include "virdomaintypes.h" =20 =20 virCapsPtr testLXCCapsInit(void) diff --git a/tests/testutilsqemu.h b/tests/testutilsqemu.h index 0632141d68..efc3ab4b94 100644 --- a/tests/testutilsqemu.h +++ b/tests/testutilsqemu.h @@ -20,7 +20,7 @@ =20 # include "capabilities.h" # include "virfilecache.h" -# include "domain_conf.h" +# include "virdomaintypes.h" # include "qemu/qemu_capabilities.h" # include "qemu/qemu_conf.h" =20 diff --git a/tests/testutilsxen.c b/tests/testutilsxen.c index 2c347a7f3f..6925e7c6d8 100644 --- a/tests/testutilsxen.c +++ b/tests/testutilsxen.c @@ -4,7 +4,7 @@ =20 #include "testutilsxen.h" #include "testutilshostcpus.h" -#include "domain_conf.h" +#include "virdomaintypes.h" =20 virCapsPtr testXLInitCaps(void) diff --git a/tools/virsh-domain.c b/tools/virsh-domain.c index 828ae30789..fb354583f9 100644 --- a/tools/virsh-domain.c +++ b/tools/virsh-domain.c @@ -36,7 +36,7 @@ #include "virbitmap.h" #include "virbuffer.h" #include "c-ctype.h" -#include "conf/domain_conf.h" +#include "conf/virdomaintypes.h" #include "viralloc.h" #include "vircommand.h" #include "virfile.h" --=20 2.19.2 -- libvir-list mailing list libvir-list@redhat.com https://www.redhat.com/mailman/listinfo/libvir-list