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