From: russor Date: Fri, 26 Feb 2016 00:39:13 +0000 (-0800) Subject: set the local address for display if it was bound X-Git-Tag: v0.87~12^2~6 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=409cfbbc14971250c08e84654c5f48e6f748d303;p=thirdparty%2Fmtr.git set the local address for display if it was bound --- diff --git a/net.c b/net.c index 529f496..fc3a5ee 100644 --- 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; }