[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