From: fli Date: Tue, 1 Dec 2015 11:17:29 +0000 (+0800) Subject: lxc: let lxc-start support wlan phys X-Git-Tag: lxc-2.0.0.beta1~39 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=f2e206ff4770fd2e7d642481c873dffafb4627d8;p=thirdparty%2Flxc.git lxc: let lxc-start support wlan phys The commit: e5848d395cb only made netdev_move_by_name support wlan, instead of netdev_move_by_index. Given netdev_move_by_name is a wrapper of netdev_move_by_index, so here replacing all of the call to lxc_netdev_move_by_index with lxc_netdev_move_by_name to let lxc-start support wlan phys. Signed-off-by: fupan li Acked-by: Serge E. Hallyn --- diff --git a/src/lxc/conf.c b/src/lxc/conf.c index 142444e87..2ebf87619 100644 --- a/src/lxc/conf.c +++ b/src/lxc/conf.c @@ -2623,6 +2623,7 @@ void restore_phys_nics_to_netns(int netnsfd, struct lxc_conf *conf) { int i, ret, oldfd; char path[MAXPATHLEN]; + char ifname[IFNAMSIZ]; if (netnsfd < 0) return; @@ -2643,9 +2644,13 @@ void restore_phys_nics_to_netns(int netnsfd, struct lxc_conf *conf) } for (i=0; inum_savednics; i++) { struct saved_nic *s = &conf->saved_nics[i]; - if (lxc_netdev_move_by_index(s->ifindex, 1, NULL)) - WARN("Error moving nic index:%d back to host netns", - s->ifindex); + /* retrieve the name of the interface */ + if (!if_indextoname(s->ifindex, ifname)) { + WARN("no interface corresponding to index '%d'", s->ifindex); + continue; + } + if (lxc_netdev_move_by_name(ifname, 1, NULL)) + WARN("Error moving nic name:%s back to host netns", ifname); } if (setns(oldfd, 0) != 0) SYSERROR("Failed to re-enter monitor's netns"); @@ -3225,6 +3230,7 @@ int lxc_assign_network(struct lxc_list *network, pid_t pid) { struct lxc_list *iterator; struct lxc_netdev *netdev; + char ifname[IFNAMSIZ]; int am_root = (getuid() == 0); int err; @@ -3245,7 +3251,13 @@ int lxc_assign_network(struct lxc_list *network, pid_t pid) if (!netdev->ifindex) continue; - err = lxc_netdev_move_by_index(netdev->ifindex, pid, NULL); + /* retrieve the name of the interface */ + if (!if_indextoname(netdev->ifindex, ifname)) { + ERROR("no interface corresponding to index '%d'", netdev->ifindex); + return -1; + } + + err = lxc_netdev_move_by_name(ifname, pid, NULL); if (err) { ERROR("failed to move '%s' to the container : %s", netdev->link, strerror(-err));