More portable way of extraction of IPv6-mapped address.
authorZdeněk Salvet <salvet@ics.muni.cz>
Thu, 1 Apr 2010 13:45:46 +0000 (13:45 +0000)
committerZdeněk Salvet <salvet@ics.muni.cz>
Thu, 1 Apr 2010 13:45:46 +0000 (13:45 +0000)
org.glite.lb.server/src/bkserverd.c

index 589c870..d77fb9c 100644 (file)
@@ -1831,7 +1831,7 @@ static int asyn_gethostbyaddr(char **name, char **service, const struct sockaddr
        if (addr->sa_family == AF_INET6 && IN6_IS_ADDR_V4MAPPED(&((struct sockaddr_in6 *)addr)->sin6_addr)) {
                v4.sin_family = AF_INET;
                v4.sin_port = ((struct sockaddr_in6 *)addr)->sin6_port;
-               v4.sin_addr.s_addr = ((struct sockaddr_in6 *)addr)->sin6_addr.in6_u.u6_addr32[3];
+               v4.sin_addr.s_addr = *(in_addr_t *) &((struct sockaddr_in6 *)addr)->sin6_addr.s6_addr[12];
                addr = (struct sockaddr *) &v4;
                len = sizeof(v4);
        }