nslookup: glibc + IPv6 address of DNS server don't mix (yet)

This commit is contained in:
Denis Vlasenko 2008-11-17 15:36:36 +00:00
parent de7a52fff2
commit 249d948e39

View File

@ -133,14 +133,19 @@ static void set_default_dns(const char *server)
_res.nsaddr_list[0] = lsa->u.sin; _res.nsaddr_list[0] = lsa->u.sin;
} }
#if ENABLE_FEATURE_IPV6 #if ENABLE_FEATURE_IPV6
// Hoping libc will handle an IPv4 address there too, /* Hoped libc can cope with IPv4 address there too.
// if it so happens that family is indeed AF_INET * No such luck, glibc 2.4 segfaults even with IPv6,
// if (lsa->u.sa.sa_family == AF_INET6) { * maybe I misunderstand how to make glibc use IPv6 addr?
* (uclibc 0.9.31+ should work) */
if (lsa->u.sa.sa_family == AF_INET6) {
// glibc neither SEGVs nor sends any dgrams with this
// (strace shows no socket ops):
//_res.nscount = 0;
_res._u._ext.nscount = 1; _res._u._ext.nscount = 1;
/* store a pointer to part of malloc'ed lsa */ /* store a pointer to part of malloc'ed lsa */
_res._u._ext.nsaddrs[0] = &lsa->u.sin6; _res._u._ext.nsaddrs[0] = &lsa->u.sin6;
/* must not free(lsa)! */ /* must not free(lsa)! */
// } }
#endif #endif
} }