On Wed, Nov 10, 2021 at 10:24:25PM +0800, Luke Yue wrote:
Currently it will only be used in the test driver.
Signed-off-by: Luke Yue <lukedyue(a)gmail.com>
---
src/conf/domain_conf.c | 67 ++++++++++++++++++++++++++++++++++++++++
src/conf/domain_conf.h | 6 ++++
src/libvirt_private.syms | 2 ++
3 files changed, 75 insertions(+)
diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c
index 3193120b79..512bfab9e9 100644
--- a/src/conf/domain_conf.c
+++ b/src/conf/domain_conf.c
@@ -16931,6 +16931,73 @@ virDomainVsockDefEquals(const virDomainVsockDef *a,
}
+static bool
+virDomainTPMDefEquals(const virDomainTPMDef *a,
+ const virDomainTPMDef *b)
+{
+ if (a->type != b->type)
+ return false;
+
+ if (a->model != b->model)
+ return false;
+
+ if (a->version != b->version)
+ return false;
+
+ if (a->type == VIR_DOMAIN_TPM_TYPE_PASSTHROUGH) {
+ if (STRNEQ_NULLABLE(a->data.passthrough.source.data.file.path,
+ b->data.passthrough.source.data.file.path))
This will not compile as `source` is a pointer here.
+ return false;
+ } else {
+ if (a->data.emulator.hassecretuuid != b->data.emulator.hassecretuuid)
+ return false;
+
+ if (a->data.emulator.hassecretuuid == true &&
+ memcmp(a->data.emulator.secretuuid,
+ b->data.emulator.secretuuid,
+ VIR_UUID_BUFLEN))
+ return false;
+
+ if (a->data.emulator.persistent_state !=
+ b->data.emulator.persistent_state)
Also it would make sense to try to detach a device without all the
information, e.g. those that libvirt itself adds by default if they are
missing, or in this case when persistent_state is set to the specified
default (in formatdomain.html this is said to be "no" currently, but not
filled in). Luckily the test driver itself does not do any of this, so
I guess it's fine here.