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