[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