Wire up the ListAll, LookupByPortDev and GetXMLDesc APIs to allow the
virsh nwfilter-binding-list & nwfilter-binding-dumpxml commands to
work.
Reviewed-by: John Ferlan <jferlan(a)redhat.com>
Signed-off-by: Daniel P. Berrangé <berrange(a)redhat.com>
---
src/nwfilter/nwfilter_driver.c | 76 ++++++++++++++++++++++++++++++++++
1 file changed, 76 insertions(+)
diff --git a/src/nwfilter/nwfilter_driver.c b/src/nwfilter/nwfilter_driver.c
index 3b111e3dc7..6bfb584b09 100644
--- a/src/nwfilter/nwfilter_driver.c
+++ b/src/nwfilter/nwfilter_driver.c
@@ -715,6 +715,79 @@ nwfilterTeardownFilter(virDomainNetDefPtr net)
}
+static virNWFilterBindingPtr
+nwfilterBindingLookupByPortDev(virConnectPtr conn,
+ const char *portdev)
+{
+ virNWFilterBindingPtr ret = NULL;
+ virNWFilterBindingObjPtr obj;
+ virNWFilterBindingDefPtr def;
+
+ obj = virNWFilterBindingObjListFindByPortDev(driver->bindings,
+ portdev);
+ if (!obj)
+ goto cleanup;
+
+ def = virNWFilterBindingObjGetDef(obj);
+ if (virNWFilterBindingLookupByPortDevEnsureACL(conn, def) < 0)
+ goto cleanup;
+
+ ret = virGetNWFilterBinding(conn, def->portdevname, def->filter);
+
+ cleanup:
+ virNWFilterBindingObjEndAPI(&obj);
+ return ret;
+}
+
+
+static int
+nwfilterConnectListAllNWFilterBindings(virConnectPtr conn,
+ virNWFilterBindingPtr **bindings,
+ unsigned int flags)
+{
+ int ret;
+
+ virCheckFlags(0, -1);
+
+ if (virConnectListAllNWFilterBindingsEnsureACL(conn) < 0)
+ return -1;
+
+ ret = virNWFilterBindingObjListExport(driver->bindings,
+ conn,
+ bindings,
+ virConnectListAllNWFilterBindingsCheckACL);
+
+ return ret;
+}
+
+
+static char *
+nwfilterBindingGetXMLDesc(virNWFilterBindingPtr binding,
+ unsigned int flags)
+{
+ virNWFilterBindingObjPtr obj;
+ virNWFilterBindingDefPtr def;
+ char *ret = NULL;
+
+ virCheckFlags(0, NULL);
+
+ obj = virNWFilterBindingObjListFindByPortDev(driver->bindings,
+ binding->portdev);
+ if (!obj)
+ goto cleanup;
+
+ def = virNWFilterBindingObjGetDef(obj);
+ if (virNWFilterBindingGetXMLDescEnsureACL(binding->conn, def) < 0)
+ goto cleanup;
+
+ ret = virNWFilterBindingDefFormat(def);
+
+ cleanup:
+ virNWFilterBindingObjEndAPI(&obj);
+ return ret;
+}
+
+
static virNWFilterDriver nwfilterDriver = {
.name = "nwfilter",
.connectNumOfNWFilters = nwfilterConnectNumOfNWFilters, /* 0.8.0 */
@@ -725,6 +798,9 @@ static virNWFilterDriver nwfilterDriver = {
.nwfilterDefineXML = nwfilterDefineXML, /* 0.8.0 */
.nwfilterUndefine = nwfilterUndefine, /* 0.8.0 */
.nwfilterGetXMLDesc = nwfilterGetXMLDesc, /* 0.8.0 */
+ .nwfilterBindingLookupByPortDev = nwfilterBindingLookupByPortDev, /* 4.5.0 */
+ .connectListAllNWFilterBindings = nwfilterConnectListAllNWFilterBindings, /* 4.5.0
*/
+ .nwfilterBindingGetXMLDesc = nwfilterBindingGetXMLDesc, /* 4.5.0 */
};
--
2.17.0