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
19char *
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