Package: libc6 Version: 2.18-4 Sometimes avahi-resolve-host-name and getaddrinfo(3) disagree about DNS. Sample:
% avahi-resolve-host-name pepe.local; ./getaddrinfo pepe.local pepe.local 10.42.100.198 getaddrinfo: Name or service not known nscd is not running. /etc/nsswitch.conf says hosts: files mdns4_minimal [NOTFOUND=return] dns getaddrinfo.c is attached. Regards Harri
/* * getaddrinfo.c - Simple example of using getaddrinfo(3) function. * * Michal Ludvig <mic...@logix.cz> (c) 2002, 2003 * http://www.logix.cz/michal/devel/ * * License: public domain. */ #include <stdio.h> #include <string.h> #include <stdlib.h> #include <netdb.h> #include <sys/types.h> #include <sys/socket.h> #include <arpa/inet.h> int lookup_host (const char *host) { struct addrinfo hints, *res; int errcode; char addrstr[100]; void *ptr; memset (&hints, 0, sizeof (hints)); hints.ai_family = PF_UNSPEC; hints.ai_socktype = SOCK_STREAM; hints.ai_flags |= AI_CANONNAME; errcode = getaddrinfo (host, NULL, &hints, &res); if (errcode != 0) { fprintf(stderr, "getaddrinfo: %s\n", gai_strerror(errcode)); exit(EXIT_FAILURE); } printf ("Host: %s\n", host); while (res) { inet_ntop (res->ai_family, res->ai_addr->sa_data, addrstr, 100); switch (res->ai_family) { case AF_INET: ptr = &((struct sockaddr_in *) res->ai_addr)->sin_addr; break; case AF_INET6: ptr = &((struct sockaddr_in6 *) res->ai_addr)->sin6_addr; break; } inet_ntop (res->ai_family, ptr, addrstr, 100); printf ("IPv%d address: %s (%s)\n", res->ai_family == PF_INET6 ? 6 : 4, addrstr, res->ai_canonname); res = res->ai_next; } return 0; } int main (int argc, char *argv[]) { if (argc < 2) exit (1); return lookup_host (argv[1]); }
signature.asc
Description: OpenPGP digital signature