diff options
| author | K. Y. Srinivasan <kys@microsoft.com> | 2012-10-25 14:15:50 -0700 | 
|---|---|---|
| committer | Greg Kroah-Hartman <gregkh@linuxfoundation.org> | 2012-10-30 11:11:24 -0700 | 
| commit | 3321e738d6f0a82b2c19f9d5890f304dab1e5357 (patch) | |
| tree | f86293d804947c65262b24db1ee9f473e9be2364 /tools/hv | |
| parent | f426a36cecfea2cfd69c28ca5ba4f4bfae913f63 (diff) | |
| download | linux-3321e738d6f0a82b2c19f9d5890f304dab1e5357.tar.bz2 | |
Tools: hv: Don't return loopback addresses
Don't return loopback addresses and further don't terminate
the IP address strings with a semicolon. This is the current
behavior of Windows guests.
Signed-off-by: K. Y. Srinivasan <kys@microsoft.com>
Reviewed-by: Haiyang Zhang <haiyangz@microsoft.com>
Reported-by: Claudio Latini <claudio.latini@live.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Diffstat (limited to 'tools/hv')
| -rw-r--r-- | tools/hv/hv_kvp_daemon.c | 13 | 
1 files changed, 9 insertions, 4 deletions
| diff --git a/tools/hv/hv_kvp_daemon.c b/tools/hv/hv_kvp_daemon.c index 6c7bcb9932cb..13c2a142331d 100644 --- a/tools/hv/hv_kvp_daemon.c +++ b/tools/hv/hv_kvp_daemon.c @@ -43,6 +43,7 @@  #include <sys/stat.h>  #include <fcntl.h>  #include <dirent.h> +#include <net/if.h>  /*   * KVP protocol: The user mode component first registers with the @@ -882,7 +883,7 @@ static int kvp_process_ip_address(void *addrp,  		addr_length = INET6_ADDRSTRLEN;  	} -	if ((length - *offset) < addr_length + 1) +	if ((length - *offset) < addr_length + 2)  		return HV_E_FAIL;  	if (str == NULL) {  		strcpy(buffer, "inet_ntop failed\n"); @@ -890,11 +891,13 @@ static int kvp_process_ip_address(void *addrp,  	}  	if (*offset == 0)  		strcpy(buffer, tmp); -	else +	else { +		strcat(buffer, ";");  		strcat(buffer, tmp); -	strcat(buffer, ";"); +	}  	*offset += strlen(str) + 1; +  	return 0;  } @@ -956,7 +959,9 @@ kvp_get_ip_info(int family, char *if_name, int op,  		 * supported address families; if not we gather info on  		 * the specified address family.  		 */ -		if ((family != 0) && (curp->ifa_addr->sa_family != family)) { +		if ((((family != 0) && +			 (curp->ifa_addr->sa_family != family))) || +			 (curp->ifa_flags & IFF_LOOPBACK)) {  			curp = curp->ifa_next;  			continue;  		} |