]> xenbits.xensource.com Git - libvirt.git/commitdiff
LXC: honour network devices link state
authorCédric Bosdonnat <cbosdonnat@suse.com>
Fri, 25 Jul 2014 13:24:29 +0000 (15:24 +0200)
committerCédric Bosdonnat <cbosdonnat@suse.com>
Mon, 5 Jan 2015 19:24:17 +0000 (20:24 +0100)
Don't activate LXC network device if <link state='down'/> has been set
in its configuration.

src/lxc/lxc_container.c

index 55096fb9b4f2f2e80d8c2953307330bd32ccef4c..380d136d285bdabbc943f426d6fc367720f60cf3 100644 (file)
@@ -536,31 +536,33 @@ static int lxcContainerRenameAndEnableInterfaces(virDomainDefPtr vmDef,
             VIR_FREE(ipStr);
         }
 
-        VIR_DEBUG("Enabling %s", newname);
-        rc = virNetDevSetOnline(newname, true);
-        if (rc < 0)
-            goto error_out;
+        if (netDef->linkstate != VIR_DOMAIN_NET_INTERFACE_LINK_STATE_DOWN) {
+            VIR_DEBUG("Enabling %s", newname);
+            rc = virNetDevSetOnline(newname, true);
+            if (rc < 0)
+                goto error_out;
 
-        /* Set the routes */
-        for (j = 0; j < netDef->nroutes; j++) {
-            virDomainNetRouteDefPtr route = netDef->routes[j];
-            if (VIR_SOCKET_ADDR_VALID(&route->to))
-                toStr = virSocketAddrFormat(&route->to);
-            else
-                if (VIR_STRDUP(toStr, "default") < 0)
+            /* Set the routes */
+            for (j = 0; j < netDef->nroutes; j++) {
+                virDomainNetRouteDefPtr route = netDef->routes[j];
+                if (VIR_SOCKET_ADDR_VALID(&route->to))
+                    toStr = virSocketAddrFormat(&route->to);
+                else
+                    if (VIR_STRDUP(toStr, "default") < 0)
+                        goto error_out;
+                viaStr = virSocketAddrFormat(&route->via);
+                VIR_DEBUG("Adding route %s/%d via %s", toStr, route->prefix, viaStr);
+
+                if (virNetDevAddRoute(newname, &route->to, route->prefix,
+                                      &route->via, 0) < 0) {
+                    virReportError(VIR_ERR_SYSTEM_ERROR,
+                                   _("Failed to add route %s/%d via %s"),
+                                   toStr, route->prefix, viaStr);
                     goto error_out;
-            viaStr = virSocketAddrFormat(&route->via);
-            VIR_DEBUG("Adding route %s/%d via %s", toStr, route->prefix, viaStr);
-
-            if (virNetDevAddRoute(newname, &route->to, route->prefix,
-                                  &route->via, 0) < 0) {
-                virReportError(VIR_ERR_SYSTEM_ERROR,
-                               _("Failed to add route %s/%d via %s"),
-                               toStr, route->prefix, viaStr);
-                goto error_out;
+                }
+                VIR_FREE(toStr);
+                VIR_FREE(viaStr);
             }
-            VIR_FREE(toStr);
-            VIR_FREE(viaStr);
         }
 
         VIR_FREE(newname);