Subject: Re: [PATCH net-next 2/4] xfrm: simplify xfrm_address_t use

From: Jiri Benc <[email-masked]>
Date: Tue, 7 Apr 2015 18:29:58 +0200

On Tue, 7 Apr 2015 09:01:33 -0700, Stephen Hemminger wrote:
> This change to the uapi header ends up breaking the iproute2 build
> when the headers are used.
> 
> gcc -Wall -Wstrict-prototypes  -Wmissing-prototypes -Wmissing-declarations -Wold-style-definition -Wformat=2 -O2 -I../include -DRESOLVE_HOSTNAMES -DLIBDIR=\"/usr/lib\" -DCONFDIR=\"/etc/iproute2\" -D_GNU_SOURCE -DHAVE_SETNS   -c -o xfrm_monitor.o xfrm_monitor.c
> In file included from ../include/linux/xfrm.h:4:0,
>                  from xfrm_monitor.c:30:
> ../include/linux/in6.h:131:26: error: expected identifier before numeric constant
>  #define IPPROTO_HOPOPTS  0 /* IPv6 hop-by-hop options */
>                           ^
> In file included from /usr/include/resolv.h:57:0,
>                  from ../include/utils.h:6,
>                  from xfrm_monitor.c:31:
> /usr/include/netinet/in.h:209:8: error: redefinition of ‘struct in6_addr’

This was fixed by commit cfd280c91253c ("net: sync some IP headers with
glibc"). The obvious problem is that you need glibc with its part of
the fix applied, too:
https://sourceware.org/git/gitweb.cgi?p=glibc.git;a=commitdiff;h=6c82a2f8

Seems to be present in glibc 2.19. I agree this is unfortunate.

What could be done that should work with earlier glibc versions is
including "utils.h" before <linux/xfrm.h> in xfrm_monitor.c. Could you
try that? Would it be an acceptable workaround?

Thanks,

 Jiri

-- 
Jiri Benc