Index: krb5-1.8-alpha1/src/lib/krb5/os/hostaddr.c =================================================================== --- krb5-1.8-alpha1.orig/src/lib/krb5/os/hostaddr.c +++ krb5-1.8-alpha1/src/lib/krb5/os/hostaddr.c @@ -44,7 +44,7 @@ krb5_os_hostaddr(krb5_context context, c return KRB5_ERR_BAD_HOSTNAME; memset (&hints, 0, sizeof (hints)); - hints.ai_flags = AI_NUMERICHOST; + hints.ai_flags = AI_NUMERICHOST | AI_ADDRCONFIG; /* We don't care what kind at this point, really, but without this, we can get back multiple sockaddrs per address, for SOCK_DGRAM, SOCK_STREAM, and SOCK_RAW. I haven't checked if Index: krb5-1.8-alpha1/src/lib/krb5/os/hst_realm.c =================================================================== --- krb5-1.8-alpha1.orig/src/lib/krb5/os/hst_realm.c +++ krb5-1.8-alpha1/src/lib/krb5/os/hst_realm.c @@ -103,7 +103,7 @@ get_fq_hostname(char *buf, size_t bufsiz int err; memset (&hints, 0, sizeof (hints)); - hints.ai_flags = AI_CANONNAME; + hints.ai_flags = AI_CANONNAME | AI_ADDRCONFIG; err = getaddrinfo (name, 0, &hints, &ai); if (err) return krb5int_translate_gai_error (err); Index: krb5-1.8-alpha1/src/lib/krb5/os/locate_kdc.c =================================================================== --- krb5-1.8-alpha1.orig/src/lib/krb5/os/locate_kdc.c +++ krb5-1.8-alpha1/src/lib/krb5/os/locate_kdc.c @@ -259,8 +259,9 @@ krb5int_add_host_to_list (struct addrlis memset(&hint, 0, sizeof(hint)); hint.ai_family = family; hint.ai_socktype = socktype; + hint.ai_flags = AI_ADDRCONFIG; #ifdef AI_NUMERICSERV - hint.ai_flags = AI_NUMERICSERV; + hint.ai_flags |= AI_NUMERICSERV; #endif result = snprintf(portbuf, sizeof(portbuf), "%d", ntohs(port)); if (SNPRINTF_OVERFLOW(result, sizeof(portbuf))) Index: krb5-1.8-alpha1/src/lib/krb5/os/sn2princ.c =================================================================== --- krb5-1.8-alpha1.orig/src/lib/krb5/os/sn2princ.c +++ krb5-1.8-alpha1/src/lib/krb5/os/sn2princ.c @@ -108,7 +108,7 @@ krb5_sname_to_principal(krb5_context con memset(&hints, 0, sizeof(hints)); hints.ai_family = AF_INET; - hints.ai_flags = AI_CANONNAME; + hints.ai_flags = AI_CANONNAME|AI_ADDRCONFIG; try_getaddrinfo_again: err = getaddrinfo(hostname, 0, &hints, &ai); if (err) {