]> sourceware.org Git - glibc.git/commitdiff
Fix macro API for __USE_KERNEL_IPV6_DEFS.
authorCarlos O'Donell <carlos@redhat.com>
Fri, 3 Jun 2016 03:30:11 +0000 (23:30 -0400)
committerCarlos O'Donell <carlos@redhat.com>
Fri, 3 Jun 2016 03:52:06 +0000 (23:52 -0400)
The use of __USE_KERNEL_IPV6_DEFS with ifndef is bad
practice per: https://sourceware.org/glibc/wiki/Wundef.
This change moves it to use 'if' and always define the
macro.

Please note that this is not the only problem with this
code. I have a series of fixes after this one to resolve
breakage with this code and add regression tests for it
via compile-only source testing (to be discussed in another
thread).

Unfortunately __USE_KERNEL_XATTR_DEFS is set by the kernel
and not glibc, and uses 'define', so we can't fix that yet.

ChangeLog
inet/netinet/in.h
sysdeps/unix/sysv/linux/bits/in.h

index 7dfe5752a761bc34b3528dcddea14a103cf5b782..4e7fd30b49030e42dd4b2bab692aaecbd0a29ad3 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,12 @@
+2016-06-02  Carlos O'Donell  <carlos@redhat.com>
+
+       * sysdeps/unix/sysv/linux/bits/in.h [defined _UAPI_LINUX_IN6_H ||
+       defined _UAPI_IPV6_H]: Define __USE_KERNEL_IPV6_DEFS to 1.
+       [!(defined _UAPI_LINUX_IN6_H || defined _UAPI_IPV6_H)]: Define
+       __USE_KERNEL_IPV6_DEFS to 0.
+       * inet/netinet/in.h: Use '#if !__USE_KERNEL_IPV6_DEFS'.
+       Update comment.
+
 2016-06-01  Florian Weimer  <fweimer@redhat.com>
 
        [BZ #19861]
index 6122ab599b2c459e518cf703d6f4e6db78caf3e9..c801593b32dc3fad50d87ec4a92919a2b8f3b66e 100644 (file)
@@ -92,10 +92,10 @@ enum
     IPPROTO_MAX
   };
 
-/* If __USE_KERNEL_IPV6_DEFS is defined then the user has included the kernel
+/* If __USE_KERNEL_IPV6_DEFS is 1 then the user has included the kernel
    network headers first and we should use those ABI-identical definitions
-   instead of our own.  */
-#ifndef __USE_KERNEL_IPV6_DEFS
+   instead of our own, otherwise 0.  */
+#if !__USE_KERNEL_IPV6_DEFS
 enum
   {
     IPPROTO_HOPOPTS = 0,   /* IPv6 Hop-by-Hop options.  */
@@ -206,7 +206,7 @@ enum
 #define INADDR_ALLRTRS_GROUP    ((in_addr_t) 0xe0000002) /* 224.0.0.2 */
 #define INADDR_MAX_LOCAL_GROUP  ((in_addr_t) 0xe00000ff) /* 224.0.0.255 */
 
-#ifndef __USE_KERNEL_IPV6_DEFS
+#if !__USE_KERNEL_IPV6_DEFS
 /* IPv6 address */
 struct in6_addr
   {
@@ -249,7 +249,7 @@ struct sockaddr_in
                           sizeof (struct in_addr)];
   };
 
-#ifndef __USE_KERNEL_IPV6_DEFS
+#if !__USE_KERNEL_IPV6_DEFS
 /* Ditto, for IPv6.  */
 struct sockaddr_in6
   {
@@ -285,7 +285,7 @@ struct ip_mreq_source
   };
 #endif
 
-#ifndef __USE_KERNEL_IPV6_DEFS
+#if !__USE_KERNEL_IPV6_DEFS
 /* Likewise, for IPv6.  */
 struct ipv6_mreq
   {
@@ -532,7 +532,7 @@ extern int bindresvport6 (int __sockfd, struct sockaddr_in6 *__sock_in)
 #ifdef __USE_GNU
 struct cmsghdr;                        /* Forward declaration.  */
 
-#ifndef __USE_KERNEL_IPV6_DEFS
+#if !__USE_KERNEL_IPV6_DEFS
 /* IPv6 packet information.  */
 struct in6_pktinfo
   {
index d75c07b9fd6b27a817a5bbbb0271ea2d2c0f0509..9bdadf3c8fd41db3f962c9655056bca7aed7dfc9 100644 (file)
@@ -30,7 +30,9 @@
 /* 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.  */
-# define __USE_KERNEL_IPV6_DEFS
+# define __USE_KERNEL_IPV6_DEFS 1
+#else
+# define __USE_KERNEL_IPV6_DEFS 0
 #endif
 
 /* Options for use with `getsockopt' and `setsockopt' at the IP level.
This page took 0.19587 seconds and 5 git commands to generate.