connman is not doing anything wrong here. The kernel is redefining IFF_LOWER_UP, because it thinks the libc doesn't define it yet (and glibc doesn't).
libc-compat.h is the way to solve these kind of issues. There also is https: //lkml.org/lkml/2017/3/12/238 which is very similar. I'll pick that instead. Cheers, Andre' On Thu, 2017-06-22 at 22:26 +0000, Khem Raj wrote: > I would rather fix the package instead of kernel headers unless kernel > community accepts this patch > > On Thu, Jun 22, 2017 at 11:14 AM André Draszik <g...@andred.net> wrote: > > > From: André Draszik <adras...@tycoint.com> > > > > musl _does_ define IFF_LOWER_UP DORMANT ECHO so we should > > prevent redefinition of these when on musl. > > > > As per the included patch, this can be triggered by > > (from connman 6to4.c): > > include <errno.h> > > include <stdio.h> > > include <stdlib.h> > > include <string.h> > > include <sys/socket.h> > > include <netinet/in.h> > > include <arpa/inet.h> > > include <net/if.h> > > include <linux/ip.h> > > include <linux/if_tunnel.h> > > include <linux/netlink.h> > > include <linux/rtnetlink.h> > > include <sys/ioctl.h> > > include <unistd.h> > > > > In file included from ../git/src/6to4.c:34:0: > > .../usr/include/linux/if.h:97:2: error: expected identifier before > > numeric > > constant > > IFF_LOWER_UP = 1<<16, /* __volatile__ */ > > ^ > > > > This is because at that time, IFF_LOWER_UP has been converted > > to 0x10000 already: > > enum net_device_flags { > > 0x10000 = 1<<16, > > 0x20000 = 1<<17, > > 0x40000 = 1<<18, > > > > }; > > > > By defining __UAPI_DEF_IF_NET_DEVICE_FLAGS_LOWER_UP_DORMANT_ECHO > > to 0, we avoid the duplicated definition. > > > > Signed-off-by: André Draszik <adras...@tycoint.com> > > --- > > ....h-musl-_does_-define-IFF_LOWER_UP-DORMAN.patch | 62 > > ++++++++++++++++++++++ > > .../linux-libc-headers/linux-libc-headers_4.10.bb | 1 + > > 2 files changed, 63 insertions(+) > > create mode 100644 > > meta/recipes-kernel/linux-libc-headers/linux-libc-headers/0001-libc- > > compat.h-musl-_does_-define-IFF_LOWER_UP-DORMAN.patch > > > > diff --git > > a/meta/recipes-kernel/linux-libc-headers/linux-libc-headers/0001-libc- > > compat.h-musl-_does_-define-IFF_LOWER_UP-DORMAN.patch > > b/meta/recipes-kernel/linux-libc-headers/linux-libc-headers/0001-libc- > > compat.h-musl-_does_-define-IFF_LOWER_UP-DORMAN.patch > > new file mode 100644 > > index 0000000000..fd1bb9edb8 > > --- /dev/null > > +++ > > b/meta/recipes-kernel/linux-libc-headers/linux-libc-headers/0001-libc- > > compat.h-musl-_does_-define-IFF_LOWER_UP-DORMAN.patch > > @@ -0,0 +1,62 @@ > > +From 08a04c025395b0580913285045f2af36ee0985db Mon Sep 17 00:00:00 2001 > > +From: =?UTF-8?q?Andr=C3=A9=20Draszik?= <adras...@tycoint.com> > > +Date: Thu, 15 Jun 2017 16:55:33 +0100 > > +Subject: [PATCH] libc-compat.h: musl _does_ define IFF_LOWER_UP DORMANT > > ECHO > > +MIME-Version: 1.0 > > +Content-Type: text/plain; charset=UTF-8 > > +Content-Transfer-Encoding: 8bit > > + > > +To trigger this (from connman 6to4.c): > > + include <errno.h> > > + include <stdio.h> > > + include <stdlib.h> > > + include <string.h> > > + include <sys/socket.h> > > + include <netinet/in.h> > > + include <arpa/inet.h> > > + include <net/if.h> > > + include <linux/ip.h> > > + include <linux/if_tunnel.h> > > + include <linux/netlink.h> > > + include <linux/rtnetlink.h> > > + include <sys/ioctl.h> > > + include <unistd.h> > > + > > +In file included from ../git/src/6to4.c:34:0: > > +/scratch/yocto/build-tgm-r3-poky-fpp-tgm.pyro/tmp/work/tgm_r3-poky- > > linux-musl/connman/1.33-git4+AUTOINC+aa5b3dc12b-r0/recipe- > > sysroot/usr/include/linux/if.h:97:2: > > error: expected identifier before numeric constant > > + IFF_LOWER_UP = 1<<16, /* __volatile__ */ > > + ^ > > + > > +This is because at that time, IFF_LOWER_UP has been converted > > +to 0x10000 already: > > +enum net_device_flags { > > + 0x10000 = 1<<16, > > + 0x20000 = 1<<17, > > + 0x40000 = 1<<18, > > + > > +}; > > + > > +Upstream-Status: Pending > > +Signed-off-by: André Draszik <adras...@tycoint.com> > > +Acked-by: Stephane Ayotte <sayo...@tycoint.com> > > +--- > > + include/uapi/linux/libc-compat.h | 3 ++- > > + 1 file changed, 2 insertions(+), 1 deletion(-) > > + > > +diff --git a/include/uapi/linux/libc-compat.h > > b/include/uapi/linux/libc-compat.h > > +index f11ec0e..2003ae4 100644 > > +--- a/include/uapi/linux/libc-compat.h > > ++++ b/include/uapi/linux/libc-compat.h > > +@@ -70,7 +70,8 @@ > > + #define __UAPI_DEF_IF_NET_DEVICE_FLAGS 0 > > + /* For the future if glibc adds IFF_LOWER_UP, IFF_DORMANT and IFF_ECHO > > */ > > + #ifndef __UAPI_DEF_IF_NET_DEVICE_FLAGS_LOWER_UP_DORMANT_ECHO > > +-#define __UAPI_DEF_IF_NET_DEVICE_FLAGS_LOWER_UP_DORMANT_ECHO 1 > > ++/* musl has these defined */ > > ++#define __UAPI_DEF_IF_NET_DEVICE_FLAGS_LOWER_UP_DORMANT_ECHO 0 > > + #endif /* __UAPI_DEF_IF_NET_DEVICE_FLAGS_LOWER_UP_DORMANT_ECHO */ > > + > > + #else /* _NET_IF_H */ > > +-- > > +2.11.0 > > + > > diff --git a/meta/recipes-kernel/linux-libc-headers/ > > linux-libc-headers_4.10.bb b/meta/recipes-kernel/linux-libc-headers/ > > linux-libc-headers_4.10.bb > > index 108446aa34..29262789a8 100644 > > --- a/meta/recipes-kernel/linux-libc-headers/linux-libc-headers_4.10.bb > > +++ b/meta/recipes-kernel/linux-libc-headers/linux-libc-headers_4.10.bb > > @@ -4,6 +4,7 @@ SRC_URI_append_libc-musl = "\ > > file://0001-libc-compat.h-fix-some-issues-arising-from-in6.h.patch > > \ > > file://0002-libc-compat.h-prevent-redefinition-of-struct- > > ethhdr.patch > > \ > > file://0003-remove-inclusion-of-sysinfo.h-in-kernel.h.patch \ > > + > > file://0001-libc-compat.h-musl-_does_-define-IFF_LOWER_UP-DORMAN.patch \ > > " > > > > SRC_URI[md5sum] = "b5e7f6b9b2fe1b6cc7bc56a3a0bfc090" > > -- > > 2.11.0 > > > > -- > > _______________________________________________ > > Openembedded-core mailing list > > Openembedded-core@lists.openembedded.org > > http://lists.openembedded.org/mailman/listinfo/openembedded-core > > -- _______________________________________________ Openembedded-core mailing list Openembedded-core@lists.openembedded.org http://lists.openembedded.org/mailman/listinfo/openembedded-core