]> xenbits.xensource.com Git - libvirt.git/commitdiff
conf: Add channel devices to domain capabilities
authorJim Fehlig <jfehlig@suse.com>
Fri, 2 Sep 2022 22:22:31 +0000 (16:22 -0600)
committerJim Fehlig <jfehlig@suse.com>
Mon, 17 Oct 2022 17:39:00 +0000 (11:39 -0600)
As qemu becomes more modularized, it is important for libvirt to advertise
availability of the modularized functionality through capabilities. This
change adds channel devices to domain capabilities, allowing clients such
as virt-install to avoid using spicevmc channel devices when not supported
by the target qemu.

Signed-off-by: Jim Fehlig <jfehlig@suse.com>
Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
55 files changed:
docs/formatdomaincaps.rst
src/conf/domain_capabilities.c
src/conf/domain_capabilities.h
src/conf/schemas/domaincaps.rng
src/qemu/qemu_capabilities.c
src/qemu/qemu_capabilities.h
tests/domaincapsdata/qemu_4.2.0-q35.x86_64.xml
tests/domaincapsdata/qemu_4.2.0-tcg.x86_64.xml
tests/domaincapsdata/qemu_4.2.0-virt.aarch64.xml
tests/domaincapsdata/qemu_4.2.0.aarch64.xml
tests/domaincapsdata/qemu_4.2.0.ppc64.xml
tests/domaincapsdata/qemu_4.2.0.s390x.xml
tests/domaincapsdata/qemu_4.2.0.x86_64.xml
tests/domaincapsdata/qemu_5.0.0-q35.x86_64.xml
tests/domaincapsdata/qemu_5.0.0-tcg.x86_64.xml
tests/domaincapsdata/qemu_5.0.0-virt.aarch64.xml
tests/domaincapsdata/qemu_5.0.0.aarch64.xml
tests/domaincapsdata/qemu_5.0.0.ppc64.xml
tests/domaincapsdata/qemu_5.0.0.x86_64.xml
tests/domaincapsdata/qemu_5.1.0-q35.x86_64.xml
tests/domaincapsdata/qemu_5.1.0-tcg.x86_64.xml
tests/domaincapsdata/qemu_5.1.0.sparc.xml
tests/domaincapsdata/qemu_5.1.0.x86_64.xml
tests/domaincapsdata/qemu_5.2.0-q35.x86_64.xml
tests/domaincapsdata/qemu_5.2.0-tcg.x86_64.xml
tests/domaincapsdata/qemu_5.2.0-virt.aarch64.xml
tests/domaincapsdata/qemu_5.2.0.aarch64.xml
tests/domaincapsdata/qemu_5.2.0.ppc64.xml
tests/domaincapsdata/qemu_5.2.0.s390x.xml
tests/domaincapsdata/qemu_5.2.0.x86_64.xml
tests/domaincapsdata/qemu_6.0.0-q35.x86_64.xml
tests/domaincapsdata/qemu_6.0.0-tcg.x86_64.xml
tests/domaincapsdata/qemu_6.0.0-virt.aarch64.xml
tests/domaincapsdata/qemu_6.0.0.aarch64.xml
tests/domaincapsdata/qemu_6.0.0.s390x.xml
tests/domaincapsdata/qemu_6.0.0.x86_64.xml
tests/domaincapsdata/qemu_6.1.0-q35.x86_64.xml
tests/domaincapsdata/qemu_6.1.0-tcg.x86_64.xml
tests/domaincapsdata/qemu_6.1.0.x86_64.xml
tests/domaincapsdata/qemu_6.2.0-q35.x86_64.xml
tests/domaincapsdata/qemu_6.2.0-tcg.x86_64.xml
tests/domaincapsdata/qemu_6.2.0-virt.aarch64.xml
tests/domaincapsdata/qemu_6.2.0.aarch64.xml
tests/domaincapsdata/qemu_6.2.0.ppc64.xml
tests/domaincapsdata/qemu_6.2.0.x86_64.xml
tests/domaincapsdata/qemu_7.0.0-q35.x86_64.xml
tests/domaincapsdata/qemu_7.0.0-tcg.x86_64.xml
tests/domaincapsdata/qemu_7.0.0-virt.aarch64.xml
tests/domaincapsdata/qemu_7.0.0.aarch64.xml
tests/domaincapsdata/qemu_7.0.0.ppc64.xml
tests/domaincapsdata/qemu_7.0.0.x86_64.xml
tests/domaincapsdata/qemu_7.1.0-q35.x86_64.xml
tests/domaincapsdata/qemu_7.1.0-tcg.x86_64.xml
tests/domaincapsdata/qemu_7.1.0.ppc64.xml
tests/domaincapsdata/qemu_7.1.0.x86_64.xml

index 93d36f2702a6b67105803cc01f2934bddd2c83c3..f95d3a7083dc736daeb02e0d02204417e330466e 100644 (file)
@@ -565,6 +565,30 @@ USB redirdev device capabilities are exposed under the ``redirdev`` element. For
 ``bus``
    Options for the ``bus`` attribute of the ``<redirdev/>`` element.
 
+Channel device
+^^^^^^^^^^^^^^
+
+Channel device capabilities are exposed under the ``channel`` element. For instance:
+
+::
+
+  <domainCapabilities>
+    ...
+    <devices>
+      <channel supported='yes'>
+        <enum name='type'>
+          <value>pty</value>
+          <value>unix</value>
+          <value>spicevmc</value>
+        </enum>
+      </channel
+      ...
+    </devices>
+  </domainCapabilities>
+
+``type``
+   Options for the ``type`` attribute of the ``<channel/>`` element.
+
 Features
 ~~~~~~~~
 
index f8b2f8837600ab9dc658a61416bbdda8c5215ac3..a7f256e4ec054c0c3de7e1bdf109400587f48550 100644 (file)
@@ -574,6 +574,18 @@ virDomainCapsDeviceRedirdevFormat(virBuffer *buf,
 }
 
 
+static void
+virDomainCapsDeviceChannelFormat(virBuffer *buf,
+                                 const virDomainCapsDeviceChannel *channel)
+{
+    FORMAT_PROLOGUE(channel);
+
+    ENUM_PROCESS(channel, type, virDomainChrTypeToString);
+
+    FORMAT_EPILOGUE(channel);
+}
+
+
 /**
  * virDomainCapsFeatureGICFormat:
  * @buf: target buffer
@@ -688,6 +700,7 @@ virDomainCapsFormat(const virDomainCaps *caps)
     virDomainCapsDeviceFilesystemFormat(&buf, &caps->filesystem);
     virDomainCapsDeviceTPMFormat(&buf, &caps->tpm);
     virDomainCapsDeviceRedirdevFormat(&buf, &caps->redirdev);
+    virDomainCapsDeviceChannelFormat(&buf, &caps->channel);
 
     virBufferAdjustIndent(&buf, -2);
     virBufferAddLit(&buf, "</devices>\n");
index ba7c2a5e42277130c69d22dbe40fde5cd65a9402..e0cfa755319a7f162f84336a363622aa8c6f1ea8 100644 (file)
@@ -137,6 +137,13 @@ struct _virDomainCapsDeviceRedirdev {
     virDomainCapsEnum bus;   /* virDomainRedirdevBus */
 };
 
+STATIC_ASSERT_ENUM(VIR_DOMAIN_CHR_TYPE_LAST);
+typedef struct _virDomainCapsDeviceChannel virDomainCapsDeviceChannel;
+struct _virDomainCapsDeviceChannel {
+    virTristateBool supported;
+    virDomainCapsEnum type;   /* virDomainChrType */
+};
+
 STATIC_ASSERT_ENUM(VIR_DOMAIN_FS_DRIVER_TYPE_LAST);
 typedef struct _virDomainCapsDeviceFilesystem virDomainCapsDeviceFilesystem;
 struct _virDomainCapsDeviceFilesystem {
@@ -234,6 +241,7 @@ struct _virDomainCaps {
     virDomainCapsDeviceFilesystem filesystem;
     virDomainCapsDeviceTPM tpm;
     virDomainCapsDeviceRedirdev redirdev;
+    virDomainCapsDeviceChannel channel;
     /* add new domain devices here */
 
     virDomainCapsFeatureGIC gic;
index cf7a1d1d89bacbf9ab1e0a174a5aab3a8fb43a01..a6747b20efd304e120271198a81647cc569e0d67 100644 (file)
       <optional>
         <ref name="redirdev"/>
       </optional>
+      <optional>
+        <ref name="channel"/>
+      </optional>
     </element>
   </define>
 
     </element>
   </define>
 
+  <define name="channel">
+    <element name="channel">
+      <ref name="supported"/>
+      <ref name="enum"/>
+    </element>
+  </define>
+
   <define name="features">
     <element name="features">
       <optional>
index 40da6f1b50d6cd28503dc9f3a472126e0ac3744b..0f34957998a0010abb7dcc8aa40366852d8de74e 100644 (file)
@@ -6347,6 +6347,19 @@ virQEMUCapsFillDomainDeviceRedirdevCaps(virQEMUCaps *qemuCaps,
 }
 
 
+void
+virQEMUCapsFillDomainDeviceChannelCaps(virQEMUCaps *qemuCaps,
+                                       virDomainCapsDeviceChannel *channel)
+{
+    channel->supported = VIR_TRISTATE_BOOL_YES;
+    channel->type.report = true;
+    VIR_DOMAIN_CAPS_ENUM_SET(channel->type,
+                             VIR_DOMAIN_CHR_TYPE_PTY, VIR_DOMAIN_CHR_TYPE_UNIX);
+
+    if (virQEMUCapsGet(qemuCaps, QEMU_CAPS_SPICE))
+        VIR_DOMAIN_CAPS_ENUM_SET(channel->type, VIR_DOMAIN_CHR_TYPE_SPICEVMC);
+}
+
 
 /**
  * virQEMUCapsSupportsGICVersion:
@@ -6484,6 +6497,7 @@ virQEMUCapsFillDomainCaps(virQEMUCaps *qemuCaps,
     virDomainCapsDeviceFilesystem *filesystem = &domCaps->filesystem;
     virDomainCapsDeviceTPM *tpm = &domCaps->tpm;
     virDomainCapsDeviceRedirdev *redirdev = &domCaps->redirdev;
+    virDomainCapsDeviceChannel *channel = &domCaps->channel;
     virDomainCapsMemoryBacking *memoryBacking = &domCaps->memoryBacking;
 
     virQEMUCapsFillDomainFeaturesFromQEMUCaps(qemuCaps, domCaps);
@@ -6517,6 +6531,7 @@ virQEMUCapsFillDomainCaps(virQEMUCaps *qemuCaps,
     virQEMUCapsFillDomainDeviceFSCaps(qemuCaps, filesystem);
     virQEMUCapsFillDomainDeviceTPMCaps(qemuCaps, tpm);
     virQEMUCapsFillDomainDeviceRedirdevCaps(qemuCaps, redirdev);
+    virQEMUCapsFillDomainDeviceChannelCaps(qemuCaps, channel);
     virQEMUCapsFillDomainFeatureGICCaps(qemuCaps, domCaps);
     virQEMUCapsFillDomainFeatureSEVCaps(qemuCaps, domCaps);
     virQEMUCapsFillDomainFeatureS390PVCaps(qemuCaps, domCaps);
index 051bfbc0a15db88c0429da864bcf88f1faec8b0f..4edbb5d40f41eb517fec17191f598b3919a00125 100644 (file)
@@ -833,6 +833,9 @@ void virQEMUCapsFillDomainDeviceTPMCaps(virQEMUCaps *qemuCaps,
 void virQEMUCapsFillDomainDeviceRedirdevCaps(virQEMUCaps *qemuCaps,
                                              virDomainCapsDeviceRedirdev *redirdev);
 
+void virQEMUCapsFillDomainDeviceChannelCaps(virQEMUCaps *qemuCaps,
+                                            virDomainCapsDeviceChannel *channel);
+
 bool virQEMUCapsGuestIsNative(virArch host,
                               virArch guest);
 
index 5b83883e39cff1182c64a8a22402c55fbc89cf44..def80fe8cd65402935216913cc18604ede6aae12 100644 (file)
         <value>usb</value>
       </enum>
     </redirdev>
+    <channel supported='yes'>
+      <enum name='type'>
+        <value>pty</value>
+        <value>unix</value>
+        <value>spicevmc</value>
+      </enum>
+    </channel>
   </devices>
   <features>
     <gic supported='no'/>
index ab55ec24528d24859efddd6398dbdf975e8529a5..9e920d1ccbe893f30cac9e8a04ec5216367885de 100644 (file)
         <value>usb</value>
       </enum>
     </redirdev>
+    <channel supported='yes'>
+      <enum name='type'>
+        <value>pty</value>
+        <value>unix</value>
+        <value>spicevmc</value>
+      </enum>
+    </channel>
   </devices>
   <features>
     <gic supported='no'/>
index e0af576d5c09d2e4deedf43e7a7b865b713104b6..776173e60e347611984744f5566c29d937069356 100644 (file)
     </filesystem>
     <tpm supported='no'/>
     <redirdev supported='no'/>
+    <channel supported='yes'>
+      <enum name='type'>
+        <value>pty</value>
+        <value>unix</value>
+      </enum>
+    </channel>
   </devices>
   <features>
     <gic supported='yes'>
index 61839a198303c7e90a5754aeaeef75d8593ecb5d..b6711fc3a45e94bd94df38dcb372d3190fc9cd86 100644 (file)
     </filesystem>
     <tpm supported='no'/>
     <redirdev supported='no'/>
+    <channel supported='yes'>
+      <enum name='type'>
+        <value>pty</value>
+        <value>unix</value>
+      </enum>
+    </channel>
   </devices>
   <features>
     <gic supported='no'/>
index 1626d9b1862bc8faea62a8ca436cc9d621c49d54..88790451b050f3ee164fb891bf5c18147a6402bf 100644 (file)
       </enum>
     </tpm>
     <redirdev supported='no'/>
+    <channel supported='yes'>
+      <enum name='type'>
+        <value>pty</value>
+        <value>unix</value>
+      </enum>
+    </channel>
   </devices>
   <features>
     <gic supported='no'/>
index ee07f4c2745ee801203039aefa31a90f9eade6f5..fa416af03882c88fc583a496412f41a8259e9258 100644 (file)
         <value>usb</value>
       </enum>
     </redirdev>
+    <channel supported='yes'>
+      <enum name='type'>
+        <value>pty</value>
+        <value>unix</value>
+      </enum>
+    </channel>
   </devices>
   <features>
     <gic supported='no'/>
index a6eaf7962f9f5faa65a4dfd88d34ab6ebb4ed3c4..ed9de89dfabdd78074a3f9301ff08b2c47885481 100644 (file)
         <value>usb</value>
       </enum>
     </redirdev>
+    <channel supported='yes'>
+      <enum name='type'>
+        <value>pty</value>
+        <value>unix</value>
+        <value>spicevmc</value>
+      </enum>
+    </channel>
   </devices>
   <features>
     <gic supported='no'/>
index 232f1f0e12c1d466b8380027f77a49428fd21dc3..af0335eb3aa84cb14a5985aa662d4b6fbb6d06c3 100644 (file)
         <value>usb</value>
       </enum>
     </redirdev>
+    <channel supported='yes'>
+      <enum name='type'>
+        <value>pty</value>
+        <value>unix</value>
+        <value>spicevmc</value>
+      </enum>
+    </channel>
   </devices>
   <features>
     <gic supported='no'/>
index ce2c08f205b9549b565f2c245fc75136a5e0fbe0..fc09e9ff28d7050eceec5aad9b3c01648355173c 100644 (file)
         <value>usb</value>
       </enum>
     </redirdev>
+    <channel supported='yes'>
+      <enum name='type'>
+        <value>pty</value>
+        <value>unix</value>
+        <value>spicevmc</value>
+      </enum>
+    </channel>
   </devices>
   <features>
     <gic supported='no'/>
index 9215371d0ccf1c09b7467f04d760ded860bb6ece..88bc77f50bbb5923f41da676abcec0f4b0bfd904 100644 (file)
       </enum>
     </tpm>
     <redirdev supported='no'/>
+    <channel supported='yes'>
+      <enum name='type'>
+        <value>pty</value>
+        <value>unix</value>
+      </enum>
+    </channel>
   </devices>
   <features>
     <gic supported='yes'>
index fcc77ad8dbc316e4e86bb0e80f3fa18f08b6c36d..5e030047d1f32073b3d1ca65dd466679f8b7395c 100644 (file)
       </enum>
     </tpm>
     <redirdev supported='no'/>
+    <channel supported='yes'>
+      <enum name='type'>
+        <value>pty</value>
+        <value>unix</value>
+      </enum>
+    </channel>
   </devices>
   <features>
     <gic supported='no'/>
index 711ccc2cb0fb6b62c49e8b0f3fe79d9f55b502ec..0c5aaade405e71099c47c0f63e1d700104ca8723 100644 (file)
       </enum>
     </tpm>
     <redirdev supported='no'/>
+    <channel supported='yes'>
+      <enum name='type'>
+        <value>pty</value>
+        <value>unix</value>
+      </enum>
+    </channel>
   </devices>
   <features>
     <gic supported='no'/>
index f52613f58465da94889e63e3d0ead4446eb75a8c..5b2a0bc83d8b1ef36aa8bf1888aefe574d2d5511 100644 (file)
         <value>usb</value>
       </enum>
     </redirdev>
+    <channel supported='yes'>
+      <enum name='type'>
+        <value>pty</value>
+        <value>unix</value>
+        <value>spicevmc</value>
+      </enum>
+    </channel>
   </devices>
   <features>
     <gic supported='no'/>
index 542d32b018676dfa6d11dd0c5045bf83a4a2d89b..fb9f69bb9ad7f47044ae27658175e80234b30800 100644 (file)
         <value>usb</value>
       </enum>
     </redirdev>
+    <channel supported='yes'>
+      <enum name='type'>
+        <value>pty</value>
+        <value>unix</value>
+        <value>spicevmc</value>
+      </enum>
+    </channel>
   </devices>
   <features>
     <gic supported='no'/>
index 8bd5c6073c7ed259b9f50363c07975419168e60c..ea31348ab104acb5226d4c1e042073c856aa01b8 100644 (file)
         <value>usb</value>
       </enum>
     </redirdev>
+    <channel supported='yes'>
+      <enum name='type'>
+        <value>pty</value>
+        <value>unix</value>
+        <value>spicevmc</value>
+      </enum>
+    </channel>
   </devices>
   <features>
     <gic supported='no'/>
index ea4d1d28dd4b713c82412f8805eb735c640ef33f..5bbf4720dc745aed9daff49573516bc41de675f6 100644 (file)
         <value>usb</value>
       </enum>
     </redirdev>
+    <channel supported='yes'>
+      <enum name='type'>
+        <value>pty</value>
+        <value>unix</value>
+        <value>spicevmc</value>
+      </enum>
+    </channel>
   </devices>
   <features>
     <gic supported='no'/>
index 5c48efc8c63a65475db89ee01193d6ecbc181c1a..584dad5a89b54b263bbaf0269046784528a71066 100644 (file)
         <value>usb</value>
       </enum>
     </redirdev>
+    <channel supported='yes'>
+      <enum name='type'>
+        <value>pty</value>
+        <value>unix</value>
+        <value>spicevmc</value>
+      </enum>
+    </channel>
   </devices>
   <features>
     <gic supported='no'/>
index 70c4f3cbd1efc9a73f220ae508664be6feb59696..f1d20991e9be8adfadf0e239b410a5ae851f2735 100644 (file)
         <value>usb</value>
       </enum>
     </redirdev>
+    <channel supported='yes'>
+      <enum name='type'>
+        <value>pty</value>
+        <value>unix</value>
+        <value>spicevmc</value>
+      </enum>
+    </channel>
   </devices>
   <features>
     <gic supported='no'/>
index 636a84e55fa6e55fc10bd2cce2128682adc7df31..cec260f56d3dafe75efe82d682604495bf748a33 100644 (file)
         <value>usb</value>
       </enum>
     </redirdev>
+    <channel supported='yes'>
+      <enum name='type'>
+        <value>pty</value>
+        <value>unix</value>
+        <value>spicevmc</value>
+      </enum>
+    </channel>
   </devices>
   <features>
     <gic supported='no'/>
index 900d10f720d1f5f4b2dd0ef1faec48aae92012e1..be7262211c695a813364005f59a8af5f46f39956 100644 (file)
       </enum>
     </tpm>
     <redirdev supported='no'/>
+    <channel supported='yes'>
+      <enum name='type'>
+        <value>pty</value>
+        <value>unix</value>
+      </enum>
+    </channel>
   </devices>
   <features>
     <gic supported='yes'>
index fcc77ad8dbc316e4e86bb0e80f3fa18f08b6c36d..5e030047d1f32073b3d1ca65dd466679f8b7395c 100644 (file)
       </enum>
     </tpm>
     <redirdev supported='no'/>
+    <channel supported='yes'>
+      <enum name='type'>
+        <value>pty</value>
+        <value>unix</value>
+      </enum>
+    </channel>
   </devices>
   <features>
     <gic supported='no'/>
index 99c2767276b9fe33ad07c423bb3000063cbbc249..93677381575cc34e44f0e226fe6a3264e744efca 100644 (file)
       </enum>
     </tpm>
     <redirdev supported='no'/>
+    <channel supported='yes'>
+      <enum name='type'>
+        <value>pty</value>
+        <value>unix</value>
+      </enum>
+    </channel>
   </devices>
   <features>
     <gic supported='no'/>
index bdade9c5bb318bb9152b084725e9a7a0996ee0bb..adc197648feea919b31de20d28cdb37953a40e15 100644 (file)
         <value>usb</value>
       </enum>
     </redirdev>
+    <channel supported='yes'>
+      <enum name='type'>
+        <value>pty</value>
+        <value>unix</value>
+      </enum>
+    </channel>
   </devices>
   <features>
     <gic supported='no'/>
index db22085e31dd66d1e32b2cb3daa8cfb7008aab43..a3707e680409e3dda19447ebc354846b59e0ffca 100644 (file)
         <value>usb</value>
       </enum>
     </redirdev>
+    <channel supported='yes'>
+      <enum name='type'>
+        <value>pty</value>
+        <value>unix</value>
+        <value>spicevmc</value>
+      </enum>
+    </channel>
   </devices>
   <features>
     <gic supported='no'/>
index 395eb3b9ebdde99f0d84e8ea5072af72464fd665..7edb84e9bc73f774325c13bb0940beadfbd179c4 100644 (file)
         <value>usb</value>
       </enum>
     </redirdev>
+    <channel supported='yes'>
+      <enum name='type'>
+        <value>pty</value>
+        <value>unix</value>
+        <value>spicevmc</value>
+      </enum>
+    </channel>
   </devices>
   <features>
     <gic supported='no'/>
index 769a1147b68837e9be9300ba86583fab7912d434..cc0bfcac2ddd3c36c102ea5c55234736c969bb8a 100644 (file)
         <value>usb</value>
       </enum>
     </redirdev>
+    <channel supported='yes'>
+      <enum name='type'>
+        <value>pty</value>
+        <value>unix</value>
+        <value>spicevmc</value>
+      </enum>
+    </channel>
   </devices>
   <features>
     <gic supported='no'/>
index 2f56e36c28c44822b1bd66a172115e1bc2976c17..db9b45d74edf8a0d0ee15f28ce3986794dd38d19 100644 (file)
       </enum>
     </tpm>
     <redirdev supported='no'/>
+    <channel supported='yes'>
+      <enum name='type'>
+        <value>pty</value>
+        <value>unix</value>
+      </enum>
+    </channel>
   </devices>
   <features>
     <gic supported='yes'>
index 4639a84c1d7ecd22dec37789fa2e569b2395020b..1a6515654459c6ebe492521071723a9594e05f0f 100644 (file)
       </enum>
     </tpm>
     <redirdev supported='no'/>
+    <channel supported='yes'>
+      <enum name='type'>
+        <value>pty</value>
+        <value>unix</value>
+      </enum>
+    </channel>
   </devices>
   <features>
     <gic supported='no'/>
index 25abcac6088fdf8917330911ca70ae16f6a721cd..56d87f7a2f6486cd4549a0adab5419992b9a8220 100644 (file)
         <value>usb</value>
       </enum>
     </redirdev>
+    <channel supported='yes'>
+      <enum name='type'>
+        <value>pty</value>
+        <value>unix</value>
+      </enum>
+    </channel>
   </devices>
   <features>
     <gic supported='no'/>
index 2be8f3e33b062afe8d22969cec394b9adf6401b0..3afab2f4c2ec0c688e7968b9aa87701e0da5c931 100644 (file)
         <value>usb</value>
       </enum>
     </redirdev>
+    <channel supported='yes'>
+      <enum name='type'>
+        <value>pty</value>
+        <value>unix</value>
+        <value>spicevmc</value>
+      </enum>
+    </channel>
   </devices>
   <features>
     <gic supported='no'/>
index f23e758b1ae5aae7b209f6a2e228a5a9d0041f94..d0dbadd6d31202fc9e30e0e0d8ec495d16c5ed3a 100644 (file)
         <value>usb</value>
       </enum>
     </redirdev>
+    <channel supported='yes'>
+      <enum name='type'>
+        <value>pty</value>
+        <value>unix</value>
+        <value>spicevmc</value>
+      </enum>
+    </channel>
   </devices>
   <features>
     <gic supported='no'/>
index f78abdefc5e1d6038c2d387742b6f2b148946618..52071fc2c569ac31870021951be177ac803d6b1f 100644 (file)
         <value>usb</value>
       </enum>
     </redirdev>
+    <channel supported='yes'>
+      <enum name='type'>
+        <value>pty</value>
+        <value>unix</value>
+        <value>spicevmc</value>
+      </enum>
+    </channel>
   </devices>
   <features>
     <gic supported='no'/>
index 9de18c682e1e7259a2ef0a8024df25683d94d0b5..17c30b394d5963e908debf7d11bede69f9fcc501 100644 (file)
         <value>usb</value>
       </enum>
     </redirdev>
+    <channel supported='yes'>
+      <enum name='type'>
+        <value>pty</value>
+        <value>unix</value>
+        <value>spicevmc</value>
+      </enum>
+    </channel>
   </devices>
   <features>
     <gic supported='no'/>
index dff92d65aa08b12a397ebb7ec015676e724420a2..c185ae45104a92f5e01e5d09a97530a003bb2012 100644 (file)
         <value>usb</value>
       </enum>
     </redirdev>
+    <channel supported='yes'>
+      <enum name='type'>
+        <value>pty</value>
+        <value>unix</value>
+        <value>spicevmc</value>
+      </enum>
+    </channel>
   </devices>
   <features>
     <gic supported='no'/>
index f027eb25a5fcde0c40efedd3fc0fa7989e416681..7bebc1f8b284105ca76c6414fe225c4844f8afa6 100644 (file)
         <value>usb</value>
       </enum>
     </redirdev>
+    <channel supported='yes'>
+      <enum name='type'>
+        <value>pty</value>
+        <value>unix</value>
+        <value>spicevmc</value>
+      </enum>
+    </channel>
   </devices>
   <features>
     <gic supported='no'/>
index c572b0481c5e4c35eb20dae2b3099a3c4cdffd85..3d79cd748603ff1fe7cd7297c7caad7498a1195e 100644 (file)
         <value>usb</value>
       </enum>
     </redirdev>
+    <channel supported='yes'>
+      <enum name='type'>
+        <value>pty</value>
+        <value>unix</value>
+        <value>spicevmc</value>
+      </enum>
+    </channel>
   </devices>
   <features>
     <gic supported='yes'>
index eb521a0cfa31248a3e2c6d7f61e186c4db339e85..4ccffb36952725fcb64d961c796a21f9176b06bf 100644 (file)
         <value>usb</value>
       </enum>
     </redirdev>
+    <channel supported='yes'>
+      <enum name='type'>
+        <value>pty</value>
+        <value>unix</value>
+        <value>spicevmc</value>
+      </enum>
+    </channel>
   </devices>
   <features>
     <gic supported='no'/>
index 7797b94cf2549add13afd284878486ad894bb701..ba7bc17a98f476c44e19517223df4ce11b605e2c 100644 (file)
       </enum>
     </tpm>
     <redirdev supported='no'/>
+    <channel supported='yes'>
+      <enum name='type'>
+        <value>pty</value>
+        <value>unix</value>
+      </enum>
+    </channel>
   </devices>
   <features>
     <gic supported='no'/>
index aff2ee6662337cdb6d343fb67f2044ff83d59f54..ba407284898031d1ad7e1cba681285d64bf796c7 100644 (file)
         <value>usb</value>
       </enum>
     </redirdev>
+    <channel supported='yes'>
+      <enum name='type'>
+        <value>pty</value>
+        <value>unix</value>
+        <value>spicevmc</value>
+      </enum>
+    </channel>
   </devices>
   <features>
     <gic supported='no'/>
index e70b0990a79cae1e207e8dc53fd467874f25a54b..94c6f3d71266dd1e83f7539ebb0a08aaf4fe7194 100644 (file)
         <value>usb</value>
       </enum>
     </redirdev>
+    <channel supported='yes'>
+      <enum name='type'>
+        <value>pty</value>
+        <value>unix</value>
+        <value>spicevmc</value>
+      </enum>
+    </channel>
   </devices>
   <features>
     <gic supported='no'/>
index 03c5411c4e8b63ea7c5c034e717d588c28823b85..c6a02b651239fa65882f637c82ad623aacd5ffa8 100644 (file)
         <value>usb</value>
       </enum>
     </redirdev>
+    <channel supported='yes'>
+      <enum name='type'>
+        <value>pty</value>
+        <value>unix</value>
+        <value>spicevmc</value>
+      </enum>
+    </channel>
   </devices>
   <features>
     <gic supported='no'/>
index 59f89afd9be33fade61755dc4021e2dd13b8232a..3addb1fc574ac9507532d75dc4546722d6c9da66 100644 (file)
         <value>usb</value>
       </enum>
     </redirdev>
+    <channel supported='yes'>
+      <enum name='type'>
+        <value>pty</value>
+        <value>unix</value>
+        <value>spicevmc</value>
+      </enum>
+    </channel>
   </devices>
   <features>
     <gic supported='yes'>
index 1e6bf544dc93ce008de9d2fb7cea535e0ea73a4b..9f07a10a901d5020889fc81990baca05f8191f24 100644 (file)
         <value>usb</value>
       </enum>
     </redirdev>
+    <channel supported='yes'>
+      <enum name='type'>
+        <value>pty</value>
+        <value>unix</value>
+        <value>spicevmc</value>
+      </enum>
+    </channel>
   </devices>
   <features>
     <gic supported='no'/>
index 76da1f4f7deca397eb5b4321072ecea7fc3099ab..ed6c74aac12837ddce8a77ddf0ce2f7788dd98e0 100644 (file)
         <value>usb</value>
       </enum>
     </redirdev>
+    <channel supported='yes'>
+      <enum name='type'>
+        <value>pty</value>
+        <value>unix</value>
+      </enum>
+    </channel>
   </devices>
   <features>
     <gic supported='no'/>
index da23f5703a0ab7507c4459a1096f15d113a521e6..5913f449376d8d1667285b7bdd0e0e2afc5a910b 100644 (file)
         <value>usb</value>
       </enum>
     </redirdev>
+    <channel supported='yes'>
+      <enum name='type'>
+        <value>pty</value>
+        <value>unix</value>
+        <value>spicevmc</value>
+      </enum>
+    </channel>
   </devices>
   <features>
     <gic supported='no'/>
index 05b36ee79e8755985789746aacf1f4b1f124fa5b..2d7658191530523378b56e9ade4659b7993fc7c7 100644 (file)
         <value>usb</value>
       </enum>
     </redirdev>
+    <channel supported='yes'>
+      <enum name='type'>
+        <value>pty</value>
+        <value>unix</value>
+        <value>spicevmc</value>
+      </enum>
+    </channel>
   </devices>
   <features>
     <gic supported='no'/>
index 0786cd8430c1d673f5b72c74ec11648a72c3e30d..c0b59c0d44ccecc19287312e143d507531dd08fc 100644 (file)
         <value>usb</value>
       </enum>
     </redirdev>
+    <channel supported='yes'>
+      <enum name='type'>
+        <value>pty</value>
+        <value>unix</value>
+        <value>spicevmc</value>
+      </enum>
+    </channel>
   </devices>
   <features>
     <gic supported='no'/>
index d430e54caa5b3b329ef5d9a9c44f52397a61a727..a5c2d8e59873312c038b71e07a1ac3af80cfda4f 100644 (file)
         <value>usb</value>
       </enum>
     </redirdev>
+    <channel supported='yes'>
+      <enum name='type'>
+        <value>pty</value>
+        <value>unix</value>
+      </enum>
+    </channel>
   </devices>
   <features>
     <gic supported='no'/>
index ae67a16947fdca1d22374d1c8d940beea69c1034..a419005ee3891272c012fdb67f78e14845e4e851 100644 (file)
         <value>usb</value>
       </enum>
     </redirdev>
+    <channel supported='yes'>
+      <enum name='type'>
+        <value>pty</value>
+        <value>unix</value>
+        <value>spicevmc</value>
+      </enum>
+    </channel>
   </devices>
   <features>
     <gic supported='no'/>