X-Git-Url: http://sjero.net/git/?p=iperf;a=blobdiff_plain;f=src%2FReportCSV.c;h=731925587faa98c2b324f622284d4f46ac60cbee;hp=b9ea604b1cc33478b0cb1d647c323e8561c5ed83;hb=a5a03e6ab0fdf9c4d7d4c085fcf01436f9ba3202;hpb=90fc1e2c0c74319759b21d4a177c32691b88fdf3 diff --git a/src/ReportCSV.c b/src/ReportCSV.c index b9ea604..7319255 100644 --- a/src/ReportCSV.c +++ b/src/ReportCSV.c @@ -93,52 +93,19 @@ void CSV_stats( Transfer_Info *stats ) { } } -void *CSV_peer( Connection_Info *stats, int ID ) { - - // copy the inet_ntop into temp buffers, to avoid overwriting - char local_addr[ REPORT_ADDRLEN ]; - char remote_addr[ REPORT_ADDRLEN ]; - char *buf = malloc( REPORT_ADDRLEN*2 + 10 ); - struct sockaddr *local = ((struct sockaddr*)&stats->local); - struct sockaddr *peer = ((struct sockaddr*)&stats->peer); +void *CSV_peer(Connection_Info *stats, int ID) +{ + char laddr[REPORT_ADDRLEN], + daddr[REPORT_ADDRLEN], + *buf = malloc(2 * REPORT_ADDRLEN + 10); + unsigned lport = SockAddr_port(&stats->local), + dport = SockAddr_port(&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 + SockAddr_name(&stats->local, laddr, sizeof(laddr)); + SockAddr_name(&stats->peer, daddr, sizeof(daddr)); - snprintf(buf, REPORT_ADDRLEN*2+10, reportCSV_peer, - 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 + snprintf(buf, 2 * REPORT_ADDRLEN, reportCSV_peer, + laddr, lport, daddr, dport); return buf; }