slitaz-boot-scripts view etc/init.d/network.sh @ rev 109

Misc wifi fixes from sygne@ombres.eu
author Pascal Bellard <pascal.bellard@slitaz.org>
date Tue Jul 22 22:25:02 2008 +0000 (2008-07-22)
parents 7ed6dc4683ad
children 444e44898f27
line source
1 #!/bin/sh
2 # /etc/init.d/network.sh - Network initialization boot script.
3 # Config file is: /etc/network.conf
4 #
5 . /etc/init.d/rc.functions
6 . /etc/network.conf
8 # Only configure hostname and loopback at boot time
9 if [ -n "$1" ]; then
11 # Set hostname.
12 echo -n "Setting hostname... "
13 /bin/hostname -F /etc/hostname
14 status
16 # Configure loopback interface.
17 echo -n "Configuring loopback... "
18 /sbin/ifconfig lo 127.0.0.1 up
19 /sbin/route add 127.0.0.1 lo
20 status
22 fi
24 # For wifi. Users just have to enable it throught yes and usually
25 # essid any will work and interface is autodetected.
26 if [ "$WIFI" = "yes" ] || grep -q "wifi" /proc/cmdline; then
27 if [ -n "$NDISWRAPPER_DRIVERS" -a -x /usr/sbin/ndiswrapper ]; then
28 for i in $NDISWRAPPER_DRIVERS; do
29 ndiswrapper -i $i
30 done
31 echo -n "Loading ndiswrapper module..."
32 modprobe ndiswrapper
33 status
34 fi
35 if [ ! -d /sys/class/net/$WIFI_INTERFACE/wireless ]; then
36 echo "$WIFI_INTERFACE is not a wifi interface, changing it."
37 WIFI_INTERFACE=$(grep : /proc/net/dev | cut -d: -f1 | \
38 while read dev; do iwconfig $dev 2>&1 | \
39 grep -iq "essid" && { echo $dev ; break; }; \
40 done)
41 [ -n "$WIFI_INTERFACE" ] && sed -i "s/^WIFI_INTERFACE=.*/WIFI_INTERFACE=\"$WIFI_INTERFACE\"/" /etc/network.conf
42 fi
43 [ -n "$WPA_DRIVER" ] || WPA_DRIVER="wext"
44 if iwconfig $WIFI_INTERFACE 2>&1 | grep -iq "unassociated"; then
45 IWCONFIG_ARGS=""
46 [ -n "$WIFI_MODE" ] && IWCONFIG_ARGS="$IWCONFIG_ARGS mode $WIFI_MODE"
47 [ -n "$WIFI_KEY" ] && case "$WIFI_KEY_TYPE" in
48 wep|WEP) IWCONFIG_ARGS="$IWCONFIG_ARGS key $WIFI_KEY";;
49 wpa|WPA) cat > /tmp/wpa.conf <<EOF
50 ap_scan=1
51 network={
52 ssid="$WIFI_ESSID"
53 scan_ssid=1
54 proto=WPA
55 key_mgmt=WPA-PSK
56 psk="$WIFI_KEY"
57 priority=5
58 }
59 EOF
60 echo -n "starting wpa_supplicant, for WPA-PSK"
61 wpa_supplicant -B -w -c/tmp/wpa.conf -D$WPA_DRIVER -i$WIFI_INTERFACE
62 ;;
63 any|ANY) cat > /tmp/wpa.conf <<EOF
64 ap_scan=1
65 network={
66 ssid="$WIFI_ESSID"
67 scan_ssid=1
68 key_mgmt=WPA-EAP WPA-PSK IEEE8021X NONE
69 group=CCMP TKIP WEP104 WEP40
70 pairwise=CCMP TKIP
71 psk="$WIFI_KEY"
72 priority=5
73 }
74 EOF
75 echo -n "starting wpa_supplicant for any key type"
76 wpa_supplicant -B -w -c/tmp/wpa.conf -D$WPA_DRIVER -i$WIFI_INTERFACE
77 ;;
78 esac
79 rm -f /tmp/wpa.conf
80 [ -n "$WIFI_CHANNEL" ] && IWCONFIG_ARGS="$IWCONFIG_ARGS channel $WIFI_CHANNEL"
81 echo -n "configuring $WIFI_INTERFACE..."
82 ifconfig $WIFI_INTERFACE up
83 iwconfig $WIFI_INTERFACE txpower on
84 iwconfig $WIFI_INTERFACE essid $WIFI_ESSID $IWCONFIG_ARGS
85 status
86 INTERFACE=$WIFI_INTERFACE
87 fi
88 fi
90 # For a dynamic IP with DHCP.
91 if [ "$DHCP" = "yes" ] ; then
92 echo "Starting udhcpc client on: $INTERFACE... "
93 /sbin/udhcpc -b -i $INTERFACE -p /var/run/udhcpc.$INTERFACE.pid
94 fi
96 # For a static IP.
97 if [ "$STATIC" = "yes" ] ; then
98 echo "Configuring static IP on $INTERFACE: $IP... "
99 /sbin/ifconfig $INTERFACE $IP netmask $NETMASK up
100 /sbin/route add default gateway $GATEWAY
101 # Multi-DNS server in $DNS_SERVER.
102 /bin/mv /etc/resolv.conf /tmp/resolv.conf.$$
103 for NS in $DNS_SERVER
104 do
105 echo "nameserver $NS" >> /etc/resolv.conf
106 done
107 fi