krb5-1.4.1 build failure on FreeBSD 5.4 (EAI_NODATA), and a workaround

Fred Dushin fadushin at fourfold.org
Mon Jul 11 21:42:30 EDT 2005


I'm getting a krb5-1.4.1 build failure on FreeBSD 5.4-RELEASE:

.../krb5-1.4.1/src/lib/krb5/os/hst_realm.c: In function  
`krb5int_translate_gai_error':
.../krb5-1.4.1/src/lib/krb5/os/hst_realm.c:370: error: `EAI_NODATA'  
undeclared (first use in this function)
.../krb5-1.4.1/src/lib/krb5/os/hst_realm.c:370: error: (Each  
undeclared identifier is reported only once
.../krb5-1.4.1/src/lib/krb5/os/hst_realm.c:370: error: for each  
function it appears in.)

I believe this is partially due to autoconf, which is (correctly)  
detecting getaddrinfo in FreeBSD 5.4, and hence not building the fake- 
addr-info types (.../krb5-1.4.1/src/include/fake-addrinfo.h:333)

However, I find the somewhat cryptic obsoleted comments in /usr/ 
include/netdb.h, on FreeBSD:

/*
  * Error return codes from getaddrinfo()
  */
#if 0
/* obsoleted */
#define EAI_ADDRFAMILY   1      /* address family for hostname not  
supported */
#endif
#define EAI_AGAIN        2      /* temporary failure in name  
resolution */
#define EAI_BADFLAGS     3      /* invalid value for ai_flags */
#define EAI_FAIL         4      /* non-recoverable failure in name  
resolution */
#define EAI_FAMILY       5      /* ai_family not supported */
#define EAI_MEMORY       6      /* memory allocation failure */
#if 0
/* obsoleted */
#define EAI_NODATA       7      /* no address associated with  
hostname */
#endif
#define EAI_NONAME       8      /* hostname nor servname provided, or  
not known */
#define EAI_SERVICE      9      /* servname not supported for  
ai_socktype */
#define EAI_SOCKTYPE    10      /* ai_socktype not supported */
#define EAI_SYSTEM      11      /* system error returned in errno */
#define EAI_BADHINTS    12
#define EAI_PROTOCOL    13
#define EAI_MAX         14

My solution has been to modify the generated autoconf.h to not set  
HAVE_GETADDRINFO, and hence force the generation of the fake addrinfo  
code, but this is maybe less than optimal.

EAI_NO_DATA is defined in /usr/include/lwres/netdb.h, but I don't  
know off hand what that header file is for.

Any BSD experts available?

/Fred




More information about the Kerberos mailing list