]> git.pld-linux.org Git - projects/rc-scripts.git/blame - sysconfig/network-scripts/ifup
- killproc() s%!&*ks
[projects/rc-scripts.git] / sysconfig / network-scripts / ifup
CommitLineData
6955eb97 1#!/bin/sh
b0443108 2#
ec8b15cb 3# $Id$
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
5e6dfc29
JR
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
fa8aca70
JR
20fi
21
7742e157
AF
22need_hostname
23
fa8aca70 24# device name must be ifcfg-somename
111f7a0d 25DEV=$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 32if [ `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
38fi
39
03f9cfee 40if [ -f "/etc/sysconfig/interfaces/ifcfg-$DEV" ] ; then
5e6dfc29 41 CONFIG="/etc/sysconfig/interfaces/ifcfg-$DEV"
03f9cfee 42else
5e6dfc29 43 CONFIG="$DEV"
111f7a0d
AF
44fi
45
7742e157
AF
46source_config
47
dd4a755f 48if [ "foo$2" = "fooboot" ] && is_no "${ONBOOT}"; then
5e6dfc29 49 exit
7742e157
AF
50fi
51
d06391de 52if [ "foo$2" = "foohotplug" ] && ! is_yes "${HOTPLUG}"; then
5e6dfc29 53 exit
9072bd26
AM
54fi
55
56if [ "foo$2" = "foopcmcia-hotplug" ] && ! is_yes "${PCMCIA_HOTPLUG}"; then
5e6dfc29 57 exit
5c096954
AF
58fi
59
7742e157
AF
60IPSETUP=no
61
fa8aca70
JR
62# set all major variables
63setup_ip_param
032ef40b 64
7742e157
AF
65OTHERSCRIPT="/etc/sysconfig/network-scripts/ifup-${DEVICETYPE}"
66
f70b001b 67if [ -x "$OTHERSCRIPT" ]; then
5e6dfc29
JR
68 if is_yes "$DEFAULTHANDLING" ; then
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
76fi
77
78# is this device available? (this catches PCMCIA devices for us)
d3f070c8 79if ! (/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
82fi
83
fa8aca70 84if 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
92fi
93
026cd72c 94if [ -n "$MACADDR" ]; then
5e6dfc29 95 ip link set ${DEVICE} address ${MACADDR}
d29c401a 96fi
7742e157 97
3d121e27 98ip link set ${DEVICE} multicast ${MULTICAST} ${ARP} down
7742e157 99
945790a2 100if [ -n "$MTU" ]; then
5e6dfc29 101 ip link set ${DEVICE} mtu ${MTU}
945790a2
JR
102fi
103
fa8aca70 104if 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 106fi
a6c22d3d
AM
107
108if 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 114fi
5e6dfc29 115
fa8aca70 116if [ "$HANDLING" = "2" ]; then
5e6dfc29 117 exit 0
fa8aca70 118fi
de1fc6ce 119
960d6d6e 120if [ -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
143 case $(basename $DHCP_CLIENT) in
144 pump)
145 [ -n "$DHCP_HOSTNAME" ] && DHCP_ARGS="-h $DHCP_HOSTNAME"
146 DHCP_ARGS="$DHCP_ARGS -i $DEVICE"
147 ;;
148 dhcpcd)
149 [ -n "$DHCP_HOSTNAME" ] && DHCP_ARGS="-h $DHCP_HOSTNAME"
150 DHCP_ARGS="$DHCP_ARGS $DEVICE"
151 ;;
152 dhcpxd)
153 [ -n "$DHCP_HOSTNAME" ] && DHCP_ARGS="-H $DHCP_HOSTNAME"
154 DHCP_ARGS="$DHCP_ARGS $DEVICE"
155 ;;
156 dhclient)
157 # Can't specify a host with dhclient ?
158 DHCP_ARGS="$DEVICE"
159 ;;
160 esac
161 fi
162 DHCP_ARGS="$DHCP_OPTIONS $DHCP_ARGS"
163
164 if check_link_down ${DEVICE}; then
165 run_cmd "$(nls 'Determining IP information for %s (%s)' "$DEVICE" "$(basename $DHCP_CLIENT)")" /bin/false
166 nls '%s: Check cable?' "$DEVICE"
167 exit 1
168 fi
169
170 if ! run_cmd "$(nls 'Determining IP information for %s (%s)' "$DEVICE" "$(basename $DHCP_CLIENT)")" $DHCP_CLIENT $DHCP_ARGS ; then
171 exit 1
172 fi
173
174 # give time for determining IP information
175 check_device_down && sleep 1 && check_device_down && sleep 3
176 check_device_down && ip link set ${DEVICE} up
fa8aca70 177 fi
fa8aca70 178else
5e6dfc29
JR
179 # IPv4 in use ?
180 if is_yes "$IPV4_NETWORKING" && [ -n "${IP4ADDR}" ] ; then
181 # If broadcast is missing then autocalculate it
182 if ! (echo $IP4ADDROPT | egrep -q "brd|broadcast"); then
183 IP4ADDROPT="brd + ${IP4ADDROPT}"
184 fi
185
186 if [ -n "$REMIP" ]; then
187 ip addr add ${IP4ADDR} peer ${REMIP} dev ${DEVICE} ${IP4ADDROPT}
188 else
189 ip addr add ${IP4ADDR} dev ${DEVICE} ${IP4ADDROPT}
190 fi
1c4ce04c 191 fi
fa8aca70 192
5e6dfc29
JR
193 # Set device up
194 ip link set ${DEVICE} up
de1fc6ce 195
5e6dfc29
JR
196 # IPv6 in use ?
197 if is_yes "$IPV6_NETWORKING" && [ -n "${IP6ADDR}" ] ; then
198 ip addr add ${IP6ADDR} dev ${DEVICE} ${IP6ADDROPT}
199 fi
1c4ce04c 200
5e6dfc29
JR
201 # IPv4/6 gateways and default routes
202 setup_ip_gw_ro
fa8aca70 203fi
de1fc6ce 204
6a2c03da 205# device have to have ip address set before
854dc659 206if is_yes "$PROXYARP"; then
5e6dfc29 207 run_cmd "$(nls 'Enabling proxy ARP on %s' "${DEVICE}")" sysctl -w net.ipv4.conf.${DEVICE}.proxy_arp=1
6a2c03da 208fi
1c4ce04c 209
fa8aca70 210if [ "$HANDLING" = "3" ]; then
5e6dfc29 211 exit 0
7742e157 212fi
7742e157 213
dd4a755f 214if is_yes "$IPX"; then
5e6dfc29 215 /etc/sysconfig/network-scripts/ifup-ipx $DEVICE
12de71be 216fi
7742e157 217
fa8aca70 218if [ "$HANDLING" = "4" ]; then
5e6dfc29 219 exit 0
fa8aca70
JR
220fi
221
7742e157 222exec /etc/sysconfig/network-scripts/ifup-post $CONFIG
fa8aca70
JR
223
224# This must be last line !
5e6dfc29 225# vi:syntax=sh
This page took 0.115004 seconds and 4 git commands to generate.