]> git.ipfire.org Git - thirdparty/libvirt.git/commitdiff
libxl: capabilities: report supported console types
authorRoman Bogorodskiy <bogorodskiy@gmail.com>
Sat, 24 May 2025 14:00:04 +0000 (16:00 +0200)
committerRoman Bogorodskiy <bogorodskiy@gmail.com>
Wed, 4 Jun 2025 18:29:01 +0000 (20:29 +0200)
Extend domain capabilities with information about the supported console
device types.

Signed-off-by: Roman Bogorodskiy <bogorodskiy@gmail.com>
Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
src/libxl/libxl_capabilities.c
tests/domaincapsdata/libxl-xenfv.xml
tests/domaincapsdata/libxl-xenpv.xml

index 522256777db1fb2d0fac8dc2937b78b8da84553e..6aca4075e78482532310bd2826cbe2000d5062be 100644 (file)
@@ -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)
index c71d759517177b05ed6f11a10e74f8a32904153a..45887c5fa3ff5060090344e39d6d3d4e217f6c3e 100644 (file)
         <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'/>
index 8ae2370b7efc15ec3fef1668f2a163f6ca098d88..50be0c5cec6c825fd4e3a97c3e98e06739a2e4cc 100644 (file)
         <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'/>