Source-Changes-HG archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

[src/trunk]: src/sys/netinet6 - Newer gcc was throwning a 'dereferencing type...



details:   https://anonhg.NetBSD.org/src/rev/27d78328e170
branches:  trunk
changeset: 746780:27d78328e170
user:      seanb <seanb%NetBSD.org@localhost>
date:      Wed Aug 19 18:52:48 2009 +0000

description:
- Newer gcc was throwning a 'dereferencing type-punned pointer will
  break strict-aliasing rules' warning against IN6_IS_ADDR_* macros
  at -O2 -Wall.

diffstat:

 sys/netinet6/in6.h |  34 +++++++++++++++++-----------------
 1 files changed, 17 insertions(+), 17 deletions(-)

diffs (63 lines):

diff -r bd08dfa1c77f -r 27d78328e170 sys/netinet6/in6.h
--- a/sys/netinet6/in6.h        Wed Aug 19 18:51:24 2009 +0000
+++ b/sys/netinet6/in6.h        Wed Aug 19 18:52:48 2009 +0000
@@ -1,4 +1,4 @@
-/*     $NetBSD: in6.h,v 1.66 2007/12/25 18:33:47 perry Exp $   */
+/*     $NetBSD: in6.h,v 1.67 2009/08/19 18:52:48 seanb Exp $   */
 /*     $KAME: in6.h,v 1.83 2001/03/29 02:55:07 jinmei Exp $    */
 
 /*
@@ -231,37 +231,37 @@
  * Unspecified
  */
 #define IN6_IS_ADDR_UNSPECIFIED(a)     \
-       ((*(const uint32_t *)(const void *)(&(a)->s6_addr[0]) == 0) &&  \
-        (*(const uint32_t *)(const void *)(&(a)->s6_addr[4]) == 0) &&  \
-        (*(const uint32_t *)(const void *)(&(a)->s6_addr[8]) == 0) &&  \
-        (*(const uint32_t *)(const void *)(&(a)->s6_addr[12]) == 0))
+       ((a)->__u6_addr.__u6_addr32[0] == 0 &&  \
+        (a)->__u6_addr.__u6_addr32[1] == 0 &&  \
+        (a)->__u6_addr.__u6_addr32[2] == 0 &&  \
+        (a)->__u6_addr.__u6_addr32[3] == 0)
 
 /*
  * Loopback
  */
 #define IN6_IS_ADDR_LOOPBACK(a)                \
-       ((*(const uint32_t *)(const void *)(&(a)->s6_addr[0]) == 0) &&  \
-        (*(const uint32_t *)(const void *)(&(a)->s6_addr[4]) == 0) &&  \
-        (*(const uint32_t *)(const void *)(&(a)->s6_addr[8]) == 0) &&  \
-        (*(const uint32_t *)(const void *)(&(a)->s6_addr[12]) == ntohl(1)))
+       ((a)->__u6_addr.__u6_addr32[0] == 0 &&  \
+        (a)->__u6_addr.__u6_addr32[1] == 0 &&  \
+        (a)->__u6_addr.__u6_addr32[2] == 0 &&  \
+        (a)->__u6_addr.__u6_addr32[3] == ntohl(1))
 
 /*
  * IPv4 compatible
  */
 #define IN6_IS_ADDR_V4COMPAT(a)                \
-       ((*(const uint32_t *)(const void *)(&(a)->s6_addr[0]) == 0) &&  \
-        (*(const uint32_t *)(const void *)(&(a)->s6_addr[4]) == 0) &&  \
-        (*(const uint32_t *)(const void *)(&(a)->s6_addr[8]) == 0) &&  \
-        (*(const uint32_t *)(const void *)(&(a)->s6_addr[12]) != 0) && \
-        (*(const uint32_t *)(const void *)(&(a)->s6_addr[12]) != ntohl(1)))
+       ((a)->__u6_addr.__u6_addr32[0] == 0 &&  \
+        (a)->__u6_addr.__u6_addr32[1] == 0 &&  \
+        (a)->__u6_addr.__u6_addr32[2] == 0 &&  \
+        (a)->__u6_addr.__u6_addr32[3] != 0 &&  \
+        (a)->__u6_addr.__u6_addr32[3] != ntohl(1))
 
 /*
  * Mapped
  */
 #define IN6_IS_ADDR_V4MAPPED(a)                      \
-       ((*(const uint32_t *)(const void *)(&(a)->s6_addr[0]) == 0) &&  \
-        (*(const uint32_t *)(const void *)(&(a)->s6_addr[4]) == 0) &&  \
-        (*(const uint32_t *)(const void *)(&(a)->s6_addr[8]) == ntohl(0x0000ffff)))
+       ((a)->__u6_addr.__u6_addr32[0] == 0 &&  \
+        (a)->__u6_addr.__u6_addr32[1] == 0 &&  \
+        (a)->__u6_addr.__u6_addr32[2] == ntohl(0x0000ffff))
 
 /*
  * KAME Scope Values



Home | Main Index | Thread Index | Old Index