[libvirt] [PATCHv5 16/18] LXC: honour network devices link state

Cédric Bosdonnat cbosdonnat at suse.com
Tue Dec 30 10:27:25 UTC 2014


Don't activate LXC network device if <link state='down'/> has been set
in its configuration.
---
 src/lxc/lxc_container.c | 46 ++++++++++++++++++++++++----------------------
 1 file changed, 24 insertions(+), 22 deletions(-)

diff --git a/src/lxc/lxc_container.c b/src/lxc/lxc_container.c
index 55096fb..380d136 100644
--- a/src/lxc/lxc_container.c
+++ b/src/lxc/lxc_container.c
@@ -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);
-- 
2.1.2




More information about the libvir-list mailing list