diff options
author | Dean Jansa <djansa@redhat.com> | 2010-09-28 15:53:28 -0500 |
---|---|---|
committer | Dean Jansa <djansa@redhat.com> | 2010-09-28 15:53:28 -0500 |
commit | edf6032e3395baa5e2a160e4f70d3b108ae31622 (patch) | |
tree | 583c4dccccd249674adb9711b083a5597d3405ac /qarshd.c | |
parent | e96e56146dc7c11d388d25db42383993b87e8791 (diff) | |
download | qarsh-edf6032e3395baa5e2a160e4f70d3b108ae31622.tar.gz qarsh-edf6032e3395baa5e2a160e4f70d3b108ae31622.tar.xz qarsh-edf6032e3395baa5e2a160e4f70d3b108ae31622.zip |
First crack at ipv6/ipv4 agnostic qarsh/qacp.
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); |