[libvirt] [PATCH v3 2/2] domain_conf: add "default" to list of valid spice channels
Alon Levy
alevy at redhat.com
Tue May 8 19:32:25 UTC 2012
On Tue, May 08, 2012 at 10:10:34PM +0300, Alon Levy wrote:
> On Tue, May 08, 2012 at 12:19:45PM -0600, Eric Blake wrote:
> > On 05/08/2012 11:42 AM, Alon Levy wrote:
> > > qemu's behavior in this case is to change the spice server behavior to
> > > require secure connection to any channel not otherwise specified as
> > > being in plaintext mode. libvirt doesn't currently allow requesting this
> > > (via plaintext-channel=<channel name>).
> > >
> > > RHBZ: 819499
> > >
> > > Signed-off-by: Alon Levy <alevy at redhat.com>
> > > ---
> > > docs/formatdomain.html.in | 3 +++
> > > docs/schemas/domaincommon.rng | 9 +++++++++
> > > src/conf/domain_conf.c | 20 ++++++++++++++++++++
> > > src/conf/domain_conf.h | 1 +
> > > src/qemu/qemu_command.c | 13 +++++++++++++
> > > .../qemuxml2argv-graphics-spice.args | 2 +-
> > > .../qemuxml2argv-graphics-spice.xml | 2 +-
> > > 7 files changed, 48 insertions(+), 2 deletions(-)
> >
> > Definitely more code, but I think I like it better. In particular,
> >
> > >
> > > diff --git a/docs/formatdomain.html.in b/docs/formatdomain.html.in
> > > index 0525577..c0268b2 100644
> > > --- a/docs/formatdomain.html.in
> > > +++ b/docs/formatdomain.html.in
> > > @@ -2929,6 +2929,9 @@ qemu-kvm -net nic,model=? /dev/null
> > > <span class="since">Since 0.9.3</span>
> > > NB, this may not be supported by all hypervisors.
> > > <span class="since">"spice" since 0.8.6</span>.
> > > + The <code>defaultMode</code> attribute sets the default channel
> > > + security policy, valid values are <code>secure</code>,
> > > + <code>insecure</code> and the default <code>any</code>.
> >
> > I didn't realize that 'any' was different! Having a defaultMode call it
> > out makes sense now, given this matrix:
> >
> > insecure any secure
> > tls available plaintext tls tls
> > tls disabled plaintext plaintext error
> >
> > And it also makes sense to the qemu command line - you can only specify
> > plaintext or tls to lock a channel to a particular mode; if you omit the
> > specification, then the mode defaults to the best available (according
> > to whether tls is available).
>
> Your table is correct and a good summary. But to be clear the "any"
> value is not a valid value to put in qemu's command line, it's the
> internal default state (actually it's oring of the two valid channel
> modes, insecure and secure). But it behaves exactly like your table
> explains, i.e. not setting tls-channel=default or
> plaintext-channel=default results in the middle column, setting
> tls-channel=default in the right, and plaintext-channel=default in the
> left. You could have expanded the table because it's also possible to
> start spice with only tls-port set, and no port, then you would get the
> reverse of the right column:
>
> insecure any secure
> both plaintext tls tls
This would actually be:
both plaintext whichever-the-client-first-connects-to
tls
> only clear plaintext plaintext error
> only tls error plaintext tls
Oops, should read:
only tls error tls tls
>
> >
> > Missing a <span>since</span> notation; I've added that.
> >
> > > @@ -12124,6 +12140,10 @@ virDomainGraphicsDefFormat(virBufferPtr buf,
> > > virBufferEscapeString(buf, " keymap='%s'",
> > > def->data.spice.keymap);
> > >
> > > + if (def->data.spice.defaultMode != VIR_DOMAIN_GRAPHICS_SPICE_CHANNEL_MODE_ANY)
> > > + virBufferAsprintf(buf, " defaultMode='%s'",
> > > + virDomainGraphicsSpiceChannelModeTypeToString(def->data.spice.defaultMode));
> >
> > This means we don't output the user's explicit defaultMode='any'. It's
> > easy enough to fix by making the enum have four values instead of three
> > (the fourth value, 'default', is value 0 and not valid in XML, as the
> > placeholder for no attribute present, but otherwise behaves like 'any').
> > Then again, you matched the style of the individual channels, so I
> > won't bother changing it.
> >
> > > +++ b/src/conf/domain_conf.h
> > > @@ -1233,6 +1233,7 @@ struct _virDomainGraphicsDef {
> > > virDomainGraphicsAuthDef auth;
> > > unsigned int autoport :1;
> > > int channels[VIR_DOMAIN_GRAPHICS_SPICE_CHANNEL_LAST];
> > > + int defaultMode;
> >
> > I like to add a comment to the enum values that are valid in this field.
> >
> > ACK; I squashed this in, then pushed:
>
> Looks good.
>
> >
> > diff --git i/docs/formatdomain.html.in w/docs/formatdomain.html.in
> > index 816af41..1478832 100644
> > --- i/docs/formatdomain.html.in
> > +++ w/docs/formatdomain.html.in
> > @@ -2931,7 +2931,11 @@ qemu-kvm -net nic,model=? /dev/null
> > <span class="since">"spice" since 0.8.6</span>.
> > The <code>defaultMode</code> attribute sets the default
> > channel
> > security policy, valid values are <code>secure</code>,
> > - <code>insecure</code> and the default <code>any</code>.
> > + <code>insecure</code> and the default <code>any</code>
> > + (which is secure if possible, but falls back to insecure
> > + rather than erroring out if no secure path is
> > + available). <span class="since">"defaultMode" since
> > + 0.9.12</span>.
> > </p>
> > <p>
> > When SPICE has both a normal and TLS secured TCP port
> > diff --git i/src/conf/domain_conf.h w/src/conf/domain_conf.h
> > index 895ddc4..00178e1 100644
> > --- i/src/conf/domain_conf.h
> > +++ w/src/conf/domain_conf.h
> > @@ -1233,7 +1233,7 @@ struct _virDomainGraphicsDef {
> > virDomainGraphicsAuthDef auth;
> > unsigned int autoport :1;
> > int channels[VIR_DOMAIN_GRAPHICS_SPICE_CHANNEL_LAST];
> > - int defaultMode;
> > + int defaultMode; /* enum virDomainGraphicsSpiceChannelMode */
> > int image;
> > int jpeg;
> > int zlib;
> >
> > --
> > Eric Blake eblake at redhat.com +1-919-301-3266
> > Libvirt virtualization library http://libvirt.org
> >
>
>
> --
> libvir-list mailing list
> libvir-list at redhat.com
> https://www.redhat.com/mailman/listinfo/libvir-list
More information about the libvir-list
mailing list