{
struct addrinfo hints;
struct addrinfo *res = NULL;
- struct sockaddr_in *sinp;
- struct sockaddr_in6 *sin6p;
+ union {
+ struct sockaddr *sa;
+ struct sockaddr_in *in;
+ struct sockaddr_in6 *in6;
+ } addr;
char ip6[INET6_ADDRSTRLEN];
char *ip;
int rc;
assert_int_equal(res->ai_family, AF_INET);
- sinp = (struct sockaddr_in *)res->ai_addr;
+ addr.sa = res->ai_addr;
- assert_int_equal(sinp->sin_family, AF_INET);
- ip = inet_ntoa(sinp->sin_addr);
+ assert_int_equal(addr.in->sin_family, AF_INET);
+ ip = inet_ntoa(addr.in->sin_addr);
assert_string_equal(ip, "127.0.0.11");
assert_int_equal(res->ai_family, AF_INET6);
- sin6p = (struct sockaddr_in6 *)res->ai_addr;
+ addr.sa = res->ai_addr;
- assert_int_equal(sin6p->sin6_family, AF_INET6);
- inet_ntop(AF_INET6, (void *)&sin6p->sin6_addr, ip6, sizeof(ip6));
+ assert_int_equal(addr.in6->sin6_family, AF_INET6);
+ inet_ntop(AF_INET6, (void *)&addr.in6->sin6_addr, ip6, sizeof(ip6));
assert_string_equal(ip6, "::13");
{
struct addrinfo hints;
struct addrinfo *res = NULL;
- struct sockaddr_in *sinp;
- struct sockaddr_in6 *sin6p;
+ union {
+ struct sockaddr *sa;
+ struct sockaddr_in *in;
+ struct sockaddr_in6 *in6;
+ } addr;
char ip6[INET6_ADDRSTRLEN];
char *ip;
int rc;
assert_null(res->ai_canonname);
#endif /* HAVE_GETADDRINFO_SETS_CANONNAME_FOR_IPADDRESSES */
- sinp = (struct sockaddr_in *)res->ai_addr;
+ addr.sa = res->ai_addr;
- assert_int_equal(389, htons(sinp->sin_port));
+ assert_int_equal(389, htons(addr.in->sin_port));
- ip = inet_ntoa(sinp->sin_addr);
+ ip = inet_ntoa(addr.in->sin_addr);
assert_string_equal(ip, "0.0.0.0");
assert_null(res->ai_canonname);
#endif /* HAVE_GETADDRINFO_SETS_CANONNAME_FOR_IPADDRESSES */
- sin6p = (struct sockaddr_in6 *)res->ai_addr;
+ addr.sa = res->ai_addr;
- assert_int_equal(389, htons(sin6p->sin6_port));
+ assert_int_equal(389, htons(addr.in6->sin6_port));
- inet_ntop(AF_INET6, (void *)&sin6p->sin6_addr, ip6, sizeof(ip6));
+ inet_ntop(AF_INET6, (void *)&addr.in6->sin6_addr, ip6, sizeof(ip6));
assert_string_equal(ip6, "::");
{
struct addrinfo hints;
struct addrinfo *res;
- struct sockaddr_in *sinp;
+ union {
+ struct sockaddr *sa;
+ struct sockaddr_in *in;
+ struct sockaddr_in6 *in6;
+ } addr;
char *ip;
int rc;
assert_null(res->ai_canonname);
#endif /* HAVE_GETADDRINFO_SETS_CANONNAME_FOR_IPADDRESSES */
- sinp = (struct sockaddr_in *)res->ai_addr;
- ip = inet_ntoa(sinp->sin_addr);
+ addr.sa = res->ai_addr;
+ ip = inet_ntoa(addr.in->sin_addr);
assert_string_equal(ip, "127.0.0.1");
{
struct addrinfo hints;
struct addrinfo *res = NULL;
- struct sockaddr_in *sinp;
+ union {
+ struct sockaddr *sa;
+ struct sockaddr_in *in;
+ struct sockaddr_in6 *in6;
+ } addr;
char *ip;
int rc;
assert_non_null(res->ai_canonname);
assert_string_equal(res->ai_canonname, "maximegalon.galaxy.site");
- sinp = (struct sockaddr_in *)res->ai_addr;
- ip = inet_ntoa(sinp->sin_addr);
+ addr.sa = res->ai_addr;
+ ip = inet_ntoa(addr.in->sin_addr);
assert_string_equal(ip, "127.0.0.12");
assert_non_null(res->ai_canonname);
assert_string_equal(res->ai_canonname, "magrathea.galaxy.site");
- sinp = (struct sockaddr_in *)res->ai_addr;
- ip = inet_ntoa(sinp->sin_addr);
+ addr.sa = res->ai_addr;
+ ip = inet_ntoa(addr.in->sin_addr);
assert_string_equal(ip, "127.0.0.11");
{
struct addrinfo hints;
struct addrinfo *res = NULL;
- struct sockaddr_in *sinp;
+ union {
+ struct sockaddr *sa;
+ struct sockaddr_in *in;
+ struct sockaddr_in6 *in6;
+ } addr;
char *ip;
int rc;
assert_string_equal(res->ai_canonname, "magrathea.galaxy.site");
assert_non_null(res->ai_addr);
- sinp = (struct sockaddr_in *)res->ai_addr;
- ip = inet_ntoa(sinp->sin_addr);
+ addr.sa = res->ai_addr;
+ ip = inet_ntoa(addr.in->sin_addr);
assert_string_equal(ip, "127.0.0.11");
- assert_int_equal(ntohs(sinp->sin_port), 389);
+ assert_int_equal(ntohs(addr.in->sin_port), 389);
freeaddrinfo(res);
}
{
struct addrinfo hints;
struct addrinfo *res = NULL;
- struct sockaddr_in6 *sin6p;
+ union {
+ struct sockaddr *sa;
+ struct sockaddr_in *in;
+ struct sockaddr_in6 *in6;
+ } addr;
char ip6[INET6_ADDRSTRLEN];
int rc;
assert_int_equal(res->ai_socktype, SOCK_DGRAM);
assert_non_null(res->ai_addr);
- sin6p = (struct sockaddr_in6 *)res->ai_addr;
- inet_ntop(AF_INET6, (void *)&sin6p->sin6_addr, ip6, sizeof(ip6));
+ addr.sa = res->ai_addr;
+ inet_ntop(AF_INET6, (void *)&addr.in6->sin6_addr, ip6, sizeof(ip6));
assert_string_equal(ip6, "::1");
.ai_family = AF_INET,
};
struct addrinfo *res = NULL;
- struct sockaddr_in *sinp;
+ union {
+ struct sockaddr *sa;
+ struct sockaddr_in *in;
+ struct sockaddr_in6 *in6;
+ } addr;
char ip[INET_ADDRSTRLEN];
int rc;
assert_non_null(res->ai_next);
assert_int_equal(res->ai_family, AF_INET);
- sinp = (struct sockaddr_in *)res->ai_addr;
- assert_int_equal(sinp->sin_family, AF_INET);
- inet_ntop(AF_INET, (void *)&sinp->sin_addr, ip, sizeof(ip));
+ addr.sa = res->ai_addr;
+ assert_int_equal(addr.in->sin_family, AF_INET);
+ inet_ntop(AF_INET, (void *)&addr.in->sin_addr, ip, sizeof(ip));
assert_string_equal(ip, "127.0.0.11");
{
struct addrinfo hints;
struct addrinfo *res = NULL;
- struct sockaddr_in6 *sin6p;
+ union {
+ struct sockaddr *sa;
+ struct sockaddr_in *in;
+ struct sockaddr_in6 *in6;
+ } addr;
char ip6[INET6_ADDRSTRLEN];
int rc;
assert_non_null(res->ai_next);
assert_int_equal(res->ai_family, AF_INET6);
- sin6p = (struct sockaddr_in6 *)res->ai_addr;
- assert_int_equal(sin6p->sin6_family, AF_INET6);
- inet_ntop(AF_INET6, (void *)&sin6p->sin6_addr, ip6, sizeof(ip6));
+ addr.sa = res->ai_addr;
+ assert_int_equal(addr.in6->sin6_family, AF_INET6);
+ inet_ntop(AF_INET6, (void *)&addr.in6->sin6_addr, ip6, sizeof(ip6));
assert_string_equal(ip6, "::14");
int rc;
int p;
- struct sockaddr_in *r_addr;
- struct sockaddr_in6 *r_addr6;
+ union {
+ struct sockaddr *sa;
+ struct sockaddr_in *in;
+ struct sockaddr_in6 *in6;
+ } r_addr;
const char *result = NULL;
const char *value = NULL;
for (res = res_head; res != NULL; res = res->ai_next) {
if (res->ai_family == AF_INET) {
- r_addr = (struct sockaddr_in *) res->ai_addr;
- assert_non_null(r_addr);
+ r_addr.sa = res->ai_addr;
+ assert_non_null(r_addr.sa);
++ipv4_count;
result = inet_ntop(AF_INET,
- &r_addr->sin_addr,
+ &r_addr.in->sin_addr,
buf,
4096);
} else if (res->ai_family == AF_INET6) {
- r_addr6 = (struct sockaddr_in6 *) res->ai_addr;
- assert_non_null(r_addr6);
+ r_addr.sa = res->ai_addr;
+ assert_non_null(r_addr.sa);
++ipv6_count;
result = inet_ntop(AF_INET6,
- &r_addr6->sin6_addr,
+ &r_addr.in6->sin6_addr,
buf,
4096);
} else {