Hi,
On Fri, Jan 10, 2014 at 06:21:50PM +0100, Francesco Romani wrote:
spice-server offers an API to disable file transfer messages
on the agent channel between the client and the guest.
This is supported in qemu through the disable-agent-file-xfer option.
This patch exposes this option to libvirt.
Adds a new element 'filetransfer', with one property,
'filetransfer', which accepts a boolean setting.
Default is enabled.
Depends on the capability exported in the first patch of the series.
---
docs/formatdomain.html.in | 8 +++++
docs/schemas/domaincommon.rng | 11 ++++++
src/conf/domain_conf.c | 31 ++++++++++++++++-
src/conf/domain_conf.h | 10 ++++++
src/libvirt_private.syms | 2 ++
src/qemu/qemu_command.c | 9 +++++
...emuxml2argv-graphics-spice-agent-file-xfer.args | 9 +++++
...qemuxml2argv-graphics-spice-agent-file-xfer.xml | 40 ++++++++++++++++++++++
.../qemuxml2argv-graphics-spice.args | 5 +--
.../qemuxml2argv-graphics-spice.xml | 1 +
tests/qemuxml2argvtest.c | 9 ++++-
11 files changed, 131 insertions(+), 4 deletions(-)
create mode 100644
tests/qemuxml2argvdata/qemuxml2argv-graphics-spice-agent-file-xfer.args
create mode 100644
tests/qemuxml2argvdata/qemuxml2argv-graphics-spice-agent-file-xfer.xml
diff --git a/docs/formatdomain.html.in b/docs/formatdomain.html.in
index 68860ef..c11a7d3 100644
--- a/docs/formatdomain.html.in
+++ b/docs/formatdomain.html.in
@@ -4042,6 +4042,7 @@ qemu-kvm -net nic,model=? /dev/null
<streaming mode='filter'/>
<clipboard copypaste='no'/>
<mouse mode='client'/>
+ <filetransfer enable='no'/>
</graphics></pre>
<p>
Spice supports variable compression settings for audio,
@@ -4081,6 +4082,13 @@ qemu-kvm -net nic,model=? /dev/null
<span class="since">since 0.9.11</span>. If no mode
is
specified, the qemu default will be used (client mode).
</p>
+ <p>
+ File transfer functionality (via Spice agent) is set using the
+ <code>filetransfer</code> element.
+ It is enabled by default, and can be disabled by setting the
+ <code>enable</code> property to <code>no</code> ,
+ since <span class="since">since 1.2.2</span>.
+ </p>
</dd>
<dt><code>"rdp"</code></dt>
<dd>
diff --git a/docs/schemas/domaincommon.rng b/docs/schemas/domaincommon.rng
index 86a60c9..cd2c499 100644
--- a/docs/schemas/domaincommon.rng
+++ b/docs/schemas/domaincommon.rng
@@ -2468,6 +2468,17 @@
<empty/>
</element>
</optional>
+ <optional>
+ <element name="filetransfer">
+ <attribute name="enable">
+ <choice>
+ <value>yes</value>
+ <value>no</value>
+ </choice>
+ </attribute>
+ <empty/>
+ </element>
+ </optional>
</interleave>
</group>
<group>
diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c
index 416d96e..f372406 100644
--- a/src/conf/domain_conf.c
+++ b/src/conf/domain_conf.c
@@ -604,6 +604,12 @@ VIR_ENUM_IMPL(virDomainGraphicsSpiceClipboardCopypaste,
"yes",
"no");
+VIR_ENUM_IMPL(virDomainGraphicsSpiceAgentFileTransfer,
+ VIR_DOMAIN_GRAPHICS_SPICE_AGENT_FILE_TRANSFER_LAST,
+ "default",
+ "yes",
+ "no");
+
VIR_ENUM_IMPL(virDomainHostdevMode, VIR_DOMAIN_HOSTDEV_MODE_LAST,
"subsystem",
"capabilities")
@@ -8519,6 +8525,26 @@ virDomainGraphicsDefParseXML(xmlNodePtr node,
VIR_FREE(copypaste);
def->data.spice.copypaste = copypasteVal;
+ } else if (xmlStrEqual(cur->name, BAD_CAST "filetransfer"))
{
+ char *enable = virXMLPropString(cur, "enable");
+ int enableVal;
+
+ if (!enable) {
+ virReportError(VIR_ERR_XML_ERROR, "%s",
+ _("spice filetransfer missing
enable"));
+ goto error;
+ }
+
+ if ((enableVal =
+ virDomainGraphicsSpiceAgentFileTransferTypeFromString(enable))
<= 0) {
+ virReportError(VIR_ERR_XML_ERROR,
It turns out this one should be _CONFIG_UNSUPPORTED, see
https://www.redhat.com/archives/libvir-list/2014-January/msg00521.html . Sorry for giving
you a
wrong advice on this before.
ACK from me if you squash this change in before pushing. This will have to
wait after 1.2.1 release though.
Christophe