]> git.pld-linux.org Git - projects/rc-scripts.git/blob - sysconfig/network-scripts/ifup
- merge from TOTALNEW branch (see NEWS for more info)
[projects/rc-scripts.git] / sysconfig / network-scripts / ifup
1 #!/bin/sh
2 #
3 #       $Id: ifup,v 1.56 2001/05/15 16:03:44 baggins Exp $
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
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 IPSETUP=no
53
54 # set all major variables
55 setup_ip_param
56
57 OTHERSCRIPT="/etc/sysconfig/network-scripts/ifup-${DEVICETYPE}"
58
59 if [ -x "$OTHERSCRIPT" ]; then
60     if [ "$HANDLING" = "0" ]; then
61         exec $OTHERSCRIPT $CONFIG $2
62     elif [ "$HANDLING" = "1" ]; then
63         $OTHERSCRIPT $CONFIG $2
64     fi
65 fi
66
67 # is this device available? (this catches PCMCIA devices for us)
68 if ! (/sbin/ip link set multicast ${MULTICAST} dev ${DEVICE} > /dev/null 2>&1); then
69     nls "Delaying %s initialization" ${DEVICE}
70     exit 1
71 fi
72
73 if is_yes "$SLAVE" && [ -n "$MASTER" -a -x /sbin/ifenslave ]; then
74     RFLAG="" && is_yes "${RECIEVE-ONLY}" && RFLAG="-r"
75
76     ip link set ${DEVICE} down
77     nls "Enslaving %s to %s" "$DEVICE" "$MASTER"
78     ifenslave $RFLAG "$MASTER" "$DEVICE"
79
80     exit 0
81 fi
82
83 if [ -n "$MACADDR" ]; then
84    ip link set ${DEVICE} address ${MACADDR}
85 fi
86
87 ip link set ${DEVICE} multicast ${MULTICAST} arp ${ARP} down
88
89 if is_yes "${IPV6_NETWORKING}" && is_yes "${IPV6_DISABLE_AUTOCONF}"; then
90         run_cmd "Disabling IPv6 autoconfiguration" sysctl -w net.ipv6.conf.${DEVICE}=0
91 fi
92         
93 if [ "$HANDLING" = "2" ]; then
94         exit 0
95 fi
96
97 if [ -n "$BOOTPROTO" -a "$BOOTPROTO" != "none" ]; then
98
99     if is_yes "$IPV4_NETWORKING"; then
100         if [ "$BOOTPROTO" = "bootp" -o "$BOOTPROTO" = "pump" ]; then
101                 DHCP_CLIENT=/sbin/pump
102         fi
103     
104         if [ -z "$DHCP_CLIENT" ]; then
105                 if [ -x /sbin/dhcpcd ]; then
106                         DHCP_CLIENT=/sbin/dhcpcd
107                 elif [ -x /sbin/dhclient ]; then
108                         DHCP_CLIENT=/sbin/dhclient
109                 elif [ -x /sbin/dhcpxd ]; then
110                         DHCP_CLIENT=/sbin/dhcpxd
111                 elif [ -x /sbin/pump ]; then
112                         DHCP_CLIENT=/sbin/pump
113                 else
114                         nls "Can't find a dhcp client."
115                         exit 1
116                 fi
117         fi
118         
119         DHCP_ARGS=
120         if [ -n "$DHCP_CLIENT" ]; then
121                 case $(basename $DHCP_CLIENT) in
122                         pump)
123                         [ -n "$DHCP_HOSTNAME" ] && DHCP_ARGS="-h $DHCP_HOSTNAME"
124                         DHCP_ARGS="$DHCP_ARGS -i $DEVICE"
125                         ;;
126                         dhcpcd)
127                         [ -n "$DHCP_HOSTNAME" ] && DHCP_ARGS="-h $DHCP_HOSTNAME"
128                         DHCP_ARGS="$DHCP_ARGS $DEVICE"
129                         ;;
130                         dhcpxd)
131                         [ -n "$DHCP_HOSTNAME" ] && DHCP_ARGS="-H $DHCP_HOSTNAME"
132                         DHCP_ARGS="$DHCP_ARGS $DEVICE"
133                         ;;
134                         dhclient)
135                         # Can't specify a host with dhclient ?
136                         DHCP_ARGS="$DEVICE"
137                         ;;
138                 esac
139         fi
140         DHCP_ARGS="$DHCP_OPTIONS $DHCP_ARGS"
141         
142         if ! run_cmd "$(nls 'Determining IP information for') $DEVICE ($(basename $DHCP_CLIENT))" $DHCP_CLIENT $DHCP_ARGS ; then
143                 exit 1
144         fi
145
146         # give time for determining IP information
147         check_device_down && sleep 1 && check_device_down && sleep 3
148         check_device_down && ip link set ${DEVICE} up
149     fi
150
151 else
152
153     # IPv4 in use ?
154     if is_yes "$IPV4_NETWORKING" ; then
155         # If broadcast is missing then autocalculate it
156         if ! (echo $IP4ADDROPT | egrep -q "brd|broadcast"); then
157                 IP4ADDROPT="brd + ${IP4ADDROPT}"
158         fi
159
160         if [ -n "$REMIP" ]; then
161                 ip addr add ${IP4ADDR} peer ${REMIP} dev ${DEVICE} ${IP4ADDROPT}
162         else
163                 ip addr add ${IP4ADDR} dev ${DEVICE} ${IP4ADDROPT}
164         fi
165     fi
166
167     # Set device up
168     ip link set ${DEVICE} up
169
170     # IPv6 in use ?
171     if is_yes "$IPV6_NETWORKING" ; then
172         ip addr add ${IP6ADDR} dev ${DEVICE} ${IP6ADDROPT}
173     fi
174
175     # IPv4/6 gateways and default routes
176     setup_ip_gw_ro
177 fi
178
179 if [ "$HANDLING" = "3" ]; then
180         exit 0
181 fi
182
183 if is_yes "$IPX"; then
184         /etc/sysconfig/network-scripts/ifup-ipx $DEVICE
185 fi
186
187 if [ "$HANDLING" = "4" ]; then
188         exit 0
189 fi
190
191 exec /etc/sysconfig/network-scripts/ifup-post $CONFIG
192
193 # This must be last line !
194 # vi:syntax=sh:tw=78:ts=8:sw=4
This page took 0.034483 seconds and 3 git commands to generate.