Sign Up
Log In
Log In
or
Sign Up
Places
All Projects
Status Monitor
Collapse sidebar
SUSE:SLE-12-SP1:Update
kdump
kdump-split-kdump_default_netdev.patch
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
File kdump-split-kdump_default_netdev.patch of Package kdump
From: Petr Tesarik <ptesarik@suse.cz> Date: Tue Sep 23 07:09:44 2014 +0200 Subject: Split kdump_default_netdev() References: bnc#885897 Patch-mainline: v0.8.16 Git-commit: 4da0601f2edcef642da502db6f4299204365c631 This function did too many things, which are now split thus: 1. determine the default network interface -> kept in kdump_default_netdev 2. get the underlying physical devices of a bridge -> kdump_bridge_phys_dev 3. determine network interface operating mode -> kdump_netdev_mode Signed-off-by: Petr Tesarik <ptesarik@suse.cz> --- init/mkdumprd | 1 init/setup-kdump.functions | 94 +++++++++++++++++++++++++-------------------- 2 files changed, 54 insertions(+), 41 deletions(-) --- a/init/mkdumprd +++ b/init/mkdumprd @@ -168,7 +168,6 @@ function run_dracut() if [ "$interface" = "default" ] ; then interface=$( kdump_default_netdev ) - interface="${interface% *}" status_message "Network interface: $interface (default)" else status_message "Network interface: $interface" --- a/init/setup-kdump.functions +++ b/init/setup-kdump.functions @@ -77,12 +77,10 @@ function kdump_wicked_conf() # { # Determine the default network device. # # Output: -# "$ifname $mode" -# ifname default network interface name (or empty if none) -# mode initialization mode ("static" or "dhcp") +# ifname default network interface name (or empty if none) function kdump_default_netdev() # {{{ { - local ifname BOOTPROTO + local ifname local inffile="/etc/install.inf" # check current default routes @@ -95,7 +93,6 @@ function kdump_default_netdev() if [ -z "$ifname" -a -f "$inffile" ] ; then local dev hwaddr hwaddr2 eval $( sed -ne ' - s/^NetConfig: \(.*\)/BOOTPROTO=\1/p; s/^Netdevice: \(.*\)/ifname=\1/p; s/HWAddr: \(.*\)/hwaddr=\1/p' \ "$inffile" ) @@ -108,12 +105,53 @@ function kdump_default_netdev() done fi fi + echo "$ifname" +} # }}} - # if still not found, there is no network - if [ -z "$ifname" ] ; then - return 0 +# Get the underlying physical devices of a bridge. +# +# Virtual devices (tap or vif) are ignored. +# +# Parameters: +# 1) ifname bridge interface name +# Output: +# ifnames list of underlying physical interfaces; +function kdump_bridge_phys_dev() # {{{ +{ + local ifname="$1" + + if [ -d "/sys/class/net/$ifname/bridge" -a \ + -d "/sys/class/net/$ifname/brif" ] ; then + + local ifname2 count=0 + local -a res + for ifname2 in "/sys/class/net/$ifname/brif"/*; do + case "$(readlink -f "$ifname2")" in + /sys/devices/virtual/*) + continue + esac + res[count]="${ifname2##*/}" + count=$(( count+1 )) + done + ifname=${res[@]} fi + echo "$ifname" +} # }}} + +# +# Determine the default network mode of a given device. +# +# Parameters: +# 1) ifname network interface name +# Output: +# mode initialization mode ("static" or "dhcp") +function kdump_netdev_mode() # {{{ +{ + local ifname="$1" + local inffile="/etc/install.inf" + local BOOTPROTO + # get mode using wicked if possible if [ -n "$(type -P wicked)" -a \ "$(kdump_wicked_conf "$ifname" name)" = "$ifname" ] @@ -135,6 +173,12 @@ function kdump_default_netdev() fi fi + # try install.conf + if [ -z "$BOOTPROTO" ] ; then + eval $( sed -ne 's/^NetConfig: \(.*\)/BOOTPROTO=\1/p;' \ + "$inffile" ) + fi + # if not found, look if there is a dhcp daemon for the interface if [ -z "$BOOTPROTO" ] ; then if [ -n "$(ps -C dhclient,dhclient6,dhcpcd -o cmd= | @@ -145,31 +189,7 @@ function kdump_default_netdev() fi fi - # if the interface is a bridge, then try to use the underlying interface - # if it is the only non-virtual interface (not tap or vif) - if [ -d "/sys/class/net/$ifname/bridge" -a \ - -d "/sys/class/net/$ifname/brif" ] ; then - - local ifname2 res count=0 - for ifname2 in "/sys/class/net/$ifname/brif"/*; do - case "$(readlink -f "$ifname2")" in - /sys/devices/virtual/*) - continue - esac - res="${ifname2##*/}" - count=$(( count+1 )) - done - - if [ "$count" -ne 1 ] ; then - echo >&2 ">>> WARNING: $ifname is a bridge with more than one" - echo >&2 ">>> underlying interface. Please specify the device" - echo >&2 ">>> in KDUMP_NETCONFIG manually." - else - ifname="$res" - fi - fi - - echo "$ifname $BOOTPROTO" + echo "$BOOTPROTO" } # }}} # @@ -205,13 +225,7 @@ kdump_prefix2netmask() { # {{{ function kdump_ip_config() # {{{ { local iface="$1" - if [ -z "$iface" ] ; then - iface=$( kdump_default_netdev ) - iface="${iface% *}" - fi - [ -z "$iface" ] && return 1 - - local ipaddr peeraddr gwaddr netmask hostname iface + local ipaddr peeraddr gwaddr netmask hostname local family cidr rest local prefix while read family cidr rest
Locations
Projects
Search
Status Monitor
Help
OpenBuildService.org
Documentation
API Documentation
Code of Conduct
Contact
Support
@OBShq
Terms
openSUSE Build Service is sponsored by
The Open Build Service is an
openSUSE project
.
Sign Up
Log In
Places
Places
All Projects
Status Monitor