]> git.pld-linux.org Git - projects/rc-scripts.git/blob - sysconfig/network-scripts/ifup
- use $() for command substitution
[projects/rc-scripts.git] / sysconfig / network-scripts / ifup
1 #!/bin/sh
2 #
3 #       $Id$
4 #
5 PATH=/sbin:/usr/sbin:/bin:/usr/bin
6
7 . /etc/sysconfig/network
8 . /etc/rc.d/init.d/functions
9 . /etc/sysconfig/network-scripts/functions.network
10
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
22 need_hostname
23
24 # device name must be ifcfg-somename
25 DEV=$1
26
27 [ -z "$DEV" ] && {
28         nls "Usage: %s <device name>" "ifup" >&2
29         exit 1
30 }
31
32 if [ $(id -u) != 0 ]; then
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
38 fi
39
40 if [ -f "/etc/sysconfig/interfaces/ifcfg-$DEV" ]; then
41         CONFIG="/etc/sysconfig/interfaces/ifcfg-$DEV"
42 else
43         CONFIG="$DEV"
44 fi
45
46 source_config
47
48 if [ "foo$2" = "fooboot" ] && is_no "${ONBOOT}"; then
49         exit
50 fi
51
52 if [ "foo$2" = "foohotplug" ] && ! is_yes "${HOTPLUG}"; then
53         exit
54 fi
55
56 if [ "foo$2" = "foopcmcia-hotplug" ] && ! is_yes "${PCMCIA_HOTPLUG}"; then
57         exit
58 fi
59
60 IPSETUP=no
61
62 # set all major variables
63 setup_ip_param
64
65 OTHERSCRIPT="/etc/sysconfig/network-scripts/ifup-${DEVICETYPE}"
66
67 if [ -x "$OTHERSCRIPT" ]; then
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
76 fi
77
78 # is this device available? (this catches PCMCIA devices for us)
79 if ! /sbin/ip link set multicast ${MULTICAST} dev ${DEVICE} > /dev/null 2>&1; then
80         nls "Delaying %s initialization" ${DEVICE}
81         exit 1
82 fi
83
84 if is_yes "$SLAVE" && [ -n "$MASTER" -a -x /sbin/ifenslave ]; then
85         RFLAG="" && is_yes "${RECIEVE-ONLY}" && RFLAG="-r"
86
87         ip link set ${DEVICE} down
88         nls "Enslaving %s to %s" "$DEVICE" "$MASTER"
89         ifenslave $RFLAG "$MASTER" "$DEVICE"
90
91         exit 0
92 fi
93
94 if [ -n "$MACADDR" ]; then
95         ip link set ${DEVICE} address ${MACADDR}
96 fi
97
98 ip link set ${DEVICE} multicast ${MULTICAST} ${ARP} down
99
100 if [ -n "$MTU" ]; then
101         ip link set ${DEVICE} mtu ${MTU}
102 fi
103
104 if is_yes "${IPV6_NETWORKING}" && is_yes "${IPV6_DISABLE_AUTOCONF}"; then
105         run_cmd "Disabling IPv6 autoconfiguration" sysctl -w net.ipv6.conf.${DEVICE}.autoconf=0
106 fi
107
108 if is_wireless_device "${DEVICE}"; then
109         is_yes "${WLAN_UPEARLY}" && ip link set ${DEVICE} up
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
114 fi
115
116 if [ "$HANDLING" = "2" ]; then
117         exit 0
118 fi
119
120 if [ -n "$BOOTPROTO" -a "$BOOTPROTO" != "none" -a "$BOOTPROTO" != "static" ]; then
121         if is_yes "$IPV4_NETWORKING"; then
122                 set_dhcpclient
123
124                 DHCP_ARGS=
125                 if [ -n "$DHCP_CLIENT" ]; then
126                         if [ -z "$DHCP_HOSTNAME" ]; then
127                                 DHCP_HOSTNAME="$HOSTNAME"
128                         fi
129                         case ${DHCP_CLIENT##*/} in
130                           pump)
131                                 [ -n "$DHCP_HOSTNAME" ] && DHCP_ARGS="-h $DHCP_HOSTNAME"
132                                 DHCP_ARGS="$DHCP_ARGS -i $DEVICE"
133                                 ;;
134                           dhcpcd)
135                                 [ -n "$DHCP_HOSTNAME" ] && DHCP_ARGS="-h $DHCP_HOSTNAME"
136                                 DHCP_ARGS="$DHCP_ARGS $DEVICE"
137                                 ;;
138                           dhcpxd)
139                                 [ -n "$DHCP_HOSTNAME" ] && DHCP_ARGS="-H $DHCP_HOSTNAME"
140                                 DHCP_ARGS="$DHCP_ARGS $DEVICE"
141                                 ;;
142                           dhclient)
143                                 # Can't specify a host with dhclient ?
144                                 DHCP_ARGS="$DEVICE"
145                                 ;;
146                         esac
147                 fi
148                 DHCP_ARGS="$DHCP_OPTIONS $DHCP_ARGS"
149
150                 if check_link_down ${DEVICE}; then
151                         run_cmd "$(nls 'Determining IP information for %s (%s)' "$DEVICE" "${DHCP_CLIENT##*/}")" /bin/false
152                         nls '%s: Check cable/radio on-off switch?' "$DEVICE"
153                         exit 1
154                 fi
155
156                 if ! run_cmd "$(nls 'Determining IP information for %s (%s)' "$DEVICE" "${DHCP_CLIENT##*/}")" $DHCP_CLIENT $DHCP_ARGS; then
157                         exit 1
158                 fi
159
160                 # give time for determining IP information
161                 check_device_down && sleep 1 && check_device_down && sleep 3
162                 check_device_down && ip link set ${DEVICE} up
163         fi
164 else
165         # IPv4 in use ?
166         if is_yes "$IPV4_NETWORKING" && [ -n "${IP4ADDR}" ]; then
167                 # If broadcast is missing then autocalculate it
168                 if ! (echo $IP4ADDROPT | egrep -q "brd|broadcast"); then
169                         IP4ADDROPT="brd + ${IP4ADDROPT}"
170                 fi
171
172                 if [ -n "$REMIP" ]; then
173                         ip addr add ${IP4ADDR} peer ${REMIP} dev ${DEVICE} ${IP4ADDROPT}
174                 else
175                         ip addr add ${IP4ADDR} dev ${DEVICE} ${IP4ADDROPT}
176                 fi
177         fi
178
179         # Set device up
180         ip link set ${DEVICE} up
181
182         # IPv6 in use ?
183         if is_yes "$IPV6_NETWORKING" && [ -n "${IP6ADDR}" ]; then
184                 ip addr add ${IP6ADDR} dev ${DEVICE} ${IP6ADDROPT}
185         fi
186
187         # IPv4/6 gateways and default routes
188         setup_ip_gw_ro
189 fi
190
191 # device have to have ip address set before
192 if is_yes "$PROXYARP"; then
193         run_cmd "$(nls 'Enabling proxy ARP on %s' "${DEVICE}")" sysctl -w net.ipv4.conf.${DEVICE}.proxy_arp=1
194 fi
195
196 if [ "$HANDLING" = "3" ]; then
197         exit 0
198 fi
199
200 if is_yes "$IPX"; then
201         /etc/sysconfig/network-scripts/ifup-ipx $DEVICE
202 fi
203
204 if [ "$HANDLING" = "4" ]; then
205         exit 0
206 fi
207
208 exec /etc/sysconfig/network-scripts/ifup-post $CONFIG
209
210 # This must be last line !
211 # vi:syntax=sh
This page took 0.705787 seconds and 3 git commands to generate.