From nobody Fri Nov 21 10:13:15 2025 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of lists.libvirt.org designates 8.43.85.245 as permitted sender) client-ip=8.43.85.245; envelope-from=devel-bounces@lists.libvirt.org; helo=lists.libvirt.org; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of lists.libvirt.org designates 8.43.85.245 as permitted sender) smtp.mailfrom=devel-bounces@lists.libvirt.org; dmarc=pass(p=none dis=none) header.from=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1763575133; cv=none; d=zohomail.com; s=zohoarc; b=eIOWhPPihS8bqf85gbLQ+ywZ4oOWdkD7Y0dTVdjup+EJlo3t1ze2bFrHIIFO0/+KVD/cEpbIFR/1XDTuHeNmnhqHt7ikwS0nVd7ntDjXoXXxm9tBOgxfM17b8YwnfG0w8jCI+395Icpjy37FPexBM10LlyhoXlBR48iyMvXs4VA= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1763575133; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Owner:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Subject:Subject:To:To:Message-Id:Reply-To; bh=fmi4KjuGsfrPeFm3Efd/M96N2+gzGVuCZOspXIKKiCw=; b=JMsIYczPTgBCkyEDK3bVh9w765WGgkMV2uJNEqMsUkCsydVs4eD5lY6RMPKcWMFplwrjqUhofPG06vaCvaWrHHA8IJtYYt34N4kSDPRNmMwZQ6rYxE0XdCipJkrpgSK/XRsyrljO540PLgRh/erYv/WBqUEMR2ZovuDDCRs9pqs= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of lists.libvirt.org designates 8.43.85.245 as permitted sender) smtp.mailfrom=devel-bounces@lists.libvirt.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.libvirt.org (lists.libvirt.org [8.43.85.245]) by mx.zohomail.com with SMTPS id 1763575133369702.0289505657792; Wed, 19 Nov 2025 09:58:53 -0800 (PST) Received: by lists.libvirt.org (Postfix, from userid 993) id A253144004; Wed, 19 Nov 2025 12:58:52 -0500 (EST) Received: from [172.19.199.50] (lists.libvirt.org [8.43.85.245]) by lists.libvirt.org (Postfix) with ESMTP id 81D434404F; Wed, 19 Nov 2025 12:57:24 -0500 (EST) Received: by lists.libvirt.org (Postfix, from userid 993) id B30DF43F65; Wed, 19 Nov 2025 12:56:34 -0500 (EST) Received: from mail-lf1-f53.google.com (mail-lf1-f53.google.com [209.85.167.53]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (3072 bits) server-digest SHA256) (No client certificate requested) by lists.libvirt.org (Postfix) with ESMTPS id 094E041C16 for ; Wed, 19 Nov 2025 12:56:34 -0500 (EST) Received: by mail-lf1-f53.google.com with SMTP id 2adb3069b0e04-594270ec7f9so6427127e87.3 for ; Wed, 19 Nov 2025 09:56:33 -0800 (PST) Received: from tulp.my.domain ([176.96.226.171]) by smtp.gmail.com with ESMTPSA id 2adb3069b0e04-5969db8dc41sm14292e87.45.2025.11.19.09.56.30 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 19 Nov 2025 09:56:31 -0800 (PST) X-Spam-Checker-Version: SpamAssassin 4.0.1 (2024-03-26) on lists.libvirt.org X-Spam-Level: X-Spam-Status: No, score=-5.3 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,FREEMAIL_FORGED_FROMDOMAIN,FREEMAIL_FROM, HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI,RCVD_IN_DNSWL_MED, RCVD_IN_VALIDITY_CERTIFIED_BLOCKED,RCVD_IN_VALIDITY_RPBL_BLOCKED, RCVD_IN_VALIDITY_SAFE_BLOCKED,SPF_PASS autolearn=unavailable autolearn_force=no version=4.0.1 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1763574992; x=1764179792; darn=lists.libvirt.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=fmi4KjuGsfrPeFm3Efd/M96N2+gzGVuCZOspXIKKiCw=; b=PF1h0QE2b1WF/WKSxkHLtzuv7ozci2k224sIkuJN1sNb0qBkoSL7saOzS8zuSNKPpL nX546Hf3suk3xHuCGK0QIcRbR0U7ZqsTcLQteFL/oaQMC0AdX47TOxrOTSsrqdWUUEhU Nl/geHUsGhV/3T1xV74I0DFNLGbMZwloN+xtRTjZ52souUTgQucxfWvSp0zurQeBKY+K p8Zg6KoDDbT89FDh4AnhrbjGLpeOhkY/jCZsA1QVkBvhSJHJDY/L8lLkglR3+kC0P42W d37IEyBd/oea2eg3jyBn/00t02OJ+BPW/Dnq8HgVgw32HvkdnUUGICVVvjF/3Un84ywq UPXA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1763574992; x=1764179792; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=fmi4KjuGsfrPeFm3Efd/M96N2+gzGVuCZOspXIKKiCw=; b=dxNVSSPdqqdSTegrgga25AockAXGNHrtxDxN3n/2HvmS6kBh9DIgn6qBEDUkMuB3RY YHtUfg29jkk+4B9NEdzpoUHtzGXpeJtlPmpmi/a/qs4WwiBZkWpmHlhxJGlI6/E3Oewl oTf+SPl7sqAKUoXoCTeL+LGLpzkCnEGc1bukFhIUJAnzZqDt7WWVuoGGmZmNx4jQSUPV dMAHP4/jKUxjsbM1C5s4+4GLZ4Gmp87/7t//QiVWyFpNObBP5E6Lm6F148kq3Hfi7zd0 kv8EPhhRTFURhFSfwSW4tHRVyvWY+QTgXrSss10YYQqacNtdGOIYpzEly/FOsyym8npE hxcA== X-Gm-Message-State: AOJu0YwTS1S/fmQ2DBFCEmMfZvkxmje8FuKtaStZ9gccWToqjlPNM90l 7IUxxRuM2opN+vGTLJNXXxA7mHnBtBr5Eu6OWiiai7b1AWOnjRezqUeGuWMNombCZR+g/A== X-Gm-Gg: ASbGncvzP4Q5Vp6cEEkV9u41lUOSeOPS61ReW367uW/0xnjlf/3jHbBSL66hJxruRec DKLaUQEFAQs4BqysGANjdREzzUSsILIjfivJrggIxTKiUd8rhM9EyULxbH6V2xDLuJe/FblQ71K hkwJYoGzR0GQ0vdf5za0YZbE7+Uxhr+AwTEUsTJ9TovwXtgNIyZn8Rw6c/RBsA2+5L9RBdkEEzx VstQ+Lm8BcuQRFECM7NqicK9wtLlKNZAnATdxns6u3rUqcngw6it7NtpoyvEVrN2FVyQTcdKCjF iaI108cl5kaVeFYaYgaTKdeSjFeXk3e0gRCYDJi5Ftw9uG1IIG6EMzE8/6MGwFVOvh6gLfrNfdT PxD7xktJJ+RtOTheCaVfI8otSy7/p+1Wghdssu6nCMsKx3uDCJVF2FS5mLi0njiHse1IcWAp6v6 qanMwWKPA= X-Google-Smtp-Source: AGHT+IHGO/kh7jy4NdnWZLEiWc9oJw8Kax/nhjNlhgi5ApRDGuDRBbG7wN3h9s412Jf9LhrEREmK7g== X-Received: by 2002:a05:6512:10cc:b0:592:f8c0:c8de with SMTP id 2adb3069b0e04-5958419cd59mr7082959e87.13.1763574991969; Wed, 19 Nov 2025 09:56:31 -0800 (PST) From: Roman Bogorodskiy To: devel@lists.libvirt.org Subject: [PATCH 1/2] conf: introduce 'wait' attribute for VNC Date: Wed, 19 Nov 2025 18:54:25 +0100 Message-ID: <20251119175427.55587-2-bogorodskiy@gmail.com> X-Mailer: git-send-email 2.51.2 In-Reply-To: <20251119175427.55587-1-bogorodskiy@gmail.com> References: <20251119175427.55587-1-bogorodskiy@gmail.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Message-ID-Hash: JIZU4XSYLSNVCD67IM2NTVYCI5MKSNI7 X-Message-ID-Hash: JIZU4XSYLSNVCD67IM2NTVYCI5MKSNI7 X-MailFrom: bogorodskiy@gmail.com X-Mailman-Rule-Misses: dmarc-mitigation; no-senders; approved; loop; banned-address; header-match-devel.lists.libvirt.org-0; emergency; member-moderation; nonmember-moderation; administrivia; implicit-dest; max-recipients; max-size; news-moderation; no-subject; digests; suspicious-header CC: Roman Bogorodskiy X-Mailman-Version: 3.3.10 Precedence: list List-Id: Development discussions about the libvirt library & tools Archived-At: List-Archive: List-Help: List-Owner: List-Post: List-Subscribe: List-Unsubscribe: X-ZohoMail-DKIM: pass (identity @gmail.com) X-ZM-MESSAGEID: 1763575135465018900 Content-Type: text/plain; charset="utf-8" Introduce an optional 'wait' attribute for 'VNC'. When set to 'yes', VM should only boot upon the initiation of a VNC connection. Signed-off-by: Roman Bogorodskiy Reviewed-by: Martin Kletzander --- src/conf/domain_conf.c | 11 +++++++++++ src/conf/domain_conf.h | 1 + src/conf/schemas/domaincommon.rng | 5 +++++ 3 files changed, 17 insertions(+) diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c index d2dea6952e..36cc1916d0 100644 --- a/src/conf/domain_conf.c +++ b/src/conf/domain_conf.c @@ -11891,6 +11891,7 @@ virDomainGraphicsDefParseXMLVNC(virDomainGraphicsDe= f *def, xmlNodePtr audioNode; virTristateBool autoport; virTristateBool websocketGenerated; + virTristateBool wait; VIR_XPATH_NODE_AUTORESTORE(ctxt) =20 if (virDomainGraphicsListensParseXML(def, node, ctxt, flags) < 0) @@ -11940,6 +11941,12 @@ virDomainGraphicsDefParseXMLVNC(virDomainGraphicsD= ef *def, =20 def->data.vnc.keymap =3D virXMLPropString(node, "keymap"); =20 + if (virXMLPropTristateBool(node, "wait", VIR_XML_PROP_NONE, + &wait) < 0) + return -1; + + virTristateBoolToBool(wait, &def->data.vnc.wait); + ctxt->node =3D node; audioNode =3D virXPathNode("./audio", ctxt); if (audioNode) { @@ -27213,6 +27220,10 @@ virDomainGraphicsDefFormatVNC(virBuffer *attrBuf, virBufferAsprintf(attrBuf, " websocketGenerated=3D'%s'", def->data.vnc.websocketGenerated ? "yes" : "= no"); =20 + if (def->data.vnc.wait !=3D VIR_TRISTATE_BOOL_ABSENT) + virBufferAsprintf(attrBuf, " wait=3D'%s'", + virTristateBoolTypeToString(def->data.vnc.wa= it)); + virDomainGraphicsListenDefFormatAddr(attrBuf, glisten, flags); break; case VIR_DOMAIN_GRAPHICS_LISTEN_TYPE_NONE: diff --git a/src/conf/domain_conf.h b/src/conf/domain_conf.h index 11eb46ae53..e47e10c90c 100644 --- a/src/conf/domain_conf.h +++ b/src/conf/domain_conf.h @@ -2048,6 +2048,7 @@ struct _virDomainGraphicsDef { virDomainGraphicsVNCSharePolicy sharePolicy; virTristateBool powerControl; unsigned int audioId; + bool wait; } vnc; struct { char *display; diff --git a/src/conf/schemas/domaincommon.rng b/src/conf/schemas/domaincom= mon.rng index 75b5124c33..67bbcbeb0b 100644 --- a/src/conf/schemas/domaincommon.rng +++ b/src/conf/schemas/domaincommon.rng @@ -4358,6 +4358,11 @@ + + + + + --=20 2.51.2