]>
Commit | Line | Data |
---|---|---|
12de71be | 1 | #!/bin/sh |
b0443108 | 2 | # |
ec8b15cb | 3 | # $Id$ |
b0443108 | 4 | # |
7742e157 AF |
5 | PATH=/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 | |
12 | if 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 |
19 | fi |
20 | ||
111f7a0d | 21 | DEV=$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 | 28 | if [ -f "/etc/sysconfig/interfaces/ifcfg-$DEV" ] ; then |
5e6dfc29 | 29 | CONFIG="/etc/sysconfig/interfaces/ifcfg-$DEV" |
03f9cfee | 30 | else |
5e6dfc29 | 31 | CONFIG="$DEV" |
111f7a0d AF |
32 | fi |
33 | ||
fa8aca70 | 34 | if [ "$(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 |
40 | fi |
41 | ||
7742e157 AF |
42 | source_config |
43 | ||
fa8aca70 JR |
44 | # set all major variables |
45 | setup_ip_param | |
1c4ce04c | 46 | |
f67ce454 | 47 | OTHERSCRIPT="/lib/rc-scripts/ifdown-${DEVICETYPE}" |
fa8aca70 JR |
48 | |
49 | # shutdown tleds software | |
50 | if [ "$TLEDS_DEV" = "$DEVICE" -a -x /usr/bin/tleds ]; then | |
5e6dfc29 | 51 | /usr/bin/tleds -qk "$DEVICE" |
fa8aca70 | 52 | fi |
74a7f2e4 | 53 | |
fa8aca70 | 54 | if [ -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 |
60 | fi |
61 | ||
8772739e | 62 | if 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 | |
69 | fi | |
70 | ||
f1dba8bc ER |
71 | if [ -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 |
108 | fi |
109 | ||
43ed6f13 | 110 | if 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 | 113 | fi |
5e6dfc29 | 114 | |
08ece317 AM |
115 | # Check to make sure the device is actually up |
116 | check_device_down && exit 0 | |
117 | ||
53a5f488 AM |
118 | if [ -n "${SUBDEVICE}" ]; then |
119 | ip addr del ${IP4ADDR} label ${SUBDEVICE} dev ${DEVICE} | |
5e6dfc29 | 120 | else |
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 | 142 | fi |
7742e157 | 143 | |
fa8aca70 | 144 | if [ "$HANDLING" = "4" ]; then |
5e6dfc29 | 145 | exit 0 |
4ac87c24 AM |
146 | fi |
147 | ||
5969ebf1 | 148 | if [ -n "$RESULT" ] ; then |
5e6dfc29 | 149 | if [ "$RESULT" -ne "0" ]; then |
64195bf4 | 150 | exit $RESULT |
5e6dfc29 | 151 | fi |
1c4ce04c | 152 | fi |
7742e157 | 153 | |
f67ce454 | 154 | exec /lib/rc-scripts/ifdown-post $CONFIG |