in.h: Coordinate in6_pktinfo and ip6_mtuinfo for kernel and glibc [BZ #15850]
authorCong Wang <xiyou.wangcong@gmail.com>
Wed, 7 Jan 2015 00:13:19 +0000 (16:13 -0800)
committerMike Frysinger <vapier@gentoo.org>
Wed, 25 Feb 2015 05:13:28 +0000 (00:13 -0500)
Similarly to what we did for in6_addr, we need a macro
to guard in6_pktinfo and ip6_mtuinfo too.

Cc: Carlos O'Donell <carlos@redhat.com>
Signed-off-by: Cong Wang <xiyou.wangcong@gmail.com>
ChangeLog
inet/netinet/in.h
sysdeps/unix/sysv/linux/bits/in.h

index 76ad507..e13f9f9 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,11 @@
+2015-02-25  Cong Wang  <xiyou.wangcong@gmail.com>
+
+       [BZ #15850]
+       * inet/netinet/in.h [!__USE_KERNEL_IPV6_DEFS]: Put in6_pktinfo
+       and ip6_mtuinfo definitions here.
+       * sysdeps/unix/sysv/linux/bits/in.h [_UAPI_IPV6_H]: Wrap code
+       in this define too.  Update comment.
+
 2015-02-24  Benno Schulenberg  <bensberg@justemail.net>
 
        * elf/sprof.c (load_shobj): Tweak error message to match others.
index bf3c8b1..f541c58 100644 (file)
@@ -530,6 +530,7 @@ extern int bindresvport6 (int __sockfd, struct sockaddr_in6 *__sock_in)
 #ifdef __USE_GNU
 struct cmsghdr;                        /* Forward declaration.  */
 
+#ifndef __USE_KERNEL_IPV6_DEFS
 /* IPv6 packet information.  */
 struct in6_pktinfo
   {
@@ -543,7 +544,7 @@ struct ip6_mtuinfo
     struct sockaddr_in6 ip6m_addr; /* dst address including zone ID */
     uint32_t ip6m_mtu;            /* path MTU in host byte order */
   };
-
+#endif /* !__USE_KERNEL_IPV6_DEFS */
 
 /* Obsolete hop-by-hop and Destination Options Processing (RFC 2292).  */
 extern int inet6_option_space (int __nbytes)
index b80a27f..b1d2cf6 100644 (file)
 
 /* If the application has already included linux/in6.h from a linux-based
    kernel then we will not define the IPv6 IPPROTO_* defines, in6_addr (nor the
-   defines), sockaddr_in6, or ipv6_mreq.  The ABI used by the linux-kernel and
-   glibc match exactly.  Neither the linux kernel nor glibc should break this
-   ABI without coordination.  */
-#ifdef _UAPI_LINUX_IN6_H
+   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
 /* 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.  */