diff options
Diffstat (limited to 'qarshd.c')
-rw-r--r-- | qarshd.c | 19 |
1 files changed, 13 insertions, 6 deletions
@@ -33,6 +33,7 @@ #include <sys/socket.h> #include <sys/sendfile.h> #include <arpa/inet.h> +#include <netdb.h> #include <pwd.h> #include <grp.h> @@ -48,7 +49,7 @@ int debug = 0; /* Globals */ -struct sockaddr_in peername; +struct sockaddr_storage peername; int child_exitted = 0; /* A mini cache for rstat so we can check it in pushfile */ @@ -384,7 +385,9 @@ int main(int argc, char *argv[]) { int ch; - socklen_t peernamelen; + socklen_t peerlen; + char peer_hoststr[NI_MAXHOST]; + char peer_portstr[NI_MAXSERV]; openlog("qarshd", LOG_PID, LOG_DAEMON); @@ -401,10 +404,14 @@ main(int argc, char *argv[]) } /* daemon initialization */ - peernamelen = sizeof peername; - getpeername(0, (struct sockaddr *)&peername, &peernamelen); - syslog(LOG_INFO, "Talking to peer %s:%d", - inet_ntoa(peername.sin_addr), ntohs(peername.sin_port)); + peerlen = sizeof peername; + getpeername(0, (struct sockaddr *)&peername, &peerlen); + getnameinfo((struct sockaddr *)&peername, peerlen, + peer_hoststr, NI_MAXHOST, peer_portstr, + NI_MAXSERV, NI_NUMERICHOST); + syslog(LOG_INFO, "Talking to peer %s:%s (%s)", peer_hoststr, peer_portstr, + peername.ss_family == AF_INET ? "IPv4" : "IPv6"); + /* Start reading packets from stdin */ handle_packets(0); |