]> git.pld-linux.org Git - projects/rc-scripts.git/blame - sysconfig/network-scripts/ifup
s/broke/break/ (fixed http://bugs.pld.org.pl/?bug=520).
[projects/rc-scripts.git] / sysconfig / network-scripts / ifup
CommitLineData
6955eb97 1#!/bin/sh
b0443108 2#
537f8d7e 3# $Id: ifup,v 1.69 2002/07/13 23:04:42 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
baa6b418 9. /etc/sysconfig/network-scripts/functions.network
7742e157 10
fa8aca70
JR
11# Will be removed in the future
12if is_yes "$NETWORKING" ; then
13 if [ -z "$IPV4_NETWORKING" ] ; then
14 echo "NETWORKING is set to YES, but IPV4_NETWORKING is empty!"
15 echo "Please upgrade your config"
16 echo "Assuming you want IPv4 networking"
17 IPV4_NETWORKING=yes
18 export IPV4_NETWORKING
19 fi
20fi
21
7742e157
AF
22need_hostname
23
fa8aca70 24# device name must be ifcfg-somename
111f7a0d 25DEV=$1
7742e157 26
111f7a0d 27[ -z "$DEV" ] && {
fa8aca70 28 nls "Usage: %s <device name>" "ifup" >&2
7742e157
AF
29 exit 1
30}
31
6955eb97 32if [ `id -u` != 0 ]; then
fa8aca70 33 if [ -x /sbin/usernetctl ]; then
f70b001b 34 exec /sbin/usernetctl $DEV up
7742e157 35 fi
97c76ad5 36 nls "Users cannot control this device." >&2
7742e157
AF
37 exit 1
38fi
39
03f9cfee
JR
40if [ -f "/etc/sysconfig/interfaces/ifcfg-$DEV" ] ; then
41 CONFIG="/etc/sysconfig/interfaces/ifcfg-$DEV"
42else
43 CONFIG="$DEV"
111f7a0d
AF
44fi
45
7742e157
AF
46source_config
47
dd4a755f 48if [ "foo$2" = "fooboot" ] && is_no "${ONBOOT}"; then
7742e157
AF
49 exit
50fi
51
52IPSETUP=no
53
fa8aca70
JR
54# set all major variables
55setup_ip_param
032ef40b 56
7742e157
AF
57OTHERSCRIPT="/etc/sysconfig/network-scripts/ifup-${DEVICETYPE}"
58
f70b001b 59if [ -x "$OTHERSCRIPT" ]; then
fa8aca70
JR
60 if is_yes "$DEFAULTHANDLING" ; then HANDLING=1 ; fi
61 if [ "$HANDLING" = "0" ]; then
62 exec $OTHERSCRIPT $CONFIG $2
63 elif [ "$HANDLING" = "1" ]; then
035f0806 64 $OTHERSCRIPT $CONFIG $2
035f0806 65 fi
7742e157
AF
66fi
67
68# is this device available? (this catches PCMCIA devices for us)
d3f070c8 69if ! (/sbin/ip link set multicast ${MULTICAST} dev ${DEVICE} > /dev/null 2>&1); then
fa8aca70
JR
70 nls "Delaying %s initialization" ${DEVICE}
71 exit 1
7742e157
AF
72fi
73
fa8aca70
JR
74if is_yes "$SLAVE" && [ -n "$MASTER" -a -x /sbin/ifenslave ]; then
75 RFLAG="" && is_yes "${RECIEVE-ONLY}" && RFLAG="-r"
7742e157 76
4ac87c24 77 ip link set ${DEVICE} down
fa8aca70 78 nls "Enslaving %s to %s" "$DEVICE" "$MASTER"
d29c401a 79 ifenslave $RFLAG "$MASTER" "$DEVICE"
7742e157
AF
80
81 exit 0
82fi
83
026cd72c
AM
84if [ -n "$MACADDR" ]; then
85 ip link set ${DEVICE} address ${MACADDR}
d29c401a 86fi
7742e157 87
3d121e27 88ip link set ${DEVICE} multicast ${MULTICAST} ${ARP} down
7742e157 89
945790a2
JR
90if [ -n "$MTU" ]; then
91 ip link set ${DEVICE} mtu ${MTU}
92fi
93
fa8aca70
JR
94if is_yes "${IPV6_NETWORKING}" && is_yes "${IPV6_DISABLE_AUTOCONF}"; then
95 run_cmd "Disabling IPv6 autoconfiguration" sysctl -w net.ipv6.conf.${DEVICE}=0
96fi
a6c22d3d
AM
97
98if is_wireless_device "${DEVICE}"; then
99 [ -z "${WLAN_NICKNAME}" ] && WLAN_NICKNAME="$(hostname -f)"
100
101 # wlan mode needs to be first
102 [ -n "${WLAN_MODE}" ] && iwconfig ${DEVICE} mode ${WLAN_MODE}
103 iwconfig ${DEVICE} nickname ${WLAN_NICKNAME}
104 [ -n "${WLAN_ESSID}" ] && iwconfig ${DEVICE} essid ${WLAN_ESSID}
105 [ -n "${WLAN_NWID}" ] && iwconfig ${DEVICE} nwid ${WLAN_NWID}
106 if [ -n "${WLAN_FREQ}" -a "${WLAN_MODE}" != "Managed" ] ; then
107 iwconfig ${DEVICE} freq ${WLAN_FREQ}
108 elif [ -n "${WLAN_CHANNEL}" -a "${WLAN_MODE}" != "Managed" ]; then
109 iwconfig ${DEVICE} channel ${WLAN_CHANNEL}
110 fi
111 [ -n "${WLAN_SENS}" ] && iwconfig ${DEVICE} sens ${WLAN_SENS}
112 [ -n "${WLAN_AP}" ] && iwconfig ${DEVICE} ap ${WLAN_AP}
113 [ -n "${WLAN_BITRATE}" ] && iwconfig ${DEVICE} rate ${WLAN_BITRATE}
114 [ -n "${WLAN_RTS_THRESHOLD}" ] && iwconfig ${DEVICE} rts ${WLAN_RTS_THRESHOLD}
115 [ -n "${WLAN_FRAGMENTATION_THRESHOLD}" ] && iwconfig ${DEVICE} frag ${WLAN_FRAGMENTATION_THRESHOLD}
116 if [ -n "${WLAN_KEY}" ]; then
117 iwconfig ${DEVICE} key ${WLAN_KEY}
118 [ -n "${WLAN_ENCRYPTION}" ] && iwconfig ${DEVICE} key ${WLAN_ENCRYPTION}
119 fi
537f8d7e 120 if is_no "${WLAN_ENCRYPTION}"; then
a6c22d3d
AM
121 iwconfig ${DEVICE} key off
122 fi
123 [ -n "${WLAN_POWER}" ] && iwconfig ${DEVICE} ${WLAN_POWER}
124 [ -n "${WLAN_TXPOWER}" ] && iwconfig ${DEVICE} ${WLAN_TXPOWER}
125 [ -n "${WLAN_RETRY}" ] && iwconfig ${DEVICE} ${WLAN_RETRY}
126 if is_yes "${WLAN_COMMIT}"; then
127 iwconfig ${DEVICE} commit
128 fi
129 [ -n "${WLAN_NWID}" ] && iwconfig ${DEVICE} nwid ${WLAN_NWID}
130 # essid should be last due to netowork rescanning by wlan devices
131 [ -n "${WLAN_ESSID}" ] && iwconfig ${DEVICE} essid ${WLAN_ESSID}
132fi
fa8aca70
JR
133
134if [ "$HANDLING" = "2" ]; then
135 exit 0
136fi
de1fc6ce 137
fa8aca70 138if [ -n "$BOOTPROTO" -a "$BOOTPROTO" != "none" ]; then
7742e157 139
fa8aca70
JR
140 if is_yes "$IPV4_NETWORKING"; then
141 if [ "$BOOTPROTO" = "bootp" -o "$BOOTPROTO" = "pump" ]; then
142 DHCP_CLIENT=/sbin/pump
143 fi
144
145 if [ -z "$DHCP_CLIENT" ]; then
146 if [ -x /sbin/dhcpcd ]; then
147 DHCP_CLIENT=/sbin/dhcpcd
148 elif [ -x /sbin/dhclient ]; then
149 DHCP_CLIENT=/sbin/dhclient
150 elif [ -x /sbin/dhcpxd ]; then
151 DHCP_CLIENT=/sbin/dhcpxd
152 elif [ -x /sbin/pump ]; then
153 DHCP_CLIENT=/sbin/pump
154 else
155 nls "Can't find a dhcp client."
156 exit 1
157 fi
158 fi
159
160 DHCP_ARGS=
161 if [ -n "$DHCP_CLIENT" ]; then
162 case $(basename $DHCP_CLIENT) in
163 pump)
164 [ -n "$DHCP_HOSTNAME" ] && DHCP_ARGS="-h $DHCP_HOSTNAME"
165 DHCP_ARGS="$DHCP_ARGS -i $DEVICE"
166 ;;
167 dhcpcd)
168 [ -n "$DHCP_HOSTNAME" ] && DHCP_ARGS="-h $DHCP_HOSTNAME"
169 DHCP_ARGS="$DHCP_ARGS $DEVICE"
170 ;;
171 dhcpxd)
172 [ -n "$DHCP_HOSTNAME" ] && DHCP_ARGS="-H $DHCP_HOSTNAME"
173 DHCP_ARGS="$DHCP_ARGS $DEVICE"
174 ;;
175 dhclient)
176 # Can't specify a host with dhclient ?
177 DHCP_ARGS="$DEVICE"
178 ;;
179 esac
180 fi
181 DHCP_ARGS="$DHCP_OPTIONS $DHCP_ARGS"
182
183 if ! run_cmd "$(nls 'Determining IP information for') $DEVICE ($(basename $DHCP_CLIENT))" $DHCP_CLIENT $DHCP_ARGS ; then
184 exit 1
7742e157 185 fi
1c4ce04c 186
fa8aca70
JR
187 # give time for determining IP information
188 check_device_down && sleep 1 && check_device_down && sleep 3
189 check_device_down && ip link set ${DEVICE} up
190 fi
1c4ce04c 191
fa8aca70 192else
de1fc6ce 193
fa8aca70
JR
194 # IPv4 in use ?
195 if is_yes "$IPV4_NETWORKING" && [ -n "${IP4ADDR}" ] ; then
196 # If broadcast is missing then autocalculate it
197 if ! (echo $IP4ADDROPT | egrep -q "brd|broadcast"); then
198 IP4ADDROPT="brd + ${IP4ADDROPT}"
1c4ce04c 199 fi
fa8aca70
JR
200
201 if [ -n "$REMIP" ]; then
202 ip addr add ${IP4ADDR} peer ${REMIP} dev ${DEVICE} ${IP4ADDROPT}
203 else
204 ip addr add ${IP4ADDR} dev ${DEVICE} ${IP4ADDROPT}
1c4ce04c 205 fi
de1fc6ce
JR
206 fi
207
fa8aca70
JR
208 # Set device up
209 ip link set ${DEVICE} up
210
211 # IPv6 in use ?
212 if is_yes "$IPV6_NETWORKING" && [ -n "${IP6ADDR}" ] ; then
213 ip addr add ${IP6ADDR} dev ${DEVICE} ${IP6ADDROPT}
1c4ce04c 214 fi
215
fa8aca70
JR
216 # IPv4/6 gateways and default routes
217 setup_ip_gw_ro
218fi
de1fc6ce 219
1c4ce04c 220
fa8aca70
JR
221if [ "$HANDLING" = "3" ]; then
222 exit 0
7742e157 223fi
7742e157 224
dd4a755f 225if is_yes "$IPX"; then
12de71be 226 /etc/sysconfig/network-scripts/ifup-ipx $DEVICE
227fi
7742e157 228
fa8aca70
JR
229if [ "$HANDLING" = "4" ]; then
230 exit 0
231fi
232
7742e157 233exec /etc/sysconfig/network-scripts/ifup-post $CONFIG
fa8aca70
JR
234
235# This must be last line !
236# vi:syntax=sh:tw=78:ts=8:sw=4
This page took 0.067733 seconds and 4 git commands to generate.