]> git.pld-linux.org Git - projects/rc-scripts.git/blame - sysconfig/network-scripts/ifup
- first up bridge, next tunnels (tunnels can be on bridges)
[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
74a7f2e4 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" ] && {
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 40if [ -f "/etc/sysconfig/interfaces/ifcfg-$DEV" ] ; then
74a7f2e4 41 CONFIG="/etc/sysconfig/interfaces/ifcfg-$DEV"
03f9cfee 42else
74a7f2e4 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
d06391de 52if [ "foo$2" = "foohotplug" ] && ! is_yes "${HOTPLUG}"; then
5c096954
AF
53 exit
54fi
55
7742e157
AF
56IPSETUP=no
57
fa8aca70
JR
58# set all major variables
59setup_ip_param
032ef40b 60
7742e157
AF
61OTHERSCRIPT="/etc/sysconfig/network-scripts/ifup-${DEVICETYPE}"
62
f70b001b 63if [ -x "$OTHERSCRIPT" ]; then
fa8aca70
JR
64 if is_yes "$DEFAULTHANDLING" ; then HANDLING=1 ; fi
65 if [ "$HANDLING" = "0" ]; then
66 exec $OTHERSCRIPT $CONFIG $2
67 elif [ "$HANDLING" = "1" ]; then
035f0806 68 $OTHERSCRIPT $CONFIG $2
035f0806 69 fi
7742e157
AF
70fi
71
72# is this device available? (this catches PCMCIA devices for us)
d3f070c8 73if ! (/sbin/ip link set multicast ${MULTICAST} dev ${DEVICE} > /dev/null 2>&1); then
fa8aca70
JR
74 nls "Delaying %s initialization" ${DEVICE}
75 exit 1
7742e157
AF
76fi
77
fa8aca70
JR
78if is_yes "$SLAVE" && [ -n "$MASTER" -a -x /sbin/ifenslave ]; then
79 RFLAG="" && is_yes "${RECIEVE-ONLY}" && RFLAG="-r"
7742e157 80
4ac87c24 81 ip link set ${DEVICE} down
fa8aca70 82 nls "Enslaving %s to %s" "$DEVICE" "$MASTER"
d29c401a 83 ifenslave $RFLAG "$MASTER" "$DEVICE"
7742e157
AF
84
85 exit 0
86fi
87
026cd72c 88if [ -n "$MACADDR" ]; then
6a2c03da 89 ip link set ${DEVICE} address ${MACADDR}
d29c401a 90fi
7742e157 91
3d121e27 92ip link set ${DEVICE} multicast ${MULTICAST} ${ARP} down
7742e157 93
945790a2
JR
94if [ -n "$MTU" ]; then
95 ip link set ${DEVICE} mtu ${MTU}
96fi
97
fa8aca70 98if is_yes "${IPV6_NETWORKING}" && is_yes "${IPV6_DISABLE_AUTOCONF}"; then
6a2c03da 99 run_cmd "Disabling IPv6 autoconfiguration" sysctl -w net.ipv6.conf.${DEVICE}.autoconf=0
fa8aca70 100fi
a6c22d3d
AM
101
102if is_wireless_device "${DEVICE}"; then
2ae29436 103 wireless_param ${DEVICE}
a6c22d3d 104fi
fa8aca70
JR
105
106if [ "$HANDLING" = "2" ]; then
74a7f2e4 107 exit 0
fa8aca70 108fi
de1fc6ce 109
960d6d6e 110if [ -n "$BOOTPROTO" -a "$BOOTPROTO" != "none" -a "$BOOTPROTO" != "static" ]; then
7742e157 111
fa8aca70
JR
112 if is_yes "$IPV4_NETWORKING"; then
113 if [ "$BOOTPROTO" = "bootp" -o "$BOOTPROTO" = "pump" ]; then
74a7f2e4 114 DHCP_CLIENT=/sbin/pump
fa8aca70
JR
115 fi
116
117 if [ -z "$DHCP_CLIENT" ]; then
74a7f2e4 118 if [ -x /sbin/dhcpcd ]; then
119 DHCP_CLIENT=/sbin/dhcpcd
120 elif [ -x /sbin/dhclient ]; then
121 DHCP_CLIENT=/sbin/dhclient
122 elif [ -x /sbin/dhcpxd ]; then
123 DHCP_CLIENT=/sbin/dhcpxd
124 elif [ -x /sbin/pump ]; then
125 DHCP_CLIENT=/sbin/pump
126 else
127 nls "Can't find a dhcp client."
128 exit 1
129 fi
fa8aca70 130 fi
74a7f2e4 131
fa8aca70
JR
132 DHCP_ARGS=
133 if [ -n "$DHCP_CLIENT" ]; then
74a7f2e4 134 case $(basename $DHCP_CLIENT) in
135 pump)
136 [ -n "$DHCP_HOSTNAME" ] && DHCP_ARGS="-h $DHCP_HOSTNAME"
137 DHCP_ARGS="$DHCP_ARGS -i $DEVICE"
138 ;;
139 dhcpcd)
140 [ -n "$DHCP_HOSTNAME" ] && DHCP_ARGS="-h $DHCP_HOSTNAME"
141 DHCP_ARGS="$DHCP_ARGS $DEVICE"
142 ;;
143 dhcpxd)
144 [ -n "$DHCP_HOSTNAME" ] && DHCP_ARGS="-H $DHCP_HOSTNAME"
145 DHCP_ARGS="$DHCP_ARGS $DEVICE"
146 ;;
147 dhclient)
148 # Can't specify a host with dhclient ?
149 DHCP_ARGS="$DEVICE"
150 ;;
151 esac
fa8aca70
JR
152 fi
153 DHCP_ARGS="$DHCP_OPTIONS $DHCP_ARGS"
0336ea13
AM
154
155 if check_link_down ${DEVICE}; then
74a7f2e4 156 run_cmd "$(nls 'Determining IP information for %s (%s)' "$DEVICE" "$(basename $DHCP_CLIENT)")" /bin/false
157 nls '%s: Check cable?' "$DEVICE"
158 exit 1
0336ea13 159 fi
74a7f2e4 160
58b1ce6c 161 if ! run_cmd "$(nls 'Determining IP information for %s (%s)' "$DEVICE" "$(basename $DHCP_CLIENT)")" $DHCP_CLIENT $DHCP_ARGS ; then
74a7f2e4 162 exit 1
7742e157 163 fi
1c4ce04c 164
fa8aca70
JR
165 # give time for determining IP information
166 check_device_down && sleep 1 && check_device_down && sleep 3
167 check_device_down && ip link set ${DEVICE} up
168 fi
1c4ce04c 169
fa8aca70 170else
de1fc6ce 171
fa8aca70
JR
172 # IPv4 in use ?
173 if is_yes "$IPV4_NETWORKING" && [ -n "${IP4ADDR}" ] ; then
174 # If broadcast is missing then autocalculate it
175 if ! (echo $IP4ADDROPT | egrep -q "brd|broadcast"); then
176 IP4ADDROPT="brd + ${IP4ADDROPT}"
1c4ce04c 177 fi
fa8aca70
JR
178
179 if [ -n "$REMIP" ]; then
180 ip addr add ${IP4ADDR} peer ${REMIP} dev ${DEVICE} ${IP4ADDROPT}
181 else
182 ip addr add ${IP4ADDR} dev ${DEVICE} ${IP4ADDROPT}
1c4ce04c 183 fi
de1fc6ce
JR
184 fi
185
fa8aca70
JR
186 # Set device up
187 ip link set ${DEVICE} up
188
189 # IPv6 in use ?
190 if is_yes "$IPV6_NETWORKING" && [ -n "${IP6ADDR}" ] ; then
191 ip addr add ${IP6ADDR} dev ${DEVICE} ${IP6ADDROPT}
1c4ce04c 192 fi
193
fa8aca70
JR
194 # IPv4/6 gateways and default routes
195 setup_ip_gw_ro
196fi
de1fc6ce 197
6a2c03da 198# device have to have ip address set before
854dc659 199if is_yes "$PROXYARP"; then
58b1ce6c 200 run_cmd "$(nls 'Enabling proxy ARP on %s' "${DEVICE}")" sysctl -w net.ipv4.conf.${DEVICE}.proxy_arp=1
6a2c03da 201fi
1c4ce04c 202
fa8aca70 203if [ "$HANDLING" = "3" ]; then
74a7f2e4 204 exit 0
7742e157 205fi
7742e157 206
dd4a755f 207if is_yes "$IPX"; then
74a7f2e4 208 /etc/sysconfig/network-scripts/ifup-ipx $DEVICE
12de71be 209fi
7742e157 210
fa8aca70 211if [ "$HANDLING" = "4" ]; then
74a7f2e4 212 exit 0
fa8aca70
JR
213fi
214
7742e157 215exec /etc/sysconfig/network-scripts/ifup-post $CONFIG
fa8aca70
JR
216
217# This must be last line !
218# vi:syntax=sh:tw=78:ts=8:sw=4
This page took 1.380458 seconds and 4 git commands to generate.