1 /* 2 * numtohost - convert network number to host name. 3 */ 4 #include <config.h> 5 6 #include <sys/types.h> 7 #ifdef HAVE_NETINET_IN_H 8 #include <netinet/in.h> /* ntohl */ 9 #endif 10 11 #include "ntp_fp.h" 12 #include "ntp_stdlib.h" 13 #include "lib_strbuf.h" 14 15 #define LOOPBACKNET 0x7f000000 16 #define LOOPBACKHOST 0x7f000001 17 #define LOOPBACKNETMASK 0xff000000 18 19 char * numtohost(u_int32 netnum)20numtohost( 21 u_int32 netnum 22 ) 23 { 24 char *bp; 25 struct hostent *hp; 26 27 /* 28 * This is really gross, but saves lots of hanging looking for 29 * hostnames for the radio clocks. Don't bother looking up 30 * addresses on the loopback network except for the loopback 31 * host itself. 32 */ 33 if ((((ntohl(netnum) & LOOPBACKNETMASK) == LOOPBACKNET) 34 && (ntohl(netnum) != LOOPBACKHOST)) 35 || ((hp = gethostbyaddr((char *)&netnum, sizeof netnum, AF_INET)) 36 == 0)) 37 return numtoa(netnum); 38 39 LIB_GETBUF(bp); 40 strlcpy(bp, hp->h_name, LIB_BUFLENGTH); 41 42 return bp; 43 } 44