xref: /netbsd/external/bsd/ntp/dist/libntp/socktoa.c (revision 6550d01e)
1 /*	$NetBSD: socktoa.c,v 1.1.1.1 2009/12/13 16:55:05 kardel Exp $	*/
2 
3 /*
4  * socktoa - return a numeric host name from a sockaddr_storage structure
5  */
6 
7 #ifdef HAVE_CONFIG_H
8 #include <config.h>
9 #endif
10 
11 #include <sys/types.h>
12 #ifdef HAVE_SYS_SOCKET_H
13 #include <sys/socket.h>
14 #endif
15 #ifdef HAVE_NETINET_IN_H
16 #include <netinet/in.h>
17 #endif
18 
19 #include <arpa/inet.h>
20 
21 #ifdef ISC_PLATFORM_NEEDNTOP
22 #include <isc/net.h>
23 #endif
24 
25 #include <stdio.h>
26 
27 #include "ntp_fp.h"
28 #include "lib_strbuf.h"
29 #include "ntp_stdlib.h"
30 #include "ntp.h"
31 
32 char *
33 socktoa(
34 	sockaddr_u *sock
35 	)
36 {
37 	register char *buffer;
38 
39 	LIB_GETBUF(buffer);
40 
41 	if (NULL == sock)
42 		strncpy(buffer, "(null)", LIB_BUFLENGTH);
43 	else {
44 		switch(AF(sock)) {
45 
46 		case AF_INET:
47 		case AF_UNSPEC:
48 			inet_ntop(AF_INET, PSOCK_ADDR4(sock), buffer,
49 				  LIB_BUFLENGTH);
50 			break;
51 
52 		case AF_INET6:
53 			inet_ntop(AF_INET6, PSOCK_ADDR6(sock), buffer,
54 				  LIB_BUFLENGTH);
55 			break;
56 
57 		default:
58 			snprintf(buffer, LIB_BUFLENGTH,
59 				 "(socktoa unknown family %d)",
60 				 AF(sock));
61 		}
62 	}
63 	return buffer;
64 }
65