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

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