]> git.pld-linux.org Git - projects/rc-scripts.git/blame - lib/ifdown
drop raidutils (raidstart, /etc/raidtab) support. our geninitrd doesn't support it...
[projects/rc-scripts.git] / lib / ifdown
CommitLineData
12de71be 1#!/bin/sh
b0443108 2#
ec8b15cb 3# $Id$
b0443108 4#
7742e157
AF
5PATH=/sbin:/usr/sbin:/bin:/usr/bin
6
fa8aca70
JR
7. /etc/sysconfig/network
8. /etc/rc.d/init.d/functions
f67ce454 9. /lib/rc-scripts/functions.network
fa8aca70
JR
10
11# Will be removed in the future
12if is_yes "$NETWORKING" ; then
5e6dfc29
JR
13 if [ -z "$IPV4_NETWORKING" ] ; then
14 echo "NETWORKING is set to YES, but IPV4_NETWORKING is empty!"
15 echo "Please upgrade your config"
16 echo "Assuming you want IPv4 networking"
17 IPV4_NETWORKING=yes
18 fi
fa8aca70
JR
19fi
20
111f7a0d 21DEV=$1
7742e157 22
111f7a0d 23[ -z "$DEV" ] && {
5e6dfc29
JR
24 nls "Usage: %s <device name>" "ifdown" >&2
25 exit 1
7742e157
AF
26}
27
03f9cfee 28if [ -f "/etc/sysconfig/interfaces/ifcfg-$DEV" ] ; then
5e6dfc29 29 CONFIG="/etc/sysconfig/interfaces/ifcfg-$DEV"
03f9cfee 30else
5e6dfc29 31 CONFIG="$DEV"
111f7a0d
AF
32fi
33
fa8aca70 34if [ "$(id -u)" != "0" ]; then
5e6dfc29
JR
35 if [ -x /sbin/usernetctl ]; then
36 exec /sbin/usernetctl $CONFIG down
37 fi
38 echo "Users cannot control this device." >&2
39 exit 1
3699119a
JK
40fi
41
7742e157
AF
42source_config
43
fa8aca70
JR
44# set all major variables
45setup_ip_param
1c4ce04c 46
f67ce454 47OTHERSCRIPT="/lib/rc-scripts/ifdown-${DEVICETYPE}"
fa8aca70
JR
48
49# shutdown tleds software
50if [ "$TLEDS_DEV" = "$DEVICE" -a -x /usr/bin/tleds ]; then
5e6dfc29 51 /usr/bin/tleds -qk "$DEVICE"
fa8aca70 52fi
74a7f2e4 53
fa8aca70 54if [ -x $OTHERSCRIPT ]; then
5e6dfc29
JR
55 if [ "$HANDLING" = "0" ]; then
56 exec $OTHERSCRIPT $CONFIG $2
57 elif [ "$HANDLING" = "1" ]; then
58 $OTHERSCRIPT $CONFIG $2
59 fi
4ac87c24
AM
60fi
61
8772739e 62if is_yes "$ENABLE_6TO4"; then
63 tun6to4=tun6to4_$DEVICE
64 /sbin/ip -6 route flush dev $tun6to4 2>/dev/null
65 if [ $? = 0 ]; then # the tunnel has been set up in ifup
66 /sbin/ip link set dev $tun6to4 down
67 /sbin/ip tunnel del $tun6to4
68 fi
69fi
70
f1dba8bc
ER
71if [ -n "$BOOTPROTO" -a "$BOOTPROTO" != "none" -a "$BOOTPROTO" != "static" ]; then
72 if is_yes "$IPV4_NETWORKING"; then
73 set_dhcpclient
74
75 case ${DHCP_CLIENT##*/} in
76 pump)
72ecb335 77 $DHCP_CLIENT -r -i ${DEVICE}
f1dba8bc
ER
78 RESULT=$?
79 ;;
80 dhcpcd)
72ecb335 81 $DHCP_CLIENT -k ${DEVICE}
f1dba8bc 82 RESULT=$?
3c2730dd 83 sleep 1
f1dba8bc
ER
84 ;;
85 dhcpxd)
72ecb335 86 $DHCP_CLIENT -k ${DEVICE}
f1dba8bc
ER
87 RESULT=$?
88 ;;
89 dhclient)
1eb7d29d
JK
90 if [ -f "/var/run/dhclient.$DEVICE.pid" ] ; then
91 $DHCP_CLIENT -r -pf /var/run/dhclient.$DEVICE.pid -lf /var/lib/dhclient/dhclient.$DEVICE.leases 2>/dev/null
92 RESULT=$?
93 elif [ -f /var/run/dhclient.pid ]; then
94 # may be left by older rc-scripts
f1dba8bc 95 PID=$(cat /var/run/dhclient.pid)
d880b35f 96 if kill -0 $PID 2>/dev/null; then
f1dba8bc
ER
97 kill $PID
98 RESULT=$?
99 fi
5e6dfc29 100 fi
f1dba8bc 101 ;;
f3df266c
JK
102 avahi-autoipd)
103 $DHCP_CLIENT -k ${DEVICE}
104 RESULT=$?
105 ;;
f1dba8bc 106 esac
5e6dfc29 107 fi
7742e157
AF
108fi
109
43ed6f13 110if is_yes "${WLAN_WPA}"; then
111 killproc --pidfile "wpa_supplicant-${DEVICE}.pid" wpa_supplicant > /dev/null 2>&1
112 rm -f "/var/run/wpa_supplicant-${DEVICE}.pid"
49ee1da7 113fi
5e6dfc29 114
08ece317
AM
115# Check to make sure the device is actually up
116check_device_down && exit 0
117
53a5f488
AM
118if [ -n "${SUBDEVICE}" ]; then
119 ip addr del ${IP4ADDR} label ${SUBDEVICE} dev ${DEVICE}
5e6dfc29 120else
2450b5fc 121 LC_ALL=C ip addr flush dev ${DEVICE} 2>&1 | grep -v "Nothing to flush"
d066e443 122
53a5f488
AM
123 if [ ${DEVICETYPE} = "bond" ]; then
124 if [ ! -x /sbin/ifenslave ]; then
125 nls "%s is missing. Can't continue." "/sbin/ifenslave"
126 exit 1
127 fi
d066e443 128
53a5f488
AM
129 # get up the bonding device before enslaving
130 if ! check_device_down "${DEVICE}"; then
131 ip link set ${DEVICE} up
d066e443
ER
132 fi
133
53a5f488
AM
134 for BSVAR in $(awk '/Slave Interface:/{ print $3}' /proc/net/bonding/${DEVICE}); do
135 if [ "${BSVAR}" ]; then
136 ifenslave -d ${DEVICE} $BSVAR
137 fi
138 done
14a0605b 139 fi
53a5f488
AM
140
141 ip link set ${DEVICE} down
5e6dfc29 142fi
7742e157 143
fa8aca70 144if [ "$HANDLING" = "4" ]; then
5e6dfc29 145 exit 0
4ac87c24
AM
146fi
147
5969ebf1 148if [ -n "$RESULT" ] ; then
5e6dfc29 149 if [ "$RESULT" -ne "0" ]; then
64195bf4 150 exit $RESULT
5e6dfc29 151 fi
1c4ce04c 152fi
7742e157 153
f67ce454 154exec /lib/rc-scripts/ifdown-post $CONFIG
This page took 1.814253 seconds and 4 git commands to generate.