/* Based on a test case by grd@algonet.se. */ #include <netdb.h> #include <stdlib.h> #include <stdio.h> #include <string.h> #include <unistd.h> #include <sys/param.h> #include <sys/socket.h> #include <netinet/in.h> #include <arpa/inet.h> int main (void) { struct hostent *ent; struct in_addr hostaddr; int result = 0; inet_aton ("127.0.0.1", (struct in_addr *) &hostaddr.s_addr); ent = gethostbyaddr (&hostaddr, sizeof (hostaddr), AF_INET); if (ent == NULL) puts ("gethostbyaddr (...) == NULL"); else { puts ("Using gethostbyaddr(..):"); printf ("h_name: %s\n", ent->h_name); if (ent->h_aliases == NULL) puts ("ent->h_aliases == NULL"); else printf ("h_aliases[0]: %s\n", ent->h_aliases[0]); } ent = gethostbyname ("127.0.0.1"); if (ent == NULL) { puts ("gethostbyname (\"127.0.0.1\") == NULL"); result = 1; } else { printf ("\nNow using gethostbyname(..):\n"); printf ("h_name: %s\n", ent->h_name); if (strcmp (ent->h_name, "127.0.0.1") != 0) { puts ("ent->h_name != \"127.0.0.1\""); result = 1; } if (ent->h_aliases == NULL) { puts ("ent->h_aliases == NULL"); result = 1; } else { printf ("h_aliases[0]: %s\n", ent->h_aliases[0]); result |= ent->h_aliases[0] != NULL; } } return result; }