[Spice-devel] [PATCH spice-common] proto: Add agent features message
Pavel Grunt
pgrunt at redhat.com
Thu Sep 15 11:59:47 UTC 2016
Hi Marc-André,
On Thu, 2016-09-15 at 06:28 -0400, Marc-André Lureau wrote:
> Hi
>
> ----- Original Message -----
> > Hi
> >
> > ----- Original Message -----
> > > The message is sent by server to the client to indicate
> > > which agent features are enabled or disabled by using flags.
> > >
> > > If a flag is set, then the corresponding feature is enabled.
> > >
> > > The message currently supports info about copy & paste and file
> > > transfer.
> >
> >
> > Have you considered using channel capabilities? it seems to me it
> > would fit
> > nicely, beside there is already APIs, and the flag are not limited
> > to 32
> > bits.
> >
Yes, I have, but the channel caps are only sent once, no? The filter
can be changed on the fly by calling
spice_server_set_agent_file_xfer() etc. and client should be informed
about that.
>
>
> Actually, there is agent capabilities, I think that's what the
> server should be overriding instead.
I know that is possible but imo it is hack. It would be needed to
filter VD_AGENT_ANNOUNCE_CAPABILITIES from the agent, insert something
like VD_AGENT_CAP_FILE_XFER_DISABLED, VD_AGENT_CAP_COPY_PASTE_DISABLED
and also in the case that the filter is changed on the fly, it would
be needed to generate complete VD_AGENT_ANNOUNCE_CAPABILITIES (or
request agent to send them). I think it would be more complicated...
Thanks,
Pavel
>
> > >
> > > Related:
> > > https://bugzilla.redhat.com/show_bug.cgi?id=1373725
> > > ---
> > > common/messages.h | 4 ++++
> > > configure.ac | 2 +-
> > > spice.proto | 9 +++++++++
> > > 3 files changed, 14 insertions(+), 1 deletion(-)
> > >
> > > diff --git a/common/messages.h b/common/messages.h
> > > index 516a345..f8648b6 100644
> > > --- a/common/messages.h
> > > +++ b/common/messages.h
> > > @@ -99,6 +99,10 @@ typedef struct
> > > SpiceMsgMainMigrateBeginSeamless {
> > > uint32_t src_mig_version;
> > > } SpiceMsgMainMigrateBeginSeamless;
> > >
> > > +typedef struct SpiceMsgMainAgentFeatures {
> > > + uint32_t flags;
> > > +} SpiceMsgMainAgentFeatures;
> > > +
> > > typedef struct SpiceMsgcMainMigrateDstDoSeamless {
> > > uint32_t src_version;
> > > } SpiceMsgcMainMigrateDstDoSeamless;
> > > diff --git a/configure.ac b/configure.ac
> > > index c3ad5a4..c0e49b7 100644
> > > --- a/configure.ac
> > > +++ b/configure.ac
> > > @@ -28,7 +28,7 @@ AM_PROG_CC_C_O
> > > SPICE_CHECK_SYSDEPS
> > >
> > > # Checks for libraries
> > > -PKG_CHECK_MODULES([PROTOCOL], [spice-protocol >= 0.12.12])
> > > +PKG_CHECK_MODULES([PROTOCOL], [spice-protocol >= 0.12.13])
> > >
> > > SPICE_CHECK_PYTHON_MODULES()
> > >
> > > diff --git a/spice.proto b/spice.proto
> > > index 0bfc515..ea4dfc2 100644
> > > --- a/spice.proto
> > > +++ b/spice.proto
> > > @@ -226,6 +226,11 @@ struct DstInfo {
> > > uint8 *cert_subject_data[cert_subject_size]
> > > @zero_terminated @marshall;
> > > } @ctype(SpiceMigrationDstInfo);
> > >
> > > +flags32 agent_features_flags {
> > > + COPY_PASTE,
> > > + FILE_TRANSFER
> > > +} @prefix(SPICE_AGENT_FEATURE_);
> > > +
> > > channel MainChannel : BaseChannel {
> > > server:
> > > message {
> > > @@ -303,6 +308,10 @@ channel MainChannel : BaseChannel {
> > > Empty migrate_dst_seamless_ack;
> > > Empty migrate_dst_seamless_nack;
> > >
> > > + message {
> > > + agent_features_flags flags;
> > > + } agent_features;
> > > +
> > > client:
> > > message {
> > > uint64 cache_size;
> > > --
> > > 2.10.0
> > >
> > > _______________________________________________
> > > Spice-devel mailing list
> > > Spice-devel at lists.freedesktop.org
> > > https://lists.freedesktop.org/mailman/listinfo/spice-devel
> > >
> >
> > _______________________________________________
> > Spice-devel mailing list
> > Spice-devel at lists.freedesktop.org
> > https://lists.freedesktop.org/mailman/listinfo/spice-devel
> >
More information about the Spice-devel
mailing list