--- a/net.c +++ b/net.c @@ -320,9 +320,13 @@ struct sockaddr_storage local; struct sockaddr_storage remote; struct sockaddr_in *local4 = (struct sockaddr_in *) &local; +#ifdef ENABLE_IPV6 struct sockaddr_in6 *local6 = (struct sockaddr_in6 *) &local; +#endif struct sockaddr_in *remote4 = (struct sockaddr_in *) &remote; +#ifdef ENABLE_IPV6 struct sockaddr_in6 *remote6 = (struct sockaddr_in6 *) &remote; +#endif socklen_t len; ttl = index + 1; @@ -437,9 +441,13 @@ struct sockaddr_storage local; struct sockaddr_storage remote; struct sockaddr_in *local4 = (struct sockaddr_in *) &local; +#ifdef ENABLE_IPV6 struct sockaddr_in6 *local6 = (struct sockaddr_in6 *) &local; +#endif struct sockaddr_in *remote4 = (struct sockaddr_in *) &remote; +#ifdef ENABLE_IPV6 struct sockaddr_in6 *remote6 = (struct sockaddr_in6 *) &remote; +#endif socklen_t len; ttl = index + 1; @@ -726,8 +734,12 @@ /* sendto() assumes packet length includes the IPv4 header but not the IPv6 header. */ +#ifdef ENABLE_IPV6 spacketsize = abs(packetsize) - ( ( af == AF_INET ) ? 0 : sizeof (struct ip6_hdr) ); +#else + spacketsize = abs(packetsize); +#endif rv = sendto(sendsock, packet, spacketsize, 0, remotesockaddr, salen); if (first && (rv < 0) && ((errno == EINVAL) || (errno == EMSGSIZE))) { /* Try the first packet again using host byte order. */ @@ -1535,11 +1547,15 @@ struct sockaddr_in name_struct; #endif struct sockaddr_in * sa4; +#ifdef ENABLE_IPV6 struct sockaddr_in6 * sa6; +#endif struct sockaddr * name = (struct sockaddr *) &name_struct; struct sockaddr_storage remote; struct sockaddr_in *remote4 = (struct sockaddr_in *) &remote; +#ifdef ENABLE_IPV6 struct sockaddr_in6 *remote6 = (struct sockaddr_in6 *) &remote; +#endif socklen_t len; int s;