Neues Interface Setup. Effektiver, mit kuerzerer Laufzeit...

git-svn-id: svn://svn.compuextreme.de/Viitor/V962/Viitor_sysvinit@5487 504e572c-2e33-0410-9681-be2bf7408885
This commit is contained in:
kueller 2010-03-31 12:57:17 +00:00
parent 3a3ede230b
commit 450357bddc
4 changed files with 132 additions and 56 deletions

View File

@ -99,39 +99,8 @@ source /etc/init.d/functions
case "$1" in
start)
for IF in `ls -d /sys/class/net/*[^lo]`; do
DEVNAME=`basename $IF`
if [ -d /sys/class/net/$DEVNAME/wireless ]; then
/sbin/wlan_setup $DEVNAME
#give wlan a chance go create link
sleep 1
fi
if [ -f /usr/sbin/ethtool ]; then
#Einige Dumme Interfaces (z.B. die VMware Emulationen) Zeiten
#den korrekten Status erst nach einem ifconfig up
ifconfig $DEVNAME up
WAITTIME=7
ZAHLER=0
if ! ethtool $DEVNAME|grep -q "No data available"; then
while [ ${ZAHLER} -le ${WAITTIME} ]; do
if [ ! `ethtool $DEVNAME|grep Link|awk '{print $3}'` == "yes" ]; then
(( ZAHLER++ ))
else
break
fi
sleep 1
done
if [ `ethtool $DEVNAME|grep Link|awk '{print $3}'` == "yes" ]; then
/sbin/if_up $DEVNAME
touch /var/run/net_up
fi
else
/sbin/if_up $DEVNAME
touch /var/run/net_up
fi
else
/sbin/if_up $DEVNAME
touch /var/run/net_up
fi
DEVNAME=`basename $IF`
/sbin/if_up $DEVNAME
done
if [ ! -f /var/run/net_up ] && [ -f /etc/nsswitch.default ]; then
cp /etc/nsswitch.files /etc/nsswitch.conf

View File

@ -35,15 +35,25 @@ if [ ! "$DEV" ]; then
echo "Usage: $0 <NetworkInterfaceName>"
exit 10
fi
if pgrep vtun >/dev/null; then
/etc/init.d/vtund stop
fi
if [ -f /etc/sysconfig/net/${DEV}.dhcp ]; then
kill `ps -ef|grep dhclient|grep ${DEV}|awk '{print $2}'`
echo -n "Stopping dhclient for $DEV"
DHPID=`ps -ef|grep dhclient|grep ${DEV}|awk '{print $2}'`
if [ "$DHPID" ]; then
kill $DHPID
fi
evaluate_retval
echo -n "Shutting down Interface $DEV"
ifconfig $DEV 0.0.0.0 down
evaluate_retval
elif [ -f /etc/sysconfig/net/hostname.${DEV} ]; then
HOST=`cat /etc/sysconfig/net/hostname.${DEV}|awk '{print $1}'`
IP=`grep $HOST /etc/hosts|awk '{print $1}'`
NETMASK=`getmask $IP`
SHMASK=`GetShortMask $NETMASK`
echo -n "setting up interface $i:IP=$IP NMASK=$NETMASK"
echo -n "shutting down interface $i:IP=$IP NMASK=$NETMASK"
if [ "$NETMASK" = "" ]; then
DEV=`echo $i|cut -d ":" -f 1`
$DEBUG ip addr del $IP broadcast + dev $DEV
@ -55,3 +65,31 @@ elif [ -f /etc/sysconfig/net/hostname.${DEV} ]; then
fi
evaluate_retval
fi
if [ -f /var/run/shutdown/wlan_nis ]; then
if [ -f /etc/sysconfig/nis/defaultdomain.wlan ]; then
echo -n "Restoring nis defaultdomain"
mv /etc/sysconfig/nis/defaultdomain.wlan \
/etc/sysconfig/nis/defaultdomain
evaluate_retval
fi
if [ -f /etc/yp.conf.wlan ]; then
echo -n "Restoring nis yp.conf"
mv /etc/yp.conf.wlan \
/etc/yp.conf
evaluate_retval
fi
rm /var/run/shutdown/wlan_nis
if [ -f /var/run/shutdown/wlan_dns ]; then
if [ -f /etc/resolv.conf.wlan ]; then
echo -n "Restoring resolv.conf"
mv /etc/resolv.conf.wlan /etc/resolv.conf
evaluate_retval
fi
rm /var/run/shutdown/wlan_dns
fi
fi
if pgrep wpa_supplicant >/dev/null; then
echo -n "Stopping wpa_supplicant"
pkill wpa_supplicant
evaluate_retval
fi

View File

@ -30,31 +30,96 @@
#
source /etc/init.d/functions
DEV=$1
CheckForLink() {
NETDEVICE=$1
if [ -f /usr/sbin/ethtool ]; then
#Einige Dumme Interfaces (z.B. die VMware Emulationen) Zeiten
#den korrekten Status erst nach einem ifconfig up
WAITTIME=7
ZAHLER=0
if ! ethtool $NETDEVICE|grep -q "No data available"; then
while [ ${ZAHLER} -le ${WAITTIME} ]; do
if [ ! `ethtool $NETDEVICE|grep Link|awk '{print $3}'` == "yes" ]; then
(( ZAHLER++ ))
else
break
fi
sleep 1
done
if [ `ethtool $NETDEVICE|grep Link|awk '{print $3}'` == "yes" ]; then
touch /var/run/net_up
return 0
else
return 1
fi
else
touch /var/run/net_up
return 0
fi
else
touch /var/run/net_up
return 0
fi
}
if [ ! "$DEV" ]; then
echo "Usage: $0 <NetworkInterfaceName>"
exit 10
fi
#Check for files in /etc/sysconfig/net
#hostname.<if> will setup static ip for the interfaces, based
#on /etc/hosts (hostname) and /etc/networks (netmask/Broadcast)
#<if>.dhcp will do a dynamic setup for the interface with dhcp
if [ -f /etc/sysconfig/net/${DEV}.dhcp ]; then
echo -n "Setting up ${DEV} with dhcp"
dhclient -q ${DEV}
evaluate_retval
#ok this is the dynamic part for setup ${DEV}
#first we have to startup interface to check interface type
ifconfig ${DEV} up
#Let check in /sys if the interface is a wireless interface
if [ -d /sys/class/net/${DEV}/wireless ]; then
#wireless interface need special setup..
/sbin/wlan_setup ${DEV}
#give wlan time to startup and create a link
sleep 1
fi
#let check if there is a link on the interface.
#only if there is a link, we will setup the interface..
if CheckForLink ${DEV}; then
echo -n "Setting up ${DEV} with dhcp"
dhclient -q ${DEV}
evaluate_retval
else
ifconfig ${DEV} down
fi
elif ls /etc/sysconfig/net/hostname.${DEV}* &>/dev/null; then
for NETDEV in `ls /etc/sysconfig/net/hostname.${DEV}*|awk -F "." '{print $2}'`; do
HOST=`cat /etc/sysconfig/net/hostname.${NETDEV}|awk '{print $1}'`
IP=`grep $HOST /etc/hosts|awk '{print $1}'`
NETMASK=`getmask $IP`
SHMASK=`GetShortMask $NETMASK`
echo -n "setting up interface $NETDEV:IP=$IP NMASK=$NETMASK"
if [ "$NETMASK" = "" ]; then
DEV=`echo $NETDEV|cut -d ":" -f 1`
$DEBUG ip addr add $IP broadcast + dev $DEV
$DEBUG ip link set $DEV up
else
DEV=`echo $NETDEV|cut -d ":" -f 1`
$DEBUG ip addr add $IP/$SHMASK broadcast + dev $DEV
$DEBUG ip link set $DEV up
fi
done
evaluate_retval
ifconfig ${DEV} up
if [ -d /sys/class/net/${DEV}/wireless ]; then
/sbin/wlan_setup ${DEV}
#give wlan time to startup and create a link
sleep 1
fi
if CheckForLink ${DEV}; then
for NETDEV in `ls /etc/sysconfig/net/hostname.${DEV}*|awk -F "." '{print $2}'`; do
HOST=`cat /etc/sysconfig/net/hostname.${NETDEV}|awk '{print $1}'`
IP=`grep $HOST /etc/hosts|awk '{print $1}'`
NETMASK=`getmask $IP`
SHMASK=`GetShortMask $NETMASK`
echo -n "setting up interface $NETDEV:IP=$IP NMASK=$NETMASK"
if [ "$NETMASK" = "" ]; then
DEV=`echo $NETDEV|cut -d ":" -f 1`
$DEBUG ip addr add $IP broadcast + dev $DEV
$DEBUG ip link set $DEV up
else
DEV=`echo $NETDEV|cut -d ":" -f 1`
$DEBUG ip addr add $IP/$SHMASK broadcast + dev $DEV
$DEBUG ip link set $DEV up
fi
done
else
ifconfig ${DEV} down
fi
fi

View File

@ -84,9 +84,13 @@ for AP in `iwlist $DEV scan 2>/dev/null|\
if [ -f /etc/sysconfig/nis/defaultdomain.wlan ]; then
mv /etc/sysconfig/nis/defaultdomain.wlan \
/etc/sysconfig/nis/defaultdomain
elif [ -f /etc/sysconfig/nis/defaultdomain ]; then
rm /etc/sysconfig/nis/defaultdomain
fi
if [ -f /etc/yp.conf.store ]; then
if [ -f /etc/yp.conf.wlan ]; then
mv /etc/yp.conf.wlan /etc/yp.conf
elif [ -f /etc/yp.conf ]; then
rm /etc/yp.conf
fi
fi
touch /var/run/shutdown/wlan_nis