]> git.pld-linux.org Git - projects/rc-scripts.git/blobdiff - sysconfig/network-scripts/ifdown
- merge my private tree
[projects/rc-scripts.git] / sysconfig / network-scripts / ifdown
index 74b0ed041d1099085f67e72cce65b340ace9a838..c8ed23ce03e5269939daa266c0fe63024b2c0d24 100755 (executable)
@@ -1,33 +1,27 @@
 #!/bin/sh
 #
-#      $Id: ifdown,v 1.20 1999/12/20 19:36:27 jajcus Exp $
+#      $Id: ifdown,v 1.24.2.6 2001/09/30 10:19:42 misiek Exp $
 #
 PATH=/sbin:/usr/sbin:/bin:/usr/bin
 
+. /etc/sysconfig/network
+. /etc/rc.d/init.d/functions
+. /etc/sysconfig/network-scripts/functions.network
+
 DEV=$1
 
 [ -z "$DEV" ] && {
-    echo "usage: ifdown <device name>" >&2
+    nls "usage: %s <device name>" "ifdown" >&2
     exit 1
 }
 
-. /etc/sysconfig/network
-. /etc/rc.d/init.d/functions
-. /etc/sysconfig/network-scripts/.functions
-
-IFCONFIGS="`ls /etc/sysconfig/interfaces/ifcfg-*|egrep -v '~$'`"
-if [ "$IFCONFIGS" ]; then
-    IFCONFIGS="`egrep -L '^#!' $IFCONFIGS`"
-fi
-if [ "$IFCONFIGS" ]; then
-    CONFIG="`egrep -l "^DEVICE=[\"\']*$DEV[\"\']*\$" $IFCONFIGS`"
-fi
-
-if [ -z "$CONFIG" ]; then
-    CONFIG="$DEV"
+if [ -f "/etc/sysconfig/interfaces/ifcfg-$DEV" ] ; then
+       CONFIG="/etc/sysconfig/interfaces/ifcfg-$DEV"
+else
+       CONFIG="$DEV"
 fi
 
-if [ `id -u` != 0 ]; then
+if [ "$(id -u)" != "0" ]; then
     if [ -x /sbin/usernetctl ]; then
         exec /sbin/usernetctl $CONFIG down
     fi
@@ -37,50 +31,90 @@ fi
 
 source_config
 
-# IPv4, IPv6 or both ?
-[ -n "$IPV6_ADDR" ]                  && IPv6=yes || IPv6=no
-[ -n "$IPADDR" -o "$PUMP" = "true" ] && IPv4=yes || IPv4=no
-
-if [ -z "$PREFIX" -a -n "$NETMASK" ]; then
-       PREFIX="`calcprefix $NETMASK`"
-fi
-
-if [ -z "$NETMASK" -a -n "$PREFIX" ]; then
-       NETMASK="`calcnetmask $PREFIX`"
-fi
+# set all major variables
+setup_ip_param
 
-FULLDEVNAME="$DEVICE"
-DEVICETYPE=`echo $FULLDEVNAME | sed "s/[0-9]*$//"`
-DEVICE=`echo $FULLDEVNAME | sed 's/:.*//g'`
 OTHERSCRIPT="/etc/sysconfig/network-scripts/ifdown-${DEVICETYPE}"
 
+# shutdown tleds software
+if [ "$TLEDS_DEV" = "$DEVICE" -a -x /usr/bin/tleds ]; then
+       /usr/bin/tleds -qk "$DEVICE"
+fi
+       
 if [ -x $OTHERSCRIPT ]; then
-    if [ "$DEFAULTHANDLING" = "yes" ]; then
-        $OTHERSCRIPT $CONFIG $2
-    else
-       $OTHERSCRIPT $CONFIG $2
-       exit $?
+    if [ "$HANDLING" = "0" ]; then
+       exec $OTHERSCRIPT $CONFIG $2
+    elif [ "$HANDLING" = "1" ]; then
+       $OTHERSCRIPT $CONFIG $2
+       RESULT=$?
+       if [ ${RESULT} -ne 0 ]; then
+           exit 1
+        fi
     fi
 fi
 
-if echo "$FULLDEVNAME" | grep -q ':' ; then
-    ISALIAS=yes
-else
-    ISALIAS=no
+# Check to make sure the device is actually up
+check_device_down && exit 0
+
+if [ "$BOOTMETHOD" = "bootp" -o "$BOOTMETHOD" = "pump" ]; then
+       /sbin/pump -r -i ${DEVICE}
+       RESULT=$?
 fi
 
-if [ "$ISALIAS" = "yes" ]; then
-       if [ "$IPv4" = "yes" ]; then
-               ip -family inet addr del ${IPADDR}/${PREFIX} dev ${DEVICE} label ${FULLDEVNAME}
+if [ "$BOOTMETHOD" = "dhcp" ]; then
+    if [ -x /sbin/dhcpcd ];then
+       if [ "foo$2" = "fooboot" -a -e /var/run/dhcpcd-${DEVICE}.pid ]; then
+           PID=$(cat /var/run/dhcpcd-${DEVICE}.pid)
+           if ps ax --no-header | grep -q $PID;then
+               kill -TERM $PID
+               RESULT=$?
+           fi
+       else
+           /sbin/dhcpcd -k ${DEVICE}
+           RESULT=$?
        fi
-               for ADDR in ${IPV6_ADDR} ; do
-                       ip -family inet6 addr del ${ADDR} dev ${DEVICE} label ${FULLDEVNAME}
-               done
-else
-    ip link set ${DEVICE} down
-    ip addr flush dev ${DEVICE} 2> /dev/null
+    elif [ -x /sbin/dhclient ];then
+        if [ -f /var/run/dhclient.pid ];then
+            PID=$(cat /var/run/dhclient.pid)
+            if ps ax --no-header|grep -q $PID;then
+                kill $PID
+               RESULT=$?
+            fi
+        fi
+    elif [ -x /sbin/dhcpxd ];then
+        /sbin/dhcpxd -k ${DEVICE}
+       RESULT=$?
+    elif [ -x /sbin/pump ];then
+        /sbin/pump -r -i ${DEVICE}
+       RESULT=$?
+    fi
 fi
 
+ip link set ${DEVICE} down
+ip addr flush dev ${DEVICE} 2>&1 | grep -v "Nothing to flush"
+
+# wait up to 5 seconds for device to actually come down...
+waited=0
+while ! check_device_down && [ "$waited" -lt 50 ] ; do
+    usleep 10000
+    waited=$(( ${waited} + 1 ))
+done                
+
+if [ "$HANDLING" = "4" ]; then
+    exit 0
+fi
+
+if [ "$RESULT" != "0" ]; then
+       return $RESULT
+fi
+
+# don't leave an outdated key sitting around
+if [ -n "${WIRELESS_ENC_KEY}" -a -x /sbin/iwconfig ]; then
+    /sbin/iwconfig ${DEVICE} enc 0 > /dev/null 2>&1
+fi
+    
+exec /etc/sysconfig/network-scripts/ifdown-post ${CONFIG}
 
-exec /etc/sysconfig/network-scripts/ifdown-post $CONFIG
+# This must be last line !
+# vi:syntax=sh:tw=78:ts=8:sw=4
 
This page took 0.030059 seconds and 4 git commands to generate.