[lxc-devel] [PATCH] setup_netdev: re-read ifindex in LXC_NET_PHYS case

Serge Hallyn serge.hallyn at ubuntu.com
Thu Nov 14 15:24:23 UTC 2013


Quoting Bogdan Purcareata (bogdan.purcareata at 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.purcareata at freescale.com>

Thanks.  I wasn't ignoring your previous email, was rather still
considering :)

Acked-by: Serge E. Hallyn <serge.hallyn at 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 at lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/lxc-devel




More information about the lxc-devel mailing list