]>
Commit | Line | Data |
---|---|---|
6955eb97 | 1 | #!/bin/sh |
b0443108 | 2 | # |
ec8b15cb | 3 | # $Id$ |
b0443108 | 4 | # |
7742e157 AF |
5 | PATH=/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 |
12 | if 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 | |
20 | fi | |
21 | ||
7742e157 AF |
22 | need_hostname |
23 | ||
fa8aca70 | 24 | # device name must be ifcfg-somename |
111f7a0d | 25 | DEV=$1 |
7742e157 | 26 | |
111f7a0d | 27 | [ -z "$DEV" ] && { |
fa8aca70 | 28 | nls "Usage: %s <device name>" "ifup" >&2 |
7742e157 AF |
29 | exit 1 |
30 | } | |
31 | ||
6955eb97 | 32 | if [ `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 |
38 | fi | |
39 | ||
03f9cfee JR |
40 | if [ -f "/etc/sysconfig/interfaces/ifcfg-$DEV" ] ; then |
41 | CONFIG="/etc/sysconfig/interfaces/ifcfg-$DEV" | |
42 | else | |
43 | CONFIG="$DEV" | |
111f7a0d AF |
44 | fi |
45 | ||
7742e157 AF |
46 | source_config |
47 | ||
dd4a755f | 48 | if [ "foo$2" = "fooboot" ] && is_no "${ONBOOT}"; then |
7742e157 AF |
49 | exit |
50 | fi | |
51 | ||
52 | IPSETUP=no | |
53 | ||
fa8aca70 JR |
54 | # set all major variables |
55 | setup_ip_param | |
032ef40b | 56 | |
7742e157 AF |
57 | OTHERSCRIPT="/etc/sysconfig/network-scripts/ifup-${DEVICETYPE}" |
58 | ||
f70b001b | 59 | if [ -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 |
66 | fi |
67 | ||
68 | # is this device available? (this catches PCMCIA devices for us) | |
d3f070c8 | 69 | if ! (/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 |
72 | fi |
73 | ||
fa8aca70 JR |
74 | if 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 | |
82 | fi | |
83 | ||
026cd72c | 84 | if [ -n "$MACADDR" ]; then |
6a2c03da | 85 | ip link set ${DEVICE} address ${MACADDR} |
d29c401a | 86 | fi |
7742e157 | 87 | |
3d121e27 | 88 | ip link set ${DEVICE} multicast ${MULTICAST} ${ARP} down |
7742e157 | 89 | |
945790a2 JR |
90 | if [ -n "$MTU" ]; then |
91 | ip link set ${DEVICE} mtu ${MTU} | |
92 | fi | |
93 | ||
fa8aca70 | 94 | if is_yes "${IPV6_NETWORKING}" && is_yes "${IPV6_DISABLE_AUTOCONF}"; then |
6a2c03da | 95 | run_cmd "Disabling IPv6 autoconfiguration" sysctl -w net.ipv6.conf.${DEVICE}.autoconf=0 |
fa8aca70 | 96 | fi |
a6c22d3d AM |
97 | |
98 | if 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} | |
132 | fi | |
fa8aca70 JR |
133 | |
134 | if [ "$HANDLING" = "2" ]; then | |
135 | exit 0 | |
136 | fi | |
de1fc6ce | 137 | |
fa8aca70 | 138 | if [ -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 | 192 | else |
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 | |
218 | fi | |
de1fc6ce | 219 | |
6a2c03da | 220 | # device have to have ip address set before |
854dc659 | 221 | if is_yes "$PROXYARP"; then |
6a2c03da | 222 | run_cmd "Enabling proxy ARP on ${DEVICE}" sysctl -w net.ipv4.conf.${DEVICE}.proxy_arp=1 |
223 | fi | |
1c4ce04c | 224 | |
fa8aca70 JR |
225 | if [ "$HANDLING" = "3" ]; then |
226 | exit 0 | |
7742e157 | 227 | fi |
7742e157 | 228 | |
dd4a755f | 229 | if is_yes "$IPX"; then |
12de71be | 230 | /etc/sysconfig/network-scripts/ifup-ipx $DEVICE |
231 | fi | |
7742e157 | 232 | |
fa8aca70 JR |
233 | if [ "$HANDLING" = "4" ]; then |
234 | exit 0 | |
235 | fi | |
236 | ||
7742e157 | 237 | exec /etc/sysconfig/network-scripts/ifup-post $CONFIG |
fa8aca70 JR |
238 | |
239 | # This must be last line ! | |
240 | # vi:syntax=sh:tw=78:ts=8:sw=4 |