[distcc] [PATCH][RFC] variable overlapping causing errors...

Ian Kumlien pomac at vapor.com
Tue Oct 5 11:12:32 MDT 2010


Hi, 

It seems like s6_addr is a reserved type, on my macine (Gentoo linux,
building current svn trunk) i get the following error:
src/access.c: In function 'set_mask_inet6':
src/access.c:118:14: error: expected '=', ',', ';', 'asm' or '__attribute__' before '.' token
src/access.c:118:14: error: expected expression before '.' token
src/access.c:123:9: error: '__in6_u' undeclared (first use in this function)
src/access.c:123:9: note: each undeclared identifier is reported only once for each function it appears in
make: *** [src/access.o] Error 1

The fix is quite easy, when you see it:
This line:
	uint8_t *s6_addr = addr->s6_addr;

Expands to:
	uint8_t *__in6_u.__u6_addr8 = addr->__in6_u.__u6_addr8;

Which is wrong, this patch is against r730 on trunk.

--- src/access.c.orig   2010-10-05 19:01:56.133363116 +0200
+++ src/access.c        2010-10-05 19:02:25.911554579 +0200
@@ -115,18 +115,18 @@
  * Set a v6 address, @p addr, to a mask of @p mask_size bits.
  **/
 static void set_mask_inet6(struct in6_addr *addr, int mask_bits) {
-    uint8_t *s6_addr = addr->s6_addr;
+    uint8_t *ip6_addr = addr->s6_addr;
     int allones_count = mask_bits / 8;
     int i;
 
     for (i = 0; i < allones_count; i++)
-        s6_addr[i] = allones8;
+        ip6_addr[i] = allones8;
 
-    s6_addr[i] = ~(allones8 >> (mask_bits % 8));
+    ip6_addr[i] = ~(allones8 >> (mask_bits % 8));
     i++;
 
     for (; i < 16; i++)
-        s6_addr[i] = 0;
+        ip6_addr[i] = 0;
 }
 #endif /* ENABLE_RFC2553 */




More information about the distcc mailing list