[libvirt] [PATCH 6/6] net: Add support for changing persistent networks to transient

Peter Krempa pkrempa at redhat.com
Thu Oct 25 15:18:30 UTC 2012


Until now, the network undefine API was able to undefine only inactive
networks. The restriction doesn't make sense any more so this patch
implements changing networks to transient.
---
 src/network/bridge_driver.c | 18 ++++++++++--------
 1 file changed, 10 insertions(+), 8 deletions(-)

diff --git a/src/network/bridge_driver.c b/src/network/bridge_driver.c
index e90444d..95aaea9 100644
--- a/src/network/bridge_driver.c
+++ b/src/network/bridge_driver.c
@@ -2856,6 +2856,7 @@ networkUndefine(virNetworkPtr net) {
     struct network_driver *driver = net->conn->networkPrivateData;
     virNetworkObjPtr network;
     int ret = -1;
+    bool active = false;

     networkDriverLock(driver);

@@ -2866,24 +2867,25 @@ networkUndefine(virNetworkPtr net) {
         goto cleanup;
     }

-    if (virNetworkObjIsActive(network)) {
-        virReportError(VIR_ERR_OPERATION_INVALID,
-                       "%s", _("network is still active"));
-        goto cleanup;
-    }
+    if (virNetworkObjIsActive(network))
+        active = true;

     if (virNetworkDeleteConfig(driver->networkConfigDir,
                                driver->networkAutostartDir,
                                network) < 0)
         goto cleanup;

+    network->persistent = 0;
+
     VIR_INFO("Undefining network '%s'", network->def->name);
-    if (networkRemoveInactive(driver, network) < 0) {
+    if (!active) {
+        if (networkRemoveInactive(driver, network) < 0) {
+            network = NULL;
+            goto cleanup;
+        }
         network = NULL;
-        goto cleanup;
     }

-    network = NULL;
     ret = 0;

 cleanup:
-- 
1.7.12.4




More information about the libvir-list mailing list