From nobody Sun Feb 8 20:34:15 2026 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of redhat.com designates 216.205.24.124 as permitted sender) client-ip=216.205.24.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 216.205.24.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=1629976951; cv=none; d=zohomail.com; s=zohoarc; b=f/biIXC7+1AxXpFFJkIhm/iH0TmJbMPIu4I6boe0uBJqvFbJ1xnVnJGEzL3IlI0B9xIAkSTR+FfRTx3qxIL/n1Sr2suR2oS4EFGGxwc1gzjMxNX92DP3uCA/JIY1kvQPfFz+zi+pOJakC5/UT6bRSauIty7xlIi52OnPZ/OIN0I= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1629976951; 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=pLSWiGTtsJHbKYSYha3k06TpbwAwpkvAHVKIb0S033k=; b=kx9wbRXZgsoPVMq0/1L3V56CF5zXJI1JAN2Q/R6ialZSmuQfuq8gEz03HqXiMay3Y+1Ko+9FJ/jka4t/k9nB0u7/2hZlWvYWMIKc0DSq159Z69Pwt117yZOyN8pA3/wT+PBultc8Z2nFvrksQmverMMdwUkqTrAb+AUdbeZiB3g= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of redhat.com designates 216.205.24.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 [216.205.24.124]) by mx.zohomail.com with SMTPS id 1629976951569274.44965061944197; Thu, 26 Aug 2021 04:22:31 -0700 (PDT) Received: from mimecast-mx01.redhat.com (mimecast-mx01.redhat.com [209.132.183.4]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-209-acJaGmMhP4SIpyOho2mQPA-1; Thu, 26 Aug 2021 07:22:29 -0400 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 mimecast-mx01.redhat.com (Postfix) with ESMTPS id 5E42C1082929; Thu, 26 Aug 2021 11:22:24 +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 309FD5C25A; Thu, 26 Aug 2021 11:22: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 F21864A7CB; Thu, 26 Aug 2021 11:22:23 +0000 (UTC) Received: from smtp.corp.redhat.com (int-mx08.intmail.prod.int.phx2.redhat.com [10.5.11.23]) by lists01.pubmisc.prod.ext.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id 17QBM0H2005548 for ; Thu, 26 Aug 2021 07:22:00 -0400 Received: by smtp.corp.redhat.com (Postfix) id 0C13819D9F; Thu, 26 Aug 2021 11:22:00 +0000 (UTC) Received: from localhost.localdomain.com (unknown [10.43.2.2]) by smtp.corp.redhat.com (Postfix) with ESMTP id 63FC519C59 for ; Thu, 26 Aug 2021 11:21:59 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1629976950; 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=pLSWiGTtsJHbKYSYha3k06TpbwAwpkvAHVKIb0S033k=; b=fW+M/txfaPZ91TaHON6mb/L7iYAQpdoxw3TeLkfoyfwBM864SE+h4yfXY0dSmxLJecqUrr xNzplORyNV5gKmwxZ7ygt/qH6WQ8ZilkZWDJQjAusx36/ujdT6/3LRKuajUaVIEZgRttVg qhnEjJPXkf0QeA2QxMxHlcrtSVG/LFE= X-MC-Unique: acJaGmMhP4SIpyOho2mQPA-1 From: Kristina Hanicova To: libvir-list@redhat.com Subject: [PATCH 1/6] api: add public virNetworkCreateXMLFlags() and remote protocol Date: Thu, 26 Aug 2021 13:21:39 +0200 Message-Id: In-Reply-To: References: MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.84 on 10.5.11.23 X-loop: libvir-list@redhat.com 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: , Sender: libvir-list-bounces@redhat.com Errors-To: libvir-list-bounces@redhat.com X-Scanned-By: MIMEDefang 2.79 on 10.5.11.16 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: 1629976952760100002 Content-Type: text/plain; charset="utf-8" This new API creates network with given flags. Signed-off-by: Kristina Hanicova --- include/libvirt/libvirt-network.h | 3 +++ src/driver-network.h | 6 +++++ src/libvirt-network.c | 41 +++++++++++++++++++++++++++++++ src/libvirt_public.syms | 5 ++++ src/remote/remote_driver.c | 1 + src/remote/remote_protocol.x | 18 +++++++++++++- src/remote_protocol-structs | 8 ++++++ 7 files changed, 81 insertions(+), 1 deletion(-) diff --git a/include/libvirt/libvirt-network.h b/include/libvirt/libvirt-ne= twork.h index 0a49c1888e..0be4d64b75 100644 --- a/include/libvirt/libvirt-network.h +++ b/include/libvirt/libvirt-network.h @@ -118,6 +118,9 @@ virNetworkPtr virNetworkLookupByUUIDString = (virConnectPtr conn, */ virNetworkPtr virNetworkCreateXML (virConnectPtr conn, const char *xmlDesc); +virNetworkPtr virNetworkCreateXMLFlags(virConnectPtr conn, + const char *xmlDesc, + unsigned int flags); =20 typedef enum { VIR_NETWORK_DEFINE_VALIDATE =3D 1 << 0, /* Validate the XML document a= gainst schema */ diff --git a/src/driver-network.h b/src/driver-network.h index d31d7c667d..99efd4c8aa 100644 --- a/src/driver-network.h +++ b/src/driver-network.h @@ -69,6 +69,11 @@ typedef virNetworkPtr (*virDrvNetworkCreateXML)(virConnectPtr conn, const char *xmlDesc); =20 +typedef virNetworkPtr +(*virDrvNetworkCreateXMLFlags)(virConnectPtr conn, + const char *xmlDesc, + unsigned int flags); + typedef virNetworkPtr (*virDrvNetworkDefineXML)(virConnectPtr conn, const char *xml); @@ -176,6 +181,7 @@ struct _virNetworkDriver { virDrvNetworkLookupByUUID networkLookupByUUID; virDrvNetworkLookupByName networkLookupByName; virDrvNetworkCreateXML networkCreateXML; + virDrvNetworkCreateXMLFlags networkCreateXMLFlags; virDrvNetworkDefineXML networkDefineXML; virDrvNetworkDefineXMLFlags networkDefineXMLFlags; virDrvNetworkUndefine networkUndefine; diff --git a/src/libvirt-network.c b/src/libvirt-network.c index 5829996301..32ade1a2aa 100644 --- a/src/libvirt-network.c +++ b/src/libvirt-network.c @@ -427,6 +427,47 @@ virNetworkCreateXML(virConnectPtr conn, const char *xm= lDesc) } =20 =20 +/** + * virNetworkCreateXMLFlags: + * @conn: pointer to the hypervisor connection + * @xmlDesc: an XML description of the network + * @flags: extra flags; not used yet, so callers should always pass 0 + * + * Create and start a new virtual network, based on an XML description + * similar to the one returned by virNetworkGetXMLDesc() + * + * virNetworkFree should be used to free the resources after the + * network object is no longer needed. + * + * Returns a new network object or NULL in case of failure + */ +virNetworkPtr +virNetworkCreateXMLFlags(virConnectPtr conn, const char *xmlDesc, unsigned= int flags) +{ + VIR_DEBUG("conn=3D%p, xmlDesc=3D%s, flags=3D0x%x", conn, NULLSTR(xmlDe= sc), flags); + + virResetLastError(); + + virCheckConnectReturn(conn, NULL); + virCheckNonNullArgGoto(xmlDesc, error); + virCheckReadOnlyGoto(conn->flags, error); + + if (conn->networkDriver && conn->networkDriver->networkCreateXMLFlags)= { + virNetworkPtr ret; + ret =3D conn->networkDriver->networkCreateXMLFlags(conn, xmlDesc, = flags); + if (!ret) + goto error; + return ret; + } + + virReportUnsupportedError(); + + error: + virDispatchError(conn); + return NULL; +} + + /** * virNetworkDefineXML: * @conn: pointer to the hypervisor connection diff --git a/src/libvirt_public.syms b/src/libvirt_public.syms index 3a5fa7cb09..a5fd889ccc 100644 --- a/src/libvirt_public.syms +++ b/src/libvirt_public.syms @@ -902,4 +902,9 @@ LIBVIRT_7.7.0 { virNetworkDefineXMLFlags; } LIBVIRT_7.3.0; =20 +LIBVIRT_7.8.0 { + global: + virNetworkCreateXMLFlags; +} LIBVIRT_7.7.0; + # .... define new API here using predicted next version number .... diff --git a/src/remote/remote_driver.c b/src/remote/remote_driver.c index b64a86af63..9bb796db01 100644 --- a/src/remote/remote_driver.c +++ b/src/remote/remote_driver.c @@ -8552,6 +8552,7 @@ static virNetworkDriver network_driver =3D { .networkLookupByUUID =3D remoteNetworkLookupByUUID, /* 0.3.0 */ .networkLookupByName =3D remoteNetworkLookupByName, /* 0.3.0 */ .networkCreateXML =3D remoteNetworkCreateXML, /* 0.3.0 */ + .networkCreateXMLFlags =3D remoteNetworkCreateXMLFlags, /* 7.8.0 */ .networkDefineXML =3D remoteNetworkDefineXML, /* 0.3.0 */ .networkDefineXMLFlags =3D remoteNetworkDefineXMLFlags, /* 7.7.0 */ .networkUndefine =3D remoteNetworkUndefine, /* 0.3.0 */ diff --git a/src/remote/remote_protocol.x b/src/remote/remote_protocol.x index df1b126b0c..42a1714afb 100644 --- a/src/remote/remote_protocol.x +++ b/src/remote/remote_protocol.x @@ -1530,6 +1530,15 @@ struct remote_network_create_xml_ret { remote_nonnull_network net; }; =20 +struct remote_network_create_xml_flags_args { + remote_nonnull_string xml; + unsigned int flags; +}; + +struct remote_network_create_xml_flags_ret { + remote_nonnull_network net; +}; + struct remote_network_define_xml_args { remote_nonnull_string xml; }; @@ -6818,5 +6827,12 @@ enum remote_procedure { * @acl: network:write * @acl: network:save */ - REMOTE_PROC_NETWORK_DEFINE_XML_FLAGS =3D 432 + REMOTE_PROC_NETWORK_DEFINE_XML_FLAGS =3D 432, + + /** + * @generate: both + * @acl: network:write + * @acl: network:start + */ + REMOTE_PROC_NETWORK_CREATE_XML_FLAGS =3D 433 }; diff --git a/src/remote_protocol-structs b/src/remote_protocol-structs index dad83361fa..100cdbc6b7 100644 --- a/src/remote_protocol-structs +++ b/src/remote_protocol-structs @@ -1098,6 +1098,13 @@ struct remote_network_create_xml_args { struct remote_network_create_xml_ret { remote_nonnull_network net; }; +struct remote_network_create_xml_flags_args { + remote_nonnull_string xml; + u_int flags; +}; +struct remote_network_create_xml_flags_ret { + remote_nonnull_network net; +}; struct remote_network_define_xml_args { remote_nonnull_string xml; }; @@ -3639,4 +3646,5 @@ enum remote_procedure { REMOTE_PROC_NODE_DEVICE_CREATE =3D 430, REMOTE_PROC_NWFILTER_DEFINE_XML_FLAGS =3D 431, REMOTE_PROC_NETWORK_DEFINE_XML_FLAGS =3D 432, + REMOTE_PROC_NETWORK_CREATE_XML_FLAGS =3D 433, }; --=20 2.31.1