]> sjero.net Git - iperf/blobdiff - src/ReportCSV.c
Native IPv6 support for iperf
[iperf] / src / ReportCSV.c
index b9ea604b1cc33478b0cb1d647c323e8561c5ed83..731925587faa98c2b324f622284d4f46ac60cbee 100644 (file)
@@ -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;
 }