#!/bin/sh
#
# teles 1.0 Mar 18 20:57:20 CET 1997 (Christof Petig)
#     based on serial driver
#
# Initialize or shutdown a PCMCIA isdn device
#
# The first argument should be either 'start' or 'stop'.  The second
# argument is the base name for the device.
#
# The script passes an extended device address to 'teles.opts' in the 
# ADDRESS variable, to retrieve device-specific configuration options.
# The address format is "scheme,socket,instance" where "scheme" is the
# PCMCIA configuration scheme, "socket" is the socket number, and
# "instance" is used to number multiple ports on a single card.  
#

# default values
L2_PROT=hdlc
L3_PROT=trans
MYNAME=localhost
DEVICES="/dev/ippp* /dev/ttyI* /dev/cui* /dev/isdn*"
HISAX="type=8 protocol=2"
HUPTIME=300

. ./shared

usage()
{
    echo "usage: teles [action] [device name]"
    echo "  actions: start check stop suspend resume"
    exit 1
}

setupisdn()
{
    # /sbin/telesctrl Tel0 1 4      # enable verbose '4' mode
    /sbin/isdnctrl verbose 0  # debugging 2 (maximal 4)

    /sbin/isdnctrl addif $DEVICE             #  Ger"atedatei-Interface
    /sbin/isdnctrl addphone $DEVICE out $OUTNUM  #  Nummer des Server
    /sbin/isdnctrl addphone $DEVICE in $INNUM  #  eigene Nr. mit Vorwahl ohne 0
    /sbin/isdnctrl eaz $DEVICE $EAZ       #  EAZ bzw. MSN ohne Vorwahl
    /sbin/isdnctrl huptimeout $DEVICE $HUPTIME    #  Timeout in Sekunden
    /sbin/isdnctrl secure $DEVICE on         #  Sicherheit an

    /sbin/isdnctrl l2_prot $DEVICE $L2_PROT
    /sbin/isdnctrl l3_prot $DEVICE $L3_PROT
    case "$DEVICE" in
	isdn*) /sbin/isdnctrl encap $DEVICE rawip
		;;
	ippp*) /sbin/isdnctrl encap $DEVICE syncppp     #  Kapselung: synchr. PPP
		;;
    esac

    /sbin/ifconfig $DEVICE $MYNAME pointopoint $SERVERNAME
    /sbin/route add $SERVERNAME $DEVICE
    if [ "$DEFAULTROUTE" = "yes" ] ; then
    	/sbin/route add default gw $SERVERNAME $DEVICE
    fi
    case "$DEVICE" in
	ippp*) /sbin/ipppd $PPPOPTS    #  siehe auch /etc/ppp/options!
		;;
    esac
	
    	# Update DNS stuff
	cp /etc/resolv.conf /etc/resolv.new
	echo "# $DEVICE begin" > /etc/resolv.new
	test "$DOMAIN" && echo "search $DOMAIN" >> /etc/resolv.new
	if [ "$DNSSRVS $DNS_1 $DNS_2 $DNS_3" != "   " ] ; then
	    for DNS in $DNSSRVS $DNS_1 $DNS_2 $DNS_3 ; do
		echo "nameserver $DNS" >> /etc/resolv.new
	    done
	fi
	echo "# $DEVICE end" >> /etc/resolv.new
	cat /etc/resolv.conf >>/etc/resolv.new
	mv /etc/resolv.new /etc/resolv.conf

	is_func start_fn && start_fn $DEVICE
}

get_info $DEVICE

ADDRESS="$SCHEME,$SOCKET,$INSTANCE"
. $0.opts

case "$ACTION" in

'start')
    setupisdn
    ;;

'check')
    fuser -s $DEVICES && exit 1
    ;;

'stop')
    # Remove nameservers
        sed -e "/# $DEVICE begin/,/# $DEVICE end/d"     \
            < /etc/resolv.conf > /etc/resolv.new &&     \
            mv /etc/resolv.new /etc/resolv.conf

    # not very clever ...
    case "$DEVICE" in
	ippp*)
	    killproc -TERM /sbin/ipppd
	    sleep 2
	    killproc -KILL /sbin/ipppd
		;;
    esac
    ifconfig $DEVICE down
    exit 0
    ;;

'suspend')
#    fuser -s -k -STOP $DEVICES
    ;;

'resume')
#    fuser -s -k -CONT $DEVICES
    setupisdn
    ;;

*)
    usage
    ;;

esac

exit 0
