]> git.pld-linux.org Git - projects/rc-scripts.git/blame - sysconfig/network-scripts/ifup
- added automatically vlan shutdown before shutdowing interface (eth)
[projects/rc-scripts.git] / sysconfig / network-scripts / ifup
CommitLineData
6955eb97 1#!/bin/sh
b0443108 2#
f2e0e079 3# $Id: ifup,v 1.64 2001/07/05 22:21:42 marcus Exp $
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
8b3e2b71 9. /etc/sysconfig/network-scripts/.functions
7742e157 10
fa8aca70
JR
11# Will be removed in the future
12if 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
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
JR
40if [ -f "/etc/sysconfig/interfaces/ifcfg-$DEV" ] ; then
41 CONFIG="/etc/sysconfig/interfaces/ifcfg-$DEV"
42else
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
52IPSETUP=no
53
fa8aca70
JR
54# set all major variables
55setup_ip_param
032ef40b 56
7742e157
AF
57OTHERSCRIPT="/etc/sysconfig/network-scripts/ifup-${DEVICETYPE}"
58
f70b001b 59if [ -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
66fi
67
f2e0e079 68# 802.1Q VLANs
69vlan_setup
70if is_yes $ETH_VLANS && echo "$DEVICE" | grep -q '\.' ; then
71 VLANDEVICE=$(echo $DEVICE | awk ' { gsub(/\..*$/,NUL); print $0 } ')
72 VLANNUMBER=$(echo $DEVICE | awk " { gsub(/$VLANDEVICE\./,NUL); print \$0 } ")
73 /sbin/ip link set $VLANDEVICE up
74 /sbin/vconfig add $VLANDEVICE $VLANNUMBER 2>&1 > /dev/null
75 /sbin/vconfig set_flag $DEVICE 1 2>&1 > /dev/null
76fi
77
7742e157 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
fa8aca70
JR
80 nls "Delaying %s initialization" ${DEVICE}
81 exit 1
7742e157
AF
82fi
83
fa8aca70
JR
84if is_yes "$SLAVE" && [ -n "$MASTER" -a -x /sbin/ifenslave ]; then
85 RFLAG="" && is_yes "${RECIEVE-ONLY}" && RFLAG="-r"
7742e157 86
4ac87c24 87 ip link set ${DEVICE} down
fa8aca70 88 nls "Enslaving %s to %s" "$DEVICE" "$MASTER"
d29c401a 89 ifenslave $RFLAG "$MASTER" "$DEVICE"
7742e157
AF
90
91 exit 0
92fi
93
026cd72c
AM
94if [ -n "$MACADDR" ]; then
95 ip link set ${DEVICE} address ${MACADDR}
d29c401a 96fi
7742e157 97
fa8aca70 98ip link set ${DEVICE} multicast ${MULTICAST} arp ${ARP} down
7742e157 99
fa8aca70
JR
100if is_yes "${IPV6_NETWORKING}" && is_yes "${IPV6_DISABLE_AUTOCONF}"; then
101 run_cmd "Disabling IPv6 autoconfiguration" sysctl -w net.ipv6.conf.${DEVICE}=0
102fi
103
104if [ "$HANDLING" = "2" ]; then
105 exit 0
106fi
de1fc6ce 107
fa8aca70 108if [ -n "$BOOTPROTO" -a "$BOOTPROTO" != "none" ]; then
7742e157 109
fa8aca70
JR
110 if is_yes "$IPV4_NETWORKING"; then
111 if [ "$BOOTPROTO" = "bootp" -o "$BOOTPROTO" = "pump" ]; then
112 DHCP_CLIENT=/sbin/pump
113 fi
114
115 if [ -z "$DHCP_CLIENT" ]; then
116 if [ -x /sbin/dhcpcd ]; then
117 DHCP_CLIENT=/sbin/dhcpcd
118 elif [ -x /sbin/dhclient ]; then
119 DHCP_CLIENT=/sbin/dhclient
120 elif [ -x /sbin/dhcpxd ]; then
121 DHCP_CLIENT=/sbin/dhcpxd
122 elif [ -x /sbin/pump ]; then
123 DHCP_CLIENT=/sbin/pump
124 else
125 nls "Can't find a dhcp client."
126 exit 1
127 fi
128 fi
129
130 DHCP_ARGS=
131 if [ -n "$DHCP_CLIENT" ]; then
132 case $(basename $DHCP_CLIENT) in
133 pump)
134 [ -n "$DHCP_HOSTNAME" ] && DHCP_ARGS="-h $DHCP_HOSTNAME"
135 DHCP_ARGS="$DHCP_ARGS -i $DEVICE"
136 ;;
137 dhcpcd)
138 [ -n "$DHCP_HOSTNAME" ] && DHCP_ARGS="-h $DHCP_HOSTNAME"
139 DHCP_ARGS="$DHCP_ARGS $DEVICE"
140 ;;
141 dhcpxd)
142 [ -n "$DHCP_HOSTNAME" ] && DHCP_ARGS="-H $DHCP_HOSTNAME"
143 DHCP_ARGS="$DHCP_ARGS $DEVICE"
144 ;;
145 dhclient)
146 # Can't specify a host with dhclient ?
147 DHCP_ARGS="$DEVICE"
148 ;;
149 esac
150 fi
151 DHCP_ARGS="$DHCP_OPTIONS $DHCP_ARGS"
152
153 if ! run_cmd "$(nls 'Determining IP information for') $DEVICE ($(basename $DHCP_CLIENT))" $DHCP_CLIENT $DHCP_ARGS ; then
154 exit 1
7742e157 155 fi
1c4ce04c 156
fa8aca70
JR
157 # give time for determining IP information
158 check_device_down && sleep 1 && check_device_down && sleep 3
159 check_device_down && ip link set ${DEVICE} up
160 fi
1c4ce04c 161
fa8aca70 162else
de1fc6ce 163
fa8aca70
JR
164 # IPv4 in use ?
165 if is_yes "$IPV4_NETWORKING" && [ -n "${IP4ADDR}" ] ; then
166 # If broadcast is missing then autocalculate it
167 if ! (echo $IP4ADDROPT | egrep -q "brd|broadcast"); then
168 IP4ADDROPT="brd + ${IP4ADDROPT}"
1c4ce04c 169 fi
fa8aca70
JR
170
171 if [ -n "$REMIP" ]; then
172 ip addr add ${IP4ADDR} peer ${REMIP} dev ${DEVICE} ${IP4ADDROPT}
173 else
174 ip addr add ${IP4ADDR} dev ${DEVICE} ${IP4ADDROPT}
1c4ce04c 175 fi
de1fc6ce
JR
176 fi
177
fa8aca70
JR
178 # Set device up
179 ip link set ${DEVICE} up
180
181 # IPv6 in use ?
182 if is_yes "$IPV6_NETWORKING" && [ -n "${IP6ADDR}" ] ; then
183 ip addr add ${IP6ADDR} dev ${DEVICE} ${IP6ADDROPT}
1c4ce04c 184 fi
185
fa8aca70
JR
186 # IPv4/6 gateways and default routes
187 setup_ip_gw_ro
188fi
de1fc6ce 189
1c4ce04c 190
fa8aca70
JR
191if [ "$HANDLING" = "3" ]; then
192 exit 0
7742e157 193fi
7742e157 194
dd4a755f 195if is_yes "$IPX"; then
12de71be 196 /etc/sysconfig/network-scripts/ifup-ipx $DEVICE
197fi
7742e157 198
fa8aca70
JR
199if [ "$HANDLING" = "4" ]; then
200 exit 0
201fi
202
7742e157 203exec /etc/sysconfig/network-scripts/ifup-post $CONFIG
fa8aca70
JR
204
205# This must be last line !
206# vi:syntax=sh:tw=78:ts=8:sw=4
This page took 0.124644 seconds and 4 git commands to generate.