]> git.pld-linux.org Git - projects/rc-scripts.git/blob - sysconfig/network-scripts/ifdown
- replaced sed with awk (backport from TOTALNEW branch)
[projects/rc-scripts.git] / sysconfig / network-scripts / ifdown
1 #!/bin/sh
2 #
3 #       $Id: ifdown,v 1.26 2000/11/16 15:58:55 baggins Exp $
4 #
5 PATH=/sbin:/usr/sbin:/bin:/usr/bin
6
7 DEV=$1
8
9 [ -z "$DEV" ] && {
10     echo "usage: ifdown <device name>" >&2
11     exit 1
12 }
13
14 . /etc/sysconfig/network
15 . /etc/rc.d/init.d/functions
16 . /etc/sysconfig/network-scripts/.functions
17
18 if [ -f "/etc/sysconfig/interfaces/ifcfg-$DEV" ] ; then
19         CONFIG="/etc/sysconfig/interfaces/ifcfg-$DEV"
20 else
21         CONFIG="$DEV"
22 fi
23
24 if [ `id -u` != 0 ]; then
25     if [ -x /sbin/usernetctl ]; then
26         exec /sbin/usernetctl $CONFIG down
27     fi
28     echo "Users cannot control this device." >&2
29     exit 1
30 fi
31
32 source_config
33
34 if [ "$BOOTPROTO" = bootp ]; then
35     DYNIP=pump
36 fi
37
38 if [ "$BOOTPROTO" = "dhcp" ]; then
39     DYNIP=dhcpcd
40 fi
41
42 # IPv4, IPv6 or both ?
43 [ -n "$IPV6_ADDR" ]             && IPv6=yes || IPv6=no
44 [ -n "$IPADDR" -o -n "$DYNIP" ] && IPv4=yes || IPv4=no
45
46 if [ -z "$PREFIX" -a -n "$NETMASK" ]; then
47         PREFIX="`calcprefix $NETMASK`"
48 fi
49
50 if [ -z "$NETMASK" -a -n "$PREFIX" ]; then
51         NETMASK="`calcnetmask $PREFIX`"
52 fi
53
54 FULLDEVNAME="$DEVICE"
55 # detect network device type (ie. dummy, eth for dummy0, eth0 ..)
56 DEVICETYPE=$(echo $DEVICE | awk ' { gsub(/[0-9]*$/,NUL); print $0 } ')
57 # real name of device (ie. is eth0 for eth0,eth0:1,eth0:alias)
58 DEVICE=$(echo $DEVICE | awk ' { gsub(/:.*$/,NUL); print $0 } ')
59 OTHERSCRIPT="/etc/sysconfig/network-scripts/ifdown-${DEVICETYPE}"
60
61 if [ -x $OTHERSCRIPT ]; then
62     if [ "$DEFAULTHANDLING" = "yes" ]; then
63         $OTHERSCRIPT $CONFIG $2
64     else
65         $OTHERSCRIPT $CONFIG $2
66         exit $?
67     fi
68 fi
69
70 if echo "$FULLDEVNAME" | grep -q ':' ; then
71     ISALIAS=yes
72 else
73     ISALIAS=no
74 fi
75
76 if [ "$ISALIAS" = "yes" ]; then
77         if [ "$IPv4" = "yes" ]; then
78                 ip -family inet addr del ${IPADDR}/${PREFIX} dev ${DEVICE} label ${FULLDEVNAME}
79         fi
80                 for ADDR in ${IPV6_ADDR} ; do
81                         ip -family inet6 addr del ${ADDR} dev ${DEVICE} label ${FULLDEVNAME}
82                 done
83 else
84     if [ "$DYNIP" = "dhcpcd" ]; then
85        /sbin/dhcpcd -k $FULLDEVNAME
86     fi
87     ip link set ${DEVICE} down
88     ip addr flush dev ${DEVICE} 2> /dev/null
89 fi
90
91 exec /etc/sysconfig/network-scripts/ifdown-post $CONFIG
92
This page took 0.339317 seconds and 3 git commands to generate.