From nobody Sun Apr 28 10:53:04 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of redhat.com designates 209.132.183.28 as permitted sender) client-ip=209.132.183.28; envelope-from=libvir-list-bounces@redhat.com; helo=mx1.redhat.com; Authentication-Results: mx.zohomail.com; spf=pass (zoho.com: domain of redhat.com designates 209.132.183.28 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com Return-Path: Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by mx.zohomail.com with SMTPS id 1503925043451446.46462396356503; Mon, 28 Aug 2017 05:57:23 -0700 (PDT) Received: from smtp.corp.redhat.com (int-mx02.intmail.prod.int.phx2.redhat.com [10.5.11.12]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id 357E58008D; Mon, 28 Aug 2017 12:57:21 +0000 (UTC) Received: from colo-mx.corp.redhat.com (colo-mx02.intmail.prod.int.phx2.redhat.com [10.5.11.21]) by smtp.corp.redhat.com (Postfix) with ESMTPS id 113C582302; Mon, 28 Aug 2017 12:57:21 +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 C813B3FAD3; Mon, 28 Aug 2017 12:57:19 +0000 (UTC) Received: from smtp.corp.redhat.com (int-mx02.intmail.prod.int.phx2.redhat.com [10.5.11.12]) by lists01.pubmisc.prod.ext.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id v7SCuvfp011318 for ; Mon, 28 Aug 2017 08:56:57 -0400 Received: by smtp.corp.redhat.com (Postfix) id AF5A078DFE; Mon, 28 Aug 2017 12:56:57 +0000 (UTC) Received: from antique-work.brq.redhat.com (unknown [10.43.2.152]) by smtp.corp.redhat.com (Postfix) with ESMTP id 3903881861 for ; Mon, 28 Aug 2017 12:56:57 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mx1.redhat.com 357E58008D Authentication-Results: ext-mx04.extmail.prod.ext.phx2.redhat.com; dmarc=none (p=none dis=none) header.from=redhat.com Authentication-Results: ext-mx04.extmail.prod.ext.phx2.redhat.com; spf=fail smtp.mailfrom=libvir-list-bounces@redhat.com From: Pavel Hrdina To: libvir-list@redhat.com Date: Mon, 28 Aug 2017 14:56:49 +0200 Message-Id: In-Reply-To: References: In-Reply-To: References: X-Scanned-By: MIMEDefang 2.79 on 10.5.11.12 X-loop: libvir-list@redhat.com Subject: [libvirt] [PATCH 1/5] qemu: introduce QEMU_CAPS_CHARDEV_RECONNECT 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: , MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Sender: libvir-list-bounces@redhat.com Errors-To: libvir-list-bounces@redhat.com X-Scanned-By: MIMEDefang 2.79 on 10.5.11.12 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.28]); Mon, 28 Aug 2017 12:57:21 +0000 (UTC) X-ZohoMail: RSF_0 Z_629925259 SPT_0 Content-Type: text/plain; charset="utf-8" Signed-off-by: Pavel Hrdina --- src/qemu/qemu_capabilities.c | 2 ++ src/qemu/qemu_capabilities.h | 1 + tests/qemucapabilitiesdata/caps_2.4.0.x86_64.xml | 1 + tests/qemucapabilitiesdata/caps_2.5.0.x86_64.xml | 1 + tests/qemucapabilitiesdata/caps_2.6.0-gicv2.aarch64.xml | 1 + tests/qemucapabilitiesdata/caps_2.6.0-gicv3.aarch64.xml | 1 + tests/qemucapabilitiesdata/caps_2.6.0.ppc64le.xml | 1 + tests/qemucapabilitiesdata/caps_2.6.0.x86_64.xml | 1 + tests/qemucapabilitiesdata/caps_2.7.0.s390x.xml | 1 + tests/qemucapabilitiesdata/caps_2.7.0.x86_64.xml | 1 + tests/qemucapabilitiesdata/caps_2.8.0.s390x.xml | 1 + tests/qemucapabilitiesdata/caps_2.8.0.x86_64.xml | 1 + tests/qemucapabilitiesdata/caps_2.9.0.ppc64le.xml | 1 + tests/qemucapabilitiesdata/caps_2.9.0.s390x.xml | 1 + tests/qemucapabilitiesdata/caps_2.9.0.x86_64.xml | 1 + 15 files changed, 16 insertions(+) diff --git a/src/qemu/qemu_capabilities.c b/src/qemu/qemu_capabilities.c index 38a9f09f53..fa8d026b21 100644 --- a/src/qemu/qemu_capabilities.c +++ b/src/qemu/qemu_capabilities.c @@ -437,6 +437,7 @@ VIR_ENUM_IMPL(virQEMUCaps, QEMU_CAPS_LAST, "spapr-pci-host-bridge.numa_node", "vnc-multi-servers", "virtio-net.tx_queue_size", + "chardev-reconnect", ); =20 =20 @@ -3235,6 +3236,7 @@ static struct virQEMUCapsCommandLineProps virQEMUCaps= CommandLine[] =3D { { "machine", "kernel_irqchip", QEMU_CAPS_MACHINE_KERNEL_IRQCHIP }, { "machine", "loadparm", QEMU_CAPS_LOADPARM }, { "vnc", "vnc", QEMU_CAPS_VNC_MULTI_SERVERS }, + { "chardev", "reconnect", QEMU_CAPS_CHARDEV_RECONNECT }, }; =20 static int diff --git a/src/qemu/qemu_capabilities.h b/src/qemu/qemu_capabilities.h index 8804cc7819..7b59619497 100644 --- a/src/qemu/qemu_capabilities.h +++ b/src/qemu/qemu_capabilities.h @@ -423,6 +423,7 @@ typedef enum { QEMU_CAPS_SPAPR_PCI_HOST_BRIDGE_NUMA_NODE, /* spapr-pci-host-bridge.nu= ma_node=3D */ QEMU_CAPS_VNC_MULTI_SERVERS, /* -vnc vnc=3Dunix:/path */ QEMU_CAPS_VIRTIO_NET_TX_QUEUE_SIZE, /* virtio-net-*.tx_queue_size */ + QEMU_CAPS_CHARDEV_RECONNECT, /* -chardev *,reconnect */ =20 QEMU_CAPS_LAST /* this must always be the last item */ } virQEMUCapsFlags; diff --git a/tests/qemucapabilitiesdata/caps_2.4.0.x86_64.xml b/tests/qemuc= apabilitiesdata/caps_2.4.0.x86_64.xml index 11c8765738..5cd4772fdf 100644 --- a/tests/qemucapabilitiesdata/caps_2.4.0.x86_64.xml +++ b/tests/qemucapabilitiesdata/caps_2.4.0.x86_64.xml @@ -186,6 +186,7 @@ + 2004000 0 diff --git a/tests/qemucapabilitiesdata/caps_2.5.0.x86_64.xml b/tests/qemuc= apabilitiesdata/caps_2.5.0.x86_64.xml index eee1ab24d9..3ad458121b 100644 --- a/tests/qemucapabilitiesdata/caps_2.5.0.x86_64.xml +++ b/tests/qemucapabilitiesdata/caps_2.5.0.x86_64.xml @@ -192,6 +192,7 @@ + 2005000 0 diff --git a/tests/qemucapabilitiesdata/caps_2.6.0-gicv2.aarch64.xml b/test= s/qemucapabilitiesdata/caps_2.6.0-gicv2.aarch64.xml index f8746f4c1e..032ffb0810 100644 --- a/tests/qemucapabilitiesdata/caps_2.6.0-gicv2.aarch64.xml +++ b/tests/qemucapabilitiesdata/caps_2.6.0-gicv2.aarch64.xml @@ -170,6 +170,7 @@ + 2006000 0 diff --git a/tests/qemucapabilitiesdata/caps_2.6.0-gicv3.aarch64.xml b/test= s/qemucapabilitiesdata/caps_2.6.0-gicv3.aarch64.xml index 0ce1c8a333..ce95a325ed 100644 --- a/tests/qemucapabilitiesdata/caps_2.6.0-gicv3.aarch64.xml +++ b/tests/qemucapabilitiesdata/caps_2.6.0-gicv3.aarch64.xml @@ -170,6 +170,7 @@ + 2006000 0 diff --git a/tests/qemucapabilitiesdata/caps_2.6.0.ppc64le.xml b/tests/qemu= capabilitiesdata/caps_2.6.0.ppc64le.xml index 92dba13b06..5f2ddf90d2 100644 --- a/tests/qemucapabilitiesdata/caps_2.6.0.ppc64le.xml +++ b/tests/qemucapabilitiesdata/caps_2.6.0.ppc64le.xml @@ -165,6 +165,7 @@ + 2006000 0 diff --git a/tests/qemucapabilitiesdata/caps_2.6.0.x86_64.xml b/tests/qemuc= apabilitiesdata/caps_2.6.0.x86_64.xml index 1937dc9c11..cfe04eda29 100644 --- a/tests/qemucapabilitiesdata/caps_2.6.0.x86_64.xml +++ b/tests/qemucapabilitiesdata/caps_2.6.0.x86_64.xml @@ -202,6 +202,7 @@ + 2006000 0 diff --git a/tests/qemucapabilitiesdata/caps_2.7.0.s390x.xml b/tests/qemuca= pabilitiesdata/caps_2.7.0.s390x.xml index 1c1aab8dec..81189960eb 100644 --- a/tests/qemucapabilitiesdata/caps_2.7.0.s390x.xml +++ b/tests/qemucapabilitiesdata/caps_2.7.0.s390x.xml @@ -132,6 +132,7 @@ + 2007000 0 diff --git a/tests/qemucapabilitiesdata/caps_2.7.0.x86_64.xml b/tests/qemuc= apabilitiesdata/caps_2.7.0.x86_64.xml index b484411314..a388515bae 100644 --- a/tests/qemucapabilitiesdata/caps_2.7.0.x86_64.xml +++ b/tests/qemucapabilitiesdata/caps_2.7.0.x86_64.xml @@ -205,6 +205,7 @@ + 2007000 0 (v2.7.0) diff --git a/tests/qemucapabilitiesdata/caps_2.8.0.s390x.xml b/tests/qemuca= pabilitiesdata/caps_2.8.0.s390x.xml index 5a326d9881..8b05c091ed 100644 --- a/tests/qemucapabilitiesdata/caps_2.8.0.s390x.xml +++ b/tests/qemucapabilitiesdata/caps_2.8.0.s390x.xml @@ -134,6 +134,7 @@ + 2007093 0 diff --git a/tests/qemucapabilitiesdata/caps_2.8.0.x86_64.xml b/tests/qemuc= apabilitiesdata/caps_2.8.0.x86_64.xml index e31abd4b8b..18119a15be 100644 --- a/tests/qemucapabilitiesdata/caps_2.8.0.x86_64.xml +++ b/tests/qemucapabilitiesdata/caps_2.8.0.x86_64.xml @@ -207,6 +207,7 @@ + 2008000 0 (v2.8.0) diff --git a/tests/qemucapabilitiesdata/caps_2.9.0.ppc64le.xml b/tests/qemu= capabilitiesdata/caps_2.9.0.ppc64le.xml index f80bfc434c..7d6af50fc9 100644 --- a/tests/qemucapabilitiesdata/caps_2.9.0.ppc64le.xml +++ b/tests/qemucapabilitiesdata/caps_2.9.0.ppc64le.xml @@ -170,6 +170,7 @@ + 2009000 0 (v2.9.0) diff --git a/tests/qemucapabilitiesdata/caps_2.9.0.s390x.xml b/tests/qemuca= pabilitiesdata/caps_2.9.0.s390x.xml index bed2c2da93..7db2554d72 100644 --- a/tests/qemucapabilitiesdata/caps_2.9.0.s390x.xml +++ b/tests/qemucapabilitiesdata/caps_2.9.0.s390x.xml @@ -135,6 +135,7 @@ + 2009000 0 diff --git a/tests/qemucapabilitiesdata/caps_2.9.0.x86_64.xml b/tests/qemuc= apabilitiesdata/caps_2.9.0.x86_64.xml index 2b406704a6..028e596b60 100644 --- a/tests/qemucapabilitiesdata/caps_2.9.0.x86_64.xml +++ b/tests/qemucapabilitiesdata/caps_2.9.0.x86_64.xml @@ -218,6 +218,7 @@ + 2009000 0 (v2.9.0) --=20 2.13.5 -- libvir-list mailing list libvir-list@redhat.com https://www.redhat.com/mailman/listinfo/libvir-list From nobody Sun Apr 28 10:53:04 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of redhat.com designates 209.132.183.28 as permitted sender) client-ip=209.132.183.28; envelope-from=libvir-list-bounces@redhat.com; helo=mx1.redhat.com; Authentication-Results: mx.zohomail.com; spf=pass (zoho.com: domain of redhat.com designates 209.132.183.28 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com Return-Path: Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by mx.zohomail.com with SMTPS id 1503925027796678.9429764292239; Mon, 28 Aug 2017 05:57:07 -0700 (PDT) Received: from smtp.corp.redhat.com (int-mx02.intmail.prod.int.phx2.redhat.com [10.5.11.12]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id B7B441F561; Mon, 28 Aug 2017 12:57:05 +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 4ED4F8186B; Mon, 28 Aug 2017 12:57:05 +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 E83371806101; Mon, 28 Aug 2017 12:57:03 +0000 (UTC) Received: from smtp.corp.redhat.com (int-mx02.intmail.prod.int.phx2.redhat.com [10.5.11.12]) by lists01.pubmisc.prod.ext.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id v7SCuweh011324 for ; Mon, 28 Aug 2017 08:56:58 -0400 Received: by smtp.corp.redhat.com (Postfix) id 77F3B78DFE; Mon, 28 Aug 2017 12:56:58 +0000 (UTC) Received: from antique-work.brq.redhat.com (unknown [10.43.2.152]) by smtp.corp.redhat.com (Postfix) with ESMTP id 047F3784A7 for ; Mon, 28 Aug 2017 12:56:57 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mx1.redhat.com B7B441F561 Authentication-Results: ext-mx06.extmail.prod.ext.phx2.redhat.com; dmarc=none (p=none dis=none) header.from=redhat.com Authentication-Results: ext-mx06.extmail.prod.ext.phx2.redhat.com; spf=fail smtp.mailfrom=libvir-list-bounces@redhat.com From: Pavel Hrdina To: libvir-list@redhat.com Date: Mon, 28 Aug 2017 14:56:50 +0200 Message-Id: In-Reply-To: References: In-Reply-To: References: X-Scanned-By: MIMEDefang 2.79 on 10.5.11.12 X-loop: libvir-list@redhat.com Subject: [libvirt] [PATCH 2/5] conf: introduce reconnect element for chardev source 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: , MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Sender: libvir-list-bounces@redhat.com Errors-To: libvir-list-bounces@redhat.com X-Scanned-By: MIMEDefang 2.79 on 10.5.11.12 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.30]); Mon, 28 Aug 2017 12:57:06 +0000 (UTC) X-ZohoMail: RSF_0 Z_629925259 SPT_0 Content-Type: text/plain; charset="utf-8" Signed-off-by: Pavel Hrdina --- docs/formatdomain.html.in | 11 ++++ docs/schemas/domaincommon.rng | 12 +++++ src/conf/domain_conf.c | 119 ++++++++++++++++++++++++++++++++++++++= +--- src/conf/domain_conf.h | 11 ++++ 4 files changed, 145 insertions(+), 8 deletions(-) diff --git a/docs/formatdomain.html.in b/docs/formatdomain.html.in index fba8cfc6f3..205122f28e 100644 --- a/docs/formatdomain.html.in +++ b/docs/formatdomain.html.in @@ -6298,6 +6298,17 @@ qemu-kvm -net nic,model=3D? /dev/null slot.

=20 +

+ For character device with type unix or tcp + the source has an optional element reconnect + which configures reconnect timeout if the connection is lost. + There are two attributes, enabled where possible + values are yes and no and timeout + which is in seconds. The reconnect attribute is valid o= nly + for connect mode. + Since 3.7.0 (QEMU driver only). +

+
Guest interface
=20

diff --git a/docs/schemas/domaincommon.rng b/docs/schemas/domaincommon.rng index 3f56d8f45b..06c5a91b3d 100644 --- a/docs/schemas/domaincommon.rng +++ b/docs/schemas/domaincommon.rng @@ -3634,6 +3634,18 @@ + + + + + + + + + + + + diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c index 5bad3976cf..e291d13ac5 100644 --- a/src/conf/domain_conf.c +++ b/src/conf/domain_conf.c @@ -5130,6 +5130,12 @@ virDomainChrSourceDefValidate(const virDomainChrSour= ceDef *def, _("Missing source service attribute for char de= vice")); return -1; } + + if (def->data.tcp.listen && def->data.tcp.reconnect.enabled) { + virReportError(VIR_ERR_INTERNAL_ERROR, "%s", + _("chardev reconnect is possible only for conne= ct mode")); + return -1; + } break; =20 case VIR_DOMAIN_CHR_TYPE_UDP: @@ -5150,6 +5156,12 @@ virDomainChrSourceDefValidate(const virDomainChrSour= ceDef *def, _("Missing source path attribute for char devic= e")); return -1; } + + if (def->data.nix.listen && def->data.nix.reconnect.enabled) { + virReportError(VIR_ERR_INTERNAL_ERROR, "%s", + _("chardev reconnect is possible only for conne= ct mode")); + return -1; + } break; =20 case VIR_DOMAIN_CHR_TYPE_SPICEPORT: @@ -11115,6 +11127,56 @@ virDomainChrDefParseTargetXML(virDomainChrDefPtr d= ef, return ret; } =20 +static int +virDomainChrSourceReconnectDefParseXML(virDomainChrSourceReconnectDefPtr d= ef, + xmlNodePtr node, + xmlXPathContextPtr ctxt) +{ + int ret =3D -1; + int tmpVal; + char *tmp =3D NULL; + xmlNodePtr saveNode =3D ctxt->node; + xmlNodePtr cur; + + ctxt->node =3D node; + + if ((cur =3D virXPathNode("./reconnect", ctxt))) { + if ((tmp =3D virXMLPropString(cur, "enabled"))) { + if ((tmpVal =3D virTristateBoolTypeFromString(tmp)) < 0) { + virReportError(VIR_ERR_XML_ERROR, + _("invalid reconnect enabled value: '%s'"), + tmp); + goto cleanup; + } + def->enabled =3D tmpVal; + VIR_FREE(tmp); + } + + if (def->enabled =3D=3D VIR_TRISTATE_BOOL_YES) { + if ((tmp =3D virXMLPropString(cur, "timeout"))) { + if (virStrToLong_ui(tmp, NULL, 10, &def->timeout) < 0) { + virReportError(VIR_ERR_XML_ERROR, + _("invalid reconnect enabled value: '%s= '"), + tmp); + goto cleanup; + } + VIR_FREE(tmp); + } else { + virReportError(VIR_ERR_XML_ERROR, "%s", + _("missing timeout for chardev with " + "reconnect enabled")); + goto cleanup; + } + } + } + + ret =3D 0; + cleanup: + ctxt->node =3D saveNode; + VIR_FREE(tmp); + return ret; +} + =20 typedef enum { VIR_DOMAIN_CHR_SOURCE_MODE_CONNECT, @@ -11152,6 +11214,7 @@ virDomainChrSourceDefParseMode(xmlNodePtr source) static int virDomainChrSourceDefParseTCP(virDomainChrSourceDefPtr def, xmlNodePtr source, + xmlXPathContextPtr ctxt, unsigned int flags) { int mode; @@ -11187,6 +11250,12 @@ virDomainChrSourceDefParseTCP(virDomainChrSourceDe= fPtr def, VIR_FREE(tmp); } =20 + if (virDomainChrSourceReconnectDefParseXML(&def->data.tcp.reconnect, + source, + ctxt) < 0) { + goto error; + } + return 0; =20 error: @@ -11220,7 +11289,8 @@ virDomainChrSourceDefParseUDP(virDomainChrSourceDef= Ptr def, =20 static int virDomainChrSourceDefParseUnix(virDomainChrSourceDefPtr def, - xmlNodePtr source) + xmlNodePtr source, + xmlXPathContextPtr ctxt) { =20 int mode; @@ -11231,6 +11301,12 @@ virDomainChrSourceDefParseUnix(virDomainChrSourceD= efPtr def, def->data.nix.listen =3D mode =3D=3D VIR_DOMAIN_CHR_SOURCE_MODE_BIND; def->data.nix.path =3D virXMLPropString(source, "path"); =20 + if (virDomainChrSourceReconnectDefParseXML(&def->data.nix.reconnect, + source, + ctxt) < 0) { + return -1; + } + return 0; } =20 @@ -11359,7 +11435,7 @@ virDomainChrSourceDefParseXML(virDomainChrSourceDef= Ptr def, break; =20 case VIR_DOMAIN_CHR_TYPE_UNIX: - if (virDomainChrSourceDefParseUnix(def, cur) < 0) + if (virDomainChrSourceDefParseUnix(def, cur, ctxt) < 0) goto error; break; =20 @@ -11369,7 +11445,7 @@ virDomainChrSourceDefParseXML(virDomainChrSourceDef= Ptr def, break; =20 case VIR_DOMAIN_CHR_TYPE_TCP: - if (virDomainChrSourceDefParseTCP(def, cur, flags) < 0) + if (virDomainChrSourceDefParseTCP(def, cur, ctxt, flags) <= 0) goto error; break; =20 @@ -11613,6 +11689,7 @@ virDomainChrDefParseXML(virDomainXMLOptionPtr xmlop= t, static virDomainSmartcardDefPtr virDomainSmartcardDefParseXML(virDomainXMLOptionPtr xmlopt, xmlNodePtr node, + xmlXPathContextPtr ctxt, unsigned int flags) { xmlNodePtr cur; @@ -11705,7 +11782,7 @@ virDomainSmartcardDefParseXML(virDomainXMLOptionPtr= xmlopt, =20 cur =3D node->children; if (virDomainChrSourceDefParseXML(def->data.passthru, cur, flags, - NULL, NULL, NULL, 0) < 0) + NULL, ctxt, NULL, 0) < 0) goto error; =20 if (def->data.passthru->type =3D=3D VIR_DOMAIN_CHR_TYPE_SPICEVMC) { @@ -14183,6 +14260,7 @@ virDomainHostdevDefParseXML(virDomainXMLOptionPtr x= mlopt, static virDomainRedirdevDefPtr virDomainRedirdevDefParseXML(virDomainXMLOptionPtr xmlopt, xmlNodePtr node, + xmlXPathContextPtr ctxt, virHashTablePtr bootHash, unsigned int flags) { @@ -14224,7 +14302,7 @@ virDomainRedirdevDefParseXML(virDomainXMLOptionPtr = xmlopt, /* boot gets parsed in virDomainDeviceInfoParseXML * source gets parsed in virDomainChrSourceDefParseXML */ if (virDomainChrSourceDefParseXML(def->source, cur, flags, - NULL, NULL, NULL, 0) < 0) + NULL, ctxt, NULL, 0) < 0) goto error; =20 if (def->source->type =3D=3D VIR_DOMAIN_CHR_TYPE_SPICEVMC) @@ -14883,7 +14961,7 @@ virDomainDeviceDefParse(const char *xmlStr, break; case VIR_DOMAIN_DEVICE_REDIRDEV: if (!(dev->data.redirdev =3D virDomainRedirdevDefParseXML(xmlopt, = node, - NULL, flag= s))) + ctxt, NULL= , flags))) goto error; break; case VIR_DOMAIN_DEVICE_RNG: @@ -14902,7 +14980,7 @@ virDomainDeviceDefParse(const char *xmlStr, break; case VIR_DOMAIN_DEVICE_SMARTCARD: if (!(dev->data.smartcard =3D virDomainSmartcardDefParseXML(xmlopt= , node, - flags))) + ctxt, fl= ags))) goto error; break; case VIR_DOMAIN_DEVICE_MEMBALLOON: @@ -18600,6 +18678,7 @@ virDomainDefParseXML(xmlDocPtr xml, for (i =3D 0; i < n; i++) { virDomainSmartcardDefPtr card =3D virDomainSmartcardDefParseXML(xm= lopt, node= s[i], + ctxt, flag= s); if (!card) goto error; @@ -18949,7 +19028,7 @@ virDomainDefParseXML(xmlDocPtr xml, goto error; for (i =3D 0; i < n; i++) { virDomainRedirdevDefPtr redirdev =3D - virDomainRedirdevDefParseXML(xmlopt, nodes[i], bootHash, flags= ); + virDomainRedirdevDefParseXML(xmlopt, nodes[i], ctxt, bootHash,= flags); if (!redirdev) goto error; =20 @@ -23070,6 +23149,24 @@ virDomainChrAttrsDefFormat(virBufferPtr buf, return 0; } =20 + +static void +virDomainChrSourceReconnectDefFormat(virBufferPtr buf, + virDomainChrSourceReconnectDefPtr def) +{ + if (def->enabled =3D=3D VIR_TRISTATE_BOOL_ABSENT) + return; + + virBufferAsprintf(buf, "enabled)); + + if (def->enabled =3D=3D VIR_TRISTATE_BOOL_YES) + virBufferAsprintf(buf, " timeout=3D'%u'", def->timeout); + + virBufferAddLit(buf, "/>\n"); +} + + static int virDomainChrSourceDefFormat(virBufferPtr buf, virDomainChrSourceDefPtr def, @@ -23150,6 +23247,9 @@ virDomainChrSourceDefFormat(virBufferPtr buf, virBufferAsprintf(&attrBuf, " tlsFromConfig=3D'%d'", def->data.tcp.tlsFromConfig); =20 + virDomainChrSourceReconnectDefFormat(&childBuf, + &def->data.tcp.reconnect); + if (virXMLFormatElement(buf, "source", &attrBuf, &childBuf) < 0) goto error; =20 @@ -23166,6 +23266,9 @@ virDomainChrSourceDefFormat(virBufferPtr buf, virDomainSourceDefFormatSeclabel(&childBuf, def->nseclabels, def->seclabels, flags); =20 + virDomainChrSourceReconnectDefFormat(&childBuf, + &def->data.nix.reconnect); + if (virXMLFormatElement(buf, "source", &attrBuf, &childBuf) < = 0) goto error; } diff --git a/src/conf/domain_conf.h b/src/conf/domain_conf.h index c3d6845032..e2d0bb1b50 100644 --- a/src/conf/domain_conf.h +++ b/src/conf/domain_conf.h @@ -1137,6 +1137,15 @@ typedef enum { VIR_DOMAIN_CHR_SPICEVMC_LAST } virDomainChrSpicevmcName; =20 + +struct _virDomainChrSourceReconnectDef { + virTristateBool enabled; + unsigned int timeout; +}; +typedef struct _virDomainChrSourceReconnectDef virDomainChrSourceReconnect= Def; +typedef virDomainChrSourceReconnectDef *virDomainChrSourceReconnectDefPtr; + + /* The host side information for a character device. */ struct _virDomainChrSourceDef { int type; /* virDomainChrType */ @@ -1159,6 +1168,7 @@ struct _virDomainChrSourceDef { bool tlscreds; int haveTLS; /* enum virTristateBool */ bool tlsFromConfig; + virDomainChrSourceReconnectDef reconnect; } tcp; struct { char *bindHost; @@ -1169,6 +1179,7 @@ struct _virDomainChrSourceDef { struct { char *path; bool listen; + virDomainChrSourceReconnectDef reconnect; } nix; int spicevmc; struct { --=20 2.13.5 -- libvir-list mailing list libvir-list@redhat.com https://www.redhat.com/mailman/listinfo/libvir-list From nobody Sun Apr 28 10:53:04 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of redhat.com designates 209.132.183.28 as permitted sender) client-ip=209.132.183.28; envelope-from=libvir-list-bounces@redhat.com; helo=mx1.redhat.com; Authentication-Results: mx.zohomail.com; spf=pass (zoho.com: domain of redhat.com designates 209.132.183.28 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com Return-Path: Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by mx.zohomail.com with SMTPS id 1503925026690104.40735755861476; Mon, 28 Aug 2017 05:57:06 -0700 (PDT) Received: from smtp.corp.redhat.com (int-mx05.intmail.prod.int.phx2.redhat.com [10.5.11.15]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id 1BA5E5D68D; Mon, 28 Aug 2017 12:57:04 +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 D64237F49C; Mon, 28 Aug 2017 12:57:03 +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 D64921806107; Mon, 28 Aug 2017 12:57:01 +0000 (UTC) Received: from smtp.corp.redhat.com (int-mx02.intmail.prod.int.phx2.redhat.com [10.5.11.12]) by lists01.pubmisc.prod.ext.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id v7SCuxrp011336 for ; Mon, 28 Aug 2017 08:56:59 -0400 Received: by smtp.corp.redhat.com (Postfix) id 5EBF478DFE; Mon, 28 Aug 2017 12:56:59 +0000 (UTC) Received: from antique-work.brq.redhat.com (unknown [10.43.2.152]) by smtp.corp.redhat.com (Postfix) with ESMTP id DFDF3784A7 for ; Mon, 28 Aug 2017 12:56:58 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mx1.redhat.com 1BA5E5D68D Authentication-Results: ext-mx10.extmail.prod.ext.phx2.redhat.com; dmarc=none (p=none dis=none) header.from=redhat.com Authentication-Results: ext-mx10.extmail.prod.ext.phx2.redhat.com; spf=fail smtp.mailfrom=libvir-list-bounces@redhat.com From: Pavel Hrdina To: libvir-list@redhat.com Date: Mon, 28 Aug 2017 14:56:51 +0200 Message-Id: <274db8d1d24f10189478933afa92385abbe437a0.1503924937.git.phrdina@redhat.com> In-Reply-To: References: In-Reply-To: References: X-Scanned-By: MIMEDefang 2.79 on 10.5.11.12 X-loop: libvir-list@redhat.com Subject: [libvirt] [PATCH 3/5] tests: add generic xml chardev reconnect tests 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: , MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Sender: libvir-list-bounces@redhat.com Errors-To: libvir-list-bounces@redhat.com X-Scanned-By: MIMEDefang 2.79 on 10.5.11.15 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.39]); Mon, 28 Aug 2017 12:57:04 +0000 (UTC) X-ZohoMail: RSF_0 Z_629925259 SPT_0 Content-Type: text/plain; charset="utf-8" Signed-off-by: Pavel Hrdina --- .../generic-chardev-reconnect-invalid-mode.xml | 26 +++++++++++++++++ .../generic-chardev-reconnect-missing-timeout.xml | 26 +++++++++++++++++ .../generic-chardev-reconnect.xml | 32 ++++++++++++++++++= +++ .../generic-chardev-reconnect.xml | 33 ++++++++++++++++++= ++++ tests/genericxml2xmltest.c | 5 ++++ 5 files changed, 122 insertions(+) create mode 100644 tests/genericxml2xmlindata/generic-chardev-reconnect-in= valid-mode.xml create mode 100644 tests/genericxml2xmlindata/generic-chardev-reconnect-mi= ssing-timeout.xml create mode 100644 tests/genericxml2xmlindata/generic-chardev-reconnect.xml create mode 100644 tests/genericxml2xmloutdata/generic-chardev-reconnect.x= ml diff --git a/tests/genericxml2xmlindata/generic-chardev-reconnect-invalid-m= ode.xml b/tests/genericxml2xmlindata/generic-chardev-reconnect-invalid-mode= .xml new file mode 100644 index 0000000000..3fce6c4d37 --- /dev/null +++ b/tests/genericxml2xmlindata/generic-chardev-reconnect-invalid-mode.xml @@ -0,0 +1,26 @@ + + QEMUGuest1 + c7a5fdbd-edaf-9455-926a-d65c16db1809 + 219136 + 219136 + 1 + + hvm + + + + destroy + restart + destroy + + /usr/bin/qemu-system-i686 + + + + + + + + + + diff --git a/tests/genericxml2xmlindata/generic-chardev-reconnect-missing-t= imeout.xml b/tests/genericxml2xmlindata/generic-chardev-reconnect-missing-t= imeout.xml new file mode 100644 index 0000000000..010dc6cc80 --- /dev/null +++ b/tests/genericxml2xmlindata/generic-chardev-reconnect-missing-timeout.= xml @@ -0,0 +1,26 @@ + + QEMUGuest1 + c7a5fdbd-edaf-9455-926a-d65c16db1809 + 219136 + 219136 + 1 + + hvm + + + + destroy + restart + destroy + + /usr/bin/qemu-system-i686 + + + + + + + + + + diff --git a/tests/genericxml2xmlindata/generic-chardev-reconnect.xml b/tes= ts/genericxml2xmlindata/generic-chardev-reconnect.xml new file mode 100644 index 0000000000..1bd69ecc73 --- /dev/null +++ b/tests/genericxml2xmlindata/generic-chardev-reconnect.xml @@ -0,0 +1,32 @@ + + QEMUGuest1 + c7a5fdbd-edaf-9455-926a-d65c16db1809 + 219136 + 219136 + 1 + + hvm + + + + destroy + restart + destroy + + /usr/bin/qemu-system-i686 + + + + + + + + + + + + + + + + diff --git a/tests/genericxml2xmloutdata/generic-chardev-reconnect.xml b/te= sts/genericxml2xmloutdata/generic-chardev-reconnect.xml new file mode 100644 index 0000000000..d0e2cd23da --- /dev/null +++ b/tests/genericxml2xmloutdata/generic-chardev-reconnect.xml @@ -0,0 +1,33 @@ + + QEMUGuest1 + c7a5fdbd-edaf-9455-926a-d65c16db1809 + 219136 + 219136 + 1 + + hvm + + + + destroy + restart + destroy + + /usr/bin/qemu-system-i686 + + + + + + + + + + + + + + + + + diff --git a/tests/genericxml2xmltest.c b/tests/genericxml2xmltest.c index 03913a68c9..0377a05e9c 100644 --- a/tests/genericxml2xmltest.c +++ b/tests/genericxml2xmltest.c @@ -124,6 +124,11 @@ mymain(void) TEST_COMPARE_DOM_XML2XML_RESULT_FAIL_PARSE); DO_TEST_FULL("chardev-unix-rng-missing-path", 0, false, TEST_COMPARE_DOM_XML2XML_RESULT_FAIL_PARSE); + DO_TEST_DIFFERENT("chardev-reconnect"); + DO_TEST_FULL("chardev-reconnect-missing-timeout", 0, false, + TEST_COMPARE_DOM_XML2XML_RESULT_FAIL_PARSE); + DO_TEST_FULL("chardev-reconnect-invalid-mode", 0, false, + TEST_COMPARE_DOM_XML2XML_RESULT_FAIL_PARSE); =20 virObjectUnref(caps); virObjectUnref(xmlopt); --=20 2.13.5 -- libvir-list mailing list libvir-list@redhat.com https://www.redhat.com/mailman/listinfo/libvir-list From nobody Sun Apr 28 10:53:04 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of redhat.com designates 209.132.183.28 as permitted sender) client-ip=209.132.183.28; envelope-from=libvir-list-bounces@redhat.com; helo=mx1.redhat.com; Authentication-Results: mx.zohomail.com; spf=pass (zoho.com: domain of redhat.com designates 209.132.183.28 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com Return-Path: Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by mx.zohomail.com with SMTPS id 1503925042287774.1541555943213; Mon, 28 Aug 2017 05:57:22 -0700 (PDT) Received: from smtp.corp.redhat.com (int-mx05.intmail.prod.int.phx2.redhat.com [10.5.11.15]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id 370B968BB; Mon, 28 Aug 2017 12:57:20 +0000 (UTC) Received: from colo-mx.corp.redhat.com (colo-mx02.intmail.prod.int.phx2.redhat.com [10.5.11.21]) by smtp.corp.redhat.com (Postfix) with ESMTPS id 11C577FEA2; Mon, 28 Aug 2017 12:57:20 +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 CBEDA3FAD4; Mon, 28 Aug 2017 12:57:19 +0000 (UTC) Received: from smtp.corp.redhat.com (int-mx02.intmail.prod.int.phx2.redhat.com [10.5.11.12]) by lists01.pubmisc.prod.ext.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id v7SCv02A011343 for ; Mon, 28 Aug 2017 08:57:00 -0400 Received: by smtp.corp.redhat.com (Postfix) id 2C01178DFE; Mon, 28 Aug 2017 12:57:00 +0000 (UTC) Received: from antique-work.brq.redhat.com (unknown [10.43.2.152]) by smtp.corp.redhat.com (Postfix) with ESMTP id AA4C3784A7 for ; Mon, 28 Aug 2017 12:56:59 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mx1.redhat.com 370B968BB Authentication-Results: ext-mx09.extmail.prod.ext.phx2.redhat.com; dmarc=none (p=none dis=none) header.from=redhat.com Authentication-Results: ext-mx09.extmail.prod.ext.phx2.redhat.com; spf=fail smtp.mailfrom=libvir-list-bounces@redhat.com From: Pavel Hrdina To: libvir-list@redhat.com Date: Mon, 28 Aug 2017 14:56:52 +0200 Message-Id: In-Reply-To: References: In-Reply-To: References: X-Scanned-By: MIMEDefang 2.79 on 10.5.11.12 X-loop: libvir-list@redhat.com Subject: [libvirt] [PATCH 4/5] qemu: implement chardev source reconnect 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: , MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Sender: libvir-list-bounces@redhat.com Errors-To: libvir-list-bounces@redhat.com X-Scanned-By: MIMEDefang 2.79 on 10.5.11.15 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.38]); Mon, 28 Aug 2017 12:57:20 +0000 (UTC) X-ZohoMail: RSF_0 Z_629925259 SPT_0 Content-Type: text/plain; charset="utf-8" The reconnect attribute for chardev devices in QEMU is used to configure the reconnect timeout in seconds. Setting '0' value disables the reconnect functionality thus we don't allow to set '0' for QEMU. To disable the reconnect user should use . Resolves: https://bugzilla.redhat.com/show_bug.cgi?id=3D1254971 Signed-off-by: Pavel Hrdina --- src/qemu/qemu_command.c | 17 ++++++++ src/qemu/qemu_domain.c | 101 ++++++++++++++++++++++++++++++++++++++++++++= ++++ 2 files changed, 118 insertions(+) diff --git a/src/qemu/qemu_command.c b/src/qemu/qemu_command.c index a68ff717fd..53b79ac976 100644 --- a/src/qemu/qemu_command.c +++ b/src/qemu/qemu_command.c @@ -5044,6 +5044,19 @@ qemuBuildChrChardevFileStr(virLogManagerPtr logManag= er, return 0; } =20 + +static void +qemuBuildChrChardevReconnectStr(virBufferPtr buf, + const virDomainChrSourceReconnectDef *def) +{ + if (def->enabled =3D=3D VIR_TRISTATE_BOOL_YES) { + virBufferAsprintf(buf, ",reconnect=3D%u", def->timeout); + } else if (def->enabled =3D=3D VIR_TRISTATE_BOOL_NO) { + virBufferAddLit(buf, ",reconnect=3D0"); + } +} + + /* This function outputs a -chardev command line option which describes on= ly the * host side of the character device */ static char * @@ -5142,6 +5155,8 @@ qemuBuildChrChardevStr(virLogManagerPtr logManager, if (dev->data.tcp.listen) virBufferAdd(&buf, nowait ? ",server,nowait" : ",server", -1); =20 + qemuBuildChrChardevReconnectStr(&buf, &dev->data.tcp.reconnect); + if (dev->data.tcp.haveTLS =3D=3D VIR_TRISTATE_BOOL_YES) { qemuDomainChrSourcePrivatePtr chrSourcePriv =3D QEMU_DOMAIN_CHR_SOURCE_PRIVATE(dev); @@ -5175,6 +5190,8 @@ qemuBuildChrChardevStr(virLogManagerPtr logManager, virQEMUBuildBufferEscapeComma(&buf, dev->data.nix.path); if (dev->data.nix.listen) virBufferAdd(&buf, nowait ? ",server,nowait" : ",server", -1); + + qemuBuildChrChardevReconnectStr(&buf, &dev->data.nix.reconnect); break; =20 case VIR_DOMAIN_CHR_TYPE_SPICEVMC: diff --git a/src/qemu/qemu_domain.c b/src/qemu/qemu_domain.c index 2c77a64424..05bf1c7d02 100644 --- a/src/qemu/qemu_domain.c +++ b/src/qemu/qemu_domain.c @@ -3211,6 +3211,95 @@ qemuDomainNetSupportsCoalesce(virDomainNetType type) =20 =20 static int +qemuDomainChrSourceReconnectDefValidate(const virDomainChrSourceReconnectD= ef *def) +{ + if (def->enabled =3D=3D VIR_TRISTATE_BOOL_YES && + def->timeout =3D=3D 0) { + virReportError(VIR_ERR_INVALID_ARG, "%s", + _("chardev reconnect source timeout cannot be '0'")= ); + return -1; + } + + return 0; +} + + +static int +qemuDomainChrSourceDefValidate(const virDomainChrSourceDef *def) +{ + switch ((virDomainChrType)def->type) { + case VIR_DOMAIN_CHR_TYPE_TCP: + if (qemuDomainChrSourceReconnectDefValidate(&def->data.tcp.reconne= ct) < 0) + return -1; + break; + + case VIR_DOMAIN_CHR_TYPE_UNIX: + if (qemuDomainChrSourceReconnectDefValidate(&def->data.nix.reconne= ct) < 0) + return -1; + break; + + case VIR_DOMAIN_CHR_TYPE_NULL: + case VIR_DOMAIN_CHR_TYPE_VC: + case VIR_DOMAIN_CHR_TYPE_PTY: + case VIR_DOMAIN_CHR_TYPE_DEV: + case VIR_DOMAIN_CHR_TYPE_FILE: + case VIR_DOMAIN_CHR_TYPE_PIPE: + case VIR_DOMAIN_CHR_TYPE_STDIO: + case VIR_DOMAIN_CHR_TYPE_UDP: + case VIR_DOMAIN_CHR_TYPE_SPICEVMC: + case VIR_DOMAIN_CHR_TYPE_SPICEPORT: + case VIR_DOMAIN_CHR_TYPE_NMDM: + case VIR_DOMAIN_CHR_TYPE_LAST: + break; + } + + return 0; +} + + +static int +qemuDomainChrDefValidate(const virDomainChrDef *def) +{ + if (qemuDomainChrSourceDefValidate(def->source) < 0) + return -1; + + return 0; +} + + +static int +qemuDomainSmartcardDefValidate(const virDomainSmartcardDef *def) +{ + if (def->type =3D=3D VIR_DOMAIN_SMARTCARD_TYPE_PASSTHROUGH && + qemuDomainChrSourceDefValidate(def->data.passthru) < 0) + return -1; + + return 0; +} + + +static int +qemuDomainRNGDefValidate(const virDomainRNGDef *def) +{ + if (def->backend =3D=3D VIR_DOMAIN_RNG_BACKEND_EGD && + qemuDomainChrSourceDefValidate(def->source.chardev) < 0) + return -1; + + return 0; +} + + +static int +qemuDomainRedirdevDefValidate(const virDomainRedirdevDef *def) +{ + if (qemuDomainChrSourceDefValidate(def->source) < 0) + return -1; + + return 0; +} + + +static int qemuDomainDeviceDefValidate(const virDomainDeviceDef *dev, const virDomainDef *def ATTRIBUTE_UNUSED, void *opaque) @@ -3257,6 +3346,18 @@ qemuDomainDeviceDefValidate(const virDomainDeviceDef= *dev, virDomainNetTypeToString(net->type)); goto cleanup; } + } else if (dev->type =3D=3D VIR_DOMAIN_DEVICE_CHR) { + if (qemuDomainChrDefValidate(dev->data.chr) < 0) + goto cleanup; + } else if (dev->type =3D=3D VIR_DOMAIN_DEVICE_SMARTCARD) { + if (qemuDomainSmartcardDefValidate(dev->data.smartcard) < 0) + goto cleanup; + } else if (dev->type =3D=3D VIR_DOMAIN_DEVICE_RNG) { + if (qemuDomainRNGDefValidate(dev->data.rng) < 0) + goto cleanup; + } else if (dev->type =3D=3D VIR_DOMAIN_DEVICE_REDIRDEV) { + if (qemuDomainRedirdevDefValidate(dev->data.redirdev) < 0) + goto cleanup; } =20 /* forbid capabilities mode hostdev in this kind of hypervisor */ --=20 2.13.5 -- libvir-list mailing list libvir-list@redhat.com https://www.redhat.com/mailman/listinfo/libvir-list From nobody Sun Apr 28 10:53:04 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of redhat.com designates 209.132.183.28 as permitted sender) client-ip=209.132.183.28; envelope-from=libvir-list-bounces@redhat.com; helo=mx1.redhat.com; Authentication-Results: mx.zohomail.com; spf=pass (zoho.com: domain of redhat.com designates 209.132.183.28 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com Return-Path: Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by mx.zohomail.com with SMTPS id 1503925046958274.1889799134465; Mon, 28 Aug 2017 05:57:26 -0700 (PDT) Received: from smtp.corp.redhat.com (int-mx06.intmail.prod.int.phx2.redhat.com [10.5.11.16]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id F2398C047B7E; Mon, 28 Aug 2017 12:57:24 +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 C1E6368D5E; Mon, 28 Aug 2017 12:57:24 +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 871DC1806108; Mon, 28 Aug 2017 12:57:23 +0000 (UTC) Received: from smtp.corp.redhat.com (int-mx02.intmail.prod.int.phx2.redhat.com [10.5.11.12]) by lists01.pubmisc.prod.ext.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id v7SCv0CA011348 for ; Mon, 28 Aug 2017 08:57:00 -0400 Received: by smtp.corp.redhat.com (Postfix) id EF7F0784A7; Mon, 28 Aug 2017 12:57:00 +0000 (UTC) Received: from antique-work.brq.redhat.com (unknown [10.43.2.152]) by smtp.corp.redhat.com (Postfix) with ESMTP id 7B3117901E for ; Mon, 28 Aug 2017 12:57:00 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mx1.redhat.com F2398C047B7E Authentication-Results: ext-mx07.extmail.prod.ext.phx2.redhat.com; dmarc=none (p=none dis=none) header.from=redhat.com Authentication-Results: ext-mx07.extmail.prod.ext.phx2.redhat.com; spf=fail smtp.mailfrom=libvir-list-bounces@redhat.com From: Pavel Hrdina To: libvir-list@redhat.com Date: Mon, 28 Aug 2017 14:56:53 +0200 Message-Id: <423775b69347031fdf63c968ec39a10b57041481.1503924937.git.phrdina@redhat.com> In-Reply-To: References: In-Reply-To: References: X-Scanned-By: MIMEDefang 2.79 on 10.5.11.12 X-loop: libvir-list@redhat.com Subject: [libvirt] [PATCH 5/5] tests: add qemu chardev srouce reconnect tests 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: , MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Sender: libvir-list-bounces@redhat.com Errors-To: libvir-list-bounces@redhat.com X-Scanned-By: MIMEDefang 2.79 on 10.5.11.16 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.31]); Mon, 28 Aug 2017 12:57:25 +0000 (UTC) X-ZohoMail: RSF_0 Z_629925259 SPT_0 Content-Type: text/plain; charset="utf-8" Signed-off-by: Pavel Hrdina --- .../qemuxml2argv-channel-reconnect.args | 31 +++++++++++++++ ...uxml2argv-chardev-reconnect-invalid-timeout.xml | 23 +++++++++++ .../qemuxml2argv-chardev-reconnect.args | 40 +++++++++++++++++++ .../qemuxml2argv-chardev-reconnect.xml | 46 ++++++++++++++++++= ++++ tests/qemuxml2argvtest.c | 11 ++++++ 5 files changed, 151 insertions(+) create mode 100644 tests/qemuxml2argvdata/qemuxml2argv-channel-reconnect.a= rgs create mode 100644 tests/qemuxml2argvdata/qemuxml2argv-chardev-reconnect-i= nvalid-timeout.xml create mode 100644 tests/qemuxml2argvdata/qemuxml2argv-chardev-reconnect.a= rgs create mode 100644 tests/qemuxml2argvdata/qemuxml2argv-chardev-reconnect.x= ml diff --git a/tests/qemuxml2argvdata/qemuxml2argv-channel-reconnect.args b/t= ests/qemuxml2argvdata/qemuxml2argv-channel-reconnect.args new file mode 100644 index 0000000000..43a5d5bb3e --- /dev/null +++ b/tests/qemuxml2argvdata/qemuxml2argv-channel-reconnect.args @@ -0,0 +1,31 @@ +LC_ALL=3DC \ +PATH=3D/bin \ +HOME=3D/home/test \ +USER=3Dtest \ +LOGNAME=3Dtest \ +QEMU_AUDIO_DRV=3Dnone \ +/usr/bin/qemu-system-i686 \ +-name QEMUGuest1 \ +-S \ +-M pc \ +-m 214 \ +-smp 1,sockets=3D1,cores=3D1,threads=3D1 \ +-uuid c7a5fdbd-edaf-9455-926a-d65c16db1809 \ +-nographic \ +-nodefconfig \ +-nodefaults \ +-chardev socket,id=3Dcharmonitor,path=3D/tmp/lib/domain--1-QEMUGuest1/moni= tor.sock,\ +server,nowait \ +-mon chardev=3Dcharmonitor,id=3Dmonitor,mode=3Dreadline \ +-no-acpi \ +-boot c \ +-device virtio-serial-pci,id=3Dvirtio-serial1,bus=3Dpci.0,addr=3D0xa \ +-device virtio-serial-pci,id=3Dvirtio-serial0,bus=3Dpci.0,addr=3D0x3 \ +-usb \ +-chardev socket,id=3Dcharchannel0,host=3Dlocalhost,port=3D1234,reconnect= =3D10 \ +-device virtserialport,bus=3Dvirtio-serial0.0,nr=3D1,chardev=3Dcharchannel= 0,\ +id=3Dchannel0,name=3Dasdf \ +-chardev socket,id=3Dcharchannel1,path=3D/tmp/channel/domain--1-QEMUGuest1= /fdsa,\ +server,nowait,reconnect=3D10 \ +-device virtserialport,bus=3Dvirtio-serial0.0,nr=3D2,chardev=3Dcharchannel= 1,\ +id=3Dchannel1,name=3Dfdsa diff --git a/tests/qemuxml2argvdata/qemuxml2argv-chardev-reconnect-invalid-= timeout.xml b/tests/qemuxml2argvdata/qemuxml2argv-chardev-reconnect-invalid= -timeout.xml new file mode 100644 index 0000000000..73dac66816 --- /dev/null +++ b/tests/qemuxml2argvdata/qemuxml2argv-chardev-reconnect-invalid-timeout= .xml @@ -0,0 +1,23 @@ + + QEMUGuest1 + c7a5fdbd-edaf-9455-926a-d65c16db1809 + 219136 + 1 + + hvm + + + + /usr/bin/qemu-system-i686 + +

+ + + + + + + + + + diff --git a/tests/qemuxml2argvdata/qemuxml2argv-chardev-reconnect.args b/t= ests/qemuxml2argvdata/qemuxml2argv-chardev-reconnect.args new file mode 100644 index 0000000000..133a2c6039 --- /dev/null +++ b/tests/qemuxml2argvdata/qemuxml2argv-chardev-reconnect.args @@ -0,0 +1,40 @@ +LC_ALL=3DC \ +PATH=3D/bin \ +HOME=3D/home/test \ +USER=3Dtest \ +LOGNAME=3Dtest \ +QEMU_AUDIO_DRV=3Dnone \ +/usr/bin/qemu-system-i686 \ +-name QEMUGuest1 \ +-S \ +-M pc \ +-m 214 \ +-smp 1,sockets=3D1,cores=3D1,threads=3D1 \ +-uuid c7a5fdbd-edaf-9455-926a-d65c16db1809 \ +-nographic \ +-nodefconfig \ +-nodefaults \ +-chardev socket,id=3Dcharmonitor,path=3D/tmp/lib/domain--1-QEMUGuest1/moni= tor.sock,\ +server,nowait \ +-mon chardev=3Dcharmonitor,id=3Dmonitor,mode=3Dreadline \ +-no-acpi \ +-boot c \ +-device virtio-serial-pci,id=3Dvirtio-serial1,bus=3Dpci.0,addr=3D0xa \ +-device virtio-serial-pci,id=3Dvirtio-serial0,bus=3Dpci.0,addr=3D0x3 \ +-device usb-ccid,id=3Dccid0,bus=3Dusb.0,port=3D1 \ +-usb \ +-chardev socket,id=3Dcharsmartcard0,path=3D/tmp/channel/domain-oldname/asd= f,\ +reconnect=3D20 \ +-device ccid-card-passthru,chardev=3Dcharsmartcard0,id=3Dsmartcard0,bus=3D= ccid0.0 \ +-chardev socket,id=3Dcharchannel0,host=3Dlocalhost,port=3D1234,reconnect= =3D10 \ +-device virtserialport,bus=3Dvirtio-serial0.0,nr=3D1,chardev=3Dcharchannel= 0,\ +id=3Dchannel0,name=3Dasdf \ +-chardev socket,id=3Dcharchannel1,path=3D/tmp/channel/domain--1-QEMUGuest1= /fdsa,\ +server,nowait,reconnect=3D0 \ +-device virtserialport,bus=3Dvirtio-serial0.0,nr=3D2,chardev=3Dcharchannel= 1,\ +id=3Dchannel1,name=3Dfdsa \ +-chardev socket,id=3Dcharredir0,host=3Dlocalhost,port=3D3456,reconnect=3D1= 5 \ +-device usb-redir,chardev=3Dcharredir0,id=3Dredir0,bus=3Dusb.0,port=3D2 \ +-chardev socket,id=3Dcharrng0,host=3Dlocalhost,port=3D2345,reconnect=3D5 \ +-object rng-egd,id=3Dobjrng0,chardev=3Dcharrng0 \ +-device virtio-rng-pci,rng=3Dobjrng0,id=3Drng0,bus=3Dpci.0,addr=3D0x4 diff --git a/tests/qemuxml2argvdata/qemuxml2argv-chardev-reconnect.xml b/te= sts/qemuxml2argvdata/qemuxml2argv-chardev-reconnect.xml new file mode 100644 index 0000000000..e0664b2a95 --- /dev/null +++ b/tests/qemuxml2argvdata/qemuxml2argv-chardev-reconnect.xml @@ -0,0 +1,46 @@ + + QEMUGuest1 + c7a5fdbd-edaf-9455-926a-d65c16db1809 + 219136 + 1 + + hvm + + + + /usr/bin/qemu-system-i686 + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/qemuxml2argvtest.c b/tests/qemuxml2argvtest.c index 5cdbc78eb8..39f8d66c04 100644 --- a/tests/qemuxml2argvtest.c +++ b/tests/qemuxml2argvtest.c @@ -1341,6 +1341,17 @@ mymain(void) QEMU_CAPS_NODEFCONFIG, QEMU_CAPS_CCID_EMULATED); =20 + DO_TEST("chardev-reconnect", + QEMU_CAPS_NODEFCONFIG, + QEMU_CAPS_CHARDEV_RECONNECT, + QEMU_CAPS_USB_REDIR, + QEMU_CAPS_DEVICE_VIRTIO_RNG, + QEMU_CAPS_OBJECT_RNG_EGD, + QEMU_CAPS_CCID_PASSTHRU); + DO_TEST_PARSE_ERROR("chardev-reconnect-invalid-timeout", + QEMU_CAPS_NODEFCONFIG, + QEMU_CAPS_CHARDEV_RECONNECT); + DO_TEST("usb-controller", QEMU_CAPS_NODEFCONFIG); DO_TEST("usb-piix3-controller", --=20 2.13.5 -- libvir-list mailing list libvir-list@redhat.com https://www.redhat.com/mailman/listinfo/libvir-list