]> git.ipfire.org Git - thirdparty/libvirt.git/commitdiff
api: add public virNWFilterDefineXMLFlags() and remote protocol
authorKristina Hanicova <khanicov@redhat.com>
Fri, 20 Aug 2021 11:57:05 +0000 (13:57 +0200)
committerMichal Privoznik <mprivozn@redhat.com>
Fri, 20 Aug 2021 13:38:53 +0000 (15:38 +0200)
This new API function allows to define nwfilter with given flags.

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

index 44ca1b3fae3801279eee01b79b107d91b5902dc2..041b1fc33b154295bf14e2de25be6a066110d9e1 100644 (file)
@@ -85,6 +85,9 @@ virNWFilterPtr          virNWFilterLookupByUUIDString (virConnectPtr conn,
  */
 virNWFilterPtr          virNWFilterDefineXML    (virConnectPtr conn,
                                                  const char *xmlDesc);
+virNWFilterPtr          virNWFilterDefineXMLFlags(virConnectPtr conn,
+                                                  const char *xmlDesc,
+                                                  unsigned int flags);
 
 /*
  * Delete persistent nwfilter
index fd76e3af84951db05f57de39ef11ffa07f92d84c..1ec591ece96de9b319d8c0a8cba552edb96eeba9 100644 (file)
@@ -49,6 +49,11 @@ typedef virNWFilterPtr
 (*virDrvNWFilterDefineXML)(virConnectPtr conn,
                            const char *xmlDesc);
 
+typedef virNWFilterPtr
+(*virDrvNWFilterDefineXMLFlags)(virConnectPtr conn,
+                                const char *xmlDesc,
+                                unsigned int flags);
+
 typedef int
 (*virDrvNWFilterUndefine)(virNWFilterPtr nwfilter);
 
@@ -98,6 +103,7 @@ struct _virNWFilterDriver {
     virDrvNWFilterLookupByName nwfilterLookupByName;
     virDrvNWFilterLookupByUUID nwfilterLookupByUUID;
     virDrvNWFilterDefineXML nwfilterDefineXML;
+    virDrvNWFilterDefineXMLFlags nwfilterDefineXMLFlags;
     virDrvNWFilterUndefine nwfilterUndefine;
     virDrvNWFilterGetXMLDesc nwfilterGetXMLDesc;
     virDrvConnectListAllNWFilterBindings connectListAllNWFilterBindings;
index e2993858950f3581cce3159f5923a60e8f1bed22..bd583ee6825e4d53624105923f5a0c2f8c7db2fd 100644 (file)
@@ -406,6 +406,47 @@ virNWFilterDefineXML(virConnectPtr conn, const char *xmlDesc)
 }
 
 
+/**
+ * virNWFilterDefineXMLFlags:
+ * @conn: pointer to the hypervisor connection
+ * @xmlDesc: an XML description of the nwfilter
+ * @flags: extra flags; not used yet, so callers should always pass 0
+ *
+ * Define a new network filter, based on an XML description
+ * similar to the one returned by virNWFilterGetXMLDesc()
+ *
+ * virNWFilterFree should be used to free the resources after the
+ * nwfilter object is no longer needed.
+ *
+ * Returns a new nwfilter object or NULL in case of failure
+ */
+virNWFilterPtr
+virNWFilterDefineXMLFlags(virConnectPtr conn, const char *xmlDesc, unsigned int flags)
+{
+    VIR_DEBUG("conn=%p, xmlDesc=%s flags=0x%x", conn, NULLSTR(xmlDesc), flags);
+
+    virResetLastError();
+
+    virCheckConnectReturn(conn, NULL);
+    virCheckNonNullArgGoto(xmlDesc, error);
+    virCheckReadOnlyGoto(conn->flags, error);
+
+    if (conn->nwfilterDriver && conn->nwfilterDriver->nwfilterDefineXMLFlags) {
+        virNWFilterPtr ret;
+        ret = conn->nwfilterDriver->nwfilterDefineXMLFlags(conn, xmlDesc, flags);
+        if (!ret)
+            goto error;
+        return ret;
+    }
+
+    virReportUnsupportedError();
+
+ error:
+    virDispatchError(conn);
+    return NULL;
+}
+
+
 /**
  * virNWFilterUndefine:
  * @nwfilter: a nwfilter object
index 5678a13cda26c668dbbbd9e181f937fae1aeddb1..68f5e9c9007fb16d3c0d2892beaffec0becd1d71 100644 (file)
@@ -896,4 +896,9 @@ LIBVIRT_7.3.0 {
         virNodeDeviceCreate;
 } LIBVIRT_7.2.0;
 
+LIBVIRT_7.7.0 {
+    global:
+        virNWFilterDefineXMLFlags;
+} LIBVIRT_7.3.0;
+
 # .... define new API here using predicted next version number ....
index c03c68ec308ca901003d6b3ec53d08a47efa925c..9ee22e7e1504bded2a5796ae8ca5e60026eea78c 100644 (file)
@@ -8680,6 +8680,7 @@ static virNWFilterDriver nwfilter_driver = {
     .nwfilterLookupByName = remoteNWFilterLookupByName, /* 0.8.0 */
     .nwfilterGetXMLDesc           = remoteNWFilterGetXMLDesc, /* 0.8.0 */
     .nwfilterDefineXML            = remoteNWFilterDefineXML, /* 0.8.0 */
+    .nwfilterDefineXMLFlags       = remoteNWFilterDefineXMLFlags, /* 7.7.0 */
     .nwfilterUndefine             = remoteNWFilterUndefine, /* 0.8.0 */
     .connectNumOfNWFilters       = remoteConnectNumOfNWFilters, /* 0.8.0 */
     .connectListNWFilters        = remoteConnectListNWFilters, /* 0.8.0 */
index de69704b68e828049223002499e7ca0fbd98e0cf..56f610839e6f21fb1031b434f105c3d823b8da5a 100644 (file)
@@ -1627,6 +1627,15 @@ struct remote_nwfilter_define_xml_ret {
     remote_nonnull_nwfilter nwfilter;
 };
 
+struct remote_nwfilter_define_xml_flags_args {
+    remote_nonnull_string xml;
+    unsigned int flags;
+};
+
+struct remote_nwfilter_define_xml_flags_ret {
+    remote_nonnull_nwfilter nwfilter;
+};
+
 struct remote_nwfilter_undefine_args {
     remote_nonnull_nwfilter nwfilter;
 };
@@ -6784,6 +6793,13 @@ enum remote_procedure {
      * @priority: high
      * @acl: node_device:start
      */
-    REMOTE_PROC_NODE_DEVICE_CREATE = 430
+    REMOTE_PROC_NODE_DEVICE_CREATE = 430,
 
+    /**
+     * @generate: both
+     * @priority: high
+     * @acl: nwfilter:write
+     * @acl: nwfilter:save
+     */
+    REMOTE_PROC_NWFILTER_DEFINE_XML_FLAGS = 431
 };
index 6b46328adc28b9199269bb6476050d33a1709421..d51f12f78138ce04aef81e49d4e06a959db60012 100644 (file)
@@ -1174,6 +1174,13 @@ struct remote_nwfilter_define_xml_args {
 struct remote_nwfilter_define_xml_ret {
         remote_nonnull_nwfilter    nwfilter;
 };
+struct remote_nwfilter_define_xml_flags_args {
+        remote_nonnull_string      xml;
+        u_int                      flags;
+};
+struct remote_nwfilter_define_xml_flags_ret {
+        remote_nonnull_nwfilter    nwfilter;
+};
 struct remote_nwfilter_undefine_args {
         remote_nonnull_nwfilter    nwfilter;
 };
@@ -3623,4 +3630,5 @@ enum remote_procedure {
         REMOTE_PROC_NODE_DEVICE_DEFINE_XML = 428,
         REMOTE_PROC_NODE_DEVICE_UNDEFINE = 429,
         REMOTE_PROC_NODE_DEVICE_CREATE = 430,
+        REMOTE_PROC_NWFILTER_DEFINE_XML_FLAGS = 431,
 };