Carlos O'Donell wrote:
diff --git a/include/uapi/linux/in6.h b/include/uapi/linux/in6.h
index f79c372..a2b16a5 100644
--- a/include/uapi/linux/in6.h
+++ b/include/uapi/linux/in6.h
@@ -23,6 +23,13 @@
#include <linux/types.h>
+/* If a glibc-based userspace has already included in.h, then we will not
+ * define in6_addr (nor the defines), sockaddr_in6, or ipv6_mreq. The
+ * ABI used by the kernel and by glibc match exactly. Neither the kernel
+ * nor glibc should break this ABI without coordination.
+ */
+#ifndef _NETINET_IN_H
+
/*
* IPv6 address structure
*/
This should be
#if !defined(__GLIBC__) || !defined(_NETINET_IN_H)
@@ -30,12 +37,20 @@
struct in6_addr {
union {
__u8 u6_addr8[16];
+#if !defined(__GLIBC__) \
+ || (defined(__GLIBC__) && (defined(__USE_MISC) || defined(__USE_GNU))) \
+ || defined(__KERNEL__)
__be16 u6_addr16[8];
__be32 u6_addr32[4];
+#endif
} in6_u;
+#if !defined(__GLIBC__) \
+ || (defined(__GLIBC__) && (defined(__USE_MISC) || defined(__USE_GNU))) \
+ || defined(__KERNEL__)
#define s6_addr in6_u.u6_addr8
#define s6_addr16 in6_u.u6_addr16
#define s6_addr32 in6_u.u6_addr32
+#endif
};
2nd "if" be after s6_addr?
--yoshfuji