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

Reply via email to