[lxc-devel] [PATCH] vlan network, can't reboot container
Vitaly Lavrov
vel21ripn at gmail.com
Mon Feb 24 14:23:30 UTC 2014
If you try to reboot the container having a network interface type vlan, then the container will be halted with error.
Tested on kernels 3.4.51, 3.10.x and 3.12.x
Suggest a patch to fix this problem and fix warnings for network interfaces type veth.
Patch for lxc-1.0.0
Signed-off-by: Vitaly Lavrov <vel21ripn at gmail.com>
---
src/lxc/conf.c | 14 +++++++++-----
1 file changed, 9 insertions(+), 5 deletions(-)
-------------- next part --------------
diff --git a/src/lxc/conf.c b/src/lxc/conf.c
index 046d8dd..f4d4f54 100644
--- a/src/lxc/conf.c
+++ b/src/lxc/conf.c
@@ -2910,9 +2910,11 @@ static int instanciate_vlan(struct lxc_handler *handler, struct lxc_netdev *netd
err = lxc_vlan_create(netdev->link, peer, netdev->priv.vlan_attr.vid);
if (err) {
- ERROR("failed to create vlan interface '%s' on '%s' : %s",
- peer, netdev->link, strerror(-err));
- return -1;
+ if(!(handler->conf->reboot && err == -EEXIST)) {
+ ERROR("failed to create vlan interface '%s' on '%s' : %s",
+ peer, netdev->link, strerror(-err));
+ return -1;
+ }
}
netdev->ifindex = if_nametoindex(peer);
@@ -3089,13 +3091,15 @@ void lxc_delete_network(struct lxc_handler *handler)
if (netdev_deconf[netdev->type](handler, netdev)) {
WARN("failed to destroy netdev");
}
+ if (!netdev->ifindex) continue;
+ if ( netdev->type == LXC_NET_VLAN || netdev->type == LXC_NET_VETH)
+ continue;
/* Recent kernel remove the virtual interfaces when the network
* namespace is destroyed but in case we did not moved the
* interface to the network namespace, we have to destroy it
*/
- if (netdev->ifindex != 0 &&
- lxc_netdev_delete_by_index(netdev->ifindex))
+ if (lxc_netdev_delete_by_index(netdev->ifindex))
WARN("failed to remove interface '%s'", netdev->name);
}
}
More information about the lxc-devel
mailing list