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 *
20: numtohost(
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:
41: bp[LIB_BUFLENGTH-1] = '\0';
42: (void) strncpy(bp, hp->h_name, LIB_BUFLENGTH-1);
43: return bp;
44: }
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>