localhost not recognised in getaddrinfo(3) in FreeBSD 9.0-STABLE

Unga unga888 at yahoo.com
Tue May 1 14:48:20 UTC 2012

> From: Matthew Seaman <matthew at FreeBSD.org>
> To: Unga <unga888 at yahoo.com>
> Cc: "freebsd-questions at freebsd.org" <freebsd-questions at FreeBSD.org>
> Sent: Tuesday, May 1, 2012 11:02 AM
> Subject: Re: localhost not recognised in getaddrinfo(3) in FreeBSD 9.0-STABLE
> On 01/05/2012 11:08, Unga wrote:
>>  Following code fragment works in FreeBSD 8.1-RELEASE, but not in FreeBSD 
> 9.0-STABLE:
>>  error = getaddrinfo("localhost", port, &hints, &res0);
>>   if (error)
>>      {
>>       fprintf(stderr,"getaddrinfo failed - %s\n", 
> gai_strerror(error));
>>       exit(1);
>>      }
>>  It complains: getaddrinfo failed - hostname nor servname provided, or not 
> known
>>  Any idea why?
> So, what is the variable 'port' initialized to?  It should be a const
> char* with the name of a network service found in /etc/services or else
> the string representation of a port number in decimal.
#define MYPORT         4321

char                port[10];
snprintf(port, sizeof(port), "%d", MYPORT);

error = getaddrinfo("localhost", port, &hints, &res0);

Pls note, using instead of localhost works. But I prefer to use localhost. 

> Failing that, this is almost certainly a configuration snafu on your
> 9.0-STABLE box.
> Does this machine have an entry for localhost in /etc/hosts ? Can it
> resolve localhost via the DNS? Or through any other means such as NIS or
> What does:
>     % getent hosts localhost
> return?

$ getent hosts localhost         localhost  localhost.my.domain ftp.sam511.lan

> If that fails, sanity check /etc/nsswitch.conf and /etc/resolv.conf

cat /etc/nsswitch.conf

group: compat
group_compat: nis
hosts: files dns
networks: files
passwd: compat
passwd_compat: nis
shells: files
services: compat
services_compat: nis
protocols: files
rpc: files

cat /etc/resolv.conf



More information about the freebsd-questions mailing list