From nobody Mon Feb 9 11:33:27 2026 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of redhat.com designates 170.10.133.124 as permitted sender) client-ip=170.10.133.124; envelope-from=libvir-list-bounces@redhat.com; helo=us-smtp-delivery-124.mimecast.com; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of redhat.com designates 170.10.133.124 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com; dmarc=pass(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1649405464; cv=none; d=zohomail.com; s=zohoarc; b=jStbJRJVckuY7ySxL2teEdJdxtDP4ghxuT4D1fFe4fNaBmm6jdQiY5BQw6nqLWqQbQzlHuNGxFqPxZrJpx4oByhXxs0eFETqNBgqi+KHY7fRnMXD/cH5VyanBKwe/GGuwkGAvhPRt2/Ip2GaMuMDP+RpBC+j602lQ5yzYiMxxEI= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1649405464; 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=py8YrVk0ag3UWU2bpQsrKlc1PkLqitLTDyLWC+ZD954=; b=bmbwW3YfzExCx+cCXLjQeZ008gIivH0NLB28jAEHtsOl5k2cynUg9VpwrucanTPHo6YuF3IkDY2n4R5+NtWGG1AXeFIpypQ+B3hKh2vqrmmwo/Nr18twOT1Bt0HaJuOWnnwsLzGpGriLXVksNFR1HeRjNCb+g4RL1v+2rm5BTD0= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of redhat.com designates 170.10.133.124 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.133.124]) by mx.zohomail.com with SMTPS id 1649405464089558.2608256148659; Fri, 8 Apr 2022 01:11:04 -0700 (PDT) Received: from mimecast-mx02.redhat.com (mimecast-mx02.redhat.com [66.187.233.88]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id us-mta-382-Yp2ePJMuNlCUfjDCRiusBQ-1; Fri, 08 Apr 2022 04:10:58 -0400 Received: from smtp.corp.redhat.com (int-mx02.intmail.prod.int.rdu2.redhat.com [10.11.54.2]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx02.redhat.com (Postfix) with ESMTPS id 9D7F91014A8B; Fri, 8 Apr 2022 08:10:55 +0000 (UTC) Received: from mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com (mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com [10.30.29.100]) by smtp.corp.redhat.com (Postfix) with ESMTP id 85E7840E80E0; Fri, 8 Apr 2022 08:10:55 +0000 (UTC) Received: from mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com (localhost [IPv6:::1]) by mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com (Postfix) with ESMTP id 459DF1940341; Fri, 8 Apr 2022 08:10:55 +0000 (UTC) Received: from smtp.corp.redhat.com (int-mx09.intmail.prod.int.rdu2.redhat.com [10.11.54.9]) by mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com (Postfix) with ESMTP id 936F91940342 for ; Fri, 8 Apr 2022 08:10:54 +0000 (UTC) Received: by smtp.corp.redhat.com (Postfix) id 8845054ACBC; Fri, 8 Apr 2022 08:10:54 +0000 (UTC) Received: from maggie.redhat.com (unknown [10.43.2.180]) by smtp.corp.redhat.com (Postfix) with ESMTP id 1327954ACB0 for ; Fri, 8 Apr 2022 08:10:53 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1649405463; h=from:from:sender:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:mime-version:mime-version: content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references:list-id:list-help: list-unsubscribe:list-subscribe:list-post; bh=py8YrVk0ag3UWU2bpQsrKlc1PkLqitLTDyLWC+ZD954=; b=CuCwn/u+lZomLbWQWG0Vpmc5LrArY9G1mspOAuqIUxwPR3lOK/ainBEp69yXOy61nbmZj8 3QFsrLsM2M4AhJ9IVJYxLJ98geHu6MaEgHgP+3z0XtcPBfkp6C4v1fmuYoQ1XzCo7hCOTz EwOsheLjqWvX6fyDXfcPQPwwpUitF30= X-MC-Unique: Yp2ePJMuNlCUfjDCRiusBQ-1 X-Original-To: libvir-list@listman.corp.redhat.com From: Michal Privoznik To: libvir-list@redhat.com Subject: [PATCH 12/17] virDomainChrDefParseXML: Switch to virXMLPropEnumDefault() Date: Fri, 8 Apr 2022 10:08:51 +0200 Message-Id: <95c2ade5e1aaf78cc63b4fd3bc68247054e26201.1649405101.git.mprivozn@redhat.com> In-Reply-To: References: MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.85 on 10.11.54.9 X-BeenThere: libvir-list@redhat.com X-Mailman-Version: 2.1.29 Precedence: list List-Id: Development discussions about the libvirt library & tools List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: libvir-list-bounces@redhat.com Sender: "libvir-list" X-Scanned-By: MIMEDefang 2.84 on 10.11.54.2 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 X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1649405464592100004 Content-Type: text/plain; charset="utf-8"; x-default="true" The virDomainChrDefParseXML() function uses old style of parsing XML (virXMLPropString + str2enum conversion). Use virXMLPropEnumDefault() which encapsulates those steps. Signed-off-by: Michal Privoznik --- src/ch/ch_monitor.c | 2 +- src/conf/domain_conf.c | 82 +++++++++++--------------------- src/conf/domain_conf.h | 2 +- src/conf/domain_validate.c | 2 +- src/conf/virchrdev.c | 24 ++++++++++ src/libxl/libxl_conf.c | 16 +++++++ src/libxl/xen_common.c | 19 +++++++- src/qemu/qemu_command.c | 6 +-- src/qemu/qemu_domain.c | 30 +++++++++++- src/qemu/qemu_monitor_json.c | 2 +- src/qemu/qemu_process.c | 2 +- src/qemu/qemu_validate.c | 2 +- src/security/security_apparmor.c | 4 +- src/security/security_dac.c | 4 +- src/security/security_selinux.c | 20 ++++++++ src/vmx/vmx.c | 22 +++++++++ tests/testutilsqemu.c | 2 +- 17 files changed, 172 insertions(+), 69 deletions(-) diff --git a/src/ch/ch_monitor.c b/src/ch/ch_monitor.c index 2c6b83a1b5..d6fac642da 100644 --- a/src/ch/ch_monitor.c +++ b/src/ch/ch_monitor.c @@ -281,7 +281,7 @@ virCHMonitorBuildNetJson(virJSONValue *nets, } break; case VIR_DOMAIN_NET_TYPE_VHOSTUSER: - if ((virDomainChrType)netdef->data.vhostuser->type !=3D VIR_DO= MAIN_CHR_TYPE_UNIX) { + if (netdef->data.vhostuser->type !=3D VIR_DOMAIN_CHR_TYPE_UNIX= ) { virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s", _("vhost_user type support UNIX socket in this = CH")); return -1; diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c index 97cf4f20eb..84a65076b9 100644 --- a/src/conf/domain_conf.c +++ b/src/conf/domain_conf.c @@ -2684,7 +2684,7 @@ virDomainChrSourceDefGetPath(virDomainChrSourceDef *c= hr) if (!chr) return NULL; =20 - switch ((virDomainChrType) chr->type) { + switch (chr->type) { case VIR_DOMAIN_CHR_TYPE_PTY: case VIR_DOMAIN_CHR_TYPE_DEV: case VIR_DOMAIN_CHR_TYPE_FILE: @@ -2745,6 +2745,13 @@ virDomainChrSourceDefClear(virDomainChrSourceDef *de= f) case VIR_DOMAIN_CHR_TYPE_SPICEPORT: VIR_FREE(def->data.spiceport.channel); break; + + case VIR_DOMAIN_CHR_TYPE_NULL: + case VIR_DOMAIN_CHR_TYPE_VC: + case VIR_DOMAIN_CHR_TYPE_STDIO: + case VIR_DOMAIN_CHR_TYPE_SPICEVMC: + case VIR_DOMAIN_CHR_TYPE_LAST: + break; } =20 VIR_FREE(def->logfile); @@ -2762,7 +2769,7 @@ virDomainChrSourceDefCopy(virDomainChrSourceDef *dest, dest->logfile =3D g_strdup(src->logfile); dest->logappend =3D src->logappend; =20 - switch ((virDomainChrType)src->type) { + switch (src->type) { case VIR_DOMAIN_CHR_TYPE_FILE: case VIR_DOMAIN_CHR_TYPE_PTY: case VIR_DOMAIN_CHR_TYPE_DEV: @@ -2850,7 +2857,7 @@ virDomainChrSourceDefIsEqual(const virDomainChrSource= Def *src, if (tgt->type !=3D src->type) return false; =20 - switch ((virDomainChrType)src->type) { + switch (src->type) { case VIR_DOMAIN_CHR_TYPE_FILE: return src->data.file.append =3D=3D tgt->data.file.append && STREQ_NULLABLE(src->data.file.path, tgt->data.file.path); @@ -11247,7 +11254,7 @@ virDomainChrSourceDefParseXML(virDomainChrSourceDef= *def, goto error; } =20 - switch ((virDomainChrType) def->type) { + switch (def->type) { case VIR_DOMAIN_CHR_TYPE_FILE: if (virDomainChrSourceDefParseFile(def, sources[0]) < 0) goto error; @@ -11444,7 +11451,6 @@ virDomainChrDefParseXML(virDomainXMLOption *xmlopt, xmlNodePtr target; const char *nodeName; virDomainChrDef *def; - g_autofree char *type =3D NULL; VIR_XPATH_NODE_AUTORESTORE(ctxt) =20 ctxt->node =3D node; @@ -11452,15 +11458,12 @@ virDomainChrDefParseXML(virDomainXMLOption *xmlop= t, if (!(def =3D virDomainChrDefNew(xmlopt))) return NULL; =20 - type =3D virXMLPropString(node, "type"); - if (type =3D=3D NULL) { - def->source->type =3D VIR_DOMAIN_CHR_TYPE_PTY; - } else if ((def->source->type =3D virDomainChrTypeFromString(type)) < = 0) { - virReportError(VIR_ERR_CONFIG_UNSUPPORTED, - _("unknown type presented to host for character dev= ice: %s"), - type); + if (virXMLPropEnumDefault(node, "type", + virDomainChrTypeFromString, + VIR_XML_PROP_NONE, + &def->source->type, + VIR_DOMAIN_CHR_TYPE_PTY) < 0) goto error; - } =20 nodeName =3D (const char *) node->name; if ((def->deviceType =3D virDomainChrDeviceTypeFromString(nodeName)) <= 0) { @@ -11518,7 +11521,6 @@ virDomainSmartcardDefParseXML(virDomainXMLOption *x= mlopt, unsigned int flags) { g_autoptr(virDomainSmartcardDef) def =3D NULL; - g_autofree char *type =3D NULL; g_autofree xmlNodePtr *certificates =3D NULL; int n =3D 0; VIR_XPATH_NODE_AUTORESTORE(ctxt) @@ -11564,23 +11566,14 @@ virDomainSmartcardDefParseXML(virDomainXMLOption = *xmlopt, break; =20 case VIR_DOMAIN_SMARTCARD_TYPE_PASSTHROUGH: - type =3D virXMLPropString(node, "type"); - if (type =3D=3D NULL) { - virReportError(VIR_ERR_XML_ERROR, "%s", - _("passthrough mode requires a character " - "device type attribute")); - return NULL; - } - if (!(def->data.passthru =3D virDomainChrSourceDefNew(xmlopt))) return NULL; =20 - if ((def->data.passthru->type =3D virDomainChrTypeFromString(type)= ) < 0) { - virReportError(VIR_ERR_CONFIG_UNSUPPORTED, - _("unknown type presented to host for " - "character device: %s"), type); + if (virXMLPropEnum(node, "type", + virDomainChrTypeFromString, + VIR_XML_PROP_REQUIRED, + &def->data.passthru->type) < 0) return NULL; - } =20 if (virDomainChrSourceDefParseXML(def->data.passthru, node, flags, NULL, ctxt) < 0) @@ -13268,7 +13261,6 @@ virDomainRNGDefParseXML(virDomainXMLOption *xmlopt, g_autofree xmlNodePtr *backends =3D NULL; g_autofree char *model =3D NULL; g_autofree char *backend =3D NULL; - g_autofree char *type =3D NULL; =20 def =3D g_new0(virDomainRNGDef, 1); =20 @@ -13324,22 +13316,14 @@ virDomainRNGDefParseXML(virDomainXMLOption *xmlop= t, break; =20 case VIR_DOMAIN_RNG_BACKEND_EGD: - if (!(type =3D virXMLPropString(backends[0], "type"))) { - virReportError(VIR_ERR_XML_ERROR, "%s", - _("missing EGD backend type")); - goto error; - } - if (!(def->source.chardev =3D virDomainChrSourceDefNew(xmlopt))) goto error; =20 - def->source.chardev->type =3D virDomainChrTypeFromString(type); - if (def->source.chardev->type < 0) { - virReportError(VIR_ERR_CONFIG_UNSUPPORTED, - _("unknown backend type '%s' for egd"), - type); + if (virXMLPropEnum(backends[0], "type", + virDomainChrTypeFromString, + VIR_XML_PROP_REQUIRED, + &def->source.chardev->type) < 0) goto error; - } =20 if (virDomainChrSourceDefParseXML(def->source.chardev, backends[0], flags, @@ -14239,7 +14223,6 @@ virDomainRedirdevDefParseXML(virDomainXMLOption *xm= lopt, { virDomainRedirdevDef *def; g_autofree char *bus =3D NULL; - g_autofree char *type =3D NULL; =20 def =3D g_new0(virDomainRedirdevDef, 1); =20 @@ -14257,18 +14240,11 @@ virDomainRedirdevDefParseXML(virDomainXMLOption *= xmlopt, def->bus =3D VIR_DOMAIN_REDIRDEV_BUS_USB; } =20 - type =3D virXMLPropString(node, "type"); - if (type) { - if ((def->source->type =3D virDomainChrTypeFromString(type)) < 0) { - virReportError(VIR_ERR_CONFIG_UNSUPPORTED, - _("unknown redirdev character device type '%s'"= ), type); - goto error; - } - } else { - virReportError(VIR_ERR_INTERNAL_ERROR, - "%s", _("missing type in redirdev")); + if (virXMLPropEnum(node, "type", + virDomainChrTypeFromString, + VIR_XML_PROP_REQUIRED, + &def->source->type) < 0) goto error; - } =20 /* boot gets parsed in virDomainDeviceInfoParseXML * source gets parsed in virDomainChrSourceDefParseXML */ @@ -24975,7 +24951,7 @@ virDomainChrSourceDefFormat(virBuffer *buf, g_auto(virBuffer) attrBuf =3D VIR_BUFFER_INITIALIZER; g_auto(virBuffer) childBuf =3D VIR_BUFFER_INIT_CHILD(buf); =20 - switch ((virDomainChrType)def->type) { + switch (def->type) { case VIR_DOMAIN_CHR_TYPE_NULL: case VIR_DOMAIN_CHR_TYPE_VC: case VIR_DOMAIN_CHR_TYPE_STDIO: diff --git a/src/conf/domain_conf.h b/src/conf/domain_conf.h index f23444d768..c500a78680 100644 --- a/src/conf/domain_conf.h +++ b/src/conf/domain_conf.h @@ -1272,7 +1272,7 @@ struct _virDomainChrSourceReconnectDef { /* The host side information for a character device. */ struct _virDomainChrSourceDef { virObject parent; - int type; /* virDomainChrType */ + virDomainChrType type; virObject *privateData; union { /* no for null, vc, stdio */ diff --git a/src/conf/domain_validate.c b/src/conf/domain_validate.c index 2aab8e8b40..9e64a96eb9 100644 --- a/src/conf/domain_validate.c +++ b/src/conf/domain_validate.c @@ -843,7 +843,7 @@ virDomainChrSourceDefValidate(const virDomainChrSourceD= ef *src_def, const virDomainChrDef *chr_def, const virDomainDef *def) { - switch ((virDomainChrType) src_def->type) { + switch (src_def->type) { case VIR_DOMAIN_CHR_TYPE_NULL: case VIR_DOMAIN_CHR_TYPE_PTY: case VIR_DOMAIN_CHR_TYPE_VC: diff --git a/src/conf/virchrdev.c b/src/conf/virchrdev.c index 8610f0ac5c..7123229ede 100644 --- a/src/conf/virchrdev.c +++ b/src/conf/virchrdev.c @@ -339,6 +339,18 @@ int virChrdevOpen(virChrdevs *devs, case VIR_DOMAIN_CHR_TYPE_UNIX: path =3D source->data.nix.path; break; + case VIR_DOMAIN_CHR_TYPE_NULL: + case VIR_DOMAIN_CHR_TYPE_VC: + 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_TCP: + case VIR_DOMAIN_CHR_TYPE_SPICEVMC: + case VIR_DOMAIN_CHR_TYPE_SPICEPORT: + case VIR_DOMAIN_CHR_TYPE_NMDM: + case VIR_DOMAIN_CHR_TYPE_LAST: default: virReportError(VIR_ERR_CONFIG_UNSUPPORTED, _("Unsupported device type '%s'"), @@ -404,6 +416,18 @@ int virChrdevOpen(virChrdevs *devs, if (virFDStreamConnectUNIX(st, path, false) < 0) goto error; break; + case VIR_DOMAIN_CHR_TYPE_NULL: + case VIR_DOMAIN_CHR_TYPE_VC: + 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_TCP: + case VIR_DOMAIN_CHR_TYPE_SPICEVMC: + case VIR_DOMAIN_CHR_TYPE_SPICEPORT: + case VIR_DOMAIN_CHR_TYPE_NMDM: + case VIR_DOMAIN_CHR_TYPE_LAST: default: virReportError(VIR_ERR_CONFIG_UNSUPPORTED, _("Unsupported device type '%s'"), diff --git a/src/libxl/libxl_conf.c b/src/libxl/libxl_conf.c index a6a110e548..7a733cf30d 100644 --- a/src/libxl/libxl_conf.c +++ b/src/libxl/libxl_conf.c @@ -273,6 +273,10 @@ libxlMakeChrdevStr(virDomainChrDef *def, char **buf) srcdef->data.nix.listen ? ",server,nowait" = : ""); break; =20 + case VIR_DOMAIN_CHR_TYPE_SPICEVMC: + case VIR_DOMAIN_CHR_TYPE_SPICEPORT: + case VIR_DOMAIN_CHR_TYPE_NMDM: + case VIR_DOMAIN_CHR_TYPE_LAST: default: virReportError(VIR_ERR_CONFIG_UNSUPPORTED, _("unsupported chardev '%s'"), type); @@ -1970,6 +1974,18 @@ libxlMakeChannel(virDomainChrDef *l_channel, x_channel->connection =3D LIBXL_CHANNEL_CONNECTION_SOCKET; x_channel->u.socket.path =3D g_strdup(l_channel->source->data.nix.= path); break; + case VIR_DOMAIN_CHR_TYPE_NULL: + case VIR_DOMAIN_CHR_TYPE_VC: + 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_TCP: + case VIR_DOMAIN_CHR_TYPE_SPICEVMC: + case VIR_DOMAIN_CHR_TYPE_SPICEPORT: + case VIR_DOMAIN_CHR_TYPE_NMDM: + case VIR_DOMAIN_CHR_TYPE_LAST: default: virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s", _("channel source type not supported")); diff --git a/src/libxl/xen_common.c b/src/libxl/xen_common.c index b97ba0a199..1b22bc2787 100644 --- a/src/libxl/xen_common.c +++ b/src/libxl/xen_common.c @@ -824,11 +824,14 @@ xenParseSxprChar(const char *value, def->source->type =3D VIR_DOMAIN_CHR_TYPE_TCP; def->source->data.tcp.protocol =3D VIR_DOMAIN_CHR_TCP_PROTOCOL= _TELNET; } else { - if ((def->source->type =3D virDomainChrTypeFromString(prefix))= < 0) { + int type =3D virDomainChrTypeFromString(prefix); + + if (type < 0) { virReportError(VIR_ERR_INTERNAL_ERROR, _("unknown chr device type '%s'"), prefix); goto error; } + def->source->type =3D type; } } =20 @@ -920,6 +923,16 @@ xenParseSxprChar(const char *value, def->source->data.nix.listen =3D true; } break; + + case VIR_DOMAIN_CHR_TYPE_NULL: + case VIR_DOMAIN_CHR_TYPE_VC: + case VIR_DOMAIN_CHR_TYPE_DEV: + case VIR_DOMAIN_CHR_TYPE_STDIO: + 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; } =20 return def; @@ -1525,6 +1538,10 @@ xenFormatSxprChr(virDomainChrDef *def, virBufferAddLit(buf, ",server,nowait"); break; =20 + case VIR_DOMAIN_CHR_TYPE_SPICEVMC: + case VIR_DOMAIN_CHR_TYPE_SPICEPORT: + case VIR_DOMAIN_CHR_TYPE_NMDM: + case VIR_DOMAIN_CHR_TYPE_LAST: default: virReportError(VIR_ERR_CONFIG_UNSUPPORTED, _("unsupported chr device type '%s'"), type); diff --git a/src/qemu/qemu_command.c b/src/qemu/qemu_command.c index 8eda740571..3ef062f2e5 100644 --- a/src/qemu/qemu_command.c +++ b/src/qemu/qemu_command.c @@ -1303,7 +1303,7 @@ qemuBuildChardevStr(const virDomainChrSourceDef *dev, const char *path; virTristateSwitch append; =20 - switch ((virDomainChrType) dev->type) { + switch (dev->type) { case VIR_DOMAIN_CHR_TYPE_NULL: virBufferAsprintf(&buf, "null,id=3D%s", charAlias); break; @@ -1458,7 +1458,7 @@ qemuBuildChardevCommand(virCommand *cmd, qemuDomainChrSourcePrivate *chrSourcePriv =3D QEMU_DOMAIN_CHR_SOURCE_P= RIVATE(dev); g_autofree char *charstr =3D NULL; =20 - switch ((virDomainChrType) dev->type) { + switch (dev->type) { case VIR_DOMAIN_CHR_TYPE_TCP: if (dev->data.tcp.haveTLS =3D=3D VIR_TRISTATE_BOOL_YES) { g_autofree char *objalias =3D NULL; @@ -8628,7 +8628,7 @@ qemuInterfaceVhostuserConnect(virCommand *cmd, { g_autofree char *charAlias =3D qemuAliasChardevFromDevAlias(net->info.= alias); =20 - switch ((virDomainChrType)net->data.vhostuser->type) { + switch (net->data.vhostuser->type) { case VIR_DOMAIN_CHR_TYPE_UNIX: if (qemuBuildChardevCommand(cmd, net->data.vhostuser, diff --git a/src/qemu/qemu_domain.c b/src/qemu/qemu_domain.c index 15f753b0fc..f8e67e5479 100644 --- a/src/qemu/qemu_domain.c +++ b/src/qemu/qemu_domain.c @@ -2309,10 +2309,26 @@ qemuDomainObjPrivateXMLFormat(virBuffer *buf, case VIR_DOMAIN_CHR_TYPE_UNIX: monitorpath =3D priv->monConfig->data.nix.path; break; - default: case VIR_DOMAIN_CHR_TYPE_PTY: monitorpath =3D priv->monConfig->data.file.path; break; + case VIR_DOMAIN_CHR_TYPE_NULL: + case VIR_DOMAIN_CHR_TYPE_VC: + 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_TCP: + case VIR_DOMAIN_CHR_TYPE_SPICEVMC: + case VIR_DOMAIN_CHR_TYPE_SPICEPORT: + case VIR_DOMAIN_CHR_TYPE_NMDM: + case VIR_DOMAIN_CHR_TYPE_LAST: + default: + virReportError(VIR_ERR_INTERNAL_ERROR, + _("unsupported monitor type '%s'"), + virDomainChrTypeToString(priv->monConfig->type)= ); + return -1; } =20 virBufferEscapeString(buf, "monConfig->data.nix.path =3D monitorpath; break; + case VIR_DOMAIN_CHR_TYPE_NULL: + case VIR_DOMAIN_CHR_TYPE_VC: + 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_TCP: + case VIR_DOMAIN_CHR_TYPE_SPICEVMC: + case VIR_DOMAIN_CHR_TYPE_SPICEPORT: + case VIR_DOMAIN_CHR_TYPE_NMDM: + case VIR_DOMAIN_CHR_TYPE_LAST: default: VIR_FREE(monitorpath); virReportError(VIR_ERR_INTERNAL_ERROR, diff --git a/src/qemu/qemu_monitor_json.c b/src/qemu/qemu_monitor_json.c index bf3245f7e2..3cfd1cc161 100644 --- a/src/qemu/qemu_monitor_json.c +++ b/src/qemu/qemu_monitor_json.c @@ -6681,7 +6681,7 @@ qemuMonitorJSONAttachCharDevGetProps(const char *chrI= D, g_autoptr(virJSONValue) backendData =3D virJSONValueNewObject(); const char *backendType =3D NULL; =20 - switch ((virDomainChrType)chr->type) { + switch (chr->type) { case VIR_DOMAIN_CHR_TYPE_NULL: case VIR_DOMAIN_CHR_TYPE_VC: case VIR_DOMAIN_CHR_TYPE_PTY: diff --git a/src/qemu/qemu_process.c b/src/qemu/qemu_process.c index bb754ff8d6..5f70bd3115 100644 --- a/src/qemu/qemu_process.c +++ b/src/qemu/qemu_process.c @@ -6820,7 +6820,7 @@ qemuProcessPrepareHostBackendChardevOne(virDomainDevi= ceDef *dev, devalias =3D data->fdprefix; } =20 - switch ((virDomainChrType) chardev->type) { + switch (chardev->type) { case VIR_DOMAIN_CHR_TYPE_NULL: case VIR_DOMAIN_CHR_TYPE_VC: case VIR_DOMAIN_CHR_TYPE_PTY: diff --git a/src/qemu/qemu_validate.c b/src/qemu/qemu_validate.c index 37844c1874..097e35a430 100644 --- a/src/qemu/qemu_validate.c +++ b/src/qemu/qemu_validate.c @@ -1975,7 +1975,7 @@ static int qemuValidateDomainChrSourceDef(const virDomainChrSourceDef *def, virQEMUCaps *qemuCaps) { - switch ((virDomainChrType)def->type) { + switch (def->type) { case VIR_DOMAIN_CHR_TYPE_TCP: if (qemuValidateDomainChrSourceReconnectDef(&def->data.tcp.reconne= ct) < 0) return -1; diff --git a/src/security/security_apparmor.c b/src/security/security_appar= mor.c index 8f7acba980..957c1a6357 100644 --- a/src/security/security_apparmor.c +++ b/src/security/security_apparmor.c @@ -991,7 +991,7 @@ AppArmorSetChardevLabel(virSecurityManager *mgr, if (!secdef) return 0; =20 - switch ((virDomainChrType)dev_source->type) { + switch (dev_source->type) { case VIR_DOMAIN_CHR_TYPE_DEV: case VIR_DOMAIN_CHR_TYPE_FILE: case VIR_DOMAIN_CHR_TYPE_UNIX: @@ -1066,7 +1066,7 @@ AppArmorSetNetdevLabel(virSecurityManager *mgr, return 0; =20 dev_source =3D net->data.vhostuser; - switch ((virDomainChrType)dev_source->type) { + switch (dev_source->type) { case VIR_DOMAIN_CHR_TYPE_UNIX: ret =3D reload_profile(mgr, def, dev_source->data.file.path, true); break; diff --git a/src/security/security_dac.c b/src/security/security_dac.c index e9e316551e..183f291cc6 100644 --- a/src/security/security_dac.c +++ b/src/security/security_dac.c @@ -1506,7 +1506,7 @@ virSecurityDACSetChardevLabelHelper(virSecurityManage= r *mgr, return -1; } =20 - switch ((virDomainChrType)dev_source->type) { + switch (dev_source->type) { case VIR_DOMAIN_CHR_TYPE_DEV: case VIR_DOMAIN_CHR_TYPE_FILE: if (virSecurityDACSetOwnership(mgr, NULL, @@ -1596,7 +1596,7 @@ virSecurityDACRestoreChardevLabelHelper(virSecurityMa= nager *mgr, chardevStdioLogd) return 0; =20 - switch ((virDomainChrType)dev_source->type) { + switch (dev_source->type) { case VIR_DOMAIN_CHR_TYPE_DEV: case VIR_DOMAIN_CHR_TYPE_FILE: if (virSecurityDACRestoreFileLabelInternal(mgr, NULL, diff --git a/src/security/security_selinux.c b/src/security/security_selinu= x.c index 6f02baf2ce..099306b522 100644 --- a/src/security/security_selinux.c +++ b/src/security/security_selinux.c @@ -2570,6 +2570,16 @@ virSecuritySELinuxSetChardevLabel(virSecurityManager= *mgr, ret =3D 0; break; =20 + case VIR_DOMAIN_CHR_TYPE_NULL: + case VIR_DOMAIN_CHR_TYPE_VC: + case VIR_DOMAIN_CHR_TYPE_PTY: + case VIR_DOMAIN_CHR_TYPE_STDIO: + case VIR_DOMAIN_CHR_TYPE_UDP: + case VIR_DOMAIN_CHR_TYPE_TCP: + case VIR_DOMAIN_CHR_TYPE_SPICEVMC: + case VIR_DOMAIN_CHR_TYPE_SPICEPORT: + case VIR_DOMAIN_CHR_TYPE_NMDM: + case VIR_DOMAIN_CHR_TYPE_LAST: default: ret =3D 0; break; @@ -2643,6 +2653,16 @@ virSecuritySELinuxRestoreChardevLabel(virSecurityMan= ager *mgr, ret =3D 0; break; =20 + case VIR_DOMAIN_CHR_TYPE_NULL: + case VIR_DOMAIN_CHR_TYPE_VC: + case VIR_DOMAIN_CHR_TYPE_PTY: + case VIR_DOMAIN_CHR_TYPE_STDIO: + case VIR_DOMAIN_CHR_TYPE_UDP: + case VIR_DOMAIN_CHR_TYPE_TCP: + case VIR_DOMAIN_CHR_TYPE_SPICEVMC: + case VIR_DOMAIN_CHR_TYPE_SPICEPORT: + case VIR_DOMAIN_CHR_TYPE_NMDM: + case VIR_DOMAIN_CHR_TYPE_LAST: default: ret =3D 0; break; diff --git a/src/vmx/vmx.c b/src/vmx/vmx.c index 8150bbfaa9..8f519e9302 100644 --- a/src/vmx/vmx.c +++ b/src/vmx/vmx.c @@ -4116,6 +4116,16 @@ virVMXFormatSerial(virVMXContext *ctx, virDomainChrD= ef *def, def->source->data.tcp.listen ? "server" : "clien= t"); break; =20 + case VIR_DOMAIN_CHR_TYPE_NULL: + case VIR_DOMAIN_CHR_TYPE_VC: + case VIR_DOMAIN_CHR_TYPE_PTY: + case VIR_DOMAIN_CHR_TYPE_STDIO: + case VIR_DOMAIN_CHR_TYPE_UDP: + case VIR_DOMAIN_CHR_TYPE_UNIX: + case VIR_DOMAIN_CHR_TYPE_SPICEVMC: + case VIR_DOMAIN_CHR_TYPE_SPICEPORT: + case VIR_DOMAIN_CHR_TYPE_NMDM: + case VIR_DOMAIN_CHR_TYPE_LAST: default: virReportError(VIR_ERR_CONFIG_UNSUPPORTED, _("Unsupported character device type '%s'"), @@ -4173,6 +4183,18 @@ virVMXFormatParallel(virVMXContext *ctx, virDomainCh= rDef *def, VIR_FREE(fileName); break; =20 + case VIR_DOMAIN_CHR_TYPE_NULL: + case VIR_DOMAIN_CHR_TYPE_VC: + case VIR_DOMAIN_CHR_TYPE_PTY: + case VIR_DOMAIN_CHR_TYPE_PIPE: + case VIR_DOMAIN_CHR_TYPE_STDIO: + case VIR_DOMAIN_CHR_TYPE_UDP: + case VIR_DOMAIN_CHR_TYPE_TCP: + case VIR_DOMAIN_CHR_TYPE_UNIX: + case VIR_DOMAIN_CHR_TYPE_SPICEVMC: + case VIR_DOMAIN_CHR_TYPE_SPICEPORT: + case VIR_DOMAIN_CHR_TYPE_NMDM: + case VIR_DOMAIN_CHR_TYPE_LAST: default: virReportError(VIR_ERR_CONFIG_UNSUPPORTED, _("Unsupported character device type '%s'"), diff --git a/tests/testutilsqemu.c b/tests/testutilsqemu.c index 105b41cbeb..c0c829fbd1 100644 --- a/tests/testutilsqemu.c +++ b/tests/testutilsqemu.c @@ -1031,7 +1031,7 @@ testQemuPrepareHostBackendChardevOne(virDomainDeviceD= ef *dev, devalias =3D "monitor"; } =20 - switch ((virDomainChrType) chardev->type) { + switch (chardev->type) { case VIR_DOMAIN_CHR_TYPE_NULL: case VIR_DOMAIN_CHR_TYPE_VC: case VIR_DOMAIN_CHR_TYPE_PTY: --=20 2.35.1