[meta-virtualization] [PATCH] LXC: setup_netdev: re-read ifindex in LXC_NET_PHYS case
Bruce Ashfield
bruce.ashfield at gmail.com
Thu Nov 14 21:01:13 PST 2013
On Thu, Nov 14, 2013 at 11:04 AM, Bogdan Purcareata
<bogdan.purcareata at freescale.com> wrote:
> Patch to fix interface netns transition when
> assigning a physical interface to a container.
> Pushed to the upstream LXC repo, to be included
> in future versions of LXC.
Looks fine to me.
merged.
Bruce
>
> Further details in included patch description.
>
> Signed-off-by: Bogdan Purcareata <bogdan.purcareata at freescale.com>
> ---
> ...tdev-re-read-ifindex-in-LXC_NET_PHYS-case.patch | 49 ++++++++++++++++++++++
> recipes-containers/lxc/lxc_0.9.0.bb | 5 ++-
> 2 files changed, 52 insertions(+), 2 deletions(-)
> create mode 100644 recipes-containers/lxc/files/lxc-0.9.0-setup_netdev-re-read-ifindex-in-LXC_NET_PHYS-case.patch
>
> diff --git a/recipes-containers/lxc/files/lxc-0.9.0-setup_netdev-re-read-ifindex-in-LXC_NET_PHYS-case.patch b/recipes-containers/lxc/files/lxc-0.9.0-setup_netdev-re-read-ifindex-in-LXC_NET_PHYS-case.patch
> new file mode 100644
> index 0000000..5cebb50
> --- /dev/null
> +++ b/recipes-containers/lxc/files/lxc-0.9.0-setup_netdev-re-read-ifindex-in-LXC_NET_PHYS-case.patch
> @@ -0,0 +1,49 @@
> +From 8712c58ab896f072cf95e3ffa3ceac1fa10f6295 Mon Sep 17 00:00:00 2001
> +From: Bogdan Purcareata <bogdan.purcareata at freescale.com>
> +Date: Thu, 14 Nov 2013 12:31:55 +0200
> +Subject: [PATCH] setup_netdev: re-read ifindex in LXC_NET_PHYS case
> +
> +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, since its 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>
> +Signed-off-by: Serge Hallyn <serge.hallyn at ubuntu.com>
> +---
> + 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
> +
> diff --git a/recipes-containers/lxc/lxc_0.9.0.bb b/recipes-containers/lxc/lxc_0.9.0.bb
> index 8f7736b..03d4589 100644
> --- a/recipes-containers/lxc/lxc_0.9.0.bb
> +++ b/recipes-containers/lxc/lxc_0.9.0.bb
> @@ -24,8 +24,9 @@ RDEPENDS_${PN} = " \
> SRC_URI = "http://linuxcontainers.org/downloads/${PN}-${PV}.tar.gz \
> file://lxc-0.9.0-disable-udhcp-from-busybox-template.patch \
> file://lxc-0.9.0-enable-chroot-chpasswd-functionality-for-busybox-hosts.patch \
> - file://lxc-0.9.0-check-when-bind-mounting-libdirs.patch \
> - file://lxc-0.9.0-don-t-let-LXC_PATH-end-in-failure.patch \
> + file://lxc-0.9.0-check-when-bind-mounting-libdirs.patch \
> + file://lxc-0.9.0-don-t-let-LXC_PATH-end-in-failure.patch \
> + file://lxc-0.9.0-setup_netdev-re-read-ifindex-in-LXC_NET_PHYS-case.patch \
> "
> SRC_URI[md5sum] = "8552a4479090616f4bc04d8473765fc9"
> SRC_URI[sha256sum] = "1e1767eae6cc5fbf892c0e193d25da420ba19f2db203716c38f7cdea3b654120"
> --
> 1.7.11.7
>
>
> _______________________________________________
> meta-virtualization mailing list
> meta-virtualization at yoctoproject.org
> https://lists.yoctoproject.org/listinfo/meta-virtualization
--
"Thou shalt not follow the NULL pointer, for chaos and madness await
thee at its end"
More information about the meta-virtualization
mailing list