diff -u mtr-0.71/net.c mtr-0.71.jd/net.c
--- mtr-0.71/net.c	2006-03-24 07:37:17.000000000 +0100
+++ mtr-0.71.jd/net.c	2006-05-04 16:38:20.000000000 +0200
@@ -676,6 +677,14 @@
 
 char * net_localaddr (void)
 {
+  struct sockaddr_storage name_struct;
+  struct sockaddr * name = (struct sockaddr *) &name_struct;
+  socklen_t len; 
+
+  len = sizeof name_struct;
+  getsockname (sendsock, name, &len);
+  sockaddrtop( name, localaddr, sizeof localaddr );
+             
   return localaddr;
 }
 
@@ -782,8 +791,6 @@
 #else
   struct sockaddr_in name_struct; 
 #endif
-  struct sockaddr * name = (struct sockaddr *) &name_struct;
-  socklen_t len; 
 
   net_reset();
 
@@ -815,9 +822,6 @@
     exit( EXIT_FAILURE );
   }
 
-  len = sizeof name_struct; 
-  getsockname (recvsock, name, &len);
-  sockaddrtop( name, localaddr, sizeof localaddr );
 #if 0
   printf ("got localaddr: %s\n", localaddr); 
 #endif
@@ -896,7 +900,7 @@
 
 int net_set_interfaceaddress (char *InterfaceAddress)
 {
-  int len = 0;
+  size_t len = 0;
 
   if (!InterfaceAddress) return 0; 
 
Only in mtr-0.71.jd: tr
