From nobody Fri Apr 26 12:52:19 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of redhat.com designates 207.211.31.81 as permitted sender) client-ip=207.211.31.81; envelope-from=libvir-list-bounces@redhat.com; helo=us-smtp-delivery-1.mimecast.com; Authentication-Results: mx.zohomail.com; spf=pass (zohomail.com: domain of redhat.com designates 207.211.31.81 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com; dmarc=fail(p=none dis=none) header.from=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1595442263; cv=none; d=zohomail.com; s=zohoarc; b=CBcQh3VZhdHR2RQTtYyLfNqFzbojoSiP1IIK3LuhjFmVSJER2jJsF2HzmQa+6vGtHxQoO8nEUQXmaY1pmooMxk0wsw6HAUomAcfFRi5F5ImxvZFAlEn6Vl/SRN+bgMCEqJQ/WiodspnroXcaqkLl+zfqpD6Ynw3cVhAxskHOJ6g= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1595442263; h=Content-Type:Content-Transfer-Encoding:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=nb3vWqO+HWH7NHfXuUZTDfqeKBM0jLvl5+XW12ttik0=; b=GBcnAA+SmHM88sf5F/f5GTGODcEmFWYddI8QjFnOOASdiUBWZ0DhLr0qTQxXpdj8c6hhJYiNPpznlwXmZDGuoLkO1ek8b7QTB9WZXIuM5EpkyxGxg1ImawrcrKYYxo8yWmTEafHehV/onfa2QZ8Tq4BdmYZBO26K9CWcABb1ARw= ARC-Authentication-Results: i=1; mx.zohomail.com; spf=pass (zohomail.com: domain of redhat.com designates 207.211.31.81 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com; dmarc=fail header.from= (p=none dis=none) header.from= Return-Path: Received: from us-smtp-delivery-1.mimecast.com (us-smtp-2.mimecast.com [207.211.31.81]) by mx.zohomail.com with SMTPS id 1595442263416901.3174721160957; Wed, 22 Jul 2020 11:24:23 -0700 (PDT) Received: from mimecast-mx01.redhat.com (mimecast-mx01.redhat.com [209.132.183.4]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-85-mJS8YTAXNYOvAZn07E7e8w-1; Wed, 22 Jul 2020 14:24:18 -0400 Received: from smtp.corp.redhat.com (int-mx08.intmail.prod.int.phx2.redhat.com [10.5.11.23]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx01.redhat.com (Postfix) with ESMTPS id 48C89800597; Wed, 22 Jul 2020 18:24:13 +0000 (UTC) Received: from colo-mx.corp.redhat.com (colo-mx01.intmail.prod.int.phx2.redhat.com [10.5.11.20]) by smtp.corp.redhat.com (Postfix) with ESMTPS id 255E12DE6D; Wed, 22 Jul 2020 18:24:13 +0000 (UTC) Received: from lists01.pubmisc.prod.ext.phx2.redhat.com (lists01.pubmisc.prod.ext.phx2.redhat.com [10.5.19.33]) by colo-mx.corp.redhat.com (Postfix) with ESMTP id DF8E31800C9A; Wed, 22 Jul 2020 18:24:12 +0000 (UTC) Received: from smtp.corp.redhat.com (int-mx05.intmail.prod.int.rdu2.redhat.com [10.11.54.5]) by lists01.pubmisc.prod.ext.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id 06MHueg3001138 for ; Wed, 22 Jul 2020 13:56:40 -0400 Received: by smtp.corp.redhat.com (Postfix) id 0F4FFFED57; Wed, 22 Jul 2020 17:56:40 +0000 (UTC) Received: from mimecast-mx02.redhat.com (mimecast02.extmail.prod.ext.rdu2.redhat.com [10.11.55.18]) by smtp.corp.redhat.com (Postfix) with ESMTPS id 09662FED58 for ; Wed, 22 Jul 2020 17:56:36 +0000 (UTC) Received: from us-smtp-1.mimecast.com (us-smtp-2.mimecast.com [205.139.110.61]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-SHA384 (256/256 bits)) (No client certificate requested) by mimecast-mx02.redhat.com (Postfix) with ESMTPS id C24318007C9 for ; Wed, 22 Jul 2020 17:56:36 +0000 (UTC) Received: from mail-qt1-f194.google.com (mail-qt1-f194.google.com [209.85.160.194]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-454-lsTgb75hNKC7YkQt-4qKMw-1; Wed, 22 Jul 2020 13:56:34 -0400 Received: by mail-qt1-f194.google.com with SMTP id g13so2461328qtv.8 for ; Wed, 22 Jul 2020 10:56:34 -0700 (PDT) Received: from localhost.localdomain.com (host115.181-15-171.telecom.net.ar. [181.15.171.115]) by smtp.gmail.com with ESMTPSA id a11sm507361qkh.103.2020.07.22.10.56.31 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 22 Jul 2020 10:56:32 -0700 (PDT) X-MC-Unique: mJS8YTAXNYOvAZn07E7e8w-1 X-MC-Unique: lsTgb75hNKC7YkQt-4qKMw-1 X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=nb3vWqO+HWH7NHfXuUZTDfqeKBM0jLvl5+XW12ttik0=; b=Y8obVAPsA9JZvoFwmvCUjumPJyatA91b892ZILl4HCeDAL9pjEdpuZvyAn0hQkXM+2 9DOG76asjpzcmaFkBcHL7hvkuCo5C3Zd5JHijJQYuj6zOZI0Yy1ZLbFsUEFoKjDAW6sa tppZGQXbNqFQF4gxc63MEHwutM/JgjE1WzZvFb/XT6AAuYXnWbMcjtgJ7sXHIJDRBGDY 1n8jrKXebG9U3BOhgAky2wsqH3v7/cPym9c16884HeQKTZw2Eqz8d1hoo+fqMnjRSVBM xsQaabOqCYyjC8kO/379S48h0adxBiBE4LAIbrPEtCkYuwpSSuENFgdZp9H8M/wqulBu xVOg== X-Gm-Message-State: AOAM533CI73UFp9WX9qHIBPJhjRmRx7viwOh8QVlbT6OxApj70EKv5kR N+CbCwNa7wlXXSmX0FMucpuQhDLQ X-Google-Smtp-Source: ABdhPJyYBSM52oNWDHYjQV2M8AqWU8Q7oQVW0VmgKKk30TZa7iw3lS9jMggtdlQLIx0/dvgIC09cJQ== X-Received: by 2002:ac8:2fa9:: with SMTP id l38mr588950qta.40.1595440592954; Wed, 22 Jul 2020 10:56:32 -0700 (PDT) From: Nicolas Brignone To: libvir-list@redhat.com, nmbrignone@gmail.com Subject: [libvirt PATCH 1/1] conf: move graphics validation checks out of *ParseXML function. Date: Wed, 22 Jul 2020 14:56:14 -0300 Message-Id: <20200722175614.182897-2-nmbrignone@gmail.com> In-Reply-To: <20200722175614.182897-1-nmbrignone@gmail.com> References: <20200722175614.182897-1-nmbrignone@gmail.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.79 on 10.11.54.5 X-loop: libvir-list@redhat.com X-BeenThere: libvir-list@redhat.com X-Mailman-Version: 2.1.12 Precedence: junk List-Id: Development discussions about the libvirt library & tools List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: libvir-list-bounces@redhat.com Errors-To: libvir-list-bounces@redhat.com X-Scanned-By: MIMEDefang 2.84 on 10.5.11.23 Authentication-Results: relay.mimecast.com; auth=pass smtp.auth=CUSA124A263 smtp.mailfrom=libvir-list-bounces@redhat.com X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Existing virDomainDefPostParseGraphics function seems to be the right place to put this validations. After moving this validation, one less argument is needed in virDomainGraphicsListenDefParseXML, so removing the "graphics" argument from the function signature. Signed-off-by: Nicolas Brignone Reviewed-by: Jonathon Jongsma --- src/conf/domain_conf.c | 66 +++++++++++++++++++++++------------------- 1 file changed, 36 insertions(+), 30 deletions(-) diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c index 8d328819..3228f12a 100644 --- a/src/conf/domain_conf.c +++ b/src/conf/domain_conf.c @@ -4804,13 +4804,15 @@ virDomainDefPostParseTimer(virDomainDefPtr def) } =20 =20 -static void +static int virDomainDefPostParseGraphics(virDomainDef *def) { size_t i; =20 for (i =3D 0; i < def->ngraphics; i++) { + size_t j; virDomainGraphicsDefPtr graphics =3D def->graphics[i]; + const char *graphicsType =3D virDomainGraphicsTypeToString(graphic= s->type); =20 /* If spice graphics is configured without ports and with autoport= =3D'no' * then we start qemu with Spice to not listen anywhere. Let's co= nvert @@ -4826,8 +4828,38 @@ virDomainDefPostParseGraphics(virDomainDef *def) VIR_FREE(glisten->address); glisten->type =3D VIR_DOMAIN_GRAPHICS_LISTEN_TYPE_NONE; } + + } + + for (j =3D 0; j < graphics->nListens; j++) { + virDomainGraphicsListenDefPtr glisten =3D virDomainGraphicsGet= Listen(graphics, j); + switch (glisten->type) { + case VIR_DOMAIN_GRAPHICS_LISTEN_TYPE_SOCKET: + if (graphics->type !=3D VIR_DOMAIN_GRAPHICS_TYPE_VNC && + graphics->type !=3D VIR_DOMAIN_GRAPHICS_TYPE_S= PICE) { + virReportError(VIR_ERR_CONFIG_UNSUPPORTED, + _("listen type 'socket' is not available f= or " + "graphics type '%s'"), graphicsType); + return -1; + } + break; + case VIR_DOMAIN_GRAPHICS_LISTEN_TYPE_NONE: + if (graphics->type !=3D VIR_DOMAIN_GRAPHICS_TYPE_SPICE= && + graphics->type !=3D VIR_DOMAIN_GRAPHICS_TYPE_V= NC) { + virReportError(VIR_ERR_CONFIG_UNSUPPORTED, + _("listen type 'none' is not available for= " + "graphics type '%s'"), graphicsType); + return -1; + } + break; + case VIR_DOMAIN_GRAPHICS_LISTEN_TYPE_ADDRESS: + case VIR_DOMAIN_GRAPHICS_LISTEN_TYPE_NETWORK: + case VIR_DOMAIN_GRAPHICS_LISTEN_TYPE_LAST: + break; + } } } + return 0; } =20 =20 @@ -5915,7 +5947,8 @@ virDomainDefPostParseCommon(virDomainDefPtr def, /* clean up possibly duplicated metadata entries */ virXMLNodeSanitizeNamespaces(def->metadata); =20 - virDomainDefPostParseGraphics(def); + if (virDomainDefPostParseGraphics(def) < 0) + return -1; =20 if (virDomainDefPostParseCPU(def) < 0) return -1; @@ -14140,13 +14173,11 @@ virDomainGraphicsAuthDefParseXML(xmlNodePtr node, */ static int virDomainGraphicsListenDefParseXML(virDomainGraphicsListenDefPtr def, - virDomainGraphicsDefPtr graphics, xmlNodePtr node, xmlNodePtr parent, unsigned int flags) { int ret =3D -1; - const char *graphicsType =3D virDomainGraphicsTypeToString(graphics->t= ype); int tmp, typeVal; g_autofree char *type =3D virXMLPropString(node, "type"); g_autofree char *address =3D virXMLPropString(node, "address"); @@ -14175,31 +14206,6 @@ virDomainGraphicsListenDefParseXML(virDomainGraphi= csListenDefPtr def, } def->type =3D typeVal; =20 - switch (def->type) { - case VIR_DOMAIN_GRAPHICS_LISTEN_TYPE_SOCKET: - if (graphics->type !=3D VIR_DOMAIN_GRAPHICS_TYPE_VNC && - graphics->type !=3D VIR_DOMAIN_GRAPHICS_TYPE_SPICE) { - virReportError(VIR_ERR_CONFIG_UNSUPPORTED, - _("listen type 'socket' is not available for " - "graphics type '%s'"), graphicsType); - goto error; - } - break; - case VIR_DOMAIN_GRAPHICS_LISTEN_TYPE_NONE: - if (graphics->type !=3D VIR_DOMAIN_GRAPHICS_TYPE_SPICE && - graphics->type !=3D VIR_DOMAIN_GRAPHICS_TYPE_VNC) { - virReportError(VIR_ERR_CONFIG_UNSUPPORTED, - _("listen type 'none' is not available for " - "graphics type '%s'"), graphicsType); - goto error; - } - break; - case VIR_DOMAIN_GRAPHICS_LISTEN_TYPE_ADDRESS: - case VIR_DOMAIN_GRAPHICS_LISTEN_TYPE_NETWORK: - case VIR_DOMAIN_GRAPHICS_LISTEN_TYPE_LAST: - break; - } - if (def->type =3D=3D VIR_DOMAIN_GRAPHICS_LISTEN_TYPE_ADDRESS) { if (address && addressCompat && STRNEQ(address, addressCompat)) { virReportError(VIR_ERR_CONFIG_UNSUPPORTED, @@ -14309,7 +14315,7 @@ virDomainGraphicsListensParseXML(virDomainGraphicsD= efPtr def, goto cleanup; =20 for (i =3D 0; i < nListens; i++) { - if (virDomainGraphicsListenDefParseXML(&def->listens[i], def, + if (virDomainGraphicsListenDefParseXML(&def->listens[i], listenNodes[i], i =3D=3D 0 ? node : NUL= L, flags) < 0) --=20 2.25.2