diff --git a/full-kernel-version.patch b/full-kernel-version.patch new file mode 100644 index 0000000..a555544 --- /dev/null +++ b/full-kernel-version.patch @@ -0,0 +1,60 @@ +From: "K. Y. Srinivasan" +Subject: [PATCH 1/1] tools: hv: Return the full kernel version +Date: Fri, 12 Oct 2012 16:40:10 -0700 +Message-Id: <1350085210-11108-1-git-send-email-kys@microsoft.com> + +Currently, we are returning the same string for both OSBuildNumber +and OSVersion keys. Return the full uts string for the OSBuild +key since Windows does not impose any restrictions on this. + +Signed-off-by: K. Y. Srinivasan +Reviewed-by: Haiyang Zhang +Reported-by: Claudio Latini +--- + tools/hv/hv_kvp_daemon.c | 9 ++++++--- + 1 files changed, 6 insertions(+), 3 deletions(-) + +diff --git a/tools/hv/hv_kvp_daemon.c b/tools/hv/hv_kvp_daemon.c +index 5959aff..6c7bcb9 100644 +--- a/tools/hv/hv_kvp_daemon.c ++++ b/tools/hv/hv_kvp_daemon.c +@@ -88,6 +88,7 @@ static char *os_major = ""; + static char *os_minor = ""; + static char *processor_arch; + static char *os_build; ++static char *os_version; + static char *lic_version = "Unknown version"; + static struct utsname uts_buf; + +@@ -453,7 +454,9 @@ void kvp_get_os_info(void) + char *p, buf[512]; + + uname(&uts_buf); +- os_build = uts_buf.release; ++ os_version = uts_buf.release; ++ os_build = strdup(uts_buf.release); ++ + os_name = uts_buf.sysname; + processor_arch = uts_buf.machine; + +@@ -462,7 +465,7 @@ void kvp_get_os_info(void) + * string to be of the form: x.y.z + * Strip additional information we may have. + */ +- p = strchr(os_build, '-'); ++ p = strchr(os_version, '-'); + if (p) + *p = '\0'; + +@@ -1649,7 +1652,7 @@ int main(void) + strcpy(key_name, "OSMinorVersion"); + break; + case OSVersion: +- strcpy(key_value, os_build); ++ strcpy(key_value, os_version); + strcpy(key_name, "OSVersion"); + break; + case ProcessorArchitecture: +-- +1.7.4.1 + diff --git a/hyper-v.changes b/hyper-v.changes index ebe7ae0..eee0e75 100644 --- a/hyper-v.changes +++ b/hyper-v.changes @@ -1,3 +1,10 @@ +------------------------------------------------------------------- +Sat Oct 13 11:40:30 CEST 2012 - ohering@suse.de + +- update hv_kvp_daemon + Return the full kernel version + Don't return loopback addresses + ------------------------------------------------------------------- Thu Oct 4 15:14:05 CEST 2012 - ohering@suse.de diff --git a/hyper-v.spec b/hyper-v.spec index 2363e95..6f791cd 100644 --- a/hyper-v.spec +++ b/hyper-v.spec @@ -53,6 +53,8 @@ Source11: hyper-v.init.sh Source20: hyper-v.tools.hv.hv_get_dhcp_info.sh Source21: hyper-v.tools.hv.hv_get_dns_info.sh Source22: hyper-v.tools.hv.hv_set_ifconfig.sh +Patch0: full-kernel-version.patch +Patch1: no-loopback.patch BuildRoot: %{_tmppath}/%{name}-%{version}-build %if %{with_kmp} @@ -87,6 +89,8 @@ This package contains the Microsoft Hyper-V drivers. cp -avL %{S:5} kvptest.ps1.txt cp -vL %{S:9} %{hv_kvp_daemon}.h cp -vL %{S:10} %{hv_kvp_daemon}.c +%patch0 -p3 +%patch1 -p3 %build sed -i~ '/#include /d' %{hv_kvp_daemon}.c diff --git a/no-loopback.patch b/no-loopback.patch new file mode 100644 index 0000000..8aade95 --- /dev/null +++ b/no-loopback.patch @@ -0,0 +1,67 @@ +From: "K. Y. Srinivasan" +Subject: [PATCH 1/1] Tools: hv: Don't return loopback addresses +Date: Fri, 12 Oct 2012 16:41:48 -0700 +Message-Id: <1350085308-11152-1-git-send-email-kys@microsoft.com> + +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 +Reviewed-by: Haiyang Zhang +Reported-by: Claudio Latini +--- + 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 6c7bcb9..13c2a14 100644 +--- a/tools/hv/hv_kvp_daemon.c ++++ b/tools/hv/hv_kvp_daemon.c +@@ -43,6 +43,7 @@ + #include + #include + #include ++#include + + /* + * 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; + } +-- +1.7.4.1 +