]> git.ipfire.org Git - thirdparty/libvirt.git/commitdiff
api: add public virNetworkDefineXMLFlags() and remote protocol
authorKristina Hanicova <khanicov@redhat.com>
Mon, 23 Aug 2021 16:50:08 +0000 (18:50 +0200)
committerMichal Privoznik <mprivozn@redhat.com>
Tue, 24 Aug 2021 13:46:28 +0000 (15:46 +0200)
This new API allows to define network with given flags.

Signed-off-by: Kristina Hanicova <khanicov@redhat.com>
Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
include/libvirt/libvirt-network.h
src/driver-network.h
src/libvirt-network.c
src/libvirt_public.syms
src/remote/remote_driver.c
src/remote/remote_protocol.x
src/remote_protocol-structs

index c9ff0a49ed70267e1acf7f425a86fa42dd69f0f8..be9d6eb2cbdef8631c064ea80198eff1d7637aa7 100644 (file)
@@ -124,6 +124,9 @@ virNetworkPtr           virNetworkCreateXML     (virConnectPtr conn,
  */
 virNetworkPtr           virNetworkDefineXML     (virConnectPtr conn,
                                                  const char *xmlDesc);
+virNetworkPtr           virNetworkDefineXMLFlags(virConnectPtr conn,
+                                                 const char *xmlDesc,
+                                                 unsigned int flags);
 
 /*
  * Delete persistent network
index 040ef383b37991904080abf2000f354eb8af7610..d31d7c667db40a88b83882f9354cbb52bf118df8 100644 (file)
@@ -73,6 +73,11 @@ typedef virNetworkPtr
 (*virDrvNetworkDefineXML)(virConnectPtr conn,
                           const char *xml);
 
+typedef virNetworkPtr
+(*virDrvNetworkDefineXMLFlags)(virConnectPtr conn,
+                               const char *xml,
+                               unsigned int flags);
+
 typedef int
 (*virDrvNetworkUndefine)(virNetworkPtr network);
 
@@ -172,6 +177,7 @@ struct _virNetworkDriver {
     virDrvNetworkLookupByName networkLookupByName;
     virDrvNetworkCreateXML networkCreateXML;
     virDrvNetworkDefineXML networkDefineXML;
+    virDrvNetworkDefineXMLFlags networkDefineXMLFlags;
     virDrvNetworkUndefine networkUndefine;
     virDrvNetworkUpdate networkUpdate;
     virDrvNetworkCreate networkCreate;
index 145487d5992b73d7ae5b1fa2dc8ef6095b616bc0..b633f49ca987a33ece4ee5c7a916d0030472adf8 100644 (file)
@@ -465,6 +465,47 @@ virNetworkDefineXML(virConnectPtr conn, const char *xml)
 }
 
 
+/**
+ * virNetworkDefineXMLFlags:
+ * @conn: pointer to the hypervisor connection
+ * @xml: the XML description for the network, preferably in UTF-8
+ * @flags: extra flags; not used yet, so callers should always pass 0
+ *
+ * Define an inactive persistent virtual network or modify an existing
+ * persistent one from the XML description.
+ *
+ * virNetworkFree should be used to free the resources after the
+ * network object is no longer needed.
+ *
+ * Returns NULL in case of error, a pointer to the network otherwise
+ */
+virNetworkPtr
+virNetworkDefineXMLFlags(virConnectPtr conn, const char *xml, unsigned int flags)
+{
+    VIR_DEBUG("conn=%p, xml=%s, flags=0x%x", conn, NULLSTR(xml), flags);
+
+    virResetLastError();
+
+    virCheckConnectReturn(conn, NULL);
+    virCheckReadOnlyGoto(conn->flags, error);
+    virCheckNonNullArgGoto(xml, error);
+
+    if (conn->networkDriver && conn->networkDriver->networkDefineXMLFlags) {
+        virNetworkPtr ret;
+        ret = conn->networkDriver->networkDefineXMLFlags(conn, xml, flags);
+        if (!ret)
+            goto error;
+        return ret;
+    }
+
+    virReportUnsupportedError();
+
+ error:
+    virDispatchError(conn);
+    return NULL;
+}
+
+
 /**
  * virNetworkUndefine:
  * @network: pointer to a defined network
index 68f5e9c9007fb16d3c0d2892beaffec0becd1d71..3a5fa7cb09923d8c26e988706e6c38d40320c157 100644 (file)
@@ -899,6 +899,7 @@ LIBVIRT_7.3.0 {
 LIBVIRT_7.7.0 {
     global:
         virNWFilterDefineXMLFlags;
+        virNetworkDefineXMLFlags;
 } LIBVIRT_7.3.0;
 
 # .... define new API here using predicted next version number ....
index 9ee22e7e1504bded2a5796ae8ca5e60026eea78c..b64a86af6310f644f73d5709f4e89ead1f553895 100644 (file)
@@ -8553,6 +8553,7 @@ static virNetworkDriver network_driver = {
     .networkLookupByName = remoteNetworkLookupByName, /* 0.3.0 */
     .networkCreateXML = remoteNetworkCreateXML, /* 0.3.0 */
     .networkDefineXML = remoteNetworkDefineXML, /* 0.3.0 */
+    .networkDefineXMLFlags = remoteNetworkDefineXMLFlags, /* 7.7.0 */
     .networkUndefine = remoteNetworkUndefine, /* 0.3.0 */
     .networkUpdate = remoteNetworkUpdate, /* 0.10.2 */
     .networkCreate = remoteNetworkCreate, /* 0.3.0 */
index 56f610839e6f21fb1031b434f105c3d823b8da5a..df1b126b0cc6aaee21bc89aefef9c3655f147743 100644 (file)
@@ -1538,6 +1538,15 @@ struct remote_network_define_xml_ret {
     remote_nonnull_network net;
 };
 
+struct remote_network_define_xml_flags_args {
+    remote_nonnull_string xml;
+    unsigned int flags;
+};
+
+struct remote_network_define_xml_flags_ret {
+    remote_nonnull_network net;
+};
+
 struct remote_network_undefine_args {
     remote_nonnull_network net;
 };
@@ -6801,5 +6810,13 @@ enum remote_procedure {
      * @acl: nwfilter:write
      * @acl: nwfilter:save
      */
-    REMOTE_PROC_NWFILTER_DEFINE_XML_FLAGS = 431
+    REMOTE_PROC_NWFILTER_DEFINE_XML_FLAGS = 431,
+
+    /**
+     * @generate: both
+     * @priority: high
+     * @acl: network:write
+     * @acl: network:save
+     */
+    REMOTE_PROC_NETWORK_DEFINE_XML_FLAGS = 432
 };
index d51f12f78138ce04aef81e49d4e06a959db60012..dad83361fa6fc0739c99f7d141b8bf63529940c1 100644 (file)
@@ -1104,6 +1104,13 @@ struct remote_network_define_xml_args {
 struct remote_network_define_xml_ret {
         remote_nonnull_network     net;
 };
+struct remote_network_define_xml_flags_args {
+        remote_nonnull_string      xml;
+        u_int                    flags;
+};
+struct remote_network_define_xml_flags_ret {
+        remote_nonnull_network     net;
+};
 struct remote_network_undefine_args {
         remote_nonnull_network     net;
 };
@@ -3631,4 +3638,5 @@ enum remote_procedure {
         REMOTE_PROC_NODE_DEVICE_UNDEFINE = 429,
         REMOTE_PROC_NODE_DEVICE_CREATE = 430,
         REMOTE_PROC_NWFILTER_DEFINE_XML_FLAGS = 431,
+        REMOTE_PROC_NETWORK_DEFINE_XML_FLAGS = 432,
 };