]> git.pld-linux.org Git - projects/rc-scripts.git/blob - sysconfig/network-scripts/ifup
- fixed lang.csh
[projects/rc-scripts.git] / sysconfig / network-scripts / ifup
1 #!/bin/sh
2 #
3 #       $Id: ifup,v 1.34 1999/12/15 18:41:09 misiek Exp $
4 #
5 PATH=/sbin:/usr/sbin:/bin:/usr/bin
6
7 . /etc/sysconfig/network
8 . /etc/rc.d/init.d/functions
9 . /etc/sysconfig/network-scripts/.functions
10
11 need_hostname
12
13 DEV=$1
14
15 [ -z "$DEV" ] && {
16     echo "usage: ifup <device name>" >&2
17     exit 1
18 }
19
20 if [ `id -u` != 0 ]; then
21     if [ -x /usr/sbin/usernetctl ]; then
22         exec /usr/sbin/usernetctl $DEV up
23     fi
24     echo "Users cannot control this device." >&2
25     exit 1
26 fi
27
28 IFCONFIGS="`ls /etc/sysconfig/interfaces/ifcfg-*|egrep -v '~$' 2> /dev/null`"
29 if [ "$IFCONFIGS" ]; then
30     IFCONFIGS="`egrep -L '^#!' $IFCONFIGS`"
31 fi
32 if [ "$IFCONFIGS" ]; then
33     CONFIG="`egrep -l "^DEVICE=[\"\']*$DEV[\"\']*\$" $IFCONFIGS`"
34 fi
35
36 if [ -z "$CONFIG" ]; then
37     CONFIG="$DEV"
38 fi
39
40 source_config
41
42 if [ "foo$2" = "fooboot" -a "${ONBOOT}" = "no" ]; then
43     exit
44 fi
45
46 IPSETUP=no
47
48 # full network device name
49 FULLDEVNAME="$DEVICE"
50 # detect network device type (dummy, eth ..)
51 DEVICETYPE=`echo $FULLDEVNAME | sed "s/[0-9]*$//"`
52 # przyjmuje eth0 przy {eth0,eth0:1,eth0:alias}
53 DEVICE=`echo $FULLDEVNAME | sed 's/:.*//g'`
54
55 if echo "$FULLDEVNAME" | grep -q ':' ; then
56     ISALIAS=yes
57 else
58     ISALIAS=no
59 fi
60
61 # Old BOOTP variable
62 if [ "$BOOTP" = "yes" ]; then
63     BOOTPROTO=bootp
64 fi
65
66 if [ "$BOOTPROTO" = bootp -o "$BOOTPROTO" = "dhcp" ]; then
67     PUMP=true
68 fi
69
70 # IPv4, IPv6 or both ?
71 [ -n "$IPV6_ADDR" ]                  && IPv6=yes || IPv6=no
72 [ -n "$IPADDR" -o "$PUMP" = "true" ] && IPv4=yes || IPv4=no
73
74 # Tunnel device ?
75 [ -f /etc/sysconfig/interfaces/tnlcfg-${FULLDEVNAME} ] && TNL=yes || TNL=no
76
77 if [ "$TNL" = "yes" ]; then
78         TNLOPTS="onlink"
79 fi
80
81 if [ -z "$PREFIX" -a -z "$NETMASK" ]; then
82         PREFIX="32"
83 fi
84
85 if [ -z "$PREFIX" -a -n "$NETMASK" ]; then
86         PREFIX="`calcprefix $NETMASK`"
87 fi
88
89 if [ -z "$NETMASK" -a -n "$PREFIX" ]; then
90         NETMASK="`calcnetmask $PREFIX`"
91 fi
92
93 [ "$MULTICAST" = "yes" ] && MULTICAST=on               || MULTICAST=off
94 [ -n "$SRC_ADDR" ]        && SRC_ADDR="src ${SRC_ADDR}" || SRC_ADDR=""
95 [ -z "$PROTOCOL" ]        && PROTOCOL=ip
96
97 if [ "$ARP" ]; then
98         [ "$ARP" = "yes" ]      && ARP=on       || ARP=off
99 elif [ "$DEVICETYPE" = "eth" ]; then
100         ARP=on
101 else
102         ARP=off
103 fi
104
105 OTHERSCRIPT="/etc/sysconfig/network-scripts/ifup-${DEVICETYPE}"
106
107 if [ -x "$OTHERSCRIPT" -a "$IPv4" = "yes" ]; then
108     if [ "$DEFAULTHANDLING" = "yes" ]; then
109         $OTHERSCRIPT $CONFIG $2
110     else
111         exec $OTHERSCRIPT $CONFIG $2
112     fi
113 fi
114
115 # is this device available? (this catches PCMCIA devices for us)
116 if ! (/sbin/ip link set multicast ${MULTICAST} dev ${DEVICE} > /dev/null 2>&1); then
117     echo "Delaying ${FULLDEVNAME} initialization."
118     exit 0
119 fi
120
121 if [ "$SLAVE" = "yes" -a "$ISALIAS" = "no" -a "$MASTER" != "" -a -x /sbin/ifenslave ]; then
122     RFLAG="" ; [ "${RECIEVE-ONLY}" = "yes" ] && RFLAG="-r"
123
124     ip link set ${DEVICE} down
125     echo "Enslaving $DEVICE to $MASTER"
126     ifenslave $RFLAG "$MASTER" "$DEVICE"
127
128     exit 0
129 fi
130
131 if [ -n "$MACADDR" ]; then
132    ip link set ${DEVICE} address ${MACADDR}
133 fi
134
135 if [ -n "$PUMP" -a "$ISALIAS" = "no" ]; then
136
137     echo -n "Determining IP information for $FULLDEVNAME..."
138     if /sbin/pump -i $FULLDEVNAME ; then
139        echo " done."
140     else
141        echo " failed."
142        exit 1
143     fi
144
145 else
146
147 if [ "$IPv4" = "yes" ]; then
148     if [ -z "$PREFIX" ]; then
149         eval `/bin/ipcalc --prefix ${IPADDR}`
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
159 fi
160
161     ip link set ${DEVICE} multicast ${MULTICAST} arp ${ARP} up
162
163 if [ "$IPv4" = "yes" ]; then
164     ip -family inet addr add ${IPADDR}/${PREFIX} broadcast ${BROADCAST} dev ${DEVICE} label ${FULLDEVNAME}
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
170 fi
171
172
173 # IPv6 rules
174     if [ "${IPV6_NETWORKING}" = "yes" ] ; then
175
176       for ADDR6 in ${IPV6_ADDR} ; do
177         ip -family inet6 addr add ${ADDR6} dev ${DEVICE} label ${FULLDEVNAME}
178         ip -family inet6 route add ${ADDR6} dev ${DEVICE} ${TNLOPTS}
179       done  
180
181       # only for sit tunnel device
182       if (ip tunnel show ${FULLDEVNAME} 2>&1 | grep -q "ipv6/ip") && [ "$TNL" = "yes" ]; then
183
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
188         done
189
190       fi
191
192     fi
193
194 # hack for 2.2 kernels
195 if [ "$IPv4" = "yes" ]; then
196     if [ "$ISALIAS" = "no" -a -z "`ip -f inet route | sed "s/ .*//" | grep ${NETWORK}`" ]; then
197         ip -family inet route add ${NETWORK}/${PREFIX} dev ${DEVICE} ${SRC_ADDR} ${TNLOPTS}
198     else
199         ip -family inet route add ${IPADDR}/32 dev ${DEVICE} ${SRC_ADDR} ${TNLOPTS}
200     fi
201 fi
202
203 #    . /etc/sysconfig/network
204
205     if [ "${GATEWAY}" != "" ]; then
206         if [ "${GATEWAYDEV}" = "" -o "${GATEWAYDEV}" = "${FULLDEVNAME}" ]; then
207             # set up default gateway
208             ip -family inet route add default via ${GATEWAY} dev ${DEVICE} ${SRC_ADDR} ${TNLOPTS}
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
216                 if [ "$gw" != "${DEFGW}" ]; then
217                     ip -family inet route add default via $gw dev ${DEVICE} ${SRC_ADDR} ${TNLOPTS}
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
233 fi
234
235 if [ "$IPX" = "yes" ]; then
236         /etc/sysconfig/network-scripts/ifup-ipx $DEVICE
237 fi
238
239 exec /etc/sysconfig/network-scripts/ifup-post $CONFIG
This page took 0.064153 seconds and 3 git commands to generate.