From nobody Sun Feb 8 11:34:50 2026 Delivered-To: importer@patchew.org Received-SPF: none (zohomail.com: 8.43.85.245 is neither permitted nor denied by domain of lists.libvirt.org) client-ip=8.43.85.245; envelope-from=devel-bounces@lists.libvirt.org; helo=lists.libvirt.org; Authentication-Results: mx.zohomail.com; spf=none (zohomail.com: 8.43.85.245 is neither permitted nor denied by domain of lists.libvirt.org) smtp.mailfrom=devel-bounces@lists.libvirt.org Return-Path: Received: from lists.libvirt.org (lists.libvirt.org [8.43.85.245]) by mx.zohomail.com with SMTPS id 1714426227188385.017939505624; Mon, 29 Apr 2024 14:30:27 -0700 (PDT) Received: by lists.libvirt.org (Postfix, from userid 996) id D1A2718AB; Mon, 29 Apr 2024 17:30:25 -0400 (EDT) Received: from lists.libvirt.org (localhost [IPv6:::1]) by lists.libvirt.org (Postfix) with ESMTP id 3809D1A84; Mon, 29 Apr 2024 17:29:20 -0400 (EDT) Received: by lists.libvirt.org (Postfix, from userid 996) id E895B1A84; Mon, 29 Apr 2024 17:29:15 -0400 (EDT) Received: from mail-lj1-f169.google.com (mail-lj1-f169.google.com [209.85.208.169]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by lists.libvirt.org (Postfix) with ESMTPS id BB70718EA for ; Mon, 29 Apr 2024 17:29:14 -0400 (EDT) Received: by mail-lj1-f169.google.com with SMTP id 38308e7fff4ca-2e0b2ddc5d1so12111741fa.3 for ; Mon, 29 Apr 2024 14:29:14 -0700 (PDT) Received: from localhost (75-169-5-227.slkc.qwest.net. [75.169.5.227]) by smtp.gmail.com with ESMTPSA id gw3-20020a17090b0a4300b002b1ae6f26cbsm2504818pjb.53.2024.04.29.14.29.12 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 29 Apr 2024 14:29:12 -0700 (PDT) X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on lists.libvirt.org X-Spam-Level: X-Spam-Status: No, score=-1.0 required=5.0 tests=MAILING_LIST_MULTI, RCVD_IN_DNSWL_NONE,RCVD_IN_MSPIKE_H2,SPF_HELO_NONE autolearn=unavailable autolearn_force=no version=3.4.4 X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1714426153; x=1715030953; h=content-transfer-encoding:mime-version:message-id:date:subject:to :from:x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=YxNk2WBPGOli7mrBVGZCD2sfoGQ6/TkMqgfjFYQbCS4=; b=Jv1twXBEMXc8ke7HjBc89ltCnfaMjyXckkL59K2ufaYIQQKqZp8xvJf3kIEu4qPZFd SOJweSD0l1oM05XaI0RjuG258UhYvH3obLQZd/C4ePxiESbS/TTdtonkKjrFZu5pLlkr 0flB1JlzuxME8v8HiWk1mpZB/K48WVAiZmLzJIYc4fBuOw1k+y87yvykCH4bn27peZ+w pkvxpmF1Pd1bMqoYc6bJRkHeJiSBB2EBLk4DhGEMH17fwjEiMr3PWwbh4QMlYtGuzxub e4KTPNs4Rba6e0RRihyypyRX7+t9bPhrBTkcG6UhxJvMUyj7OnAuukxS8MYi2sD4deFQ Zz3Q== X-Gm-Message-State: AOJu0Yz++k4E1fvma/+Pqyqokkn1AsBrDdngwCWcZ8bBrUj5pkPgYzz0 W13tey9CrGe4EpOlcIRq/1fAWr7zVTpTB+6ir3JIECyep8Qj6Zoq06YKjryO+fqmhm1MWe2PP0g O X-Google-Smtp-Source: AGHT+IFRmhkPwpuYBfE5AVnC/6+RcHWKIgiouoUbi2abS0X8XxauHOXCuvP3mtU3QDOrhE5P39JSzQ== X-Received: by 2002:a2e:b4b9:0:b0:2d7:17e0:ff56 with SMTP id q25-20020a2eb4b9000000b002d717e0ff56mr4871244ljm.18.1714426153253; Mon, 29 Apr 2024 14:29:13 -0700 (PDT) To: devel@lists.libvirt.org Subject: [PATCH] libxl: Fix domxml-to-native conversion Date: Mon, 29 Apr 2024 15:28:43 -0600 Message-ID: <20240429212911.21779-1-jfehlig@suse.com> X-Mailer: git-send-email 2.44.0 MIME-Version: 1.0 Message-ID-Hash: 5NVDVKHHUU7I7USOG66GE3Z3ZAC7KJIW X-Message-ID-Hash: 5NVDVKHHUU7I7USOG66GE3Z3ZAC7KJIW X-MailFrom: jfehlig@suse.com X-Mailman-Rule-Misses: dmarc-mitigation; no-senders; approved; emergency; loop; banned-address; member-moderation; header-match-config-1; header-match-config-2; header-match-config-3; header-match-devel.lists.libvirt.org-0; nonmember-moderation; administrivia; implicit-dest; max-recipients; max-size; news-moderation; no-subject; suspicious-header X-Mailman-Version: 3.2.2 Precedence: list List-Id: Development discussions about the libvirt library & tools Archived-At: List-Archive: List-Help: List-Post: List-Subscribe: List-Unsubscribe: From: Jim Fehlig via Devel Reply-To: Jim Fehlig Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-ZM-MESSAGEID: 1714426228064100001 Similar to commit 57d084febe, another case of the libxl driver not adapting to modular daemons. When converting configuration that contains a type=3D'network' interface, the converter calls virNetworkLookupByName, passing the hypervisor connection object instead of a connection to virtnetworkd. E.g. > cat dom.xml ... ... > virsh net-info default Name: default UUID: 25a5b089-1e71-4956-99aa-df2213bbb407 Active: yes Persistent: no Autostart: no Bridge: virbr0 > virsh domxml-to-native xen-xl dom.xml error: Network not found: default Acquire a connection to virtnetworkd and use it when calling virNetwork* APIs. Signed-off-by: Jim Fehlig Reviewed-by: J=C3=A1n Tomko --- src/libxl/libxl_driver.c | 4 ++-- src/libxl/xen_common.c | 25 +++++++++++++++---------- src/libxl/xen_common.h | 1 - src/libxl/xen_xl.c | 4 ++-- src/libxl/xen_xl.h | 2 +- src/libxl/xen_xm.c | 5 ++--- src/libxl/xen_xm.h | 2 +- tests/xlconfigtest.c | 7 +------ tests/xmconfigtest.c | 7 +------ 9 files changed, 25 insertions(+), 32 deletions(-) diff --git a/src/libxl/libxl_driver.c b/src/libxl/libxl_driver.c index e42a3dc0a9..4d5eb920bf 100644 --- a/src/libxl/libxl_driver.c +++ b/src/libxl/libxl_driver.c @@ -2709,10 +2709,10 @@ libxlConnectDomainXMLToNative(virConnectPtr conn, c= onst char * nativeFormat, goto cleanup; =20 if (STREQ(nativeFormat, XEN_CONFIG_FORMAT_XL)) { - if (!(conf =3D xenFormatXL(def, conn))) + if (!(conf =3D xenFormatXL(def))) goto cleanup; } else if (STREQ(nativeFormat, XEN_CONFIG_FORMAT_XM)) { - if (!(conf =3D xenFormatXM(conn, def))) + if (!(conf =3D xenFormatXM(def))) goto cleanup; } else { =20 diff --git a/src/libxl/xen_common.c b/src/libxl/xen_common.c index 79eb593432..0b2346d8b5 100644 --- a/src/libxl/xen_common.c +++ b/src/libxl/xen_common.c @@ -24,6 +24,7 @@ =20 #include =20 +#include "driver.h" #include "internal.h" #include "virerror.h" #include "virconf.h" @@ -1586,8 +1587,7 @@ xenMakeIPList(virNetDevIPInfo *guestIP) } =20 static int -xenFormatNet(virConnectPtr conn, - virConfValue *list, +xenFormatNet(virConfValue *list, virDomainNetDef *net, int hvm, const char *vif_typename) @@ -1649,13 +1649,21 @@ xenFormatNet(virConnectPtr conn, =20 case VIR_DOMAIN_NET_TYPE_NETWORK: { - virNetworkPtr network =3D virNetworkLookupByName(conn, net->data.n= etwork.name); + virConnectPtr conn =3D NULL; + virNetworkPtr network; char *bridge; - if (!network) { + + if (!(conn =3D virGetConnectNetwork())) + return -1; + + if (!(network =3D virNetworkLookupByName(conn, net->data.network.n= ame))) { virReportError(VIR_ERR_NO_NETWORK, "%s", net->data.network.name); + virObjectUnref(conn); return -1; } + virObjectUnref(conn); + bridge =3D virNetworkGetBridgeName(network); virObjectUnref(network); if (!bridge) { @@ -2304,7 +2312,6 @@ xenFormatSound(virConf *conf, virDomainDef *def) =20 static int xenFormatVif(virConf *conf, - virConnectPtr conn, virDomainDef *def, const char *vif_typename) { @@ -2317,8 +2324,7 @@ xenFormatVif(virConf *conf, netVal->list =3D NULL; =20 for (i =3D 0; i < def->nnets; i++) { - if (xenFormatNet(conn, netVal, def->nets[i], - hvm, vif_typename) < 0) + if (xenFormatNet(netVal, def->nets[i], hvm, vif_typename) < 0) return -1; } =20 @@ -2336,7 +2342,6 @@ xenFormatVif(virConf *conf, int xenFormatConfigCommon(virConf *conf, virDomainDef *def, - virConnectPtr conn, const char *nativeFormat) { if (xenFormatGeneralMeta(conf, def) < 0) @@ -2364,10 +2369,10 @@ xenFormatConfigCommon(virConf *conf, return -1; =20 if (STREQ(nativeFormat, XEN_CONFIG_FORMAT_XL)) { - if (xenFormatVif(conf, conn, def, "vif") < 0) + if (xenFormatVif(conf, def, "vif") < 0) return -1; } else if (STREQ(nativeFormat, XEN_CONFIG_FORMAT_XM)) { - if (xenFormatVif(conf, conn, def, "netfront") < 0) + if (xenFormatVif(conf, def, "netfront") < 0) return -1; } else { virReportError(VIR_ERR_INVALID_ARG, diff --git a/src/libxl/xen_common.h b/src/libxl/xen_common.h index b21046e959..95408fa896 100644 --- a/src/libxl/xen_common.h +++ b/src/libxl/xen_common.h @@ -61,7 +61,6 @@ int xenParseConfigCommon(virConf *conf, =20 int xenFormatConfigCommon(virConf *conf, virDomainDef *def, - virConnectPtr conn, const char *nativeFormat); =20 char *xenMakeIPList(virNetDevIPInfo *guestIP); diff --git a/src/libxl/xen_xl.c b/src/libxl/xen_xl.c index f175359307..53f6871efc 100644 --- a/src/libxl/xen_xl.c +++ b/src/libxl/xen_xl.c @@ -2041,14 +2041,14 @@ xenFormatXLDomainNamespaceData(virConf *conf, virDo= mainDef *def) } =20 virConf * -xenFormatXL(virDomainDef *def, virConnectPtr conn) +xenFormatXL(virDomainDef *def) { g_autoptr(virConf) conf =3D NULL; =20 if (!(conf =3D virConfNew())) return NULL; =20 - if (xenFormatConfigCommon(conf, def, conn, XEN_CONFIG_FORMAT_XL) < 0) + if (xenFormatConfigCommon(conf, def, XEN_CONFIG_FORMAT_XL) < 0) return NULL; =20 if (xenFormatXLOS(conf, def) < 0) diff --git a/src/libxl/xen_xl.h b/src/libxl/xen_xl.h index f8b1ebfde9..028b359b76 100644 --- a/src/libxl/xen_xl.h +++ b/src/libxl/xen_xl.h @@ -29,6 +29,6 @@ virDomainDef *xenParseXL(virConf *conn, virCaps *caps, virDomainXMLOption *xmlopt); =20 -virConf *xenFormatXL(virDomainDef *def, virConnectPtr); +virConf *xenFormatXL(virDomainDef *def); =20 const char *xenTranslateCPUFeature(const char *feature_name, bool from_lib= xl); diff --git a/src/libxl/xen_xm.c b/src/libxl/xen_xm.c index 5705a5ec0c..274b35153b 100644 --- a/src/libxl/xen_xm.c +++ b/src/libxl/xen_xm.c @@ -543,15 +543,14 @@ G_STATIC_ASSERT(MAX_VIRT_CPUS <=3D sizeof(1UL) * CHAR= _BIT); * Convert a virDomainDef object into an XM config record. */ virConf * -xenFormatXM(virConnectPtr conn, - virDomainDef *def) +xenFormatXM(virDomainDef *def) { g_autoptr(virConf) conf =3D NULL; =20 if (!(conf =3D virConfNew())) return NULL; =20 - if (xenFormatConfigCommon(conf, def, conn, XEN_CONFIG_FORMAT_XM) < 0) + if (xenFormatConfigCommon(conf, def, XEN_CONFIG_FORMAT_XM) < 0) return NULL; =20 if (xenFormatXMOS(conf, def) < 0) diff --git a/src/libxl/xen_xm.h b/src/libxl/xen_xm.h index afb4f51ff7..db2ae52581 100644 --- a/src/libxl/xen_xm.h +++ b/src/libxl/xen_xm.h @@ -26,7 +26,7 @@ #include "virconf.h" #include "domain_conf.h" =20 -virConf *xenFormatXM(virConnectPtr conn, virDomainDef *def); +virConf *xenFormatXM(virDomainDef *def); =20 virDomainDef *xenParseXM(virConf *conf, virCaps *caps, virDomainXMLOption *xmlopt); diff --git a/tests/xlconfigtest.c b/tests/xlconfigtest.c index 962a1f2c4b..00b6a355eb 100644 --- a/tests/xlconfigtest.c +++ b/tests/xlconfigtest.c @@ -65,17 +65,12 @@ testCompareParseXML(const char *xlcfg, const char *xml,= bool replaceVars) { g_autofree char *gotxlcfgData =3D NULL; g_autoptr(virConf) conf =3D NULL; - g_autoptr(virConnect) conn =3D NULL; int wrote =3D 4096; g_autoptr(virDomainDef) def =3D NULL; g_autofree char *replacedXML =3D NULL; =20 gotxlcfgData =3D g_new0(char, wrote); =20 - conn =3D virGetConnect(); - if (!conn) - return -1; - if (replaceVars) { if (!(replacedXML =3D testReplaceVarsXML(xml))) return -1; @@ -93,7 +88,7 @@ testCompareParseXML(const char *xlcfg, const char *xml, b= ool replaceVars) return -1; } =20 - if (!(conf =3D xenFormatXL(def, conn))) + if (!(conf =3D xenFormatXL(def))) return -1; =20 if (virConfWriteMem(gotxlcfgData, &wrote, conf) < 0) diff --git a/tests/xmconfigtest.c b/tests/xmconfigtest.c index dbf9f7a4c7..30ad49f8b1 100644 --- a/tests/xmconfigtest.c +++ b/tests/xmconfigtest.c @@ -39,16 +39,11 @@ testCompareParseXML(const char *xmcfg, const char *xml) { g_autofree char *gotxmcfgData =3D NULL; g_autoptr(virConf) conf =3D NULL; - g_autoptr(virConnect) conn =3D NULL; int wrote =3D 4096; g_autoptr(virDomainDef) def =3D NULL; =20 gotxmcfgData =3D g_new0(char, wrote); =20 - conn =3D virGetConnect(); - if (!conn) - return -1; - if (!(def =3D virDomainDefParseFile(xml, driver->xmlopt, NULL, VIR_DOMAIN_DEF_PARSE_INACTIVE))) return -1; @@ -58,7 +53,7 @@ testCompareParseXML(const char *xmcfg, const char *xml) return -1; } =20 - if (!(conf =3D xenFormatXM(conn, def))) + if (!(conf =3D xenFormatXM(def))) return -1; =20 if (virConfWriteMem(gotxmcfgData, &wrote, conf) < 0) --=20 2.44.0 _______________________________________________ Devel mailing list -- devel@lists.libvirt.org To unsubscribe send an email to devel-leave@lists.libvirt.org