summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJeremy Huddleston Sequoia <jeremyhu@apple.com>2013-09-29 08:04:39 -0700
committerJeremy Huddleston Sequoia <jeremyhu@apple.com>2013-09-29 08:15:37 -0700
commita2c8f59f13caf63a642bad1b97d9adf5a9e01bcb (patch)
treec1eb04528d391276cc7e8aa8d5d4cb3ee0f3f2fd
parentfb328950ce1156b8228214240b213860b794b4c8 (diff)
Revert "Look for FamilyLocal if inet or inet6 address is loopback"
Also reverts the followup "More fixes for compiler warnings regarding the use of "const"." This reverts commits fb328950ce1156b8228214240b213860b794b4c8 and 345c7bf0d09f26183cfde9ad1c812c8de71869a5. Fixes build regression found on darwin tinderbox. Per SUSv4*, IN6_IS_ADDR_LOOPBACK takes a 'const struct in6_addr *', not a 'const struct sockaddr_in6 *'. *: http://pubs.opengroup.org/onlinepubs/9699919799/basedefs/netinet_in.h.html
-rw-r--r--gethost.c40
1 files changed, 5 insertions, 35 deletions
diff --git a/gethost.c b/gethost.c
index f69ba1d..8f77c80 100644
--- a/gethost.c
+++ b/gethost.c
@@ -227,36 +227,16 @@ struct addrlist *get_address_info (
for (ai = firstai; ai != NULL; ai = ai->ai_next) {
struct addrlist *duplicate;
- len = 0;
if (ai->ai_family == AF_INET) {
struct sockaddr_in *sin = (struct sockaddr_in *)ai->ai_addr;
src = &(sin->sin_addr);
- if (*(const in_addr_t *) src == htonl(INADDR_LOOPBACK)) {
- family = FamilyLocal;
- if (get_local_hostname (buf, sizeof buf)) {
- src = buf;
- len = strlen (buf);
- } else
- src = NULL;
- } else {
- len = sizeof(sin->sin_addr);
- family = FamilyInternet;
- }
+ len = sizeof(sin->sin_addr);
+ family = FamilyInternet;
} else if (ai->ai_family == AF_INET6) {
struct sockaddr_in6 *sin6 = (struct sockaddr_in6 *)ai->ai_addr;
src = &(sin6->sin6_addr);
- if (IN6_IS_ADDR_V4MAPPED((const struct sockaddr_in6 *)src)
- || IN6_IS_ADDR_LOOPBACK((const struct sockaddr_in6 *)src)) {
- family = FamilyLocal;
- if (get_local_hostname (buf, sizeof buf)) {
- src = buf;
- len = strlen (buf);
- } else
- src = NULL;
- } else {
- len = sizeof(sin6->sin6_addr);
- family = FamilyInternet6;
- }
+ len = sizeof(sin6->sin6_addr);
+ family = FamilyInternet6;
}
for(duplicate = retval; duplicate != NULL; duplicate = duplicate->next) {
@@ -295,17 +275,7 @@ struct addrlist *get_address_info (
#else
if (!get_inet_address (host, &hostinetaddr)) return NULL;
src = (char *) &hostinetaddr;
- if (*(const in_addr_t *) src == htonl(INADDR_LOOPBACK)) {
- family = FamilyLocal;
- if (get_local_hostname (buf, sizeof buf)) {
- src = buf;
- len = strlen (buf);
- } else {
- len = 0;
- src = NULL;
- }
- } else
- len = 4; /* sizeof inaddr.sin_addr, would fail on Cray */
+ len = 4; /* sizeof inaddr.sin_addr, would fail on Cray */
break;
#endif /* IPv6 */
#else