From 21398a5cddecd7a0b308b8132c783573c067db44 Mon Sep 17 00:00:00 2001 From: Dave Young Date: Fri, 25 May 2012 14:16:20 +0800 Subject: [PATCH] static ip configuration support Resolves: bz822739 We hardcoded with dhcp in dracut cmdline before. Fix it by parsing ifcfg to get the proper proto, echo proper cmdline for both static and dhcp [v1->v2]: amwang - handle PREFIX as well Signed-off-by: Dave Young Acked-by: Cong Wang Acked-by: Vivek Goyal --- dracut-module-setup.sh | 25 ++++++++++++++++++++++--- 1 file changed, 22 insertions(+), 3 deletions(-) diff --git a/dracut-module-setup.sh b/dracut-module-setup.sh index 154faab..143dc6e 100755 --- a/dracut-module-setup.sh +++ b/dracut-module-setup.sh @@ -39,12 +39,32 @@ kdump_is_bond() { [ -d /sys/class/net/"$1"/bonding ] } +#$1: netdev name +#checking /etc/sysconfig/network-scripts/ifcfg-$1, +#if it use static ip echo it, or echo null +kdump_static_ip() { + . /etc/sysconfig/network-scripts/ifcfg-$1 + if [ -n "$IPADDR" ]; then + [ -z "$NETMASK" -a -n "$PREFIX" ] && \ + NETMASK=$(ipcalc -m $IPADDR/$PREFIX | cut -d'=' -f2) + echo -n "${IPADDR}::${GATEWAY}:${NETMASK}::" + fi +} + # Setup dracut to bringup a given network interface kdump_setup_netdev() { local _netdev=$1 + local _static _proto _netmac=`ip addr show $_netdev 2>/dev/null|awk '/ether/{ print $2 }'` - echo " ip=$_netdev:dhcp ifname=$_netdev:$_netmac rd.neednet=1" > ${initdir}/etc/cmdline.d/40ip.conf + _static=$(kdump_static_ip $_netdev) + if [ -n "$_static" ]; then + _proto=none + else + _proto=dhcp + fi + + echo " ip=${_static}$_netdev:${_proto} ifname=$_netdev:$_netmac rd.neednet=1" > ${initdir}/etc/cmdline.d/40ip.conf if kdump_is_bridge "$_netdev"; then echo " bridge=$_netdev:$(cd /sys/class/net/$_netdev/brif/; echo *)" > ${initdir}/etc/cmdline.d/41bridge.conf @@ -60,8 +80,7 @@ kdump_setup_netdev() { #Function:kdump_install_net #$1: config values of net line in kdump.conf kdump_install_net() { - local _server - local _netdev + local _server _netdev local config_val="$1" if strstr "$config_val" "@"; then