> -----Original Message----- > From: Serge Hallyn [mailto:serge.hal...@ubuntu.com] > Sent: Thursday, November 14, 2013 5:24 PM > To: Purcareata Bogdan-B43198 > Cc: lxc-devel@lists.sourceforge.net > Subject: Re: [lxc-devel] [PATCH] setup_netdev: re-read ifindex in LXC_NET_PHYS > case > > Quoting Bogdan Purcareata (bogdan.purcare...@freescale.com): > > When moving an interface from the host netns to a container's, > > the ifindex might not remain the same. This happens when the > > index of the host interface is already assigned to another interface > > in the new netns. > > > > For veth/vlan/macvlan, virtual interfaces are first created on the host, > > and then moved in the container. Since they are created after all other > > interfaces are discovered, there is no chance for its assigned ifindex > > to be already present in a freshly created netns, because it's a greater > > number. > > > > However, when moving a physical interface, there is a chance that its > > ifindex in the host netns is not free in the new netns. The patch > > forces ifindex re-read for the LXC_NET_PHYS case to update the > > lxc_netdev structure. > > > > Signed-off-by: Bogdan Purcareata <bogdan.purcare...@freescale.com> > > Thanks. I wasn't ignoring your previous email, was rather still > considering :)
No problem, I thought about it a little more myself and gave it a shot at a fix attempt. Thank you for the feedback! > > Acked-by: Serge E. Hallyn <serge.hal...@ubuntu.com> > > Though really, in this case we should skip the subsequent > index_to_name, but that's not needed for correctness. > > > --- > > src/lxc/conf.c | 8 ++++++++ > > 1 file changed, 8 insertions(+) > > > > diff --git a/src/lxc/conf.c b/src/lxc/conf.c > > index 6b3f318..08b0d0f 100644 > > --- a/src/lxc/conf.c > > +++ b/src/lxc/conf.c > > @@ -1846,6 +1846,14 @@ static int setup_netdev(struct lxc_netdev *netdev) > > return 0; > > } > > > > + /* get the new ifindex in case of physical netdev */ > > + if (netdev->type == LXC_NET_PHYS) > > + if (!(netdev->ifindex = if_nametoindex(netdev->link))) { > > + ERROR("failed to get ifindex for %s", > > + netdev->link); > > + return -1; > > + } > > + > > /* retrieve the name of the interface */ > > if (!if_indextoname(netdev->ifindex, current_ifname)) { > > ERROR("no interface corresponding to index '%d'", > > -- > > 1.7.11.7 > > > > > > > > ---------------------------------------------------------------------------- > -- > > DreamFactory - Open Source REST & JSON Services for HTML5 & Native Apps > > OAuth, Users, Roles, SQL, NoSQL, BLOB Storage and External API Access > > Free app hosting. Or install the open source package on any LAMP server. > > Sign up and see examples for AngularJS, jQuery, Sencha Touch and Native! > > http://pubads.g.doubleclick.net/gampad/clk?id=63469471&iu=/4140/ostg.clktrk > > _______________________________________________ > > Lxc-devel mailing list > > Lxc-devel@lists.sourceforge.net > > https://lists.sourceforge.net/lists/listinfo/lxc-devel ------------------------------------------------------------------------------ DreamFactory - Open Source REST & JSON Services for HTML5 & Native Apps OAuth, Users, Roles, SQL, NoSQL, BLOB Storage and External API Access Free app hosting. Or install the open source package on any LAMP server. Sign up and see examples for AngularJS, jQuery, Sencha Touch and Native! http://pubads.g.doubleclick.net/gampad/clk?id=63469471&iu=/4140/ostg.clktrk _______________________________________________ Lxc-devel mailing list Lxc-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/lxc-devel