Signed-off-by: Andrea Bolognani <[email protected]>
---
 src/conf/domain_capabilities.c | 15 +++++++++++++++
 src/conf/domain_capabilities.h |  8 ++++++++
 2 files changed, 23 insertions(+)

diff --git a/src/conf/domain_capabilities.c b/src/conf/domain_capabilities.c
index f843124695..5e747dcf9b 100644
--- a/src/conf/domain_capabilities.c
+++ b/src/conf/domain_capabilities.c
@@ -422,6 +422,19 @@ virDomainCapsFeatureFormatSimple(virBuffer *buf,
 }
 
 
+static void
+virDomainCapsFirmwareFeaturesFormat(virBuffer *buf,
+                                    const virDomainCapsFirmwareFeatures 
*firmwareFeatures)
+{
+    FORMAT_PROLOGUE(firmwareFeatures);
+
+    ENUM_PROCESS(firmwareFeatures, secureBoot, virTristateBoolTypeToString);
+    ENUM_PROCESS(firmwareFeatures, enrolledKeys, virTristateBoolTypeToString);
+
+    FORMAT_EPILOGUE(firmwareFeatures);
+}
+
+
 static void
 virDomainCapsLoaderFormat(virBuffer *buf,
                           const virDomainCapsLoader *loader)
@@ -440,12 +453,14 @@ static void
 virDomainCapsOSFormat(virBuffer *buf,
                       const virDomainCapsOS *os)
 {
+    const virDomainCapsFirmwareFeatures *firmwareFeatures = 
&os->firmwareFeatures;
     const virDomainCapsLoader *loader = &os->loader;
 
     FORMAT_PROLOGUE(os);
 
     ENUM_PROCESS(os, firmware, virDomainOsDefFirmwareTypeToString);
 
+    virDomainCapsFirmwareFeaturesFormat(&childBuf, firmwareFeatures);
     virDomainCapsLoaderFormat(&childBuf, loader);
 
     FORMAT_EPILOGUE(os);
diff --git a/src/conf/domain_capabilities.h b/src/conf/domain_capabilities.h
index 437981c711..68bd2506e1 100644
--- a/src/conf/domain_capabilities.h
+++ b/src/conf/domain_capabilities.h
@@ -43,6 +43,13 @@ struct _virDomainCapsStringValues {
     size_t nvalues; /* number of strings */
 };
 
+typedef struct _virDomainCapsFirmwareFeatures virDomainCapsFirmwareFeatures;
+struct _virDomainCapsFirmwareFeatures {
+    virTristateBool supported;
+    virDomainCapsEnum secureBoot;
+    virDomainCapsEnum enrolledKeys;
+};
+
 STATIC_ASSERT_ENUM(VIR_DOMAIN_LOADER_TYPE_LAST);
 STATIC_ASSERT_ENUM(VIR_TRISTATE_BOOL_LAST);
 typedef struct _virDomainCapsLoader virDomainCapsLoader;
@@ -59,6 +66,7 @@ typedef struct _virDomainCapsOS virDomainCapsOS;
 struct _virDomainCapsOS {
     virTristateBool supported;
     virDomainCapsEnum firmware;     /* Info about virDomainOsDefFirmware */
+    virDomainCapsFirmwareFeatures firmwareFeatures;
     virDomainCapsLoader loader;     /* Info about virDomainLoaderDef */
 };
 
-- 
2.53.0

Reply via email to