]> git.ipfire.org Git - thirdparty/mtr.git/commitdiff
set the local address for display if it was bound
authorrussor <russor@whatsapp.com>
Fri, 26 Feb 2016 00:39:13 +0000 (16:39 -0800)
committerrussor <russor@whatsapp.com>
Fri, 8 Apr 2016 23:59:27 +0000 (16:59 -0700)
net.c

diff --git a/net.c b/net.c
index 529f496a96452c54bbf18eaf4b9fa90cea5a72ad..fc3a5eec0e6c6ce467190dd6a443321c94905af1 100644 (file)
--- a/net.c
+++ b/net.c
@@ -1531,7 +1531,13 @@ void net_reset(void)
 
 int net_set_interfaceaddress (char *InterfaceAddress)
 {
-  int len = 0;
+#ifdef ENABLE_IPV6
+  struct sockaddr_storage name_struct;
+#else
+  struct sockaddr_in name_struct;
+#endif
+  struct sockaddr * name = (struct sockaddr *) &name_struct;
+  socklen_t len = 0;
 
   if (!InterfaceAddress) return 0; 
 
@@ -1561,6 +1567,9 @@ int net_set_interfaceaddress (char *InterfaceAddress)
     perror("mtr: failed to bind to interface");
       return( 1 );
   }
+  len = sizeof name_struct;
+  getsockname (sendsock, name, &len);
+  sockaddrtop( name, localaddr, sizeof localaddr );
   return 0; 
 }