#include #include #include #include #include #include #include extern int h_errno; int main(int argc,char **argv) { unsigned long addr,net; struct hostent *he; if (argc != 2) { fprintf(stderr,"Usage: %s (xx.yy.zz.tt|hostname)\n",argv[0]); exit(1); } if ((net = inet_addr(argv[1])) == -1) { if (! (he = gethostbyname(argv[1]))) { fprintf(stderr,"Invalid adresse %s\n",argv[1]); } } else { if (! (he = gethostbyaddr((char *)&net,sizeof(addr),AF_INET))) { fprintf(stderr,"Invalid adresse %s\n",argv[1]); } } printf("CNAME: %s\n",he->h_name); while (*(he->h_aliases)) printf("ALIAS: %s\n",*(he->h_aliases++)); while (*(he->h_addr_list)) { struct in_addr in; (void) memcpy(&in.s_addr, *(he->h_addr_list++), sizeof (in.s_addr)); printf("ADDR : %s (len=%d)\n",inet_ntoa(in),he->h_length); } return 0; }