[libvirt] [PATCH] qemu: Redundant listen address entry in quest xml

Martin Kletzander mkletzan at redhat.com
Thu Aug 14 12:12:51 UTC 2014


On Thu, Aug 14, 2014 at 12:12:33PM +0100, Daniel P. Berrange wrote:
>On Thu, Aug 14, 2014 at 01:09:32PM +0200, Erik Skultety wrote:
>> When editing guest's XML (on QEMU), it was possible to add multiple
>> listen elements into graphics parent element. However QEMU does not
>> support listening on multiple addresses. This patch causes qemu
>> post-parse callback to remove any redundant entries, leaving only 1
>> listening address if provided, otherwise the configuration remains
>> untouched.
>
>Discarding part of the users requested config like this is not
>the right thing todo. If the user requests multiple listen addresses
>and we cannot honour that request that we must report that as an
>error with code VIR_ERR_CONFIG_UNSUPPORTED
>

But if we didn't failed parsing that before, domains with such XMLs
will disappear from the list after daemon restart.

>> ---
>>  src/qemu/qemu_domain.c | 19 +++++++++++++++++++
>>  1 file changed, 19 insertions(+)
>>
>> diff --git a/src/qemu/qemu_domain.c b/src/qemu/qemu_domain.c
>> index 4f63c88..75a4446 100644
>> --- a/src/qemu/qemu_domain.c
>> +++ b/src/qemu/qemu_domain.c
>> @@ -827,6 +827,25 @@ qemuDomainDefPostParse(virDomainDefPtr def,
>>                                    VIR_DOMAIN_INPUT_BUS_USB) < 0)
>>          return -1;
>>
>> +    /* loop over all graphics connections and all listening addresses,
>> +     * removing all redundant listening address entries, thus leaving
>> +     * only 1 entry
>> +     */
>> +    if (def->ngraphics > 0 && def->graphics) {
>> +        size_t i, j;
>> +        for (i = 0; i < def->ngraphics; i++) {
>> +            virDomainGraphicsListenDefPtr listens = def->graphics[i]->listens;
>> +            size_t nListens = def->graphics[i]->nListens;
>> +            if (nListens <= 1 || !listens)
>> +                continue;
>> +            for (j = 1; j < nListens; j++) {
>> +                VIR_FREE(listens[j].address);
>> +                VIR_FREE(listens[j].network);
>> +            }
>> +            def->graphics[i]->nListens = 1;
>> +        }
>> +    }
>> +
>>      return 0;
>>  }
>
>
>Regards,
>Daniel
>--
>|: http://berrange.com      -o-    http://www.flickr.com/photos/dberrange/ :|
>|: http://libvirt.org              -o-             http://virt-manager.org :|
>|: http://autobuild.org       -o-         http://search.cpan.org/~danberr/ :|
>|: http://entangle-photo.org       -o-       http://live.gnome.org/gtk-vnc :|
>
>--
>libvir-list mailing list
>libvir-list at redhat.com
>https://www.redhat.com/mailman/listinfo/libvir-list
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 819 bytes
Desc: Digital signature
URL: <http://listman.redhat.com/archives/libvir-list/attachments/20140814/07b89885/attachment-0001.sig>


More information about the libvir-list mailing list