Hello community, here is the log from the commit of package hyper-v.1955 for openSUSE:12.2:Update checked in at 2013-09-02 13:32:34 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:12.2:Update/hyper-v.1955 (Old) and /work/SRC/openSUSE:12.2:Update/.hyper-v.1955.new (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "hyper-v.1955" Changes: -------- New Changes file: --- /dev/null 2013-07-23 23:44:04.804033756 +0200 +++ /work/SRC/openSUSE:12.2:Update/.hyper-v.1955.new/hyper-v.changes 2013-09-02 13:32:36.000000000 +0200 @@ -0,0 +1,281 @@ +------------------------------------------------------------------- +Mon Aug 12 16:56:08 CEST 2013 - [email protected] + +- Skip restart_on_update with old hyper-v.rpms while old + kernel is running (bnc#770763) + +------------------------------------------------------------------- +Wed Aug 7 19:04:35 CEST 2013 - [email protected] + +- cache FQDN in kvp_daemon to avoid timeouts (bnc#828714) +- use full nlmsghdr in netlink_send +- correct payload size in netlink_send +- use single send+recv buffer +- log errors to syslog in kvp_set_ip_info +- check return value of system in hv_kvp_daemon +- in kvp_set_ip_info free mac_addr right after usage +- check return value of daemon to fix compiler warning. + +------------------------------------------------------------------- +Thu Aug 1 14:21:57 CEST 2013 - [email protected] + +- Fix send/recv buffer allocation (bnc#828714) + +------------------------------------------------------------------- +Wed Jul 24 10:18:34 CEST 2013 - [email protected] + +- set BOOTPROTO=static if any IPADDR/IP6ADDR was passed to + hv_set_ifconfig and dhcp is disabled + +------------------------------------------------------------------- +Mon Jul 15 16:16:06 CEST 2013 - [email protected] + +- update hv_kvp_daemon (merge 0783d72fa from v3.9-rc1) + Fix how ifcfg-* file is created + +------------------------------------------------------------------- +Mon Jul 15 15:24:00 CEST 2013 - [email protected] + +- update hv_kvp_daemon (changes up to 3.11-rc1): + Improve error logging in KVP daemon. + Fix file descriptor leaks + Check retrun value of strchr call + Check return value of poll call + Check return value of setsockopt call + daemon should check type of received Netlink msg + daemon setsockopt should use options macros + daemon should subscribe only to CN_KVP_IDX group + +------------------------------------------------------------------- +Mon Jul 15 12:04:05 CEST 2013 - [email protected] + +- Fix a bug in IPV6 subnet enumeration (bnc#828714) + +------------------------------------------------------------------- +Fri Mar 22 16:56:57 CET 2013 - [email protected] + +- build hv_kvp_daemon with -D_GNU_SOURCE to get O_CLOEXEC + +------------------------------------------------------------------- +Fri Mar 22 16:19:38 CET 2013 - [email protected] + +- update hv_kvp_daemon + Use CLOEXEC when opening kvp_pool files + Fix permissions of created directory and files + Fix string types + +------------------------------------------------------------------- +Tue Nov 27 11:19:32 CET 2012 - [email protected] + +- update hv_set_ifconfig, use single index for static ipv4/ipv6 [bnc#790469] + +------------------------------------------------------------------- +Sun Nov 25 17:50:40 CET 2012 - [email protected] + +- update hv_set_ifconfig further to work with our ifcfg [bnc#790469] + +------------------------------------------------------------------- +Thu Nov 22 18:14:12 CET 2012 - [email protected] + +- update hv_get_dhcp_info to work with our ifcfg [bnc#790469] +- remove cat usage from hv_get_dns_info +- add quoting to hv_set_ifconfig to make it more robust + +------------------------------------------------------------------- +Mon Nov 12 17:18:25 CET 2012 - [email protected] + +- remove code to build kmp, it was not enabled because the + drivers are now in kernel since a long time. [bnc#676890] + +------------------------------------------------------------------- +Thu Nov 8 14:30:05 CET 2012 - [email protected] + +- Netlink source address validation allows DoS [bnc#791605, CVE-2012-5532] + bugfix for recvfrom check from bnc#761200 + +------------------------------------------------------------------- +Fri Oct 26 17:13:40 CEST 2012 - [email protected] + +- update hv_set_ifconfig to work with our ifcfg + +------------------------------------------------------------------- +Sat Oct 13 11:40:30 CEST 2012 - [email protected] + +- update hv_kvp_daemon + Return the full kernel version + Don't return loopback addresses + +------------------------------------------------------------------- +Thu Oct 4 15:14:05 CEST 2012 - [email protected] + +- bump to version 4 +- update kv_kvp_daemon to 3.7-rc1 state [fate#314441] + support KVP IP Injection, helper scripts go to /usr/lib/hyper-v/bin: + hv_get_dhcp_info, hv_get_dns_info, hv_set_ifconfig +- remove usage of absolute paths in runlevel script + +------------------------------------------------------------------- +Tue Sep 4 14:55:38 CEST 2012 - [email protected] + +- remove restart_on_update in postun section + the daemon can not be restarted at this point, and the new daemon + may not be 100 percent compatible with the currently running + kernel [bnc#770763] + +------------------------------------------------------------------- +Wed May 16 20:44:36 CEST 2012 - [email protected] + +- check origin of netlink messages, use recvfrom() [bnc#761200, CVE-2012-2669] + +------------------------------------------------------------------- +Wed May 2 12:13:03 CEST 2012 - [email protected] + +- update insserv part, see comments in OBS submit request #112701 + +------------------------------------------------------------------- +Tue Mar 27 08:50:43 CEST 2012 - [email protected] + +- add kvptest.ps1.txt to docs, a PowerShell script to verify KVP + +------------------------------------------------------------------- +Mon Mar 26 19:05:48 CEST 2012 - [email protected] + +- update hv_kvp_daemon to 3.4-rc1 state + use a copy linux/hyperv.h to compile the daemon + +------------------------------------------------------------------- +Thu Dec 8 17:46:21 CET 2011 - [email protected] + +- do not package modprobe.conf rule in main package + prevents loading of ata_piix which is required for cdrom access + +------------------------------------------------------------------- +Fri Nov 18 21:49:57 CET 2011 - [email protected] + +- add Supplements to install package if dmi matches [bnc#731198] + +------------------------------------------------------------------- +Thu Sep 1 18:51:03 CEST 2011 - [email protected] + +- disable hyper-v-kmp + hv_storvsc handles now IDE and SCSI disks and ata_piix is + compiled into the kernel in SLE12, so the modprobe.conf rules + have no meaning anymore + +------------------------------------------------------------------- +Tue Jul 26 21:24:25 CEST 2011 - [email protected] + +- update hv_kvp_daemon: Cleanup kvp_get_domain_name(). If + getaddrinfo() fails, deal with it properly (this can happen if no + IP address has been assigned). Also, don't specify a specific + service in the call to getaddrinfo() to make this code as generic + as possible. + +------------------------------------------------------------------- +Sun Jul 24 17:22:41 CEST 2011 - [email protected] + +- update hv_kvp_daemon: The current win7 host does not like it when + we return the complete kernel release information. Conform to + what the host expects. + +------------------------------------------------------------------- +Fri Jun 17 15:41:33 CEST 2011 - [email protected] + +- update preun, stop_on_removal requires an argument + +------------------------------------------------------------------- +Fri Jun 17 11:09:30 CEST 2011 - [email protected] + +- remove get_release_number.sh, which was added by accident +- bump version number to 2 + +------------------------------------------------------------------- +Fri Jun 17 10:58:42 CEST 2011 - [email protected] + +- catch errors from daemon() + +------------------------------------------------------------------- ++++ 84 more lines (skipped) ++++ between /dev/null ++++ and /work/SRC/openSUSE:12.2:Update/.hyper-v.1955.new/hyper-v.changes New: ---- hyper-v.changes hyper-v.include.linux.hyperv.h hyper-v.init.sh hyper-v.kvptest.ps1.txt hyper-v.spec hyper-v.tools.hv.hv_get_dhcp_info.sh hyper-v.tools.hv.hv_get_dns_info.sh hyper-v.tools.hv.hv_kvp_daemon.c hyper-v.tools.hv.hv_set_ifconfig.sh ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ hyper-v.spec ++++++ # # spec file for package hyper-v # # Copyright (c) 2013 SUSE LINUX Products GmbH, Nuernberg, Germany. # # All modifications and additions to the file contributed by third parties # remain the property of their copyright owners, unless otherwise agreed # upon. The license for this file, and modifications and additions to the # file, is the same license as for the pristine package itself (unless the # license for the pristine package is not an Open Source License, in which # case the license is the MIT License). An "Open Source License" is a # license that conforms to the Open Source Definition (Version 1.9) # published by the Open Source Initiative. # Please submit bugfixes or comments via http://bugs.opensuse.org/ # %define hv_kvp_daemon hv_kvp_daemon Name: hyper-v ExclusiveArch: %ix86 x86_64 PreReq: %insserv_prereq Summary: Microsoft Hyper-V tools License: GPL-2.0 Group: System/Kernel Supplements: modalias(dmi*:svn*MicrosoftCorporation*:pn*VirtualMachine*:rn*VirtualMachine*) Supplements: modalias(pci:v00001414d00005353sv*sd*bc*sc*i*) Url: http://www.kernel.org # Arbitrary version number Version: 4 Release: 0 Source5: hyper-v.kvptest.ps1.txt Source9: hyper-v.include.linux.hyperv.h Source10: hyper-v.tools.hv.hv_kvp_daemon.c 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 BuildRoot: %{_tmppath}/%{name}-%{version}-build %description This package contains the Microsoft Hyper-V tools. %prep %setup -Tc cp -avL %{S:5} kvptest.ps1.txt cp -vL %{S:9} %{hv_kvp_daemon}.h cp -vL %{S:10} %{hv_kvp_daemon}.c %build sed -i~ '/#include <linux.hyperv.h>/d' %{hv_kvp_daemon}.c gcc \ $RPM_OPT_FLAGS \ -Wno-unused-variable \ -Wno-pointer-sign \ -D_GNU_SOURCE \ -g \ %{hv_kvp_daemon}.c \ -include %{hv_kvp_daemon}.h \ -DCN_KVP_IDX=0x9 \ -DCN_KVP_VAL=0x1 \ -o %{hv_kvp_daemon} %install mkdir -p $RPM_BUILD_ROOT/usr/sbin install -m755 %{hv_kvp_daemon} $RPM_BUILD_ROOT/usr/sbin mkdir -p $RPM_BUILD_ROOT/usr/lib/%{name}/bin cp -avL %{S:20} $RPM_BUILD_ROOT/usr/lib/%{name}/bin/hv_get_dhcp_info cp -avL %{S:21} $RPM_BUILD_ROOT/usr/lib/%{name}/bin/hv_get_dns_info cp -avL %{S:22} $RPM_BUILD_ROOT/usr/lib/%{name}/bin/hv_set_ifconfig chmod 755 $RPM_BUILD_ROOT/usr/lib/%{name}/bin/* mkdir -p $RPM_BUILD_ROOT/etc/init.d install -m755 %{S:11} $RPM_BUILD_ROOT/etc/init.d/%{hv_kvp_daemon} ln -sfvbn ../../etc/init.d/%{hv_kvp_daemon} $RPM_BUILD_ROOT/usr/sbin/rc%{hv_kvp_daemon} %files %defattr (-,root,root) %doc kvptest.ps1.txt /etc/init.d/%{hv_kvp_daemon} /usr/sbin/rc%{hv_kvp_daemon} /usr/sbin/%{hv_kvp_daemon} /usr/lib/%{name} %post board_vendor= product_name= if pushd /sys/class/dmi/id > /dev/null 2>/dev/null then if test -r board_vendor then board_vendor="`cat board_vendor`" fi if test -r product_name then product_name="`cat product_name`" fi popd > /dev/null fi if test "${board_vendor}" = "Microsoft Corporation" -a "${product_name}" = "Virtual Machine" then echo "Enabling %{hv_kvp_daemon} on '${product_name}' from '${board_vendor}'" %{insserv_force_if_yast %{hv_kvp_daemon}} fi %preun %stop_on_removal %{hv_kvp_daemon} %postun # no restart on update because the daemon can not be restarted %insserv_cleanup %changelog ++++++ hyper-v.include.linux.hyperv.h ++++++ ++++ 1154 lines (skipped) ++++++ hyper-v.init.sh ++++++ #!/bin/sh # # LSB compatible service control script; see http://www.linuxbase.org/spec/ # ### BEGIN INIT INFO # Provides: hv_kvp_daemon # Required-Start: $null # Should-Start: $syslog $remote_fs $time # Required-Stop: $null # Should-Stop: $syslog $remote_fs $time # Default-Start: 3 5 # Default-Stop: 0 1 2 6 # Short-Description: hv_kvp_daemon provides info to the host # Description: Start hv_kvp_daemon to allow the host to query this guest ### END INIT INFO # Check for missing binaries (stale symlinks should not happen) # Note: Special treatment of stop for LSB conformance HV_KVP_BIN=/usr/sbin/hv_kvp_daemon test -x $HV_KVP_BIN || { echo "$HV_KVP_BIN not installed"; if [ "$1" = "stop" ]; then exit 0; else exit 5; fi; } . /etc/rc.status # Reset status of this service rc_reset case "$1" in start) echo -n "Starting Hyper-V KVP daemon " # The service can not be restarted # IF the currently running kernel is too old, the new daemon is started # anyway. Due to a flaw in the old kernel-user protocol the kernel # will flood /var/log/messages with messages like: # "hv_utils: KVP: user-mode registering done." # This is also caused by old hyper-v.rpms which have a restart command # in their post install script. Catch those old kernels and avoid the # flood, which will easily fill the root partition during an upgrade. case "`uname -r`" in 2.*) rc_failed 3 ;; 3.0.13-*) rc_failed 3 ;; 3.0.26-*) rc_failed 3 ;; 3.0.31-*) rc_failed 3 ;; 3.0.34-*) rc_failed 3 ;; 3.0.38-*) rc_failed 3 ;; 3.0.42-*) rc_failed 3 ;; *) env PATH=/usr/lib/hyper-v/bin:$PATH \ startproc $HV_KVP_BIN ;; esac rc_status -v ;; stop) echo -n "Shutting down Hyper-V KVP daemon " killproc -TERM $HV_KVP_BIN rc_status -v ;; try-restart|condrestart) if test "$1" = "condrestart"; then echo "${attn} Use try-restart ${done}(LSB)${attn} rather than condrestart ${warn}(RH)${norm}" fi $0 status if test $? = 0; then $0 restart else rc_reset # Not running is not a failure. fi # Remember status and be quiet rc_status ;; restart) ## Stop the service and regardless of whether it was ## running or not, start it again. $0 stop $0 start # Remember status and be quiet rc_status ;; force-reload) echo -n "Reload service Hyper-V KVP daemon " $0 try-restart rc_status ;; reload) rc_failed 3 rc_status -v ;; status) echo -n "Checking for service Hyper-V KVP daemon " checkproc $HV_KVP_BIN rc_status -v ;; *) echo "Usage: $0 {start|stop|status|try-restart|restart|force-reload|reload}" exit 1 ;; esac rc_exit ++++++ hyper-v.kvptest.ps1.txt ++++++ # Windows PowerShell script to test Key Value Pair functionality # # http://blogs.msdn.com/b/virtual_pc_guy/archive/2008/11/18/hyper-v-script-looking-at-kvp-guestintrinsicexchangeitems.aspx # # Per default execution of scripts is disabled. # http://technet.microsoft.com/en-us/library/ee176949.aspx # The command 'Set-ExecutionPolicy RemoteSigned' will enable it. # # Filter for parsing XML data filter Import-CimXml { # Create new XML object from input $CimXml = [Xml]$_ $CimObj = New-Object -TypeName System.Object # Iterate over the data and pull out just the value name and data for each entry foreach ($CimProperty in $CimXml.SelectNodes("/INSTANCE/PROPERTY[@NAME='Name']")) { $CimObj | Add-Member -MemberType NoteProperty -Name $CimProperty.NAME -Value $CimProperty.VALUE } foreach ($CimProperty in $CimXml.SelectNodes("/INSTANCE/PROPERTY[@NAME='Data']")) { $CimObj | Add-Member -MemberType NoteProperty -Name $CimProperty.NAME -Value $CimProperty.VALUE } # Display output $CimObj } # Prompt for the Hyper-V Server to use $HyperVServer = Read-Host "Specify the Hyper-V Server to use (enter '.' for the local computer)" # Prompt for the virtual machine to use $VMName = Read-Host "Specify the name of the virtual machine" # Get the virtual machine object $query = "Select * From Msvm_ComputerSystem Where ElementName='" + $VMName + "'" $Vm = gwmi -namespace root\virtualization -query $query -computername $HyperVServer # Get the KVP Object $query = "Associators of {$Vm} Where AssocClass=Msvm_SystemDevice ResultClass=Msvm_KvpExchangeComponent" $Kvp = gwmi -namespace root\virtualization -query $query -computername $HyperVServer Write-Host Write-Host "Guest KVP information for" $VMName # Filter the results $Kvp.GuestIntrinsicExchangeItems | Import-CimXml ++++++ hyper-v.tools.hv.hv_get_dhcp_info.sh ++++++ #!/bin/bash # This script retrieves the DHCP state of a given interface. # In the interest of keeping the KVP daemon code free of distro specific # information; the kvp daemon code invokes this external script to gather # DHCP setting for the specific interface. # # Input: Name of the interface # # Output: The script prints the string "Enabled" to stdout to indicate # that DHCP is enabled on the interface. If DHCP is not enabled, # the script prints the string "Disabled" to stdout. # # Each Distro is expected to implement this script in a distro specific # fashion. For instance on Distros that ship with Network Manager enabled, # this script can be based on the Network Manager APIs for retrieving DHCP # information. if_file="/etc/sysconfig/network/ifcfg-$1" dhcp=$(grep -- '^BOOTPROTO=.*dhcp' "$if_file" 2>/dev/null) if [ "$dhcp" != "" ]; then echo "Enabled" else echo "Disabled" fi ++++++ hyper-v.tools.hv.hv_get_dns_info.sh ++++++ #!/bin/bash # This script parses /etc/resolv.conf to retrive DNS information. # In the interest of keeping the KVP daemon code free of distro specific # information; the kvp daemon code invokes this external script to gather # DNS information. # This script is expected to print the nameserver values to stdout. # Each Distro is expected to implement this script in a distro specific # fashion. For instance on Distros that ship with Network Manager enabled, # this script can be based on the Network Manager APIs for retrieving DNS # entries. if test -r /etc/resolv.conf then awk -- '/^nameserver/ { print $2 }' /etc/resolv.conf fi ++++++ hyper-v.tools.hv.hv_kvp_daemon.c ++++++ ++++ 1744 lines (skipped) ++++++ hyper-v.tools.hv.hv_set_ifconfig.sh ++++++ #!/bin/bash # # In the interest of keeping the KVP daemon code free of distro specific # information; the kvp daemon code invokes this external script to configure # the interface. # # The only argument to this script is the configuration file that is to # be used to configure the interface. # # Here is the format of the ip configuration file: # # HWADDR=macaddr # DEVICE=interface name # BOOTPROTO=<protocol> (where <protocol> is "dhcp" if DHCP is configured # or "none" if no boot-time protocol should be used) # # IPADDR0=ipaddr1 # IPADDR1=ipaddr2 # IPADDRx=ipaddry (where y = x + 1) # # NETMASK0=netmask1 # NETMASKx=netmasky (where y = x + 1) # # GATEWAY=ipaddr1 # GATEWAYx=ipaddry (where y = x + 1) # # DNSx=ipaddrx (where first DNS address is tagged as DNS1 etc) # # IPV6 addresses will be tagged as IPV6ADDR, IPV6 gateway will be # tagged as IPV6_DEFAULTGW and IPV6 NETMASK will be tagged as # IPV6NETMASK. # # The host can specify multiple ipv4 and ipv6 addresses to be # configured for the interface. Furthermore, the configuration # needs to be persistent. A subsequent GET call on the interface # is expected to return the configuration that is set via the SET # call. # cfg=$1 if ! test -f "${cfg}" then : expect configuration datafile as first argument exit 1 fi # send subshell output to syslog ( f=/etc/sysconfig/network/scripts/functions if test -f ${f} then . ${f} else echo "MISSING ${f}" exit 1 fi # remove known config variables from environment unset HWADDR unset BOOTPROTO unset DEVICE unset ${!IPADDR*} unset ${!NETMASK*} unset ${!GATEWAY*} unset ${!IPV6ADDR*} unset ${!IPV6NETMASK*} unset ${!IPV6_DEFAULTGW*} unset ${!DNS*} . "$1" # if test -z "${DEVICE}" then echo "Missing DEVICE= in ${cfg}" exit 1 fi # t_ifcfg=`mktemp` t_ifroute=`mktemp` _exit() { rm -f "${t_ifcfg}" "${t_ifroute}" } trap _exit EXIT # if test -z "${t_ifcfg}" || test -z "${t_ifroute}" then exit 1 fi # # Create ifcfg-* file ( echo "STARTMODE=auto" # if test -n "${HWADDR}" then : # ignore HWADDR, it just repeats the existing MAC value fi # if test "${BOOTPROTO}" = "dhcp" then echo "BOOTPROTO=dhcp" elif test -n "${!IPADDR*}${!IPV6ADDR*}" then echo "BOOTPROTO=static" fi # single index for all ipv4 and ipv6 adresses in final ifcfg file i=0 idx="" # loop through all ipv4 adresses for var in ${!IPADDR*} do index=${var#IPADDR} pfx= # find corresponding NETMASK variable eval nm=\$NETMASK${index} # if specified, calculate prefix if test -n "${nm}" then pfx=`mask2pfxlen "${nm}" 2>/dev/null` fi # if not specified, force prefix if test -z "${pfx}" then pfx="32" fi # construct actual value eval val=\$IPADDR${index} # write config variable echo "IPADDR${idx}='${val}/${pfx}'" idx="_$((++i))" done # loop through all ipv6 adresses for var in ${!IPV6ADDR*} do index=${var#IPV6ADDR} # find corresponding IPV6NETMASK variable eval pfx=\$IPV6NETMASK${index} # if not specified, force prefix if test -z "${pfx}" then pfx=128 fi # construct actual value eval val=\$IPV6ADDR${index} # write config variable echo "IPADDR${idx}='${val}/${pfx}'" idx="_$((++i))" done ) >> "${t_ifcfg}" # Create ifroute-* file ( if test -n "${GATEWAY}" then echo "default $GATEWAY - $DEVICE" fi if test -n "${IPV6_DEFAULTGW}" then echo "default $IPV6_DEFAULTGW - $DEVICE" fi ) >> "${t_ifroute}" # Only a single default gateway is supported unset GATEWAY IPV6_DEFAULTGW if test -n "${!GATEWAY*}${!IPV6_DEFAULTGW*}" then echo "WARNING: multiple gateways not supported: ${!GATEWAY*} ${!IPV6_DEFAULTGW*}" fi # collect DNS info _DNS_= for var in ${!DNS*} do eval val=\$${var} if test -n "${_DNS_}" then _DNS_="${_DNS_} ${val}" else _DNS_=${val} fi done # echo "$0: working on network interface ifcfg-${DEVICE}" cp -fb ${t_ifcfg} "/etc/sysconfig/network/ifcfg-${DEVICE}" cp -fb ${t_ifroute} "/etc/sysconfig/network/ifroute-${DEVICE}" if test -w /etc/sysconfig/network/config then sed -i "s@^NETCONFIG_DNS_STATIC_SERVERS=.*@NETCONFIG_DNS_STATIC_SERVERS='$_DNS_'@" /etc/sysconfig/network/config netconfig update -m dns fi ifdown "${DEVICE}" ifup "${DEVICE}" ) 2>&1 | logger -t "${0##*/}[$PPID / $$]" -- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
