-void *reporter_reportpeer( Connection_Info *stats, int ID ) {
- if ( ID > 0 ) {
- // copy the inet_ntop into temp buffers, to avoid overwriting
- char local_addr[ REPORT_ADDRLEN ];
- char remote_addr[ REPORT_ADDRLEN ];
- struct sockaddr *local = ((struct sockaddr*)&stats->local);
- struct sockaddr *peer = ((struct sockaddr*)&stats->peer);
-
- if ( local->sa_family == AF_INET ) {
- inet_ntop( AF_INET, &((struct sockaddr_in*)local)->sin_addr,
- local_addr, REPORT_ADDRLEN);
- }
-#ifdef HAVE_IPV6
- else {
- inet_ntop( AF_INET6, &((struct sockaddr_in6*)local)->sin6_addr,
- local_addr, REPORT_ADDRLEN);
- }
-#endif
-
- if ( peer->sa_family == AF_INET ) {
- inet_ntop( AF_INET, &((struct sockaddr_in*)peer)->sin_addr,
- remote_addr, REPORT_ADDRLEN);
- }
-#ifdef HAVE_IPV6
- else {
- inet_ntop( AF_INET6, &((struct sockaddr_in6*)peer)->sin6_addr,
- remote_addr, REPORT_ADDRLEN);
- }
-#endif
-
- printf( report_peer,
- ID,
- local_addr, ( local->sa_family == AF_INET ?
- ntohs(((struct sockaddr_in*)local)->sin_port) :
-#ifdef HAVE_IPV6
- ntohs(((struct sockaddr_in6*)local)->sin6_port)),
-#else
- 0),
-#endif
- remote_addr, ( peer->sa_family == AF_INET ?
- ntohs(((struct sockaddr_in*)peer)->sin_port) :
-#ifdef HAVE_IPV6
- ntohs(((struct sockaddr_in6*)peer)->sin6_port)));
-#else
- 0));
-#endif
+void *reporter_reportpeer(Connection_Info *stats, int ID)
+{
+ if (ID > 0) {
+ char laddr[REPORT_ADDRLEN],
+ daddr[REPORT_ADDRLEN];
+ unsigned lport = SockAddr_port(&stats->local),
+ dport = SockAddr_port(&stats->peer);
+
+ SockAddr_name(&stats->local, laddr, sizeof(laddr));
+ SockAddr_name(&stats->peer, daddr, sizeof(daddr));
+ printf(report_peer, ID, laddr, lport, daddr, dport);