diff options
-rw-r--r-- | ChangeLog | 15 | ||||
-rw-r--r-- | sysdeps/unix/sysv/linux/bits/in.h | 16 |
2 files changed, 26 insertions, 5 deletions
diff --git a/ChangeLog b/ChangeLog index 8697644058..f006508efd 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,4 +1,17 @@ -2016-06-03 Carlos O'Donell <carlos@redhat.com> +2016-06-07 Carlos O'Donell <carlos@redhat.com> + + [BZ #20214] + * sysdeps/unix/sysv/linux/bits/in.h + [defined _UAPI_LINUX_IN6_H || defined _UAPI_IPV6_H + || defined _LINUX_IN6_H || defined _IPV6_H] (__USE_KERNEL_IPV6_DEFS): + Define to 1. + [!(defined _UAPI_LINUX_IN6_H || defined _UAPI_IPV6_H + || defined _LINUX_IN6_H || defined _IPV6_H)] (__USE_KERNEL_IPV6_DEFS): + Define to 0. + [!__USE_KERNEL_IPV6_DEFS] (IPV6_ADD_MEMBERSHIP): Define. + [!__USE_KERNEL_IPV6_DEFS] (IPV6_DROP_MEMBERSHIP): Define. + +2016-06-06 Carlos O'Donell <carlos@redhat.com> [BZ #20198] * stdlib/Makefile (tests): Add tst-quick_exit, and diff --git a/sysdeps/unix/sysv/linux/bits/in.h b/sysdeps/unix/sysv/linux/bits/in.h index 9bdadf3c8f..4d70a6baba 100644 --- a/sysdeps/unix/sysv/linux/bits/in.h +++ b/sysdeps/unix/sysv/linux/bits/in.h @@ -25,8 +25,14 @@ kernel then we will not define the IPv6 IPPROTO_* defines, in6_addr (nor the defines), sockaddr_in6, or ipv6_mreq. Same for in6_ptkinfo or ip6_mtuinfo in linux/ipv6.h. The ABI used by the linux-kernel and glibc match exactly. - Neither the linux kernel nor glibc should break this ABI without coordination. */ -#if defined _UAPI_LINUX_IN6_H || defined _UAPI_IPV6_H + Neither the linux kernel nor glibc should break this ABI without coordination. + In upstream kernel 56c176c9 the _UAPI prefix was stripped so we need to check + for _LINUX_IN6_H and _IPV6_H now, and keep checking the old versions for + maximum backwards compatibility. */ +#if defined _UAPI_LINUX_IN6_H \ + || defined _UAPI_IPV6_H \ + || defined _LINUX_IN6_H \ + || defined _IPV6_H /* This is not quite the same API since the kernel always defines s6_addr16 and s6_addr32. This is not a violation of POSIX since POSIX says "at least the following member" and that holds true. */ @@ -209,8 +215,10 @@ struct in_pktinfo #define IPV6_TCLASS 67 /* Obsolete synonyms for the above. */ -#define IPV6_ADD_MEMBERSHIP IPV6_JOIN_GROUP -#define IPV6_DROP_MEMBERSHIP IPV6_LEAVE_GROUP +#if !__USE_KERNEL_IPV6_DEFS +# define IPV6_ADD_MEMBERSHIP IPV6_JOIN_GROUP +# define IPV6_DROP_MEMBERSHIP IPV6_LEAVE_GROUP +#endif #define IPV6_RXHOPOPTS IPV6_HOPOPTS #define IPV6_RXDSTOPTS IPV6_DSTOPTS |