aboutsummaryrefslogtreecommitdiffstats
path: root/sysconfig/network-scripts/network-functions
diff options
context:
space:
mode:
Diffstat (limited to 'sysconfig/network-scripts/network-functions')
-rw-r--r--sysconfig/network-scripts/network-functions51
1 files changed, 42 insertions, 9 deletions
diff --git a/sysconfig/network-scripts/network-functions b/sysconfig/network-scripts/network-functions
index fd6572ba..2ffdee55 100644
--- a/sysconfig/network-scripts/network-functions
+++ b/sysconfig/network-scripts/network-functions
@@ -24,7 +24,7 @@ get_hwaddr ()
get_config_by_device ()
{
- LANG=C grep -l "^[[:space:]]*DEVICE=${1}\([[:space:]#]\|$\)" \
+ LANG=C grep -l "^[[:space:]]*DEVICE=\"\?${1}\"\?\([[:space:]#]\|$\)" \
/etc/sysconfig/network-scripts/ifcfg-* \
| LC_ALL=C sed -e "$__sed_discard_ignored_files"
}
@@ -143,10 +143,7 @@ source_config ()
CTC)
DEVICETYPE="ctc"
;;
- IUCV)
- DEVICETYPE="iucv"
- ;;
- GRE | IPIP)
+ GRE | IPIP | IPIP6)
DEVICETYPE="tunnel"
;;
SIT | sit)
@@ -155,6 +152,9 @@ source_config ()
InfiniBand | infiniband)
DEVICETYPE="ib"
;;
+ OVS*)
+ DEVICETYPE="ovs"
+ ;;
esac
if [ -n "$HWADDR" ]; then
HWADDR=$(echo $HWADDR | awk '{ print toupper($0) }')
@@ -437,14 +437,47 @@ add_default_route ()
is_wireless_device ()
{
- [ -d "/sys/class/net/$1/wireless" -o -d "/sys/class/net/$1/phy80211" ]
+ [ -x /sbin/iwconfig ] || return 1
+ LC_ALL=C iwconfig $1 2>&1 | grep -q "no wireless extensions" || return 0
+ return 1
}
install_bonding_driver ()
{
- [ -d "/sys/class/net/$1" ] && return 0
[ ! -f /sys/class/net/bonding_masters ] && ( modprobe bonding || return 1 )
- echo "+$1" > /sys/class/net/bonding_masters 2>/dev/null
+ if ! grep -sq "$1" /sys/class/net/bonding_masters; then
+ echo "+$1" > /sys/class/net/bonding_masters 2>/dev/null
+ fi
+ (
+ # Set config here
+ need_config "$1"
+ source_config
+ if [ -f /sys/class/net/${DEVICE}/bonding/slaves -a $(wc -l < /sys/class/net/${DEVICE}/bonding/slaves) -eq 0 ]; then
+ /sbin/ip link set dev ${DEVICE} down
+
+ # add the bits to setup driver parameters here
+ for arg in $BONDING_OPTS ; do
+ key=${arg%%=*};
+ value=${arg##*=};
+ if [ "${key}" = "arp_ip_target" -a "${value:0:1}" != "+" ]; then
+ OLDIFS=$IFS;
+ IFS=',';
+ for arp_ip in $value; do
+ if ! grep -q $arp_ip /sys/class/net/${DEVICE}/bonding/$key; then
+ echo +$arp_ip > /sys/class/net/${DEVICE}/bonding/$key
+ fi
+ done
+ IFS=$OLDIFS;
+ elif [ "${key}" = "arp_ip_target" ]; then
+ if ! grep -q ${value#+} /sys/class/net/${DEVICE}/bonding/$key; then
+ echo "$value" > /sys/class/net/${DEVICE}/bonding/$key
+ fi
+ elif [ "${key}" != "primary" ]; then
+ echo $value > /sys/class/net/${DEVICE}/bonding/$key
+ fi
+ done
+ fi
+ )
return 0
}
@@ -494,7 +527,7 @@ change_resolv_conf ()
if [ $r -eq 0 ]; then
[ -x /sbin/restorecon ] && /sbin/restorecon /etc/resolv.conf >/dev/null 2>&1 # reset the correct context
/usr/bin/logger -p local7.notice -t "NET" -i "$0 : updated /etc/resolv.conf";
- [ -n "$(/bin/pidof nscd)" ] && [ ! -e "$RESOLVCONF_FLAGFILE" ] && /usr/sbin/nscd -i hosts; # invalidate cache
+ [ -e /var/run/nscd/socket ] && [ ! -e "$RESOLVCONF_FLAGFILE" ] && /usr/sbin/nscd -i hosts; # invalidate cache
fi;
return $r;
}