summaryrefslogtreecommitdiffstats
path: root/qarshd.c
diff options
context:
space:
mode:
authorDean Jansa <djansa@redhat.com>2010-09-28 15:53:28 -0500
committerDean Jansa <djansa@redhat.com>2010-09-28 15:53:28 -0500
commitedf6032e3395baa5e2a160e4f70d3b108ae31622 (patch)
tree583c4dccccd249674adb9711b083a5597d3405ac /qarshd.c
parente96e56146dc7c11d388d25db42383993b87e8791 (diff)
downloadqarsh-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.c19
1 files changed, 13 insertions, 6 deletions
diff --git a/qarshd.c b/qarshd.c
index ec5d1f7..fd4ca08 100644
--- a/qarshd.c
+++ b/qarshd.c
@@ -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);