]> git.pld-linux.org Git - projects/rc-scripts.git/blame - sysconfig/network-scripts/ifup
- don't mount devpts if devfs is already mounted
[projects/rc-scripts.git] / sysconfig / network-scripts / ifup
CommitLineData
6955eb97 1#!/bin/sh
b0443108 2#
c56277ee 3# $Id: ifup,v 1.62 2001/06/26 14:53:27 marcus 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" ] && {
1c4ce04c 16 nls "usage: ifup <device name>" >&2
7742e157
AF
17 exit 1
18}
19
6955eb97 20if [ `id -u` != 0 ]; then
1c4ce04c 21 if [ -u /sbin/usernetctl ]; then
f70b001b 22 exec /sbin/usernetctl $DEV up
7742e157 23 fi
97c76ad5 24 nls "Users cannot control this device." >&2
7742e157
AF
25 exit 1
26fi
27
03f9cfee
JR
28if [ -f "/etc/sysconfig/interfaces/ifcfg-$DEV" ] ; then
29 CONFIG="/etc/sysconfig/interfaces/ifcfg-$DEV"
30else
31 CONFIG="$DEV"
111f7a0d
AF
32fi
33
7742e157
AF
34source_config
35
dd4a755f 36if [ "foo$2" = "fooboot" ] && is_no "${ONBOOT}"; then
7742e157
AF
37 exit
38fi
39
40IPSETUP=no
41
1c4ce04c 42# full network device name
43FULLDEVNAME="$DEVICE"
44# detect network device type (ie. dummy, eth for dummy0, eth0 ..)
45DEVICETYPE=$(echo $DEVICE | awk ' { gsub(/[0-9]\.[0-9]*$/,NUL); print $0 } ')
46# real name of device (ie. is eth0 for eth0,eth0:1,eth0:alias)
47DEVICE=$(echo $DEVICE | awk ' { gsub(/:.*$/,NUL); print $0 } ')
48
49if echo "$FULLDEVNAME" | grep -q ':' ; then
50 ISALIAS=yes
51else
52 ISALIAS=no
53fi
54
55# 802.1Q VLANs
56vlan_setup
57if is_yes $ETH_VLANS && echo "$DEVICE" | grep -q '\.' ; then
58 VLANDEVICE=$(echo $DEVICE | awk ' { gsub(/\..*$/,NUL); print $0 } ')
59 VLANNUMBER=$(echo $DEVICE | awk " { gsub(/$VLANDEVICE\./,NUL); print \$0 } ")
60 /sbin/ip link set $VLANDEVICE up
61 /sbin/vconfig add $VLANDEVICE $VLANNUMBER 2>&1 > /dev/null
c56277ee 62 /sbin/vconfig set_flag $DEVICE 1 2>&1 > /dev/null
1c4ce04c 63fi
64
65# Old BOOTP variable
66if is_yes "$BOOTP"; then
67 BOOTPROTO=bootp
68fi
69
70if [ "$BOOTPROTO" = bootp ]; then
71 DYNIP=pump
72fi
73
74if [ "$BOOTPROTO" = "dhcp" ]; then
75 DYNIP=dhcpcd
76fi
77
78# IPv4, IPv6 or both ?
79[ -n "$IPV6_ADDR" ] && IPv6=yes || IPv6=no
80[ -n "$IPADDR" -o -n "$DYNIP" ] && IPv4=yes || IPv4=no
81
82# Tunnel device ?
83[ -f /etc/sysconfig/interfaces/tnlcfg-${FULLDEVNAME} ] && TNL=yes || TNL=no
84
85if [ "$TNL" = "yes" ]; then
86 TNLOPTS="onlink"
87fi
88
89if [ -z "$PREFIX" -a -z "$NETMASK" ]; then
90 PREFIX="32"
91fi
92
93if [ -z "$PREFIX" -a -n "$NETMASK" ]; then
94 PREFIX="`calcprefix $NETMASK`"
95fi
96
97if [ -z "$NETMASK" -a -n "$PREFIX" ]; then
98 NETMASK="`calcnetmask $PREFIX`"
99fi
100
101is_yes "$MULTICAST" && MULTICAST=on || MULTICAST=off
102[ -n "$SRC_ADDR" ] && SRC_ADDR="src ${SRC_ADDR}" || SRC_ADDR=""
103[ -n "$SCOPE" ] && SCOPE="scope ${SCOPE}" || SCOPE=""
104
105if [ "$ARP" ]; then
106 is_yes "$ARP" && ARP=on || ARP=off
107elif [ "$DEVICETYPE" = "eth" ]; then
108 ARP=on
109else
110 ARP=off
111fi
032ef40b 112
7742e157
AF
113OTHERSCRIPT="/etc/sysconfig/network-scripts/ifup-${DEVICETYPE}"
114
f70b001b 115if [ -x "$OTHERSCRIPT" ]; then
1c4ce04c 116 if [ "$DEFAULTHANDLING" = "yes" ]; then
035f0806 117 $OTHERSCRIPT $CONFIG $2
1c4ce04c 118 else
119 exec $OTHERSCRIPT $CONFIG $2
035f0806 120 fi
7742e157
AF
121fi
122
123# is this device available? (this catches PCMCIA devices for us)
d3f070c8 124if ! (/sbin/ip link set multicast ${MULTICAST} dev ${DEVICE} > /dev/null 2>&1); then
1c4ce04c 125 echo "Delaying ${FULLDEVNAME} initialization."
126 exit 0
7742e157
AF
127fi
128
1c4ce04c 129if [ "$SLAVE" = "yes" -a "$ISALIAS" = "no" -a "$MASTER" != "" -a -x /sbin/ifenslave ]; then
130 RFLAG="" ; [ "${RECIEVE-ONLY}" = "yes" ] && RFLAG="-r"
7742e157 131
4ac87c24 132 ip link set ${DEVICE} down
1c4ce04c 133 echo "Enslaving $DEVICE to $MASTER"
d29c401a 134 ifenslave $RFLAG "$MASTER" "$DEVICE"
7742e157
AF
135
136 exit 0
137fi
138
026cd72c
AM
139if [ -n "$MACADDR" ]; then
140 ip link set ${DEVICE} address ${MACADDR}
d29c401a 141fi
7742e157 142
1c4ce04c 143if [ -n "$DYNIP" -a "$ISALIAS" = "no" ]; then
144
145 echo -n "`nls 'Determining IP information for %s' $FULLDEVNAME'...'`"
146 if [ "$DYNIP" = "pump" ]; then
147 if /sbin/pump -i $FULLDEVNAME ; then
148 nls " done."
149 else
150 nls " failed."
151 exit 1
152 fi
153 else
154 if /sbin/dhcpcd $FULLDEVNAME $DHCPOPTIONS ; then
155 nls " done."
156 else
157 nls " failed."
158 exit 1
159 fi
160 fi
7742e157 161
1c4ce04c 162else
7742e157 163
1c4ce04c 164 if [ "$IPv4" = "yes" ]; then
165 if [ -z "$PREFIX" ]; then
166 eval `/bin/ipcalc --prefix ${IPADDR}`
167 fi
7742e157 168
1c4ce04c 169 if [ -z "$BROADCAST" ]; then
170 eval `/bin/ipcalc --broadcast ${IPADDR} ${NETMASK}`
171 fi
de1fc6ce 172
1c4ce04c 173 if [ -z "$NETWORK" ]; then
174 eval `/bin/ipcalc --network ${IPADDR} ${NETMASK}`
175 fi
7742e157
AF
176 fi
177
1c4ce04c 178 # IPv4 rules
179 if [ "$IPv4" = "yes" ]; then
45179bbf 180 if [ -n "$REMIP" ]; then
1c4ce04c 181 ip -family inet addr add ${IPADDR} peer ${REMIP} dev ${DEVICE} label ${FULLDEVNAME} ${SCOPE}
182 else
183 ip -family inet addr add ${IPADDR}/${PREFIX} broadcast ${BROADCAST} dev ${DEVICE} label ${FULLDEVNAME} ${SCOPE}
7742e157 184 fi
1c4ce04c 185 # Another IPv4 aliases support
186 for ADDR4 in ${IPADDR_ALIASES} ; do
187 ip -family inet addr add ${ADDR4} dev ${DEVICE} label ${FULLDEVNAME} broadcast \+
188 done
7742e157 189 fi
de1fc6ce 190
1c4ce04c 191 ip link set ${DEVICE} multicast ${MULTICAST} arp ${ARP} up
192
193 # IPv6 rules
194 if is_yes "${IPV6_NETWORKING}"; then
195 proc_net ipv6/conf/${DEVICE}/autoconf start 0 1 IPV6_AUTOCONF "IPv6 address autoconfiguration on ${DEVICE}"
196
197 for ADDR6 in ${IPV6_ADDR} ; do
198 ip -family inet6 addr add ${ADDR6} dev ${DEVICE} label ${FULLDEVNAME}
199 done
de1fc6ce 200
1c4ce04c 201 if is_no "${IPV6_FORWARDING}" ; then
202 if [ "${GATEWAY6}" != "" ]; then
203 if [ "${GATEWAY6DEV}" = "" -o "${GATEWAY6DEV}" = "${FULLDEVNAME}" ]; then
204 # set up default gateway
205 ip -family inet6 route add default via ${GATEWAY6} dev ${DEVICE}
206 fi
207 fi
208 else
209 if [ "${IPV6_GLOBALROUTE}" != "" ] ; then
210 if [ "${IPV6_GLOBALROUTEDEV}" = "" -o "${IPV6_GLOBALROUTEDEV}" = "${FULLDEVNAME}" ]; then
211 ip -family inet6 route add 2000::/3 via ${IPV6_GLOBALROUTE} dev ${DEVICE}
212 fi
213 fi
214 fi
de1fc6ce
JR
215 fi
216
1c4ce04c 217 if [ "${GATEWAY}" != "" ]; then
218 if [ "${GATEWAYDEV}" = "" -o "${GATEWAYDEV}" = "${FULLDEVNAME}" ]; then
219 # set up default gateway
220 ip -family inet route add default via ${GATEWAY} dev ${DEVICE} ${SRC_ADDR} ${TNLOPTS}
221 DEFGW=${GATEWAY}
222 fi
223 fi
224
225 if [ "$BOOTPROTO" = bootp -a "$ISALIAS" = no ]; then
226 if [ -n "$GATEWAYS" ]; then
227 for gw in $GATEWAYS; do
228 if [ "$gw" != "${DEFGW}" ]; then
229 ip -family inet route add default via $gw dev ${DEVICE} ${SRC_ADDR} ${TNLOPTS}
230 fi
231 done
232 fi
de1fc6ce 233
1c4ce04c 234 if [ -n "$DNSSRVS" -a -n "$SEARCH" ]; then
235 echo "search $SEARCH" > /etc/resolv.conf
236 for dns in $DNSSRVS; do
237 echo "nameserver $dns" >> /etc/resolv.conf
238 done
239 fi
240
241 if [ -n "$BOOTPHOSTNAME" -a -n "$NEEDHOSTNAME" ]; then
242 set_hostname $BOOTPHOSTNAME
243 fi
244 fi
7742e157 245fi
7742e157 246
dd4a755f 247if is_yes "$IPX"; then
12de71be 248 /etc/sysconfig/network-scripts/ifup-ipx $DEVICE
249fi
7742e157
AF
250
251exec /etc/sysconfig/network-scripts/ifup-post $CONFIG
This page took 0.320184 seconds and 4 git commands to generate.