154359Sroberto/* 254359Sroberto * numtohost - convert network number to host name. 354359Sroberto */ 4285612Sdelphij#include <config.h> 554359Sroberto 6285612Sdelphij#include <sys/types.h> 7285612Sdelphij#ifdef HAVE_NETINET_IN_H 8285612Sdelphij#include <netinet/in.h> /* ntohl */ 9285612Sdelphij#endif 10285612Sdelphij 1154359Sroberto#include "ntp_fp.h" 1254359Sroberto#include "ntp_stdlib.h" 1354359Sroberto#include "lib_strbuf.h" 1454359Sroberto 1554359Sroberto#define LOOPBACKNET 0x7f000000 1654359Sroberto#define LOOPBACKHOST 0x7f000001 1754359Sroberto#define LOOPBACKNETMASK 0xff000000 1854359Sroberto 1954359Srobertochar * 2054359Srobertonumtohost( 2154359Sroberto u_int32 netnum 2254359Sroberto ) 2354359Sroberto{ 2454359Sroberto char *bp; 2554359Sroberto struct hostent *hp; 2654359Sroberto 2754359Sroberto /* 2854359Sroberto * This is really gross, but saves lots of hanging looking for 2954359Sroberto * hostnames for the radio clocks. Don't bother looking up 3054359Sroberto * addresses on the loopback network except for the loopback 3154359Sroberto * host itself. 3254359Sroberto */ 3354359Sroberto if ((((ntohl(netnum) & LOOPBACKNETMASK) == LOOPBACKNET) 3454359Sroberto && (ntohl(netnum) != LOOPBACKHOST)) 3554359Sroberto || ((hp = gethostbyaddr((char *)&netnum, sizeof netnum, AF_INET)) 3654359Sroberto == 0)) 3754359Sroberto return numtoa(netnum); 3854359Sroberto 3954359Sroberto LIB_GETBUF(bp); 40285612Sdelphij strlcpy(bp, hp->h_name, LIB_BUFLENGTH); 41285612Sdelphij 4254359Sroberto return bp; 4354359Sroberto} 44