Extend domain capabilities with information about the supported console
device types.

Signed-off-by: Roman Bogorodskiy <bogorods...@gmail.com>
---
 src/libxl/libxl_capabilities.c       | 23 ++++++++++++++++++++++-
 tests/domaincapsdata/libxl-xenfv.xml | 13 +++++++++++++
 tests/domaincapsdata/libxl-xenpv.xml | 13 +++++++++++++
 3 files changed, 48 insertions(+), 1 deletion(-)

diff --git a/src/libxl/libxl_capabilities.c b/src/libxl/libxl_capabilities.c
index 522256777d..6aca4075e7 100644
--- a/src/libxl/libxl_capabilities.c
+++ b/src/libxl/libxl_capabilities.c
@@ -628,6 +628,25 @@ 
libxlMakeDomainDeviceHostdevCaps(virDomainCapsDeviceHostdev *dev)
     return 0;
 }
 
+static int
+libxlMakeDomainDeviceConsoleCaps(virDomainCapsDeviceConsole *console)
+{
+    console->supported = VIR_TRISTATE_BOOL_YES;
+    console->type.report = true;
+    VIR_DOMAIN_CAPS_ENUM_SET(console->type,
+                             VIR_DOMAIN_CHR_TYPE_DEV,
+                             VIR_DOMAIN_CHR_TYPE_FILE,
+                             VIR_DOMAIN_CHR_TYPE_PIPE,
+                             VIR_DOMAIN_CHR_TYPE_PTY,
+                             VIR_DOMAIN_CHR_TYPE_STDIO,
+                             VIR_DOMAIN_CHR_TYPE_TCP,
+                             VIR_DOMAIN_CHR_TYPE_UDP,
+                             VIR_DOMAIN_CHR_TYPE_UNIX,
+                             VIR_DOMAIN_CHR_TYPE_VC);
+
+    return 0;
+}
+
 virCaps *
 libxlMakeCapabilities(libxl_ctx *ctx)
 {
@@ -672,6 +691,7 @@ libxlMakeDomainCapabilities(virDomainCaps *domCaps,
     virDomainCapsDeviceGraphics *graphics = &domCaps->graphics;
     virDomainCapsDeviceVideo *video = &domCaps->video;
     virDomainCapsDeviceHostdev *hostdev = &domCaps->hostdev;
+    virDomainCapsDeviceConsole *console = &domCaps->console;
 
     if (STREQ(domCaps->machine, "xenfv"))
         domCaps->maxvcpus = HVM_MAX_VCPUS;
@@ -681,7 +701,8 @@ libxlMakeDomainCapabilities(virDomainCaps *domCaps,
     if (libxlMakeDomainOSCaps(domCaps->machine, os, firmwares, nfirmwares) < 0 
||
         libxlMakeDomainDeviceDiskCaps(disk) < 0 ||
         libxlMakeDomainDeviceGraphicsCaps(graphics) < 0 ||
-        libxlMakeDomainDeviceVideoCaps(video) < 0)
+        libxlMakeDomainDeviceVideoCaps(video) < 0 ||
+        libxlMakeDomainDeviceConsoleCaps(console))
         return -1;
     if (STRNEQ(domCaps->machine, "xenpvh") &&
         libxlMakeDomainDeviceHostdevCaps(hostdev) < 0)
diff --git a/tests/domaincapsdata/libxl-xenfv.xml 
b/tests/domaincapsdata/libxl-xenfv.xml
index c71d759517..45887c5fa3 100644
--- a/tests/domaincapsdata/libxl-xenfv.xml
+++ b/tests/domaincapsdata/libxl-xenfv.xml
@@ -70,6 +70,19 @@
         <value>xen</value>
       </enum>
     </hostdev>
+    <console supported='yes'>
+      <enum name='type'>
+        <value>vc</value>
+        <value>pty</value>
+        <value>dev</value>
+        <value>file</value>
+        <value>pipe</value>
+        <value>stdio</value>
+        <value>udp</value>
+        <value>tcp</value>
+        <value>unix</value>
+      </enum>
+    </console>
   </devices>
   <features>
     <gic supported='no'/>
diff --git a/tests/domaincapsdata/libxl-xenpv.xml 
b/tests/domaincapsdata/libxl-xenpv.xml
index 8ae2370b7e..50be0c5cec 100644
--- a/tests/domaincapsdata/libxl-xenpv.xml
+++ b/tests/domaincapsdata/libxl-xenpv.xml
@@ -60,6 +60,19 @@
         <value>xen</value>
       </enum>
     </hostdev>
+    <console supported='yes'>
+      <enum name='type'>
+        <value>vc</value>
+        <value>pty</value>
+        <value>dev</value>
+        <value>file</value>
+        <value>pipe</value>
+        <value>stdio</value>
+        <value>udp</value>
+        <value>tcp</value>
+        <value>unix</value>
+      </enum>
+    </console>
   </devices>
   <features>
     <gic supported='no'/>
-- 
2.49.0

Reply via email to