Hello community,

here is the log from the commit of package kdump for openSUSE:Factory checked 
in at 2018-04-07 20:55:05
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/kdump (Old)
 and      /work/SRC/openSUSE:Factory/.kdump.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "kdump"

Sat Apr  7 20:55:05 2018 rev:97 rq:594068 version:0.8.16

Changes:
--------
--- /work/SRC/openSUSE:Factory/kdump/kdump.changes      2018-03-20 
21:51:45.120278945 +0100
+++ /work/SRC/openSUSE:Factory/.kdump.new/kdump.changes 2018-04-07 
20:55:07.670580126 +0200
@@ -1,0 +2,18 @@
+Fri Apr  6 16:48:57 UTC 2018 - ptesa...@suse.com
+
+- kdump-pass-IPv6-address-prefix-separately.patch: IPv6 setup: pass
+  address prefix in separate dracut arg (bsc#1062026).
+- kdump-pass-all-IP-routes-to-kdump-environment.patch: IP setup:
+  pass all routes to kdump environment (bsc#1062026).
+- kdump-remove-IPv6-brackets-for-getaddrinfo.patch: Routable: do
+  not pass bracketed IPv6 to getaddrinfo (bsc#1062026).
+- kdump-skip-IPv4-if-no-address.patch: IP setup: don't bother with
+  IPv4 if there are no addresses (bsc#1062026).
+
+-------------------------------------------------------------------
+Fri Apr  6 12:49:54 UTC 2018 - ptesa...@suse.com
+
+- kdump-use-bus-id-to-identify-qeth-devices.patch: Use bus id to
+  identify qeth devices (bsc#1085617).
+
+-------------------------------------------------------------------

New:
----
  kdump-pass-IPv6-address-prefix-separately.patch
  kdump-pass-all-IP-routes-to-kdump-environment.patch
  kdump-remove-IPv6-brackets-for-getaddrinfo.patch
  kdump-skip-IPv4-if-no-address.patch
  kdump-use-bus-id-to-identify-qeth-devices.patch

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ kdump.spec ++++++
--- /var/tmp/diff_new_pack.FK9Uar/_old  2018-04-07 20:55:08.842537708 +0200
+++ /var/tmp/diff_new_pack.FK9Uar/_new  2018-04-07 20:55:08.846537563 +0200
@@ -91,6 +91,11 @@
 Patch42:        %{name}-nokaslr.patch
 Patch43:        %{name}-no-crashkernel-in-Xen-PV-DomU.patch
 Patch44:        %{name}-always-copy-timezone.patch
+Patch45:        %{name}-use-bus-id-to-identify-qeth-devices.patch
+Patch46:        %{name}-pass-IPv6-address-prefix-separately.patch
+Patch47:        %{name}-pass-all-IP-routes-to-kdump-environment.patch
+Patch48:        %{name}-remove-IPv6-brackets-for-getaddrinfo.patch
+Patch49:        %{name}-skip-IPv4-if-no-address.patch
 BuildRequires:  asciidoc
 BuildRequires:  cmake
 BuildRequires:  gcc-c++
@@ -197,6 +202,11 @@
 %patch42 -p1
 %patch43 -p1
 %patch44 -p1
+%patch45 -p1
+%patch46 -p1
+%patch47 -p1
+%patch48 -p1
+%patch49 -p1
 
 %build
 export CFLAGS="%{optflags}"

++++++ kdump-pass-IPv6-address-prefix-separately.patch ++++++
From: Michal Koutny <mkou...@suse.com>
Date: Mon, 26 Mar 2018 20:34:19 +0200
Subject: IPv6 setup: pass address prefix in separate dracut arg
References: bsc#1062026
Upstream: merged
Git-commit: c6fb83e6ebc310c615c145962f71b3f6f4819e88

Dracut distinguishes IPv6 addresses by bracket enclosing [1] so pass an
IPv6 address as such. The address prefix is passed separately through
netmask dracut argument (that is a slight misnomer as dracut just
propagates that value to iproute2 tools [2] which interpret it as
decimal number of prefix bits).

[1] 
https://github.com/dracutdevs/dracut/blob/031e2f7bb8aea447cd87e455b184106acb4aa435/modules.d/40network/net-lib.sh#L441
[2] 
https://github.com/dracutdevs/dracut/blob/031e2f7bb8aea447cd87e455b184106acb4aa435/modules.d/40network/ifup.sh#L130
---
 init/setup-kdump.functions |    7 ++++---
 1 file changed, 4 insertions(+), 3 deletions(-)

--- a/init/setup-kdump.functions
+++ b/init/setup-kdump.functions
@@ -586,7 +586,7 @@ function kdump_ip6_config()                                 
           # {{
 {
     local iface="$1"
     local bootif="$2"
-    local ipaddr peeraddr gwaddr hostname
+    local ipaddr peeraddr gwaddr netmask hostname
     local family cidr rest prefix
 
     hostname=$(hostname)
@@ -598,7 +598,8 @@ function kdump_ip6_config()                                 
           # {{
 
        ipaddr="${cidr%/*}"
        prefix="${cidr:${#ipaddr}}"
-       ipaddr="[$ipaddr]$prefix"
+       netmask="${prefix:1}"
+       ipaddr="[$ipaddr]"
        set -- $rest
 
         if [ "$1" == "peer" ] ; then
@@ -609,7 +610,7 @@ function kdump_ip6_config()                                 
           # {{
            peeraddr=
         fi
 
-       echo "ip=$ipaddr:$peeraddr:$gwaddr::$hostname:$bootif:none"
+       echo "ip=$ipaddr:$peeraddr:$gwaddr:$netmask:$hostname:$bootif:none"
     done < <(ip -6 address show dev "$iface" permanent scope global)
 }                                                                         # }}}
 
++++++ kdump-pass-all-IP-routes-to-kdump-environment.patch ++++++
From: Michal Koutny <mkou...@suse.com>
Date: Mon, 26 Mar 2018 20:40:40 +0200
Subject: IP setup: pass all routes to kdump environment
References: bsc#1062026
Upstream: merged
Git-commit: 7013c7f7e081b1691a6b30ba213c39a5ab38e5fe

In some network setups the kdump target may not be routable through the
default route. Thus pass all found routes.

---
 init/setup-kdump.functions |   12 ++++++++++++
 1 file changed, 12 insertions(+)

--- a/init/setup-kdump.functions
+++ b/init/setup-kdump.functions
@@ -550,6 +550,7 @@ function kdump_ip_config()                                  
           # {{{
     local ipaddr peeraddr gwaddr netmask hostname
     local family cidr rest
     local prefix
+    local routes r
     while read family cidr rest
     do
        [ "$family" = "inet" ] || continue
@@ -572,6 +573,11 @@ function kdump_ip_config()                                 
           # {{{
     hostname=$(hostname)
 
     echo "ip=$ipaddr:$peeraddr:$gwaddr:$netmask:$hostname:$bootif:none"
+
+    routes=$(ip route show dev "$iface" | sed -n 's/\([0-9].*\) via \([^ 
]*\).*/\1:\2/p')
+    for r in $routes ; do
+        echo "rd.route=$r:$bootif"
+    done
 }                                                                         # }}}
 
 #
@@ -588,6 +594,7 @@ function kdump_ip6_config()                                 
           # {{
     local bootif="$2"
     local ipaddr peeraddr gwaddr netmask hostname
     local family cidr rest prefix
+    local routes r
 
     hostname=$(hostname)
     gwaddr=$(ip -6 route show ::/0 | sed -n 's/.* via \([^ ]*\).*/[\1]/p')
@@ -612,6 +619,11 @@ function kdump_ip6_config()                                
                   # {{
 
        echo "ip=$ipaddr:$peeraddr:$gwaddr:$netmask:$hostname:$bootif:none"
     done < <(ip -6 address show dev "$iface" permanent scope global)
+
+    routes=$(ip -6 route show dev "$iface" | sed -n 's/\([0-9a-fA-F:].*\) via 
\([^ ]*\).*/[\1]:[\2]/p')
+    for r in $routes ; do
+        echo "rd.route=$r:$bootif"
+    done
 }                                                                         # }}}
 
 #
++++++ kdump-remove-IPv6-brackets-for-getaddrinfo.patch ++++++
From: Michal Koutny <mkou...@suse.com>
Date: Mon, 26 Mar 2018 20:43:40 +0200
Subject: Routable: do not pass bracketed IPv6 to getaddrinfo
References: bsc#1062026
Upstream: merged
Git-commit: ba186e82f9ea9b724fd48a1f119afb73b0063c12

It would be nicer to strip the brackets in URLParser and work with a
plain IPv6 as hostname. However, since we pass that value to callees
that expect bracketed form (e.g. NFS mount) we invert the convention and
keep the bracketed version and use bare IPv6 to feed getaddrinfo only.

---
 kdumptool/routable.cc |   11 +++++++++--
 1 file changed, 9 insertions(+), 2 deletions(-)

--- a/kdumptool/routable.cc
+++ b/kdumptool/routable.cc
@@ -33,6 +33,7 @@
 
 #include "global.h"
 #include "routable.h"
+#include "stringutil.h"
 #include "debug.h"
 
 //{{{ NetLink 
------------------------------------------------------------------
@@ -459,8 +460,14 @@ bool Routable::resolve(void)
 {
     struct addrinfo hints;
     int res;
+    KString raw_host(m_host);
 
-    Debug::debug()->trace("resolve(%s)", m_host.c_str());
+    // remove IPv6 URL bracketing for getaddrinfo
+    if (raw_host.size() > 0 &&
+            raw_host[0] == '[' && raw_host[raw_host.size()-1] == ']')
+        raw_host = raw_host.substr(1, raw_host.size()-2);
+
+    Debug::debug()->trace("resolve(%s)", raw_host.c_str());
 
     if (m_ai)
        freeaddrinfo(m_ai);
@@ -469,7 +476,7 @@ bool Routable::resolve(void)
     hints.ai_family = AF_UNSPEC;
     hints.ai_socktype = SOCK_RAW;
     do {
-       res = getaddrinfo(m_host.c_str(), NULL, &hints, &m_ai);
+       res = getaddrinfo(raw_host.c_str(), NULL, &hints, &m_ai);
     } while (res == EAI_AGAIN);
 
     if (res == 0)
++++++ kdump-skip-IPv4-if-no-address.patch ++++++
From: Michal Koutny <mkou...@suse.com>
Date: Mon, 26 Mar 2018 20:51:19 +0200
Subject: IP setup: don't bother with IPv4 if there are no addresses
References: bsc#1062026
Upstream: merged
Git-commit: 7adc9d04d1eedd4f86c3d9a895ec725f553e3599

When an interface which is IPv6 only is used to store dump, kdump will
attempt to create IPv4 configuration option which dracut cannot parse.

> [    3.098548] dracut: FATAL: For argument 
> 'ip=::10.100.33.254::germ184:eth1:none'\nValue 'none' without static 
> configuration does not make sense
> [    3.115833] dracut: Refusing to continue

Use the same approach as with IPv6, i.e. configure it only when any
IPv4 addresses are present.

---
 init/setup-kdump.functions |   12 +++++++-----
 1 file changed, 7 insertions(+), 5 deletions(-)

--- a/init/setup-kdump.functions
+++ b/init/setup-kdump.functions
@@ -572,12 +572,14 @@ function kdump_ip_config()                                
                   # {{{
     gwaddr=$(ip route show 0/0 | sed -n 's/.* via \([^ ]*\).*/\1/p')
     hostname=$(hostname)
 
-    echo "ip=$ipaddr:$peeraddr:$gwaddr:$netmask:$hostname:$bootif:none"
+    if [ -n "$ipaddr" ] ; then
+        echo "ip=$ipaddr:$peeraddr:$gwaddr:$netmask:$hostname:$bootif:none"
 
-    routes=$(ip route show dev "$iface" | sed -n 's/\([0-9].*\) via \([^ 
]*\).*/\1:\2/p')
-    for r in $routes ; do
-        echo "rd.route=$r:$bootif"
-    done
+        routes=$(ip route show dev "$iface" | sed -n 's/\([0-9].*\) via \([^ 
]*\).*/\1:\2/p')
+        for r in $routes ; do
+            echo "rd.route=$r:$bootif"
+        done
+    fi 
 }                                                                         # }}}
 
 #
++++++ kdump-use-bus-id-to-identify-qeth-devices.patch ++++++
From: Petr Tesarik <ptesa...@suse.com>
Date: Fri, 6 Apr 2018 14:43:06 +0200
Subject: Use bus id to identify qeth devices
References: bsc#1085617
Upstream: merged
Git-commit: 5c608e4d8adf57e66ce85ec62bf59887e6b860e7

QETH devices may not have a stable MAC address, so dracut's ifname=
parameter is not useful. The device's bus ID is stable, but there
is (currently) no support in dracut, so a custom udev rule must be
generated instead.

Signed-off-by: Petr Tesarik <ptesa...@suse.com>
---
 init/setup-kdump.functions |   47 ++++++++++++++++++++++++++++++++++++---------
 1 file changed, 38 insertions(+), 9 deletions(-)

--- a/init/setup-kdump.functions
+++ b/init/setup-kdump.functions
@@ -453,6 +453,24 @@ function kdump_vlan_config()                               
                   # {
 #
 # Parameters:
 #   1) device  device name
+# Output:
+#   permanent hardware address
+function kdump_hwaddr()                                                        
   # {{{
+{
+    local _iface="$1"
+    local _type=$(<"/sys/class/net/$_iface/addr_assign_type")
+    if [ "$_type" -eq 0 ]
+    then
+       cat "/sys/class/net/$kdump_iface/address"
+    else
+       ethtool -P "$kdump_iface" | sed 's/^[^:]*: *//'
+    fi
+}                                                                         # }}}
+
+# Get the ifname parameter for a given device
+#
+# Parameters:
+#   1) device  device name
 # Output variables:
 #   kdump_netif  corresponding ifname= initrd parameter added
 #   kdump_iface  device name in initrd
@@ -466,16 +484,16 @@ function kdump_ifname_config()                            
                   #
     if [ -z "$ifkind" ]
     then
        kdump_hwif="$kdump_hwif $kdump_iface"
+       local _drv=$( readlink "/sys/class/net/$kdump_iface/device/driver" )
 
-       local hwaddr
-       local addrtype=$(<"/sys/class/net/$kdump_iface/addr_assign_type")
-       if [ "$addrtype" -eq 0 ]
-       then
-           hwaddr=$(<"/sys/class/net/$kdump_iface/address")
-       else
-           hwaddr=$(ethtool -P "$kdump_iface" | sed 's/^[^:]*: *//')
-       fi
-       [ -n "$hwaddr" ] && kdump_netif="$kdump_netif 
ifname=$kdump_iface:$hwaddr"
+       case "$_drv" in
+           */qeth)
+               ;;
+           *)
+               local hwaddr=$(kdump_hwaddr "$kdump_iface")
+               [ -n "$hwaddr" ] && kdump_netif="$kdump_netif 
ifname=$kdump_iface:$hwaddr"
+               ;;
+       esac
     else
        case "$ifkind" in
            bridge)
@@ -1063,6 +1081,13 @@ function kdump_setup_qeth()                              
                   # {{
     _cdev2="${_cdev2##*/}"
     local _layer2=$(</sys/class/net/$_iface/device/layer2)
     local _portno=$(</sys/class/net/$_iface/device/portno)
+    local _type=$(</sys/class/net/$_iface/type)
+    local _dev_id _dev_id_match
+    if [ "$_layer2" -ne 0 ]
+    then
+       _dev_id=""$(</sys/class/net/$_iface/dev_id)
+       _dev_id_match=", ATTR{dev_id}==\"$_dev_id\""
+    fi
 
     cat >"${_root}/etc/udev/rules.d/51-qeth-${_dev}.rules" <<EOF
 ACTION=="add", SUBSYSTEM=="drivers", KERNEL=="qeth", IMPORT{program}="collect 
$_dev %k $_cdev0 $_cdev1 $_cdev2 qeth"
@@ -1081,6 +1106,10 @@ ACTION=="add", SUBSYSTEM=="ccwgroup", KE
 ACTION=="add", SUBSYSTEM=="ccwgroup", KERNEL=="$_dev", ATTR{layer2}="$_layer2"
 ACTION=="add", SUBSYSTEM=="ccwgroup", KERNEL=="$_dev", ATTR{online}="1"
 EOF
+
+    cat >"${_root}/etc/udev/rules.d/70-persistent-net-${_iface}.rules" <<EOF
+SUBSYSTEM=="net", ACTION=="add", DRIVERS=="qeth"$_dev_id_match, 
KERNELS=="$_dev", ATTR{type}=="$_type", NAME="$_iface"
+EOF
 }                                                                         # }}}
 
 #


Reply via email to