On Tue, Jul 22, 2014 at 05:10:14PM +0800, WANG Chao wrote:
[..]
kdump_setup_bridge() {
local _netdev=$1
- local _brif _dev
+ local _brif _dev _mac _kdumpdev
for _dev in `ls /sys/class/net/$_netdev/brif/`; do
if kdump_is_bond "$_dev"; then
kdump_setup_bond "$_dev"
@@ -108,20 +124,30 @@ kdump_setup_bridge() {
elif kdump_is_vlan "$_dev"; then
kdump_setup_vlan "$_dev"
else
- echo -n " ifname=$_dev:$(kdump_get_mac_addr $_dev)" >>
${initdir}/etc/cmdline.d/41bridge.conf
+ _mac=$(kdump_get_mac_addr $_dev)
+ _kdumpdev=$(kdump_setup_ifname $_dev)
+ echo -n " ifname=$_kdumpdev:$_mac" >>
${initdir}/etc/cmdline.d/41bridge.conf
+ fi
+ if [ -n "$_kdumpdev" ]; then
+ _brif+="$_kdumpdev,"
+ else
+ _brif+="$_dev,"
fi
- _brif+="$_dev,"
+ _kdumpdev=""
When will _kdumpdev be zero? IOW, as per your logic kdumpdev will either
be same as _dev or kdump-$dev. So why are you putting this extra if loop?
IOW, why not simply do.
_brif+="$_kdumpdev"
done
echo " bridge=$_netdev:$(echo $_brif | sed -e 's/,$//')" >>
${initdir}/etc/cmdline.d/41bridge.conf
}
[..]
kdump_setup_bond() {
local _netdev=$1
- local _dev
+ local _dev _mac _slaves _kdumpdev
for _dev in `cat /sys/class/net/$_netdev/bonding/slaves`; do
- echo -n " ifname=$_dev:$(kdump_get_perm_addr $_dev)" >>
${initdir}/etc/cmdline.d/42bond.conf
+ _mac=$(kdump_get_perm_addr $_dev)
+ _kdumpdev=$(kdump_setup_ifname $_dev)
+ echo -n " ifname=$_kdumpdev:$_mac" >>
${initdir}/etc/cmdline.d/42bond.conf
+ _slaves+="$_kdumpdev,"
done
- echo -n " bond=$_netdev:$(sed -e 's/ /,/g'
/sys/class/net/$_netdev/bonding/slaves)" >>
${initdir}/etc/cmdline.d/42bond.conf
+ echo -n " bond=$_netdev:$(echo $_slaves | sed 's/,$//')" >>
${initdir}/etc/cmdline.d/42bond.conf
So we are stroing slave names in _slaves instead of reading them from sys
file because we might have renamed them. Ok, makes sense. And you are
getting rid of last ",".
Thanks
Vivek
# Get bond options specified in ifcfg
. /etc/sysconfig/network-scripts/ifcfg-$_netdev
bondoptions="$(echo :$BONDING_OPTS | sed 's/\s\+/,/')"
@@ -130,12 +156,14 @@ kdump_setup_bond() {
kdump_setup_team() {
local _netdev=$1
- local slaves _dev
+ local _dev _mac _slaves _kdumpdev
for _dev in `teamnl $_netdev ports | awk -F':' '{print $2}'`; do
- echo -n " ifname=$_dev:$(kdump_get_perm_addr $_dev)" >>
${initdir}/etc/cmdline.d/44team.conf
- slaves+="$_dev,"
+ _mac=$(kdump_get_perm_addr $_dev)
+ _kdumpdev=$(kdump_setup_ifname $_dev)
+ echo -n " ifname=$_kdumpdev:$_mac" >>
${initdir}/etc/cmdline.d/44team.conf
+ _slaves+="$_kdumpdev,"
done
- echo " team=$_netdev:$(echo $slaves | sed -e 's/,$//')" >>
${initdir}/etc/cmdline.d/44team.conf
+ echo " team=$_netdev:$(echo $_slaves | sed -e 's/,$//')" >>
${initdir}/etc/cmdline.d/44team.conf
#Buggy version teamdctl outputs to stderr!
#Try to use the latest version of teamd.
teamdctl "$_netdev" config dump > /tmp/$$-$_netdev.conf
@@ -153,6 +181,7 @@ kdump_setup_vlan() {
local _netdev=$1
local _phydev="$(awk '/^Device:/{print $2}'
/proc/net/vlan/"$_netdev")"
local _netmac="$(kdump_get_mac_addr $_phydev)"
+ local _kdumpdev
#Just support vlan over bond, it is not easy
#to support all other complex setup
@@ -166,7 +195,8 @@ kdump_setup_vlan() {
kdump_setup_bond "$_phydev"
echo " vlan=$_netdev:$_phydev" >
${initdir}/etc/cmdline.d/43vlan.conf
else
- echo " vlan=$_netdev:$_phydev ifname=$_phydev:$_netmac" >
${initdir}/etc/cmdline.d/43vlan.conf
+ _kdumpdev="$(kdump_setup_ifname $_phydev)"
+ echo " vlan=$_netdev:$_kdumpdev ifname=$_kdumpdev:$_netmac" >
${initdir}/etc/cmdline.d/43vlan.conf
fi
}
@@ -199,7 +229,7 @@ kdump_setup_netdev() {
fi
_ip_conf="${initdir}/etc/cmdline.d/40ip.conf"
- _ip_opts=" ip=${_static}$_netdev:${_proto}"
+ _ip_opts=" ip=${_static}$(kdump_setup_ifname $_netdev):${_proto}"
# dracut doesn't allow duplicated configuration for same NIC, even they're
exactly the same.
# so we have to avoid adding duplicates
@@ -216,7 +246,7 @@ kdump_setup_netdev() {
elif kdump_is_vlan "$_netdev"; then
kdump_setup_vlan "$_netdev"
else
- _ifname_opts=" ifname=$_netdev:$(kdump_get_mac_addr $_netdev)"
+ _ifname_opts=" ifname=$(kdump_setup_ifname $_netdev):$(kdump_get_mac_addr
$_netdev)"
echo "$_ifname_opts" >> $_ip_conf
fi
@@ -261,8 +291,8 @@ kdump_install_net() {
# gateway.
if [ ! -f ${initdir}${initdir}/etc/cmdline.d/60kdumpnic.conf ] &&
[ ! -f ${initdir}/etc/cmdline.d/70bootdev.conf ]; then
- echo "kdumpnic=${_netdev}" >
${initdir}/etc/cmdline.d/60kdumpnic.conf
- echo "bootdev=${_netdev}" >
${initdir}/etc/cmdline.d/70bootdev.conf
+ echo "kdumpnic=$(kdump_setup_ifname $_netdev)" >
${initdir}/etc/cmdline.d/60kdumpnic.conf
+ echo "bootdev=$(kdump_setup_ifname $_netdev)" >
${initdir}/etc/cmdline.d/70bootdev.conf
fi
}
--
1.9.3