aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBill Nottingham <notting@redhat.com>2011-06-28 14:40:13 -0400
committerBill Nottingham <notting@redhat.com>2011-06-28 14:40:13 -0400
commit982b6ebfe2cdb1175bc8486135d33b897ad3d6ef (patch)
treea929c59ca89fcd53bb3d194f2e04148cdc03842a
parent103b0cc1dd6f5c1ad903076f7c362fb0397edfc8 (diff)
downloadinitscripts-982b6ebfe2cdb1175bc8486135d33b897ad3d6ef.tar
initscripts-982b6ebfe2cdb1175bc8486135d33b897ad3d6ef.tar.gz
initscripts-982b6ebfe2cdb1175bc8486135d33b897ad3d6ef.tar.bz2
initscripts-982b6ebfe2cdb1175bc8486135d33b897ad3d6ef.tar.xz
initscripts-982b6ebfe2cdb1175bc8486135d33b897ad3d6ef.zip
Allow non-'-s' options in ETHTOOL_OPTS, and allow multiple option types. (#692410, #693583)
-rwxr-xr-xsysconfig/network-scripts/ifup-eth20
-rw-r--r--sysconfig/network-scripts/network-functions16
2 files changed, 20 insertions, 16 deletions
diff --git a/sysconfig/network-scripts/ifup-eth b/sysconfig/network-scripts/ifup-eth
index f46a8843..e4c65aa0 100755
--- a/sysconfig/network-scripts/ifup-eth
+++ b/sysconfig/network-scripts/ifup-eth
@@ -99,9 +99,7 @@ if [ "${SLAVE}" = yes -a "${ISALIAS}" = no -a "${MASTER}" != "" ]; then
/sbin/ip link set dev ${DEVICE} down
echo "+${DEVICE}" > /sys/class/net/${MASTER}/bonding/slaves 2>/dev/null
}
- if [ -n "$ETHTOOL_OPTS" ] ; then
- /sbin/ethtool -s ${REALDEVICE} $ETHTOOL_OPTS
- fi
+ ethtool_set
exit 0
fi
@@ -158,9 +156,7 @@ if [ -n "${BRIDGE}" ] && [ -x /usr/sbin/brctl ]; then
fi
/sbin/ip addr flush dev ${DEVICE} 2>/dev/null
/sbin/ip link set dev ${DEVICE} up
- if [ -n "$ETHTOOL_OPTS" ] ; then
- /sbin/ethtool -s ${REALDEVICE} $ETHTOOL_OPTS
- fi
+ ethtool_set
[ -n "${LINKDELAY}" ] && /bin/sleep ${LINKDELAY}
/usr/sbin/brctl addif ${BRIDGE} ${DEVICE}
# Upon adding a device to a bridge,
@@ -199,9 +195,7 @@ if [ -n "${DYNCONFIG}" ] && [ -x /sbin/dhclient ]; then
exit 1
fi
- if [ -n "$ETHTOOL_OPTS" ] ; then
- /sbin/ethtool -s ${REALDEVICE} $ETHTOOL_OPTS
- fi
+ ethtool_set
if /sbin/dhclient ${DHCLIENTARGS} ${DEVICE} ; then
echo $" done."
@@ -214,9 +208,7 @@ else
if [ -z "${IPADDR}" -a -z "${IPADDR0}" -a -z "${IPADDR1}" -a -z "${IPADDR2}" ]; then
# enable device without IP, useful for e.g. PPPoE
ip link set dev ${REALDEVICE} up
- if [ -n "$ETHTOOL_OPTS" ] ; then
- /sbin/ethtool -s ${REALDEVICE} $ETHTOOL_OPTS
- fi
+ ethtool_set
[ -n "${LINKDELAY}" ] && /bin/sleep ${LINKDELAY}
else
@@ -230,9 +222,7 @@ else
exit 1
fi
- if [ -n "$ETHTOOL_OPTS" ] ; then
- /sbin/ethtool -s ${REALDEVICE} $ETHTOOL_OPTS
- fi
+ ethtool_set
[ -n "${LINKDELAY}" ] && /bin/sleep ${LINKDELAY}
diff --git a/sysconfig/network-scripts/network-functions b/sysconfig/network-scripts/network-functions
index 2d3263a2..f6d2f05b 100644
--- a/sysconfig/network-scripts/network-functions
+++ b/sysconfig/network-scripts/network-functions
@@ -153,7 +153,21 @@ source_config ()
fi
}
-
+ethtool_set()
+{
+ oldifs=$IFS;
+ IFS=';';
+ for opts in $ETHTOOL_OPTS ; do
+ IFS=$oldifs;
+ if [[ "${opts}" =~ [[:space:]]*- ]]; then
+ /sbin/ethtool $opts
+ else
+ /sbin/ethtool -s ${REALDEVICE} $opts
+ fi
+ IFS=';';
+ done
+ IFS=$oldifs;
+}
expand_config ()
{