Quoting Dongsheng Yang (yangds.f...@cn.fujitsu.com): > In netlink, we can set the dest_name of netdev when move netdev > between namespaces in one netlink request. And moving a netdev of > a src_name to a netdev with a dest_name is a common usecase. > > So this patch add a parametaer to lxc_network_move_by_index() to > indicate the dest_name for the movement. NULL means same with > the src_name. > > Signed-off-by: Dongsheng Yang <yangds.f...@cn.fujitsu.com>
Acked-by: Serge E. Hallyn <serge.hal...@ubuntu.com> > --- > src/lxc/conf.c | 4 ++-- > src/lxc/lxc_unshare.c | 2 +- > src/lxc/lxc_user_nic.c | 2 +- > src/lxc/network.c | 11 ++++++++--- > src/lxc/network.h | 4 ++-- > 5 files changed, 14 insertions(+), 9 deletions(-) > > diff --git a/src/lxc/conf.c b/src/lxc/conf.c > index 5e61c35..f7824ed 100644 > --- a/src/lxc/conf.c > +++ b/src/lxc/conf.c > @@ -2800,7 +2800,7 @@ void restore_phys_nics_to_netns(int netnsfd, struct > lxc_conf *conf) > } > for (i=0; i<conf->num_savednics; i++) { > struct saved_nic *s = &conf->saved_nics[i]; > - if (lxc_netdev_move_by_index(s->ifindex, 1)) > + if (lxc_netdev_move_by_index(s->ifindex, 1, NULL)) > WARN("Error moving nic index:%d back to host netns", > s->ifindex); > } > @@ -3382,7 +3382,7 @@ int lxc_assign_network(struct lxc_list *network, pid_t > pid) > if (!netdev->ifindex) > continue; > > - err = lxc_netdev_move_by_index(netdev->ifindex, pid); > + err = lxc_netdev_move_by_index(netdev->ifindex, pid, NULL); > if (err) { > ERROR("failed to move '%s' to the container : %s", > netdev->link, strerror(-err)); > diff --git a/src/lxc/lxc_unshare.c b/src/lxc/lxc_unshare.c > index fc6f9db..59a231e 100644 > --- a/src/lxc/lxc_unshare.c > +++ b/src/lxc/lxc_unshare.c > @@ -240,7 +240,7 @@ int main(int argc, char *argv[]) > > if (my_iflist) { > for (tmpif = my_iflist; tmpif; tmpif = tmpif->mi_next) { > - if (lxc_netdev_move_by_name(tmpif->mi_ifname, pid) < 0) > + if (lxc_netdev_move_by_name(tmpif->mi_ifname, pid, > NULL) < 0) > fprintf(stderr,"Could not move interface %s > into container %d: %s\n", tmpif->mi_ifname, pid, strerror(errno)); > } > } > diff --git a/src/lxc/lxc_user_nic.c b/src/lxc/lxc_user_nic.c > index 02f2a2c..a990994 100644 > --- a/src/lxc/lxc_user_nic.c > +++ b/src/lxc/lxc_user_nic.c > @@ -268,7 +268,7 @@ static bool create_nic(char *nic, char *br, int pid, char > **cnic) > } > > /* pass veth2 to target netns */ > - ret = lxc_netdev_move_by_name(veth2buf, pid); > + ret = lxc_netdev_move_by_name(veth2buf, pid, NULL); > if (ret < 0) { > fprintf(stderr, "Error moving %s to netns %d\n", veth2buf, pid); > goto out_del; > diff --git a/src/lxc/network.c b/src/lxc/network.c > index 909f3fe..4c577b1 100644 > --- a/src/lxc/network.c > +++ b/src/lxc/network.c > @@ -103,7 +103,7 @@ struct rt_req { > struct rtmsg rt; > }; > > -int lxc_netdev_move_by_index(int ifindex, pid_t pid) > +int lxc_netdev_move_by_index(int ifindex, pid_t pid, const char* ifname) > { > struct nl_handler nlh; > struct nlmsg *nlmsg = NULL; > @@ -129,6 +129,11 @@ int lxc_netdev_move_by_index(int ifindex, pid_t pid) > if (nla_put_u32(nlmsg, IFLA_NET_NS_PID, pid)) > goto out; > > + if (ifname != NULL) { > + if (nla_put_string(nlmsg, IFLA_IFNAME, ifname)) > + goto out; > + } > + > err = netlink_transaction(&nlh, nlmsg, nlmsg); > out: > netlink_close(&nlh); > @@ -136,7 +141,7 @@ out: > return err; > } > > -int lxc_netdev_move_by_name(const char *ifname, pid_t pid) > +int lxc_netdev_move_by_name(const char *ifname, pid_t pid, const char* > newname) > { > int index; > > @@ -147,7 +152,7 @@ int lxc_netdev_move_by_name(const char *ifname, pid_t pid) > if (!index) > return -EINVAL; > > - return lxc_netdev_move_by_index(index, pid); > + return lxc_netdev_move_by_index(index, pid, newname); > } > > int lxc_netdev_delete_by_index(int ifindex) > diff --git a/src/lxc/network.h b/src/lxc/network.h > index a8e0612..768489d 100644 > --- a/src/lxc/network.h > +++ b/src/lxc/network.h > @@ -31,8 +31,8 @@ extern int lxc_convert_mac(char *macaddr, struct sockaddr > *sockaddr); > /* > * Move a device between namespaces > */ > -extern int lxc_netdev_move_by_index(int ifindex, pid_t pid); > -extern int lxc_netdev_move_by_name(const char *ifname, pid_t pid); > +extern int lxc_netdev_move_by_index(int ifindex, pid_t pid, const char* > ifname); > +extern int lxc_netdev_move_by_name(const char *ifname, pid_t pid, const > char* newname); > > /* > * Delete a network device > -- > 1.8.4.2 > _______________________________________________ lxc-devel mailing list lxc-devel@lists.linuxcontainers.org http://lists.linuxcontainers.org/listinfo/lxc-devel