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