- struct sockaddr_in *sin = (struct sockaddr_in *)sap;
- socklen_t len = *salen;
- struct hostent *hp;
-
- *salen = 0;
-
- if (af_hint != AF_INET) {
- nfs_error(_("%s: address family not supported by DNS resolver\n"),
- progname, hostname);
- return 0;
- }
-
- sin->sin_family = AF_INET;
- if (inet_aton(hostname, &sin->sin_addr)) {
- *salen = sizeof(*sin);
- return 1;
- }
-
- hp = gethostbyname(hostname);
- if (hp == NULL) {
- nfs_error(_("%s: DNS resolution failed for %s: %s"),
- progname, hostname, hstrerror(h_errno));
- return 0;
- }
-
- if (hp->h_length > len) {
- nfs_error(_("%s: DNS resolution results too long for buffer\n"),
- progname);
- return 0;
- }
-
- memcpy(&sin->sin_addr, hp->h_addr, hp->h_length);
- *salen = sizeof(struct sockaddr_in);
- return 1;
+#ifdef IPV6_SUPPORTED
+ return nfs_lookup(hostname, AF_UNSPEC, sap, salen);
+#else /* !IPV6_SUPPORTED */
+ return nfs_lookup(hostname, AF_INET, sap, salen);
+#endif /* !IPV6_SUPPORTED */