]> git.pld-linux.org Git - projects/rc-scripts.git/blame - sysconfig/network-scripts/ifup
- added default route setup for IPv6
[projects/rc-scripts.git] / sysconfig / network-scripts / ifup
CommitLineData
6955eb97 1#!/bin/sh
b0443108 2#
7e846feb 3# $Id: ifup,v 1.43 2000/08/04 14:08:23 baggins 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" ] && {
97c76ad5 16 nls "usage: ifup <device name>" >&2
7742e157
AF
17 exit 1
18}
19
6955eb97 20if [ `id -u` != 0 ]; then
f70b001b
JK
21 if [ -x /sbin/usernetctl ]; then
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
54d39674 42# full network device name
4ac87c24 43FULLDEVNAME="$DEVICE"
54d39674 44# detect network device type (dummy, eth ..)
4ac87c24 45DEVICETYPE=`echo $FULLDEVNAME | sed "s/[0-9]*$//"`
97c76ad5 46# real name of device (is eth0 for eth0,eth0:1,eth0:alias)
4ac87c24 47DEVICE=`echo $FULLDEVNAME | sed 's/:.*//g'`
c24e165d 48
38198f50 49if echo "$FULLDEVNAME" | grep -q ':' ; then
7742e157
AF
50 ISALIAS=yes
51else
52 ISALIAS=no
53fi
54
55# Old BOOTP variable
dd4a755f 56if is_yes "$BOOTP"; then
7742e157
AF
57 BOOTPROTO=bootp
58fi
59
d1841afd
JR
60if [ "$BOOTPROTO" = bootp ]; then
61 DYNIP=pump
62fi
63
64if [ "$BOOTPROTO" = "dhcp" ]; then
65 DYNIP=dhcpcd
d29c401a
AM
66fi
67
a9a97bf4 68# IPv4, IPv6 or both ?
d1841afd
JR
69[ -n "$IPV6_ADDR" ] && IPv6=yes || IPv6=no
70[ -n "$IPADDR" -o -n "$DYNIP" ] && IPv4=yes || IPv4=no
38198f50 71
d3f070c8
AM
72# Tunnel device ?
73[ -f /etc/sysconfig/interfaces/tnlcfg-${FULLDEVNAME} ] && TNL=yes || TNL=no
74
830949ca 75if [ "$TNL" = "yes" ]; then
d3f070c8
AM
76 TNLOPTS="onlink"
77fi
78
458f14b7
AM
79if [ -z "$PREFIX" -a -z "$NETMASK" ]; then
80 PREFIX="32"
81fi
82
83if [ -z "$PREFIX" -a -n "$NETMASK" ]; then
0a3cf6ac 84 PREFIX="`calcprefix $NETMASK`"
a9a97bf4 85fi
4ac87c24 86
458f14b7 87if [ -z "$NETMASK" -a -n "$PREFIX" ]; then
0a3cf6ac 88 NETMASK="`calcnetmask $PREFIX`"
4ac87c24
AM
89fi
90
dd4a755f 91is_yes "$MULTICAST" && MULTICAST=on || MULTICAST=off
97c76ad5
AM
92[ -n "$SRC_ADDR" ] && SRC_ADDR="src ${SRC_ADDR}" || SRC_ADDR=""
93[ -n "$SCOPE" ] && SCOPE="scope ${SCOPE}" || SCOPE=""
62c4265e 94
032ef40b 95if [ "$ARP" ]; then
dd4a755f 96 is_yes "$ARP" && ARP=on || ARP=off
032ef40b
AF
97elif [ "$DEVICETYPE" = "eth" ]; then
98 ARP=on
99else
100 ARP=off
101fi
102
7742e157
AF
103OTHERSCRIPT="/etc/sysconfig/network-scripts/ifup-${DEVICETYPE}"
104
f70b001b 105if [ -x "$OTHERSCRIPT" ]; then
830949ca 106 if [ "$DEFAULTHANDLING" = "yes" ]; then
035f0806 107 $OTHERSCRIPT $CONFIG $2
108 else
109 exec $OTHERSCRIPT $CONFIG $2
110 fi
7742e157
AF
111fi
112
113# is this device available? (this catches PCMCIA devices for us)
d3f070c8 114if ! (/sbin/ip link set multicast ${MULTICAST} dev ${DEVICE} > /dev/null 2>&1); then
4ac87c24 115 echo "Delaying ${FULLDEVNAME} initialization."
7742e157
AF
116 exit 0
117fi
118
830949ca 119if [ "$SLAVE" = "yes" -a "$ISALIAS" = "no" -a "$MASTER" != "" -a -x /sbin/ifenslave ]; then
120 RFLAG="" ; [ "${RECIEVE-ONLY}" = "yes" ] && RFLAG="-r"
7742e157 121
4ac87c24 122 ip link set ${DEVICE} down
7742e157 123 echo "Enslaving $DEVICE to $MASTER"
d29c401a 124 ifenslave $RFLAG "$MASTER" "$DEVICE"
7742e157
AF
125
126 exit 0
127fi
128
026cd72c
AM
129if [ -n "$MACADDR" ]; then
130 ip link set ${DEVICE} address ${MACADDR}
d29c401a 131fi
7742e157 132
d1841afd 133if [ -n "$DYNIP" -a "$ISALIAS" = "no" ]; then
4ac87c24 134
97c76ad5 135 echo -n "`nls "Determining IP information for"` $FULLDEVNAME..."
d1841afd
JR
136 if [ "$DYNIP" = "pump" ]; then
137 if /sbin/pump -i $FULLDEVNAME ; then
138 nls " done."
139 else
140 nls " failed."
141 exit 1
142 fi
7742e157 143 else
bd56ec67 144 if /sbin/dhcpcd $FULLDEVNAME "$DHCPOPTIONS" ; then
d1841afd
JR
145 nls " done."
146 else
147 nls " failed."
148 exit 1
149 fi
7742e157 150 fi
d29c401a
AM
151
152else
7742e157 153
f70b001b
JK
154 if [ "$IPv4" = "yes" ]; then
155 if [ -z "$PREFIX" ]; then
156 eval `/bin/ipcalc --prefix ${IPADDR}`
157 fi
7742e157 158
f70b001b
JK
159 if [ -z "$BROADCAST" ]; then
160 eval `/bin/ipcalc --broadcast ${IPADDR} ${NETMASK}`
161 fi
7742e157 162
f70b001b
JK
163 if [ -z "$NETWORK" ]; then
164 eval `/bin/ipcalc --network ${IPADDR} ${NETMASK}`
165 fi
7742e157
AF
166 fi
167
62c4265e 168 ip link set ${DEVICE} multicast ${MULTICAST} arp ${ARP} up
38198f50 169
f70b001b 170 if [ "$IPv4" = "yes" ]; then
769a3416 171 if [ -n "$REMIP" ]; then
3ed6009f 172 ip -family inet addr add ${IPADDR} peer ${REMIP} dev ${DEVICE} label ${FULLDEVNAME} ${SCOPE}
173 else
174 ip -family inet addr add ${IPADDR}/${PREFIX} broadcast ${BROADCAST} dev ${DEVICE} label ${FULLDEVNAME} ${SCOPE}
175 fi
f70b001b
JK
176 # Another IPv4 aliases support
177 for ADDR4 in ${IPADDR_ALIASES} ; do
178 ip -family inet addr add ${ADDR4} dev ${DEVICE} label ${FULLDEVNAME} broadcast \+
179 done
180 fi
6955eb97 181
62c4265e 182
f70b001b 183 # IPv6 rules
dd4a755f 184 if is_yes "${IPV6_NETWORKING}"; then
8092fc90
AM
185
186 for ADDR6 in ${IPV6_ADDR} ; do
187 ip -family inet6 addr add ${ADDR6} dev ${DEVICE} label ${FULLDEVNAME}
6955eb97 188 done
8092fc90 189
7e846feb
JR
190 if [ "${GATEWAY6}" != "" ]; then
191 if [ "${GATEWAY6DEV}" = "" -o "${GATEWAY6DEV}" = "${FULLDEVNAME}" ]; then
192 if [ "${GATEWAY6DEFAULT}" != "" ] ; then
193 ip -family inet6 route add ${GATEWAY6DEFAULT} via ${GATEWAY6} dev ${DEVICE}
194 else
195 # set up default gateway
196 ip -family inet6 route add default via ${GATEWAY6} dev ${DEVICE}
197 fi
198 fi
199 fi
200
12de71be 201 fi
7742e157
AF
202
203 if [ "${GATEWAY}" != "" ]; then
54d39674 204 if [ "${GATEWAYDEV}" = "" -o "${GATEWAYDEV}" = "${FULLDEVNAME}" ]; then
7742e157 205 # set up default gateway
d3f070c8 206 ip -family inet route add default via ${GATEWAY} dev ${DEVICE} ${SRC_ADDR} ${TNLOPTS}
7742e157
AF
207 DEFGW=${GATEWAY}
208 fi
209 fi
210
211 if [ "$BOOTPROTO" = bootp -a "$ISALIAS" = no ]; then
212 if [ -n "$GATEWAYS" ]; then
213 for gw in $GATEWAYS; do
4ac87c24 214 if [ "$gw" != "${DEFGW}" ]; then
d3f070c8 215 ip -family inet route add default via $gw dev ${DEVICE} ${SRC_ADDR} ${TNLOPTS}
7742e157
AF
216 fi
217 done
218 fi
219
220 if [ -n "$DNSSRVS" -a -n "$SEARCH" ]; then
221 echo "search $SEARCH" > /etc/resolv.conf
222 for dns in $DNSSRVS; do
223 echo "nameserver $dns" >> /etc/resolv.conf
224 done
225 fi
226
227 if [ -n "$BOOTPHOSTNAME" -a -n "$NEEDHOSTNAME" ]; then
228 set_hostname $BOOTPHOSTNAME
229 fi
230 fi
231fi
7742e157 232
dd4a755f 233if is_yes "$IPX"; then
12de71be 234 /etc/sysconfig/network-scripts/ifup-ipx $DEVICE
235fi
7742e157
AF
236
237exec /etc/sysconfig/network-scripts/ifup-post $CONFIG
This page took 0.076082 seconds and 4 git commands to generate.