| /* 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; |
| } |