]> xenbits.xensource.com Git - libvirt.git/commitdiff
bridge_driver: Introduce networkObjFromNetwork
authorMichal Privoznik <mprivozn@redhat.com>
Wed, 28 Aug 2013 12:34:34 +0000 (14:34 +0200)
committerMichal Privoznik <mprivozn@redhat.com>
Thu, 29 Aug 2013 09:03:33 +0000 (11:03 +0200)
Similarly to qemu_driver.c, we can join often repeating code of looking
up network into one function: networkObjFromNetwork.

Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
src/network/bridge_driver.c

index 62ae0b7eb02218ad95c10545e139152ce92d7c2a..3a8be90f6c76f8fb44d0d5411e65ac8663eb7771 100644 (file)
@@ -112,6 +112,27 @@ static int networkUnplugBandwidth(virNetworkObjPtr net,
 
 static virNetworkDriverStatePtr driverState = NULL;
 
+static virNetworkObjPtr
+networkObjFromNetwork(virNetworkPtr net)
+{
+    virNetworkDriverStatePtr driver = net->conn->networkPrivateData;
+    virNetworkObjPtr network;
+    char uuidstr[VIR_UUID_STRING_BUFLEN];
+
+    networkDriverLock(driver);
+    network = virNetworkFindByUUID(&driver->networks, net->uuid);
+    networkDriverUnlock(driver);
+
+    if (!network) {
+        virUUIDFormat(net->uuid, uuidstr);
+        virReportError(VIR_ERR_NO_NETWORK,
+                       _("no network with matching uuid '%s' (%s)"),
+                       uuidstr, net->name);
+    }
+
+    return network;
+}
+
 static char *
 networkDnsmasqLeaseFileNameDefault(const char *netname)
 {
@@ -2260,17 +2281,11 @@ cleanup:
 
 static int networkIsActive(virNetworkPtr net)
 {
-    virNetworkDriverStatePtr driver = net->conn->networkPrivateData;
     virNetworkObjPtr obj;
     int ret = -1;
 
-    networkDriverLock(driver);
-    obj = virNetworkFindByUUID(&driver->networks, net->uuid);
-    networkDriverUnlock(driver);
-    if (!obj) {
-        virReportError(VIR_ERR_NO_NETWORK, NULL);
-        goto cleanup;
-    }
+    if (!(obj = networkObjFromNetwork(net)))
+        return ret;
 
     if (virNetworkIsActiveEnsureACL(net->conn, obj->def) < 0)
         goto cleanup;
@@ -2285,17 +2300,11 @@ cleanup:
 
 static int networkIsPersistent(virNetworkPtr net)
 {
-    virNetworkDriverStatePtr driver = net->conn->networkPrivateData;
     virNetworkObjPtr obj;
     int ret = -1;
 
-    networkDriverLock(driver);
-    obj = virNetworkFindByUUID(&driver->networks, net->uuid);
-    networkDriverUnlock(driver);
-    if (!obj) {
-        virReportError(VIR_ERR_NO_NETWORK, NULL);
-        goto cleanup;
-    }
+    if (!(obj = networkObjFromNetwork(net)))
+        return ret;
 
     if (virNetworkIsPersistentEnsureACL(net->conn, obj->def) < 0)
         goto cleanup;
@@ -2832,22 +2841,14 @@ cleanup:
 static char *networkGetXMLDesc(virNetworkPtr net,
                                unsigned int flags)
 {
-    virNetworkDriverStatePtr driver = net->conn->networkPrivateData;
     virNetworkObjPtr network;
     virNetworkDefPtr def;
     char *ret = NULL;
 
     virCheckFlags(VIR_NETWORK_XML_INACTIVE, NULL);
 
-    networkDriverLock(driver);
-    network = virNetworkFindByUUID(&driver->networks, net->uuid);
-    networkDriverUnlock(driver);
-
-    if (!network) {
-        virReportError(VIR_ERR_NO_NETWORK,
-                       "%s", _("no network with matching uuid"));
-        goto cleanup;
-    }
+    if (!(network = networkObjFromNetwork(net)))
+        return ret;
 
     if (virNetworkGetXMLDescEnsureACL(net->conn, network->def) < 0)
         goto cleanup;
@@ -2866,19 +2867,11 @@ cleanup:
 }
 
 static char *networkGetBridgeName(virNetworkPtr net) {
-    virNetworkDriverStatePtr driver = net->conn->networkPrivateData;
     virNetworkObjPtr network;
     char *bridge = NULL;
 
-    networkDriverLock(driver);
-    network = virNetworkFindByUUID(&driver->networks, net->uuid);
-    networkDriverUnlock(driver);
-
-    if (!network) {
-        virReportError(VIR_ERR_NO_NETWORK,
-                       "%s", _("no network with matching id"));
-        goto cleanup;
-    }
+    if (!(network = networkObjFromNetwork(net)))
+        return bridge;
 
     if (virNetworkGetBridgeNameEnsureACL(net->conn, network->def) < 0)
         goto cleanup;
@@ -2900,18 +2893,11 @@ cleanup:
 
 static int networkGetAutostart(virNetworkPtr net,
                              int *autostart) {
-    virNetworkDriverStatePtr driver = net->conn->networkPrivateData;
     virNetworkObjPtr network;
     int ret = -1;
 
-    networkDriverLock(driver);
-    network = virNetworkFindByUUID(&driver->networks, net->uuid);
-    networkDriverUnlock(driver);
-    if (!network) {
-        virReportError(VIR_ERR_NO_NETWORK,
-                       "%s", _("no network with matching uuid"));
-        goto cleanup;
-    }
+    if (!(network = networkObjFromNetwork(net)))
+        return ret;
 
     if (virNetworkGetAutostartEnsureACL(net->conn, network->def) < 0)
         goto cleanup;