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

network.sh: WIFI_ESSID can have space in the name
author Christophe Lincoln <pankso@slitaz.org>
date Sun Feb 15 11:55:47 2009 +0100 (2009-02-15)
parents ea125bdc0888
children 6038353267b7
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 [ ! -d /sys/class/net/$WIFI_INTERFACE/wireless ]; then
pascal@112 46 echo "$WIFI_INTERFACE is not a wifi interface, changing it."
pascal@112 47 WIFI_INTERFACE=$(grep : /proc/net/dev | cut -d: -f1 | \
pascal@112 48 while read dev; do iwconfig $dev 2>&1 | \
pascal@115 49 grep -iq "essid" && { echo $dev ; break; }; \
pascal@115 50 done)
pascal@115 51 [ -n "$WIFI_INTERFACE" ] && sed -i "s/^WIFI_INTERFACE=.*/WIFI_INTERFACE=\"$WIFI_INTERFACE\"/" /etc/network.conf
pascal@115 52 fi
pascal@115 53 [ -n "$WPA_DRIVER" ] || WPA_DRIVER="wext"
pascal@115 54 IWCONFIG_ARGS=""
pascal@115 55 [ -n "$WIFI_MODE" ] && IWCONFIG_ARGS="$IWCONFIG_ARGS mode $WIFI_MODE"
pascal@115 56 [ -n "$WIFI_KEY" ] && case "$WIFI_KEY_TYPE" in
pascal@112 57 wep|WEP) IWCONFIG_ARGS="$IWCONFIG_ARGS key $WIFI_KEY";;
pascal@112 58 wpa|WPA) cat > /tmp/wpa.conf <<EOF
pascal@102 59 ap_scan=1
pascal@102 60 network={
pascal@102 61 ssid="$WIFI_ESSID"
pascal@102 62 scan_ssid=1
pascal@102 63 proto=WPA
pascal@102 64 key_mgmt=WPA-PSK
pascal@102 65 psk="$WIFI_KEY"
pascal@102 66 priority=5
pascal@102 67 }
pascal@102 68 EOF
pascal@112 69 echo "starting wpa_supplicant, for WPA-PSK"
pascal@112 70 wpa_supplicant -B -w -c/tmp/wpa.conf -D$WPA_DRIVER -i$WIFI_INTERFACE
pascal@112 71 ;;
pascal@112 72 any|ANY) cat > /tmp/wpa.conf <<EOF
pascal@102 73 ap_scan=1
pascal@102 74 network={
pascal@102 75 ssid="$WIFI_ESSID"
pascal@102 76 scan_ssid=1
pascal@102 77 key_mgmt=WPA-EAP WPA-PSK IEEE8021X NONE
pascal@102 78 group=CCMP TKIP WEP104 WEP40
pascal@102 79 pairwise=CCMP TKIP
pascal@102 80 psk="$WIFI_KEY"
pascal@102 81 priority=5
pascal@102 82 }
pascal@102 83 EOF
pascal@112 84 echo "starting wpa_supplicant for any key type"
pascal@112 85 wpa_supplicant -B -w -c/tmp/wpa.conf -D$WPA_DRIVER -i$WIFI_INTERFACE
pascal@112 86 ;;
pascal@115 87 esac
pascal@115 88 rm -f /tmp/wpa.conf
pascal@115 89 [ -n "$WIFI_CHANNEL" ] && IWCONFIG_ARGS="$IWCONFIG_ARGS channel $WIFI_CHANNEL"
pascal@115 90 echo -n "configuring $WIFI_INTERFACE..."
pascal@115 91 ifconfig $WIFI_INTERFACE up
pascal@115 92 iwconfig $WIFI_INTERFACE txpower on
pankso@131 93 iwconfig $WIFI_INTERFACE essid "$WIFI_ESSID" $IWCONFIG_ARGS
pascal@115 94 status
pascal@115 95 INTERFACE=$WIFI_INTERFACE
pascal@112 96 fi
pascal@112 97
pascal@112 98 # For a dynamic IP with DHCP.
pascal@112 99 if [ "$DHCP" = "yes" ] ; then
pascal@112 100 echo "Starting udhcpc client on: $INTERFACE... "
pascal@112 101 /sbin/udhcpc -b -i $INTERFACE -p /var/run/udhcpc.$INTERFACE.pid
pascal@112 102 fi
pascal@112 103
pascal@112 104 # For a static IP.
pascal@112 105 if [ "$STATIC" = "yes" ] ; then
pascal@112 106 echo "Configuring static IP on $INTERFACE: $IP... "
pascal@112 107 /sbin/ifconfig $INTERFACE $IP netmask $NETMASK up
pascal@112 108 /sbin/route add default gateway $GATEWAY
pascal@112 109 # Multi-DNS server in $DNS_SERVER.
pascal@112 110 /bin/mv /etc/resolv.conf /tmp/resolv.conf.$$
pascal@112 111 for NS in $DNS_SERVER
pascal@112 112 do
pascal@112 113 echo "nameserver $NS" >> /etc/resolv.conf
pascal@112 114 done
pascal@112 115 fi
pascal@112 116 }
pascal@112 117
pascal@112 118
pascal@112 119 # looking for arguments:
pascal@112 120 if [ -z "$1" ]; then
pascal@112 121 Boot
pascal@112 122 Start
pascal@112 123 else
pascal@112 124 case $1 in
pascal@112 125 start)
pascal@112 126 Start
pascal@112 127 ;;
pascal@112 128 stop)
pascal@112 129 Stop
pascal@112 130 ;;
pascal@112 131 restart)
pascal@112 132 Stop
pascal@112 133 Start
pascal@112 134 ;;
pascal@112 135 *)
pascal@112 136 echo ""
pascal@112 137 echo -e "\033[1mUsage:\033[0m /etc/init.d/`basename $0` [start|stop|restart]"
pascal@112 138 echo ""
pascal@112 139 echo -e " Default configuration file is \033[1m/etc/network.conf\033[0m"
pascal@112 140 echo -e " You can specify another configuration file in second argument:"
pascal@112 141 echo -e " \033[1mUsage:\033[0m /etc/init.d/`basename $0` [start|stop|restart] file.conf"
pascal@112 142 echo ""
pascal@112 143
pascal@112 144 esac
pascal@102 145 fi