1 From 2872f5d8bcef84e62b15b37ba4ffeccfb6402dad Mon Sep 17 00:00:00 2001
2 From: rofl0r <retnyg@gmx.net>
3 Date: Wed, 22 Jan 2014 00:48:28 +0100
4 Subject: [PATCH 1/3] libc-compat.h: fix some issues arising from in6.h
6 namely redefinition of some structs provided by netinet/in.h.
8 Signed-off-by: Khem Raj <raj.khem@gmail.com>
9 Upstream-Status: Submitted
11 include/uapi/linux/libc-compat.h | 25 ++++++++-----------------
12 1 file changed, 8 insertions(+), 17 deletions(-)
14 Index: linux-4.4/include/uapi/linux/libc-compat.h
15 ===================================================================
16 --- linux-4.4.orig/include/uapi/linux/libc-compat.h
17 +++ linux-4.4/include/uapi/linux/libc-compat.h
19 #ifndef _UAPI_LIBC_COMPAT_H
20 #define _UAPI_LIBC_COMPAT_H
22 -/* We have included glibc headers... */
23 -#if defined(__GLIBC__)
24 +#ifndef __KERNEL__ /* we're used from userspace */
26 -/* Coordinate with glibc netinet/in.h header. */
27 +/* Coordinate with libc netinet/in.h header. */
28 #if defined(_NETINET_IN_H)
30 -/* GLIBC headers included first so don't define anything
31 +/* LIBC headers included first so don't define anything
32 * that would already be defined. */
33 #define __UAPI_DEF_IN_ADDR 0
34 #define __UAPI_DEF_IN_IPPROTO 0
36 #define __UAPI_DEF_IN_CLASS 0
38 #define __UAPI_DEF_IN6_ADDR 0
39 -/* The exception is the in6_addr macros which must be defined
40 - * if the glibc code didn't define them. This guard matches
41 - * the guard in glibc/inet/netinet/in.h which defines the
42 - * additional in6_addr macros e.g. s6_addr16, and s6_addr32. */
43 -#if defined(__USE_MISC) || defined (__USE_GNU)
44 #define __UAPI_DEF_IN6_ADDR_ALT 0
46 -#define __UAPI_DEF_IN6_ADDR_ALT 1
48 #define __UAPI_DEF_SOCKADDR_IN6 0
49 #define __UAPI_DEF_IPV6_MREQ 0
50 #define __UAPI_DEF_IPPROTO_V6 0
52 #define __UAPI_DEF_IN6_PKTINFO 0
53 #define __UAPI_DEF_IP6_MTUINFO 0
56 +#else /* defined(_NETINET_IN_H) */
58 /* Linux headers included first, and we must define everything
59 - * we need. The expectation is that glibc will check the
60 + * we need. The expectation is that libc will check the
61 * __UAPI_DEF_* defines and adjust appropriately. */
62 #define __UAPI_DEF_IN_ADDR 1
63 #define __UAPI_DEF_IN_IPPROTO 1
65 #define __UAPI_DEF_IN_CLASS 1
67 #define __UAPI_DEF_IN6_ADDR 1
68 -/* We unconditionally define the in6_addr macros and glibc must
69 +/* We unconditionally define the in6_addr macros and libc must
71 #define __UAPI_DEF_IN6_ADDR_ALT 1
72 #define __UAPI_DEF_SOCKADDR_IN6 1
74 /* If we did not see any headers from any supported C libraries,
75 * or we are being included in the kernel, then define everything
77 -#else /* !defined(__GLIBC__) */
78 +#else /* __KERNEL__ */
80 /* Definitions for in.h */
81 #define __UAPI_DEF_IN_ADDR 1
83 /* Definitions for xattr.h */
84 #define __UAPI_DEF_XATTR 1
86 -#endif /* __GLIBC__ */
87 +#endif /* __KERNEL__ */
89 #endif /* _UAPI_LIBC_COMPAT_H */