Patrick Kirk wrote: > Sorry I don't have CVS. Would you mind mailing me a copy... No problem, get the attachement > I'll try to document it if that helps. Thank you Edouard Gomez
#!/bin/sh # # Script Name : adsl # # chkconfig: 345 91 35 # authors: Edouard Gomez <[EMAIL PROTECTED]> # Bruno Bonfils <[EMAIL PROTECTED]> # revision: 1.5 # description: This SysV script try to establish a connection with an ISP # using an Alcatel SpeedTouch USB and benoit papillault's driver # usage: Depend on linux distro # # Return Values : # -1 argument unknown # 0 success # 1 kernel module loading failed # 2 kernel module unloading failed # 3 microcode file is missing # 4 modem_run executable missing # 5 modem_run failed to synchronise adsl line # 6 ppp executable missing # 7 ppp connection failed # 8 usbdevfs mounting failed # 9 usbdevfs umounting failed # 10 modprobe executable missing # 11 mount executable missing # 12 umount executable missing # 13 ifconfig executable missing # 14 peer file missing # 255 script not configured #Set this to 1 if you have configured the script CONFIGURED=0 # Includes function def if [ -f /etc/debian_version ] ; then RHSTYLE=0 else RHSTYLE=1 fi if [ $RHSTYLE -ne 0 ] ; then . /etc/init.d/functions # Check existence of the network file [ ! -f /etc/sysconfig/network ] && exit 1 # Include network defs . /etc/sysconfig/network else NETWORKING="yes" fi [ ${NETWORKING} = "no" ] && exit 1 #SYTEM DEPENDANT STUFF #Set them to 1 or 0 LOAD_USBCORE="not configured" LOAD_USBINTERFACE="not configured" LOAD_NHDLC="not configured" #Set the name of your default usb interface #usb-uhci, uhci or usb-ohci DEFAULT_USBINTERFACE="not configured" #VARIABLES MAX_LOOP=60 USBMODULE="not configured" VERBOSE=0 PEER="adsl" #Set the microcode path here MICROCODE="not configured" # Lock files # Red Hat & Mandrake SYSCONF_FILE="/var/lock/subsys/adsl" # Specific for the Debian MODEM_RUN_PID=/var/run/modem_run.pid # Change PATH to be sure to include /usr/local/bin PATH=$PATH:/usr/local/bin #PROG NAMES MODPROBE=$(which modprobe) KILL=$(which killall) PPP=$(which pppd) MODEM_RUN=$(which modem_run) MOUNT=$(which mount) UMOUNT=$(which umount) IFCONFIG=$(which ifconfig) isconfigured() { if [ $CONFIGURED -eq 0 ] ; then myecho_failure exit 255 fi } myecho_success() { if [ $RHSTYLE -ne 0 ] ; then echo_success echo else echo " done." fi } myecho_failure() { if [ $RHSTYLE -ne 0 ] ; then echo_failure echo else echo " failed." fi } load_kernel_module() { if [ ! -x $MODPROBE ] ; then myecho_failure exit 10 fi lsmod | grep -q $1 RETURNED=$? [ $RETURNED -ne 0 ] && $MODPROBE -k $1 RETURNED=$? if [ $RETURNED -ne 0 ] ; then myecho_failure exit 1 fi } unload_kernel_module() { if [ ! -x $MODPROBE ] ; then myecho_failure exit 10 fi lsmod | grep -q $1 RETURNED=$? [ $RETURNED -eq 0 ] && $MODPROBE -r $1 RETURNED=$? if [ $RETURNED -ne 0 ] ; then myecho_failure exit 2 fi } kill_process() { ps ax | grep -q $1 RETURNED=$? [ $RETURNED -eq 0 ] && ($KILL $1 >/dev/null 1>&2) } connect_adsl_line() { #Launch the modem_run driver if [ ! -f $MICROCODE ] ; then myecho_failure exit 3 fi if [ ! -x $MODEM_RUN ] ; then myecho_failure exit 4 fi if [ $RHSTYLE -eq 0 ] ; then start-stop-daemon --start --pidfile $PIDFILE \ --exec $MODEM_RUN -- -v $VERBOSE -m -f $MICROCODE else $MODEM_RUN -v $VERBOSE -m -f $MICROCODE fi RETURNED=$? if [ $RETURNED -ne 0 ] ; then myecho_failure exit 5 fi } connect_ppp() { #Launch ppp daemon if [ ! -x $PPP ] ; then myecho_failure exit 6 fi if [ ! -f "/etc/ppp/peers/$PEER" ] ; then myecho_failure exit 14 fi if [ ! -x $IFCONFIG ] ; then myecho_failure exit 13 fi if [ $RHSTYLE -eq 0 ] ; then start-stop-daemon --start \ $PPP -- call $PEER > /dev/null 2>&1 else $PPP call $PEER >/dev/null 2>&1 fi 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 myecho_failure exit 7 fi } mount_usb() { if [ ! -x $MOUNT ] ; then echo_failure exit 11 fi $MOUNT | grep -q usbdevfs RETURNED=$? if [ $RETURNED -ne 0 ] ; then $MOUNT none /proc/bus/usb -t usbdevfs RETURNED=$? if [ $RETURNED -ne 0 ] ; then myecho_failure exit 8 fi fi } umount_usb() { if [ ! -x $MOUNT ] ; then echo_failure exit 11 fi if [ ! -x $UMOUNT ] ; then echo_failure exit 12 fi $MOUNT | grep -q usbdevfs RETURNED=$? if [ $RETURNED -eq 0 ] ; then $UMOUNT /proc/bus/usb RETURNED=$? if [ $RETURNED -ne 0 ] ; then myecho_failure exit 9 fi fi } get_usb_module() { MODULE_CONF="/etc/modules.conf" [ -f /etc/conf.modules ] && MODULE_CONF="/etc/conf.modules" [ -f /etc/modules.conf ] && MODULE_CONF="/etc/modules.conf" USBMODULE=$(grep "usb-interface" ${MODULE_CONF} | awk '{ print $3 }') RETURNED=$? [ $RETURNED -ne 0 ] && USBMODULE=${DEFAULT_USBINTERFACE} } ############################################################################### # # Beginning of the script # ############################################################################### case "$1" in start) echo -n Starting ADSL connection: isconfigured # At least but not at last, Mandrake dependant USB daemon [ -x /usr/sbin/usbd ] && usbd -k 1>&2 >/dev/null # Load usb core if needed if [ $LOAD_USBCORE -ne 0 ] ; then load_kernel_module "usbcore" fi # If one of usb modules has been loaded, mount the usbdevfs if [ $LOAD_USBCORE -ne 0 ] || [ $LOAD_USBINTERFACE -ne 0 ] ; then mount_usb sleep 2 fi # Load usb-interface module described in /etc/modules.conf if [ $LOAD_USBCORE -ne 0 ] || [ $LOAD_USBINTERFACE -ne 0 ] ; then get_usb_module sleep 1 load_kernel_module "$USBMODULE" sleep 3 fi # ADSL synchro connect_adsl_line sleep 1 # Load n_hdlc line discipline if [ $LOAD_NHDLC -ne 0 ] ; then load_kernel_module "n_hdlc" fi # ISP connection connect_ppp # Report success myecho_success if [ $RHSTYLE -ne 0 ] ; then touch $SYSCONF_FILE fi ;; stop) echo -n Shutting down ADSL connection: isconfigured # Kill pppd to break ppp connection if [ $RHSTYLE -eq 0 ] ; then start-stop-daemon --stop --pidfile /var/run/ppp0.pid pppd sleep 2 start-stop-daemon --stop --pidfile $MODEM_RUN_PID modem_run else kill_process pppd sleep 2 kill_process modem_run fi # Unload HDLC line discipline if [ $LOAD_NHDLC -ne 0 ] ; then unload_kernel_module "n_hdlc" fi # At least but not at last, Mandrake dependant USB daemon [ -x /usr/sbin/usbd ] && (usbd -k 1>&2 >/dev/null) # Unload modules if [ $LOAD_USBCORE -ne 0 ] || [ $LOAD_USBINTERFACE -ne 0 ] ; then kill_process khubd sleep 1 get_usb_module unload_kernel_module "$USBMODULE" sleep 2 umount_usb sleep 2 if [ $LOAD_USBCORE -ne 0 ] ; then unload_kernel_module "usbcore" sleep 1 fi fi # Report success myecho_success # Remove lock file if [ $RHSTYLE -ne 0 ] ; then rm -f $SYSCONF_FILE fi ;; restart|force-reload) echo -n Restarting ADSL connection: isconfigured if [ $LOAD_USBCORE -ne 0 ] || [ $LOAD_USBINTERFACE -ne 0 ] ; then $0 stop >/dev/null RETURNED=$? if [ $RETURNED -ne 0 ] ; then myecho_failure exit $RETURNED fi $0 start >/dev/null RETURNED=$? if [ $RETURNED -ne 0 ] ; then myecho_failure exit $RETURNED fi else $0 reload >/dev/null RETURNED=$? if [ $RETURNED -ne 0 ] ; then myecho_failure exit $RETURNED fi fi myecho_success ;; reload) echo -n Reloading ADSL connection: isconfigured # Kills pppd to break ppp connection if [ $RHSTYLE -eq 0 ] ; then start-stop-daemon --stop --pidfile /var/run/ppp0.pid pppd else kill_process pppd fi sleep 2 connect_ppp myecho_success ;; status) exit 0 ;; *) if [ $RHSTYLE -ne 0 ] ; then echo "Usage : $0 [start|stop|restart|reload|status]" else echo "Usage : $0 {start|stop|restart|force-reload}" fi exit -1 esac exit 0