summaryrefslogtreecommitdiff
blob: 51a9f8eb0058aa4cd7cae74ac0ba41f8360cc1e2 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
#!/sbin/runscript
# Copyright 1999-2004 Gentoo Technologies, Inc.
# Distributed under the terms of the GNU General Public License v2
# $Header: /var/cvsroot/gentoo-x86/net-dialup/speedtouch/files/speedtouch.rc6,v 1.4 2004/03/04 19:14:02 vapier Exp $

PPP=$(which pppd)
MODEM_RUN=$(which modem_run)
MOUNT=$(which mount)
UMOUNT=$(which umount)
IFCONFIG=$(which ifconfig)

MAX_LOOP=60

check_modem_run() {
[ "${MICROCODE:-set}" = set ] && ( eend 1 "Please define \$MICROCODE in /etc/conf.d/speedtouch" ; exit 1 )
[ -f ${MICROCODE} ] ; eend $? "Failed to find the microcode." || exit 1
[ -x ${MODEM_RUN} ] ; eend $? "Failed to find the 'modem_run' executable." || exit 1

# usbdevfs is up ?
( ${MOUNT} | grep -q usbdevfs ) || $MOUNT none /proc/bus/usb -t usbdevfs > /dev/null 2>&1

sleep 1

## Let's check if modem_run is UP. If not let's try lauching it (again)?
( ps -e | grep -q modem_run ) || $MODEM_RUN -v $VERBOSE -m $MODEM_RUN_EXTRAOPTS -f $MICROCODE
RETURNED=$?

sleep 1
if [ $RETURNED -ne 0 ]; then		# modem_run CAN'T run
	eerror "Can't load the microcode !!" 
	eerror "Please detach and attach again your modem to the USB port to unload the microcode."
	eerror "Then run '/etc/init.d/speedtouch start'"
return 1 
fi

}

depend() {
need localmount modules
}

start() {

ebegin "Starting Speedtouch ADSL Modem..."

check_modem_run || eend 1 "Failed to start Speedtouch ADSL Modem..."

[ ! -z $PPP ] ; eend $? "Failed to find ppp" || exit 1
[ -f "/etc/ppp/peers/$PEER" ] ; eend $? "Failed to find peer configuration" || exit 1
[ -x $IFCONFIG ] ; eend $? "Failed to find 'ifconfig'" || exit 1

## Allright. Start pppd.
einfo "Launching the PPP daemon..."
rm -f /var/run/pppoa*.pid
start-stop-daemon --start --exec $PPP call $PEER > /dev/null 2>&1

RETURNED=1
LOOPS=0

# Loop until connection has been established with the ISP
# or the transaction has failed
while [ $RETURNED -ne 0 ] && [ $LOOPS -le $MAX_LOOP ] ; do
    $IFCONFIG | grep -q 'ppp'
    RETURNED=$?
    LOOPS=`expr $LOOPS + 1`
    sleep 1
done

if [ $LOOPS -gt $MAX_LOOP ] && [ $RETURNED -ne 0 ] ; then
    eerror "Failed to start the PPP daemon" ; return 1
fi

					
eend $? "Failed to start Speedtouch ADSL Modem..."
}

stop () {
ebegin "Shutting down the SpeedTouch ADSL Modem..."

start-stop-daemon --stop --pidfile /var/run/ppp0.pid pppd

eend $? "Failed to stop 'pppd'."
}