slitaz-boot-scripts rev 112

/etc/init.d/network.sh restart fix (thanks sygne@ombres.eu)
author Pascal Bellard <pascal.bellard@slitaz.org>
date Sun Jul 27 15:46:07 2008 +0000 (2008-07-27)
parents 444e44898f27
children d029ffebc94b
files etc/init.d/network.sh
line diff
     1.1 --- a/etc/init.d/network.sh	Thu Jul 24 09:07:50 2008 +0000
     1.2 +++ b/etc/init.d/network.sh	Sun Jul 27 15:46:07 2008 +0000
     1.3 @@ -3,50 +3,68 @@
     1.4  # Config file is: /etc/network.conf
     1.5  #
     1.6  . /etc/init.d/rc.functions
     1.7 -. /etc/network.conf
     1.8  
     1.9 -# Only configure hostname and loopback at boot time
    1.10 -if [ -z "$1" ]; then
    1.11 -
    1.12 -# Set hostname.
    1.13 -echo -n "Setting hostname... "
    1.14 -/bin/hostname -F /etc/hostname
    1.15 -status
    1.16 -
    1.17 -# Configure loopback interface.
    1.18 -echo -n "Configuring loopback... "
    1.19 -/sbin/ifconfig lo 127.0.0.1 up
    1.20 -/sbin/route add 127.0.0.1 lo
    1.21 -status
    1.22 -
    1.23 +if [ -z "$2" ]; then
    1.24 +	. /etc/network.conf 
    1.25 +else
    1.26 +	. $2 
    1.27  fi
    1.28  
    1.29 -# For wifi. Users just have to enable it throught yes and usually
    1.30 -# essid any will work and interface is autodetected.
    1.31 -if [ "$WIFI" = "yes" ] || grep -q "wifi" /proc/cmdline; then
    1.32 -	if [ -n "$NDISWRAPPER_DRIVERS" -a -x /usr/sbin/ndiswrapper ]; then
    1.33 -		for i in $NDISWRAPPER_DRIVERS; do
    1.34 -			ndiswrapper -i $i
    1.35 -		done
    1.36 -		echo -n "Loading ndiswrapper module..."
    1.37 -		modprobe ndiswrapper
    1.38 -		status
    1.39 -	fi
    1.40 -	if [ ! -d /sys/class/net/$WIFI_INTERFACE/wireless ]; then
    1.41 -		echo "$WIFI_INTERFACE is not a wifi interface, changing it."
    1.42 -		WIFI_INTERFACE=$(grep : /proc/net/dev | cut -d: -f1 | \
    1.43 -			while read dev; do iwconfig $dev 2>&1 | \
    1.44 -			grep -iq "essid" && { echo $dev ; break; }; \
    1.45 -                        done)
    1.46 -                [ -n "$WIFI_INTERFACE" ] && sed -i "s/^WIFI_INTERFACE=.*/WIFI_INTERFACE=\"$WIFI_INTERFACE\"/" /etc/network.conf
    1.47 -        fi
    1.48 -        [ -n "$WPA_DRIVER" ] || WPA_DRIVER="wext"
    1.49 -        if iwconfig $WIFI_INTERFACE 2>&1 | grep -iq "unassociated"; then
    1.50 -		IWCONFIG_ARGS=""
    1.51 -		[ -n "$WIFI_MODE" ] && IWCONFIG_ARGS="$IWCONFIG_ARGS mode $WIFI_MODE"
    1.52 -		[ -n "$WIFI_KEY" ] && case "$WIFI_KEY_TYPE" in
    1.53 -		wep|WEP) IWCONFIG_ARGS="$IWCONFIG_ARGS key $WIFI_KEY";;
    1.54 -		wpa|WPA) cat > /tmp/wpa.conf <<EOF
    1.55 +Boot() {
    1.56 +	# Set hostname.
    1.57 +	echo -n "Setting hostname... "
    1.58 +	/bin/hostname -F /etc/hostname
    1.59 +	status
    1.60 +
    1.61 +	# Configure loopback interface.
    1.62 +	echo -n "Configuring loopback... "
    1.63 +	/sbin/ifconfig lo 127.0.0.1 up
    1.64 +	/sbin/route add 127.0.0.1 lo
    1.65 +	status
    1.66 +}
    1.67 +
    1.68 +# Stopping everything
    1.69 +Stop() {
    1.70 +	echo "Stopping all interfaces"
    1.71 +	ifconfig $INTERFACE down
    1.72 +	ifconfig $WIFI_INTERFACE down
    1.73 +
    1.74 +	echo "Killing all daemons"
    1.75 +	killall udhcpc
    1.76 +	killall wpa_supplicant
    1.77 +
    1.78 +	echo "Shutting down wifi card"
    1.79 +	iwconfig $WIFI_INTERFACE txpower off
    1.80 +
    1.81 +}
    1.82 +
    1.83 +Start() {
    1.84 +	# For wifi. Users just have to enable it throught yes and usually
    1.85 +	# essid any will work and interface is autodetected.
    1.86 +	if [ "$WIFI" = "yes" ] || grep -q "wifi" /proc/cmdline; then
    1.87 +		if [ -n "$NDISWRAPPER_DRIVERS" -a -x /usr/sbin/ndiswrapper ]; then
    1.88 +			for i in $NDISWRAPPER_DRIVERS; do
    1.89 +				ndiswrapper -i $i
    1.90 +			done
    1.91 +			echo -n "Loading ndiswrapper module..."
    1.92 +			modprobe ndiswrapper
    1.93 +			status
    1.94 +		fi
    1.95 +		if [ ! -d /sys/class/net/$WIFI_INTERFACE/wireless ]; then
    1.96 +			echo "$WIFI_INTERFACE is not a wifi interface, changing it."
    1.97 +			WIFI_INTERFACE=$(grep : /proc/net/dev | cut -d: -f1 | \
    1.98 +				while read dev; do iwconfig $dev 2>&1 | \
    1.99 +				grep -iq "essid" && { echo $dev ; break; }; \
   1.100 +							done)
   1.101 +					[ -n "$WIFI_INTERFACE" ] && sed -i "s/^WIFI_INTERFACE=.*/WIFI_INTERFACE=\"$WIFI_INTERFACE\"/" /etc/network.conf
   1.102 +			fi
   1.103 +			[ -n "$WPA_DRIVER" ] || WPA_DRIVER="wext"
   1.104 +			if iwconfig $WIFI_INTERFACE 2>&1 | grep -iq "unassociated"; then
   1.105 +			IWCONFIG_ARGS=""
   1.106 +			[ -n "$WIFI_MODE" ] && IWCONFIG_ARGS="$IWCONFIG_ARGS mode $WIFI_MODE"
   1.107 +			[ -n "$WIFI_KEY" ] && case "$WIFI_KEY_TYPE" in
   1.108 +			wep|WEP) IWCONFIG_ARGS="$IWCONFIG_ARGS key $WIFI_KEY";;
   1.109 +			wpa|WPA) cat > /tmp/wpa.conf <<EOF
   1.110  ap_scan=1
   1.111  network={
   1.112  	ssid="$WIFI_ESSID"
   1.113 @@ -57,10 +75,10 @@
   1.114  	priority=5
   1.115  }
   1.116  EOF
   1.117 -			echo -n "starting wpa_supplicant, for WPA-PSK"
   1.118 -			wpa_supplicant -B -w -c/tmp/wpa.conf -D$WPA_DRIVER -i$WIFI_INTERFACE
   1.119 -			;;
   1.120 -		any|ANY) cat > /tmp/wpa.conf <<EOF
   1.121 +				echo "starting wpa_supplicant, for WPA-PSK"
   1.122 +				wpa_supplicant -B -w -c/tmp/wpa.conf -D$WPA_DRIVER -i$WIFI_INTERFACE
   1.123 +				;;
   1.124 +			any|ANY) cat > /tmp/wpa.conf <<EOF
   1.125  ap_scan=1
   1.126  network={
   1.127  	ssid="$WIFI_ESSID"
   1.128 @@ -72,36 +90,66 @@
   1.129  	priority=5
   1.130  }
   1.131  EOF
   1.132 -			echo -n "starting wpa_supplicant for any key type"
   1.133 -			wpa_supplicant -B -w -c/tmp/wpa.conf -D$WPA_DRIVER -i$WIFI_INTERFACE
   1.134 -			;;
   1.135 -		esac
   1.136 -		rm -f /tmp/wpa.conf
   1.137 -		[ -n "$WIFI_CHANNEL" ] && IWCONFIG_ARGS="$IWCONFIG_ARGS channel $WIFI_CHANNEL"
   1.138 -		echo -n "configuring $WIFI_INTERFACE..."
   1.139 -		ifconfig $WIFI_INTERFACE up
   1.140 -		iwconfig $WIFI_INTERFACE txpower on
   1.141 -		iwconfig $WIFI_INTERFACE essid $WIFI_ESSID $IWCONFIG_ARGS
   1.142 -		status
   1.143 -		INTERFACE=$WIFI_INTERFACE
   1.144 -        fi
   1.145 +				echo "starting wpa_supplicant for any key type"
   1.146 +				wpa_supplicant -B -w -c/tmp/wpa.conf -D$WPA_DRIVER -i$WIFI_INTERFACE
   1.147 +				;;
   1.148 +			esac
   1.149 +			rm -f /tmp/wpa.conf
   1.150 +			[ -n "$WIFI_CHANNEL" ] && IWCONFIG_ARGS="$IWCONFIG_ARGS channel $WIFI_CHANNEL"
   1.151 +			echo -n "configuring $WIFI_INTERFACE..."
   1.152 +			ifconfig $WIFI_INTERFACE up
   1.153 +			iwconfig $WIFI_INTERFACE txpower on
   1.154 +			iwconfig $WIFI_INTERFACE essid $WIFI_ESSID $IWCONFIG_ARGS
   1.155 +			status
   1.156 +			INTERFACE=$WIFI_INTERFACE
   1.157 +			fi
   1.158 +	fi
   1.159 +
   1.160 +	# For a dynamic IP with DHCP.
   1.161 +	if [ "$DHCP" = "yes" ] ; then
   1.162 +		echo "Starting udhcpc client on: $INTERFACE... "
   1.163 +		/sbin/udhcpc -b -i $INTERFACE -p /var/run/udhcpc.$INTERFACE.pid
   1.164 +	fi
   1.165 +
   1.166 +	# For a static IP.
   1.167 +	if [ "$STATIC" = "yes" ] ; then
   1.168 +		echo "Configuring static IP on $INTERFACE: $IP... "
   1.169 +		/sbin/ifconfig $INTERFACE $IP netmask $NETMASK up
   1.170 +		/sbin/route add default gateway $GATEWAY
   1.171 +		# Multi-DNS server in $DNS_SERVER.
   1.172 +		/bin/mv /etc/resolv.conf /tmp/resolv.conf.$$
   1.173 +		for NS in $DNS_SERVER
   1.174 +		do
   1.175 +			echo "nameserver $NS" >> /etc/resolv.conf
   1.176 +		done
   1.177 +	fi
   1.178 +}
   1.179 +
   1.180 +
   1.181 +# looking for arguments:
   1.182 +if [ -z "$1" ]; then
   1.183 +	Boot
   1.184 +	Start
   1.185 +else
   1.186 +	case $1 in
   1.187 +		start)
   1.188 +			Start
   1.189 +		;;
   1.190 +		stop)
   1.191 +			Stop
   1.192 +		;;
   1.193 +		restart)
   1.194 +			Stop
   1.195 +			Start
   1.196 +		;;
   1.197 +		*)
   1.198 +			echo ""
   1.199 +			echo -e "\033[1mUsage:\033[0m /etc/init.d/`basename $0` [start|stop|restart]"
   1.200 +			echo ""
   1.201 +			echo -e "	Default configuration file is \033[1m/etc/network.conf\033[0m"
   1.202 +			echo -e "	You can specify another configuration file in second argument:"
   1.203 +			echo -e "	\033[1mUsage:\033[0m /etc/init.d/`basename $0` [start|stop|restart] file.conf"
   1.204 +			echo ""
   1.205 +
   1.206 +	esac
   1.207  fi
   1.208 -
   1.209 -# For a dynamic IP with DHCP.
   1.210 -if [ "$DHCP" = "yes" ] ; then
   1.211 -	echo "Starting udhcpc client on: $INTERFACE... "
   1.212 -	/sbin/udhcpc -b -i $INTERFACE -p /var/run/udhcpc.$INTERFACE.pid
   1.213 -fi
   1.214 -
   1.215 -# For a static IP.
   1.216 -if [ "$STATIC" = "yes" ] ; then
   1.217 -	echo "Configuring static IP on $INTERFACE: $IP... "
   1.218 -	/sbin/ifconfig $INTERFACE $IP netmask $NETMASK up
   1.219 -	/sbin/route add default gateway $GATEWAY
   1.220 -	# Multi-DNS server in $DNS_SERVER.
   1.221 -	/bin/mv /etc/resolv.conf /tmp/resolv.conf.$$
   1.222 -	for NS in $DNS_SERVER
   1.223 -	do
   1.224 -		echo "nameserver $NS" >> /etc/resolv.conf
   1.225 -	done
   1.226 -fi