slitaz-boot-scripts annotate etc/init.d/network.sh @ rev 115

network.sh: ensure iwconfig for start
author Pascal Bellard <pascal.bellard@slitaz.org>
date Fri Sep 19 08:38:26 2008 +0000 (2008-09-19)
parents 75582bc44d58
children ea125bdc0888
rev   line source
pankso@8 1 #!/bin/sh
MikeDSmith25@107 2 # /etc/init.d/network.sh - Network initialization boot script.
pankso@8 3 # Config file is: /etc/network.conf
pankso@8 4 #
pankso@8 5 . /etc/init.d/rc.functions
pankso@8 6
pascal@112 7 if [ -z "$2" ]; then
pascal@112 8 . /etc/network.conf
pascal@112 9 else
pascal@112 10 . $2
pascal@109 11 fi
pascal@109 12
pascal@112 13 Boot() {
pascal@112 14 # Set hostname.
pascal@112 15 echo -n "Setting hostname... "
pascal@112 16 /bin/hostname -F /etc/hostname
pascal@112 17 status
pascal@112 18
pascal@112 19 # Configure loopback interface.
pascal@112 20 echo -n "Configuring loopback... "
pascal@112 21 /sbin/ifconfig lo 127.0.0.1 up
pascal@112 22 /sbin/route add 127.0.0.1 lo
pascal@112 23 status
pascal@112 24 }
pascal@112 25
pascal@112 26 # Stopping everything
pascal@112 27 Stop() {
pascal@112 28 echo "Stopping all interfaces"
pascal@112 29 ifconfig $INTERFACE down
pascal@112 30 ifconfig $WIFI_INTERFACE down
pascal@112 31
pascal@112 32 echo "Killing all daemons"
pascal@112 33 killall udhcpc
pascal@112 34 killall wpa_supplicant
pascal@112 35
pascal@112 36 echo "Shutting down wifi card"
pascal@112 37 iwconfig $WIFI_INTERFACE txpower off
pascal@112 38
pascal@112 39 }
pascal@112 40
pascal@112 41 Start() {
pascal@112 42 # For wifi. Users just have to enable it throught yes and usually
pascal@112 43 # essid any will work and interface is autodetected.
pascal@112 44 if [ "$WIFI" = "yes" ] || grep -q "wifi" /proc/cmdline; then
pascal@112 45 if [ -n "$NDISWRAPPER_DRIVERS" -a -x /usr/sbin/ndiswrapper ]; then
pascal@112 46 for i in $NDISWRAPPER_DRIVERS; do
pascal@112 47 ndiswrapper -i $i
pascal@112 48 done
pascal@112 49 echo -n "Loading ndiswrapper module..."
pascal@112 50 modprobe ndiswrapper
pascal@112 51 status
pascal@112 52 fi
pascal@112 53 if [ ! -d /sys/class/net/$WIFI_INTERFACE/wireless ]; then
pascal@112 54 echo "$WIFI_INTERFACE is not a wifi interface, changing it."
pascal@112 55 WIFI_INTERFACE=$(grep : /proc/net/dev | cut -d: -f1 | \
pascal@112 56 while read dev; do iwconfig $dev 2>&1 | \
pascal@115 57 grep -iq "essid" && { echo $dev ; break; }; \
pascal@115 58 done)
pascal@115 59 [ -n "$WIFI_INTERFACE" ] && sed -i "s/^WIFI_INTERFACE=.*/WIFI_INTERFACE=\"$WIFI_INTERFACE\"/" /etc/network.conf
pascal@115 60 fi
pascal@115 61 [ -n "$WPA_DRIVER" ] || WPA_DRIVER="wext"
pascal@115 62 IWCONFIG_ARGS=""
pascal@115 63 [ -n "$WIFI_MODE" ] && IWCONFIG_ARGS="$IWCONFIG_ARGS mode $WIFI_MODE"
pascal@115 64 [ -n "$WIFI_KEY" ] && case "$WIFI_KEY_TYPE" in
pascal@112 65 wep|WEP) IWCONFIG_ARGS="$IWCONFIG_ARGS key $WIFI_KEY";;
pascal@112 66 wpa|WPA) cat > /tmp/wpa.conf <<EOF
pascal@102 67 ap_scan=1
pascal@102 68 network={
pascal@102 69 ssid="$WIFI_ESSID"
pascal@102 70 scan_ssid=1
pascal@102 71 proto=WPA
pascal@102 72 key_mgmt=WPA-PSK
pascal@102 73 psk="$WIFI_KEY"
pascal@102 74 priority=5
pascal@102 75 }
pascal@102 76 EOF
pascal@112 77 echo "starting wpa_supplicant, for WPA-PSK"
pascal@112 78 wpa_supplicant -B -w -c/tmp/wpa.conf -D$WPA_DRIVER -i$WIFI_INTERFACE
pascal@112 79 ;;
pascal@112 80 any|ANY) cat > /tmp/wpa.conf <<EOF
pascal@102 81 ap_scan=1
pascal@102 82 network={
pascal@102 83 ssid="$WIFI_ESSID"
pascal@102 84 scan_ssid=1
pascal@102 85 key_mgmt=WPA-EAP WPA-PSK IEEE8021X NONE
pascal@102 86 group=CCMP TKIP WEP104 WEP40
pascal@102 87 pairwise=CCMP TKIP
pascal@102 88 psk="$WIFI_KEY"
pascal@102 89 priority=5
pascal@102 90 }
pascal@102 91 EOF
pascal@112 92 echo "starting wpa_supplicant for any key type"
pascal@112 93 wpa_supplicant -B -w -c/tmp/wpa.conf -D$WPA_DRIVER -i$WIFI_INTERFACE
pascal@112 94 ;;
pascal@115 95 esac
pascal@115 96 rm -f /tmp/wpa.conf
pascal@115 97 [ -n "$WIFI_CHANNEL" ] && IWCONFIG_ARGS="$IWCONFIG_ARGS channel $WIFI_CHANNEL"
pascal@115 98 echo -n "configuring $WIFI_INTERFACE..."
pascal@115 99 ifconfig $WIFI_INTERFACE up
pascal@115 100 iwconfig $WIFI_INTERFACE txpower on
pascal@115 101 iwconfig $WIFI_INTERFACE essid $WIFI_ESSID $IWCONFIG_ARGS
pascal@115 102 status
pascal@115 103 INTERFACE=$WIFI_INTERFACE
pascal@112 104 fi
pascal@112 105
pascal@112 106 # For a dynamic IP with DHCP.
pascal@112 107 if [ "$DHCP" = "yes" ] ; then
pascal@112 108 echo "Starting udhcpc client on: $INTERFACE... "
pascal@112 109 /sbin/udhcpc -b -i $INTERFACE -p /var/run/udhcpc.$INTERFACE.pid
pascal@112 110 fi
pascal@112 111
pascal@112 112 # For a static IP.
pascal@112 113 if [ "$STATIC" = "yes" ] ; then
pascal@112 114 echo "Configuring static IP on $INTERFACE: $IP... "
pascal@112 115 /sbin/ifconfig $INTERFACE $IP netmask $NETMASK up
pascal@112 116 /sbin/route add default gateway $GATEWAY
pascal@112 117 # Multi-DNS server in $DNS_SERVER.
pascal@112 118 /bin/mv /etc/resolv.conf /tmp/resolv.conf.$$
pascal@112 119 for NS in $DNS_SERVER
pascal@112 120 do
pascal@112 121 echo "nameserver $NS" >> /etc/resolv.conf
pascal@112 122 done
pascal@112 123 fi
pascal@112 124 }
pascal@112 125
pascal@112 126
pascal@112 127 # looking for arguments:
pascal@112 128 if [ -z "$1" ]; then
pascal@112 129 Boot
pascal@112 130 Start
pascal@112 131 else
pascal@112 132 case $1 in
pascal@112 133 start)
pascal@112 134 Start
pascal@112 135 ;;
pascal@112 136 stop)
pascal@112 137 Stop
pascal@112 138 ;;
pascal@112 139 restart)
pascal@112 140 Stop
pascal@112 141 Start
pascal@112 142 ;;
pascal@112 143 *)
pascal@112 144 echo ""
pascal@112 145 echo -e "\033[1mUsage:\033[0m /etc/init.d/`basename $0` [start|stop|restart]"
pascal@112 146 echo ""
pascal@112 147 echo -e " Default configuration file is \033[1m/etc/network.conf\033[0m"
pascal@112 148 echo -e " You can specify another configuration file in second argument:"
pascal@112 149 echo -e " \033[1mUsage:\033[0m /etc/init.d/`basename $0` [start|stop|restart] file.conf"
pascal@112 150 echo ""
pascal@112 151
pascal@112 152 esac
pascal@102 153 fi