mirror of
https://sourceware.org/git/glibc.git
synced 2024-11-25 14:30:06 +00:00
Bug 20214: Fix linux/in6.h and netinet/in.h sync.
In: https://sourceware.org/glibc/wiki/Synchronizing_Headers we explain how we synchronize our headers with Linux kernel headers. In order to synchronize with the Linux linux/in6.h and linux/ipv6.h headers we checked for their guard macros and then defined __USE_KERNEL_IPV6_DEFS and conditionalized code on this macro. In upstream kernel 56c176c9 the _UAPI prefix was stripped and this broke our synchronized headers again. We now need to check for _LINUX_IN6_H and _IPV6_H, and keep checking the old versions of the header guard checks for maximum backwards compatibility with older Linux headers (the history is actually a bit muddled here and it appears upstream linus kernel broke this 10 months *before* our fix was ever applied to glibc, but without glibc testing we didn't notice and distro kernels have their own testing to fix this). This patch fixes synchronization with linux/in6.h and with netinet/in.h.
This commit is contained in:
parent
47dd3543d3
commit
c9bd40daae
15
ChangeLog
15
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
|
||||
|
@ -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
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user