]>
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 | 11 | # Will be removed in the future |
3d7d555c ER |
12 | if is_yes "$NETWORKING"; then |
13 | if [ -z "$IPV4_NETWORKING" ]; then | |
5e6dfc29 JR |
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 | |
fa8aca70 JR |
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" ] && { |
5e6dfc29 JR |
28 | nls "Usage: %s <device name>" "ifup" >&2 |
29 | exit 1 | |
7742e157 AF |
30 | } |
31 | ||
6955eb97 | 32 | if [ `id -u` != 0 ]; then |
5e6dfc29 JR |
33 | if [ -x /sbin/usernetctl ]; then |
34 | exec /sbin/usernetctl $DEV up | |
35 | fi | |
36 | nls "Users cannot control this device." >&2 | |
37 | exit 1 | |
7742e157 AF |
38 | fi |
39 | ||
3d7d555c | 40 | if [ -f "/etc/sysconfig/interfaces/ifcfg-$DEV" ]; then |
5e6dfc29 | 41 | CONFIG="/etc/sysconfig/interfaces/ifcfg-$DEV" |
03f9cfee | 42 | else |
5e6dfc29 | 43 | CONFIG="$DEV" |
111f7a0d AF |
44 | fi |
45 | ||
7742e157 AF |
46 | source_config |
47 | ||
dd4a755f | 48 | if [ "foo$2" = "fooboot" ] && is_no "${ONBOOT}"; then |
5e6dfc29 | 49 | exit |
7742e157 AF |
50 | fi |
51 | ||
d06391de | 52 | if [ "foo$2" = "foohotplug" ] && ! is_yes "${HOTPLUG}"; then |
5e6dfc29 | 53 | exit |
9072bd26 AM |
54 | fi |
55 | ||
56 | if [ "foo$2" = "foopcmcia-hotplug" ] && ! is_yes "${PCMCIA_HOTPLUG}"; then | |
5e6dfc29 | 57 | exit |
5c096954 AF |
58 | fi |
59 | ||
7742e157 AF |
60 | IPSETUP=no |
61 | ||
fa8aca70 JR |
62 | # set all major variables |
63 | setup_ip_param | |
032ef40b | 64 | |
7742e157 AF |
65 | OTHERSCRIPT="/etc/sysconfig/network-scripts/ifup-${DEVICETYPE}" |
66 | ||
f70b001b | 67 | if [ -x "$OTHERSCRIPT" ]; then |
3d7d555c | 68 | if is_yes "$DEFAULTHANDLING"; then |
5e6dfc29 JR |
69 | HANDLING=1 |
70 | fi | |
71 | if [ "$HANDLING" = "0" ]; then | |
72 | exec $OTHERSCRIPT $CONFIG $2 | |
73 | elif [ "$HANDLING" = "1" ]; then | |
74 | $OTHERSCRIPT $CONFIG $2 | |
75 | fi | |
7742e157 AF |
76 | fi |
77 | ||
78 | # is this device available? (this catches PCMCIA devices for us) | |
d3f070c8 | 79 | if ! (/sbin/ip link set multicast ${MULTICAST} dev ${DEVICE} > /dev/null 2>&1); then |
5e6dfc29 JR |
80 | nls "Delaying %s initialization" ${DEVICE} |
81 | exit 1 | |
7742e157 AF |
82 | fi |
83 | ||
fa8aca70 | 84 | if is_yes "$SLAVE" && [ -n "$MASTER" -a -x /sbin/ifenslave ]; then |
5e6dfc29 | 85 | RFLAG="" && is_yes "${RECIEVE-ONLY}" && RFLAG="-r" |
7742e157 | 86 | |
5e6dfc29 JR |
87 | ip link set ${DEVICE} down |
88 | nls "Enslaving %s to %s" "$DEVICE" "$MASTER" | |
89 | ifenslave $RFLAG "$MASTER" "$DEVICE" | |
7742e157 | 90 | |
5e6dfc29 | 91 | exit 0 |
7742e157 AF |
92 | fi |
93 | ||
026cd72c | 94 | if [ -n "$MACADDR" ]; then |
5e6dfc29 | 95 | ip link set ${DEVICE} address ${MACADDR} |
d29c401a | 96 | fi |
7742e157 | 97 | |
3d121e27 | 98 | ip link set ${DEVICE} multicast ${MULTICAST} ${ARP} down |
7742e157 | 99 | |
945790a2 | 100 | if [ -n "$MTU" ]; then |
5e6dfc29 | 101 | ip link set ${DEVICE} mtu ${MTU} |
945790a2 JR |
102 | fi |
103 | ||
fa8aca70 | 104 | if is_yes "${IPV6_NETWORKING}" && is_yes "${IPV6_DISABLE_AUTOCONF}"; then |
5e6dfc29 | 105 | run_cmd "Disabling IPv6 autoconfiguration" sysctl -w net.ipv6.conf.${DEVICE}.autoconf=0 |
fa8aca70 | 106 | fi |
a6c22d3d AM |
107 | |
108 | if is_wireless_device "${DEVICE}"; then | |
1c481055 | 109 | is_yes "${WLAN_UPEARLY}" && ip link set ${DEVICE} up |
5e6dfc29 JR |
110 | wireless_param ${DEVICE} |
111 | if is_yes "${WLAN_WPA}"; then | |
112 | /usr/sbin/wpa_supplicant -B -w -D ${WLAN_WPA_DRIVER} -c ${WLAN_WPA_CONFIG} -i ${DEVICE} ${WLAN_WPA_OPTIONS} -P "/var/run/wpa_supplicant-${DEVICE}.pid" | |
113 | fi | |
a6c22d3d | 114 | fi |
5e6dfc29 | 115 | |
fa8aca70 | 116 | if [ "$HANDLING" = "2" ]; then |
5e6dfc29 | 117 | exit 0 |
fa8aca70 | 118 | fi |
de1fc6ce | 119 | |
960d6d6e | 120 | if [ -n "$BOOTPROTO" -a "$BOOTPROTO" != "none" -a "$BOOTPROTO" != "static" ]; then |
5e6dfc29 JR |
121 | if is_yes "$IPV4_NETWORKING"; then |
122 | if [ "$BOOTPROTO" = "bootp" -o "$BOOTPROTO" = "pump" ]; then | |
123 | DHCP_CLIENT=/sbin/pump | |
124 | fi | |
125 | ||
126 | if [ -z "$DHCP_CLIENT" ]; then | |
127 | if [ -x /sbin/dhcpcd ]; then | |
128 | DHCP_CLIENT=/sbin/dhcpcd | |
129 | elif [ -x /sbin/dhclient ]; then | |
130 | DHCP_CLIENT=/sbin/dhclient | |
131 | elif [ -x /sbin/dhcpxd ]; then | |
132 | DHCP_CLIENT=/sbin/dhcpxd | |
133 | elif [ -x /sbin/pump ]; then | |
134 | DHCP_CLIENT=/sbin/pump | |
135 | else | |
136 | nls "Can't find a dhcp client." | |
137 | exit 1 | |
138 | fi | |
139 | fi | |
140 | ||
141 | DHCP_ARGS= | |
142 | if [ -n "$DHCP_CLIENT" ]; then | |
427abd56 ER |
143 | if [ -z "$DHCP_HOSTNAME" ]; then |
144 | DHCP_HOSTNAME="$HOSTNAME" | |
145 | fi | |
3d7d555c | 146 | case ${DHCP_CLIENT##*/} in |
5e6dfc29 JR |
147 | pump) |
148 | [ -n "$DHCP_HOSTNAME" ] && DHCP_ARGS="-h $DHCP_HOSTNAME" | |
149 | DHCP_ARGS="$DHCP_ARGS -i $DEVICE" | |
150 | ;; | |
151 | dhcpcd) | |
152 | [ -n "$DHCP_HOSTNAME" ] && DHCP_ARGS="-h $DHCP_HOSTNAME" | |
153 | DHCP_ARGS="$DHCP_ARGS $DEVICE" | |
154 | ;; | |
155 | dhcpxd) | |
156 | [ -n "$DHCP_HOSTNAME" ] && DHCP_ARGS="-H $DHCP_HOSTNAME" | |
157 | DHCP_ARGS="$DHCP_ARGS $DEVICE" | |
158 | ;; | |
159 | dhclient) | |
160 | # Can't specify a host with dhclient ? | |
161 | DHCP_ARGS="$DEVICE" | |
162 | ;; | |
163 | esac | |
164 | fi | |
165 | DHCP_ARGS="$DHCP_OPTIONS $DHCP_ARGS" | |
166 | ||
167 | if check_link_down ${DEVICE}; then | |
b513cdf1 | 168 | run_cmd "$(nls 'Determining IP information for %s (%s)' "$DEVICE" "${DHCP_CLIENT##*/}")" /bin/false |
1b85f830 | 169 | nls '%s: Check cable/radio on-off switch?' "$DEVICE" |
5e6dfc29 JR |
170 | exit 1 |
171 | fi | |
172 | ||
3d7d555c | 173 | if ! run_cmd "$(nls 'Determining IP information for %s (%s)' "$DEVICE" "${DHCP_CLIENT##*/}")" $DHCP_CLIENT $DHCP_ARGS; then |
5e6dfc29 JR |
174 | exit 1 |
175 | fi | |
176 | ||
177 | # give time for determining IP information | |
178 | check_device_down && sleep 1 && check_device_down && sleep 3 | |
179 | check_device_down && ip link set ${DEVICE} up | |
fa8aca70 | 180 | fi |
fa8aca70 | 181 | else |
5e6dfc29 | 182 | # IPv4 in use ? |
3d7d555c | 183 | if is_yes "$IPV4_NETWORKING" && [ -n "${IP4ADDR}" ]; then |
5e6dfc29 JR |
184 | # If broadcast is missing then autocalculate it |
185 | if ! (echo $IP4ADDROPT | egrep -q "brd|broadcast"); then | |
186 | IP4ADDROPT="brd + ${IP4ADDROPT}" | |
187 | fi | |
188 | ||
189 | if [ -n "$REMIP" ]; then | |
190 | ip addr add ${IP4ADDR} peer ${REMIP} dev ${DEVICE} ${IP4ADDROPT} | |
191 | else | |
192 | ip addr add ${IP4ADDR} dev ${DEVICE} ${IP4ADDROPT} | |
193 | fi | |
1c4ce04c | 194 | fi |
fa8aca70 | 195 | |
5e6dfc29 JR |
196 | # Set device up |
197 | ip link set ${DEVICE} up | |
de1fc6ce | 198 | |
5e6dfc29 | 199 | # IPv6 in use ? |
3d7d555c | 200 | if is_yes "$IPV6_NETWORKING" && [ -n "${IP6ADDR}" ]; then |
5e6dfc29 JR |
201 | ip addr add ${IP6ADDR} dev ${DEVICE} ${IP6ADDROPT} |
202 | fi | |
1c4ce04c | 203 | |
5e6dfc29 JR |
204 | # IPv4/6 gateways and default routes |
205 | setup_ip_gw_ro | |
fa8aca70 | 206 | fi |
de1fc6ce | 207 | |
6a2c03da | 208 | # device have to have ip address set before |
854dc659 | 209 | if is_yes "$PROXYARP"; then |
5e6dfc29 | 210 | run_cmd "$(nls 'Enabling proxy ARP on %s' "${DEVICE}")" sysctl -w net.ipv4.conf.${DEVICE}.proxy_arp=1 |
6a2c03da | 211 | fi |
1c4ce04c | 212 | |
fa8aca70 | 213 | if [ "$HANDLING" = "3" ]; then |
5e6dfc29 | 214 | exit 0 |
7742e157 | 215 | fi |
7742e157 | 216 | |
dd4a755f | 217 | if is_yes "$IPX"; then |
5e6dfc29 | 218 | /etc/sysconfig/network-scripts/ifup-ipx $DEVICE |
12de71be | 219 | fi |
7742e157 | 220 | |
fa8aca70 | 221 | if [ "$HANDLING" = "4" ]; then |
5e6dfc29 | 222 | exit 0 |
fa8aca70 JR |
223 | fi |
224 | ||
7742e157 | 225 | exec /etc/sysconfig/network-scripts/ifup-post $CONFIG |
fa8aca70 JR |
226 | |
227 | # This must be last line ! | |
5e6dfc29 | 228 | # vi:syntax=sh |