From nobody Mon Feb 9 03:53:13 2026 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=fail; 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=fail(p=none dis=none) header.from=smartx.com Return-Path: Received: from lists.libvirt.org (lists.libvirt.org [8.43.85.245]) by mx.zohomail.com with SMTPS id 1751642457939883.0586951705152; Fri, 4 Jul 2025 08:20:57 -0700 (PDT) Received: by lists.libvirt.org (Postfix, from userid 996) id ED61A157A; Fri, 4 Jul 2025 11:20:56 -0400 (EDT) Received: from lists.libvirt.org (localhost [IPv6:::1]) by lists.libvirt.org (Postfix) with ESMTP id 038F41488; Fri, 4 Jul 2025 11:20:31 -0400 (EDT) Received: by lists.libvirt.org (Postfix, from userid 996) id 38D4F145F; Fri, 4 Jul 2025 11:20:27 -0400 (EDT) Received: from mail-pl1-f179.google.com (mail-pl1-f179.google.com [209.85.214.179]) (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 07FFE1445 for ; Fri, 4 Jul 2025 11:20:24 -0400 (EDT) Received: by mail-pl1-f179.google.com with SMTP id d9443c01a7336-235ea292956so10502375ad.1 for ; Fri, 04 Jul 2025 08:20:23 -0700 (PDT) Received: from Hyman-Dev-Euler.zelin.local ([45.8.186.102]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-23c84350221sm23628205ad.83.2025.07.04.08.20.21 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 04 Jul 2025 08:20:22 -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=-0.8 required=5.0 tests=DKIM_INVALID,DKIM_SIGNED, HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI,RCVD_IN_DNSWL_NONE, RCVD_IN_MSPIKE_H3,RCVD_IN_MSPIKE_WL,RCVD_IN_VALIDITY_RPBL_BLOCKED, RCVD_IN_VALIDITY_SAFE_BLOCKED,SPF_HELO_NONE autolearn=unavailable autolearn_force=no version=3.4.4 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=smartx-com.20230601.gappssmtp.com; s=20230601; t=1751642423; x=1752247223; 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=NAmTsAEG/RKtYkVKAZOjiOXxkHky3cRTDXvfjk3jnuw=; b=EP9lWSNFwYAW54fHvcuqeAX95WcuTqykQrV9+X3X/CiSYp92fcBGf7yxTUsp+xooh9 bzBqvS5AVmm1DrPhXfOYhYLhddMAK4tqoO/ruv7j0FsqqkQIumD96BOo38tXo88IWESp RHVibZ4zJ2QCA3x5UlMfCNBPC+b5lCKIHGTO7xcYL67/2OH2tQe0t0ZajKVb4p5w+ioG gsk3eVfT/EQrLy3PZFjSMeePcMAPwJ+fq5hfLnqjqMsaLqt6zRp9O2WAPis55fojZgsJ ua22xbpDC2y5XDxA4j+Y82MaTGKiKcWh+cD7Yt8r2vh0y9V1JwpYlxLU1urt/GN+gcoP 99xQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1751642423; x=1752247223; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=NAmTsAEG/RKtYkVKAZOjiOXxkHky3cRTDXvfjk3jnuw=; b=KwcBUuqjFM97bYb6n/2tbYAHaJ3rZkT7IrUFjNFNnzoHScP/P6eYDZOq7YaAv7SppK 6vyxo+/+Azlnn0fdlzV9DKgGiQlbhTFi/9Lp18NGO1aYkOJw/7O5V42EEAwVIBsPuT5J JMKsMcKUfXbdI3o0NXDVg6Y0GORfmMPT03xZm2xnW4hpL2IPw07yv+ccJ2/dgBBTUpza sjrgO5lH7Y0vKbePH1pscip1dSDrcMN77qIrZ2AymmNyOFUypYaVPMFHIzDq9dJUpuvb wypS6Z1sfhnT1wMHEzJ/AmamZOtjVAXZA+bI3EBgCPkdvwy4k8nvujcAcjlij2tbyoa3 JDvQ== X-Gm-Message-State: AOJu0YzGqOSoo+1wa9T/FYfACuvCpNj03M0sZT/Moc/Nu6YtzOYQiDgT mtRZ0jjIyNVfAKcEFrUQKpmNj4tZAmT/PEoq36DP1y7XFfeBhoBLY3Rpj+3bu6A/JJjph/VD3lt EdKI7UhwFZw== X-Gm-Gg: ASbGncusZArvlSnQ0AUkT536cY8wT9Vr3bckN1xbkTBAM6sTuz6o0fsWieRuLarcVzt yvf1NP3FEBEKxNEi+FPzTA9Wmiii59XwiiuojkvJN8HEkO6NWdMEnqVs1e67zuzcLyFXd96h3N8 yBYAZQ7Ad0fOfXqXpPwa7RzApc3Pw+yQCyJ7H8F/IKZ9JJhGf/llBj49GArkdI4NBq8V9QDfMgy LV0Sh1eXGvroxJRt2Iu+6HIYVpCNbPwTlQkn0xuixneQ/KPKtGVU/IyydUbgKvIFP5st3L4ZdAr P+aJa9YBBcQ8xBbVIIzFCv/ZXtxVjxQyCGDA/ogoxC89UzqQzMtaY2UcYqunCUZhO8b5IlHf5am bDyU4rzXj X-Google-Smtp-Source: AGHT+IEvsArKoWLNHhQXZcEOpDwmgMHXRypEnMU1lWEQni4L3uvY/ls+lbPebP3mlM57NgkuhU7wiw== X-Received: by 2002:a17:902:e752:b0:234:d10d:9f9f with SMTP id d9443c01a7336-23c8759606dmr38429105ad.40.1751642422802; Fri, 04 Jul 2025 08:20:22 -0700 (PDT) From: yong.huang@smartx.com To: devel@lists.libvirt.org Subject: [RFC 1/4] qemu_passt: Make logFile backend-specific Date: Fri, 4 Jul 2025 22:57:56 +0800 Message-Id: X-Mailer: git-send-email 2.27.0 In-Reply-To: References: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Message-ID-Hash: 3PHJR3MVAA632TTB3Y6V322XDJRBSION X-Message-ID-Hash: 3PHJR3MVAA632TTB3Y6V322XDJRBSION X-MailFrom: yong.huang@smartx.com X-Mailman-Rule-Hits: nonmember-moderation 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 CC: yong.huang@smartx.com 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: X-ZohoMail-DKIM: fail (Header signature does not verify) X-ZM-MESSAGEID: 1751642460784116600 Content-Type: text/plain; charset="utf-8" From: Hyman Huang The 'logFile' field within the virDomainNetBackend struct is backend-specific. Refactor the code by introducing a union struct to encapsulate backend-specific fields, rather than using a plain field. This refactoring is also a prerequisite for implementing the 'openvswitch' backend of vhostuser interface in upcoming commits. --- src/conf/domain_conf.c | 18 +++++++++++++----- src/conf/domain_conf.h | 7 +++++-- src/qemu/qemu_passt.c | 4 ++-- 3 files changed, 20 insertions(+), 9 deletions(-) diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c index 1e24e41a48..9862a76023 100644 --- a/src/conf/domain_conf.c +++ b/src/conf/domain_conf.c @@ -2917,7 +2917,8 @@ virDomainNetDefFree(virDomainNetDef *def) =20 g_free(def->backend.tap); g_free(def->backend.vhost); - g_free(def->backend.logFile); + if (def->backend.type =3D=3D VIR_DOMAIN_NET_BACKEND_PASST) + g_free(def->backend.data.passt.logFile); virDomainNetTeamingInfoFree(def->teaming); g_free(def->virtPortProfile); g_free(def->script); @@ -9797,7 +9798,8 @@ virDomainNetBackendParseXML(xmlNodePtr node, return -1; } =20 - def->backend.logFile =3D virXMLPropString(node, "logFile"); + if (def->backend.type =3D=3D VIR_DOMAIN_NET_BACKEND_PASST) + def->backend.data.passt.logFile =3D virXMLPropString(node, "logFil= e"); =20 if (tap) def->backend.tap =3D virFileSanitizePath(tap); @@ -20798,10 +20800,14 @@ virDomainNetBackendIsEqual(virDomainNetBackend *s= rc, { if (src->type !=3D dst->type || STRNEQ_NULLABLE(src->tap, dst->tap) || - STRNEQ_NULLABLE(src->vhost, dst->vhost) || - STRNEQ_NULLABLE(src->logFile, dst->logFile)) { + STRNEQ_NULLABLE(src->vhost, dst->vhost)) { return false; } + + if (src->type =3D=3D VIR_DOMAIN_NET_BACKEND_PASST) { + return !(STRNEQ_NULLABLE(src->data.passt.logFile, dst->data.passt.= logFile)); + } + return true; } =20 @@ -24933,7 +24939,9 @@ virDomainNetBackendFormat(virBuffer *buf, } virBufferEscapeString(&attrBuf, " tap=3D'%s'", backend->tap); virBufferEscapeString(&attrBuf, " vhost=3D'%s'", backend->vhost); - virBufferEscapeString(&attrBuf, " logFile=3D'%s'", backend->logFile); + if (backend->type =3D=3D VIR_DOMAIN_NET_BACKEND_PASST) { + virBufferEscapeString(&attrBuf, " logFile=3D'%s'", backend->data.p= asst.logFile); + } virXMLFormatElement(buf, "backend", &attrBuf, NULL); } =20 diff --git a/src/conf/domain_conf.h b/src/conf/domain_conf.h index 6997cf7c09..6d43654f0a 100644 --- a/src/conf/domain_conf.h +++ b/src/conf/domain_conf.h @@ -1074,8 +1074,11 @@ struct _virDomainNetBackend { virDomainNetBackendType type; char *tap; char *vhost; - /* The following are currently only valid/used when backend type=3D'pa= sst' */ - char *logFile; /* path to logfile used by passt process */ + union { + struct { + char *logFile; /* path to logfile used by passt process */ + } passt; + } data; }; =20 struct _virDomainNetPortForwardRange { diff --git a/src/qemu/qemu_passt.c b/src/qemu/qemu_passt.c index fcc34de384..d74fc2ee47 100644 --- a/src/qemu/qemu_passt.c +++ b/src/qemu/qemu_passt.c @@ -226,8 +226,8 @@ qemuPasstStart(virDomainObj *vm, if (net->sourceDev) virCommandAddArgList(cmd, "--interface", net->sourceDev, NULL); =20 - if (net->backend.logFile) - virCommandAddArgList(cmd, "--log-file", net->backend.logFile, NULL= ); + if (net->backend.data.passt.logFile) + virCommandAddArgList(cmd, "--log-file", net->backend.data.passt.lo= gFile, NULL); =20 /* Add IP address info */ for (i =3D 0; i < net->guestIP.nips; i++) { --=20 2.27.0