]> git.pld-linux.org Git - projects/rc-scripts.git/blame - sysconfig/network-scripts/ifup
- usernetclt is now in /sbin
[projects/rc-scripts.git] / sysconfig / network-scripts / ifup
CommitLineData
6955eb97 1#!/bin/sh
b0443108 2#
458f14b7 3# $Id: ifup,v 1.34 1999/12/15 18:41:09 misiek Exp $
b0443108 4#
7742e157
AF
5PATH=/sbin:/usr/sbin:/bin:/usr/bin
6
7e04fe0e 7. /etc/sysconfig/network
f3002e12 8. /etc/rc.d/init.d/functions
8b3e2b71 9. /etc/sysconfig/network-scripts/.functions
7742e157
AF
10
11need_hostname
12
111f7a0d 13DEV=$1
7742e157 14
111f7a0d 15[ -z "$DEV" ] && {
12de71be 16 echo "usage: ifup <device name>" >&2
7742e157
AF
17 exit 1
18}
19
6955eb97 20if [ `id -u` != 0 ]; then
7742e157 21 if [ -x /usr/sbin/usernetctl ]; then
111f7a0d 22 exec /usr/sbin/usernetctl $DEV up
7742e157
AF
23 fi
24 echo "Users cannot control this device." >&2
25 exit 1
26fi
27
458f14b7 28IFCONFIGS="`ls /etc/sysconfig/interfaces/ifcfg-*|egrep -v '~$' 2> /dev/null`"
9a5aecd2
AF
29if [ "$IFCONFIGS" ]; then
30 IFCONFIGS="`egrep -L '^#!' $IFCONFIGS`"
31fi
32if [ "$IFCONFIGS" ]; then
33 CONFIG="`egrep -l "^DEVICE=[\"\']*$DEV[\"\']*\$" $IFCONFIGS`"
34fi
111f7a0d
AF
35
36if [ -z "$CONFIG" ]; then
37 CONFIG="$DEV"
38fi
39
7742e157
AF
40source_config
41
830949ca 42if [ "foo$2" = "fooboot" -a "${ONBOOT}" = "no" ]; then
7742e157
AF
43 exit
44fi
45
46IPSETUP=no
47
54d39674 48# full network device name
4ac87c24 49FULLDEVNAME="$DEVICE"
54d39674 50# detect network device type (dummy, eth ..)
4ac87c24
AM
51DEVICETYPE=`echo $FULLDEVNAME | sed "s/[0-9]*$//"`
52# przyjmuje eth0 przy {eth0,eth0:1,eth0:alias}
53DEVICE=`echo $FULLDEVNAME | sed 's/:.*//g'`
c24e165d 54
38198f50 55if echo "$FULLDEVNAME" | grep -q ':' ; then
7742e157
AF
56 ISALIAS=yes
57else
58 ISALIAS=no
59fi
60
61# Old BOOTP variable
830949ca 62if [ "$BOOTP" = "yes" ]; then
7742e157
AF
63 BOOTPROTO=bootp
64fi
65
830949ca 66if [ "$BOOTPROTO" = bootp -o "$BOOTPROTO" = "dhcp" ]; then
d29c401a
AM
67 PUMP=true
68fi
69
a9a97bf4 70# IPv4, IPv6 or both ?
458f14b7 71[ -n "$IPV6_ADDR" ] && IPv6=yes || IPv6=no
830949ca 72[ -n "$IPADDR" -o "$PUMP" = "true" ] && IPv4=yes || IPv4=no
38198f50 73
d3f070c8
AM
74# Tunnel device ?
75[ -f /etc/sysconfig/interfaces/tnlcfg-${FULLDEVNAME} ] && TNL=yes || TNL=no
76
830949ca 77if [ "$TNL" = "yes" ]; then
d3f070c8
AM
78 TNLOPTS="onlink"
79fi
80
458f14b7
AM
81if [ -z "$PREFIX" -a -z "$NETMASK" ]; then
82 PREFIX="32"
83fi
84
85if [ -z "$PREFIX" -a -n "$NETMASK" ]; then
0a3cf6ac 86 PREFIX="`calcprefix $NETMASK`"
a9a97bf4 87fi
4ac87c24 88
458f14b7 89if [ -z "$NETMASK" -a -n "$PREFIX" ]; then
0a3cf6ac 90 NETMASK="`calcnetmask $PREFIX`"
4ac87c24
AM
91fi
92
830949ca 93[ "$MULTICAST" = "yes" ] && MULTICAST=on || MULTICAST=off
62c4265e
AM
94[ -n "$SRC_ADDR" ] && SRC_ADDR="src ${SRC_ADDR}" || SRC_ADDR=""
95[ -z "$PROTOCOL" ] && PROTOCOL=ip
96
032ef40b 97if [ "$ARP" ]; then
830949ca 98 [ "$ARP" = "yes" ] && ARP=on || ARP=off
032ef40b
AF
99elif [ "$DEVICETYPE" = "eth" ]; then
100 ARP=on
101else
102 ARP=off
103fi
104
7742e157
AF
105OTHERSCRIPT="/etc/sysconfig/network-scripts/ifup-${DEVICETYPE}"
106
830949ca 107if [ -x "$OTHERSCRIPT" -a "$IPv4" = "yes" ]; then
108 if [ "$DEFAULTHANDLING" = "yes" ]; then
035f0806 109 $OTHERSCRIPT $CONFIG $2
110 else
111 exec $OTHERSCRIPT $CONFIG $2
112 fi
7742e157
AF
113fi
114
115# is this device available? (this catches PCMCIA devices for us)
d3f070c8 116if ! (/sbin/ip link set multicast ${MULTICAST} dev ${DEVICE} > /dev/null 2>&1); then
4ac87c24 117 echo "Delaying ${FULLDEVNAME} initialization."
7742e157
AF
118 exit 0
119fi
120
830949ca 121if [ "$SLAVE" = "yes" -a "$ISALIAS" = "no" -a "$MASTER" != "" -a -x /sbin/ifenslave ]; then
122 RFLAG="" ; [ "${RECIEVE-ONLY}" = "yes" ] && RFLAG="-r"
7742e157 123
4ac87c24 124 ip link set ${DEVICE} down
7742e157 125 echo "Enslaving $DEVICE to $MASTER"
d29c401a 126 ifenslave $RFLAG "$MASTER" "$DEVICE"
7742e157
AF
127
128 exit 0
129fi
130
026cd72c
AM
131if [ -n "$MACADDR" ]; then
132 ip link set ${DEVICE} address ${MACADDR}
d29c401a 133fi
7742e157 134
458f14b7 135if [ -n "$PUMP" -a "$ISALIAS" = "no" ]; then
4ac87c24 136
54d39674 137 echo -n "Determining IP information for $FULLDEVNAME..."
138 if /sbin/pump -i $FULLDEVNAME ; then
d29c401a 139 echo " done."
7742e157 140 else
d29c401a
AM
141 echo " failed."
142 exit 1
7742e157 143 fi
d29c401a
AM
144
145else
7742e157 146
830949ca 147if [ "$IPv4" = "yes" ]; then
80fd83b6 148 if [ -z "$PREFIX" ]; then
bd69a65a 149 eval `/bin/ipcalc --prefix ${IPADDR}`
7742e157
AF
150 fi
151
152 if [ -z "$BROADCAST" ]; then
153 eval `/bin/ipcalc --broadcast ${IPADDR} ${NETMASK}`
154 fi
155
156 if [ -z "$NETWORK" ]; then
157 eval `/bin/ipcalc --network ${IPADDR} ${NETMASK}`
158 fi
38198f50 159fi
7742e157 160
62c4265e 161 ip link set ${DEVICE} multicast ${MULTICAST} arp ${ARP} up
38198f50 162
830949ca 163if [ "$IPv4" = "yes" ]; then
38198f50 164 ip -family inet addr add ${IPADDR}/${PREFIX} broadcast ${BROADCAST} dev ${DEVICE} label ${FULLDEVNAME}
8092fc90
AM
165
166 # Another IPv4 aliases support
167 for ADDR4 in ${IPADDR_ALIASES} ; do
168 ip -family inet addr add ${ADDR4} dev ${DEVICE} label ${FULLDEVNAME} broadcast \+
169 done
38198f50 170fi
6955eb97 171
62c4265e
AM
172
173# IPv6 rules
830949ca 174 if [ "${IPV6_NETWORKING}" = "yes" ] ; then
8092fc90
AM
175
176 for ADDR6 in ${IPV6_ADDR} ; do
177 ip -family inet6 addr add ${ADDR6} dev ${DEVICE} label ${FULLDEVNAME}
d3f070c8 178 ip -family inet6 route add ${ADDR6} dev ${DEVICE} ${TNLOPTS}
6955eb97 179 done
8092fc90 180
b568fc8c 181 # only for sit tunnel device
830949ca 182 if (ip tunnel show ${FULLDEVNAME} 2>&1 | grep -q "ipv6/ip") && [ "$TNL" = "yes" ]; then
8092fc90 183
b568fc8c
AM
184 for ADDR4 in `ip -4 addr | grep inet | grep -v "127\..*\..*\..*" | \
185 sed -e "s#.*inet ##" | sed -e "s#/.*##" | xargs`; do
186 ip -family inet6 addr add fe80::${ADDR4}/10 dev ${DEVICE} \
187 label ${FULLDEVNAME} scope link 2> /dev/null
8092fc90
AM
188 done
189
d422d060 190 fi
8092fc90 191
6955eb97 192 fi
d29c401a
AM
193
194# hack for 2.2 kernels
830949ca 195if [ "$IPv4" = "yes" ]; then
458f14b7 196 if [ "$ISALIAS" = "no" -a -z "`ip -f inet route | sed "s/ .*//" | grep ${NETWORK}`" ]; then
d3f070c8 197 ip -family inet route add ${NETWORK}/${PREFIX} dev ${DEVICE} ${SRC_ADDR} ${TNLOPTS}
12de71be 198 else
d3f070c8 199 ip -family inet route add ${IPADDR}/32 dev ${DEVICE} ${SRC_ADDR} ${TNLOPTS}
12de71be 200 fi
38198f50 201fi
12de71be 202
111f7a0d 203# . /etc/sysconfig/network
7742e157
AF
204
205 if [ "${GATEWAY}" != "" ]; then
54d39674 206 if [ "${GATEWAYDEV}" = "" -o "${GATEWAYDEV}" = "${FULLDEVNAME}" ]; then
7742e157 207 # set up default gateway
d3f070c8 208 ip -family inet route add default via ${GATEWAY} dev ${DEVICE} ${SRC_ADDR} ${TNLOPTS}
7742e157
AF
209 DEFGW=${GATEWAY}
210 fi
211 fi
212
213 if [ "$BOOTPROTO" = bootp -a "$ISALIAS" = no ]; then
214 if [ -n "$GATEWAYS" ]; then
215 for gw in $GATEWAYS; do
4ac87c24 216 if [ "$gw" != "${DEFGW}" ]; then
d3f070c8 217 ip -family inet route add default via $gw dev ${DEVICE} ${SRC_ADDR} ${TNLOPTS}
7742e157
AF
218 fi
219 done
220 fi
221
222 if [ -n "$DNSSRVS" -a -n "$SEARCH" ]; then
223 echo "search $SEARCH" > /etc/resolv.conf
224 for dns in $DNSSRVS; do
225 echo "nameserver $dns" >> /etc/resolv.conf
226 done
227 fi
228
229 if [ -n "$BOOTPHOSTNAME" -a -n "$NEEDHOSTNAME" ]; then
230 set_hostname $BOOTPHOSTNAME
231 fi
232 fi
233fi
7742e157 234
830949ca 235if [ "$IPX" = "yes" ]; then
12de71be 236 /etc/sysconfig/network-scripts/ifup-ipx $DEVICE
237fi
7742e157
AF
238
239exec /etc/sysconfig/network-scripts/ifup-post $CONFIG
This page took 0.060003 seconds and 4 git commands to generate.