[dahdi-commits] tzafrir: tools/trunk r4414 - /tools/trunk/dahdi.init

SVN commits to the DAHDI project dahdi-commits at lists.digium.com
Thu Jun 19 09:26:11 CDT 2008


Author: tzafrir
Date: Thu Jun 19 09:26:10 2008
New Revision: 4414

URL: http://svn.digium.com/view/dahdi?view=rev&rev=4414
Log:
A slightly simplified version of zaptel.init as dahdi.init .

Added:
    tools/trunk/dahdi.init   (with props)

Added: tools/trunk/dahdi.init
URL: http://svn.digium.com/view/dahdi/tools/trunk/dahdi.init?view=auto&rev=4414
==============================================================================
--- tools/trunk/dahdi.init (added)
+++ tools/trunk/dahdi.init Thu Jun 19 09:26:10 2008
@@ -1,0 +1,236 @@
+#!/bin/sh
+#
+# zaptel        This shell script takes care of loading and unloading \
+#               Zapata Telephony interfaces
+# chkconfig: 2345 9 92
+# description: The zapata telephony drivers allow you to use your linux \
+# computer to accept incoming data and voice interfaces
+#
+# config: /etc/sysconfig/zaptel
+
+initdir=/etc/init.d
+
+# Don't edit the following values. Edit /etc/sysconfig/zaptel or
+# /etc/defualt/zaptel (depending on your system) instead.
+
+DAHDI_CFG=/sbin/dahdi_cfg
+DAHDI_CFG_CMD="$DAHDI_CFG" # e.g: for a custom zaptel.conf location
+
+FXOTUNE=/sbin/fxotune
+
+# The default syncer Astribank. Usually set automatically to a sane
+# value by xpp_sync(1) if you have an Astribank. You can set this to an
+# explicit Astribank (e.g: 01).
+XPP_SYNC=auto
+
+# The maximal timeout (seconds) to wait for udevd to finish generating 
+# device nodes after the modules have loaded and before running dahdi_cfg. 
+DAHDI_DEV_TIMEOUT=20
+
+#
+# Determine which kind of configuration we're using
+#
+system=redhat  # assume redhat
+if [ -f /etc/debian_version ]; then
+    system=debian
+fi
+
+# Source function library.
+if [ $system = redhat ]; then
+    . $initdir/functions || exit 0
+fi
+
+[ -f /etc/dahdi/init.conf ] && . /etc/dahdi/init.conf
+
+if [ $system = redhat ]; then
+    [ -f /etc/sysconfig/zaptel ] && . /etc/sysconfig/zaptel
+	LOCKFILE=/var/lock/subsys/zaptel
+fi
+
+# recursively unload a module and its dependencies, if possible.
+# where's modprobe -r when you need it?
+# inputs: module to unload.
+# returns: the result from 
+unload_module() {
+	module="$1"
+	line=`lsmod 2>/dev/null | grep "^$1 "`
+	if [ "$line" = '' ]; then return; fi # module was not loaded
+
+	set -- $line
+	# $1: the original module, $2: size, $3: refcount, $4: deps list
+	mods=`echo $4 | tr , ' '`
+	# xpp_usb keeps the xpds below busy if an xpp hardware is
+	# connected. Hence must be removed before them:
+	case "$module" in xpd_*) mods="xpp_usb $mods";; esac
+	for mod in $mods; do
+		# run in a subshell, so it won't step over our vars:
+		(unload_module $mod) 
+		# TODO: the following is probably the error handling we want:
+		# if [ $? != 0 ]; then return 1; fi
+	done
+	rmmod $module
+}
+
+# Initialize the Xorcom Astribank (xpp/) using perl utiliites:
+# intended to replace all the the three functions below if user has 
+# installed the zaptel-perl utilities.
+xpp_startup() {
+	# do nothing if there are no astribank devices:
+	if ! grep -q connected /proc/xpp/xbuses 2>/dev/null; then return 0; fi
+
+	echo "Waiting for Astribank devices to initialize:"
+	cat /proc/xpp/XBUS-[0-9]*/waitfor_xpds 2>/dev/null || true
+	
+	# overriding locales for the above two, as perl can be noisy
+	# when locales are missing.
+	# No register all the devices if they didn't auto-register:
+	LC_ALL=C dahdi__registration on
+
+	# this one could actually be run after dahdi_cfg:
+	LC_ALL=C xpp_sync "$XPP_SYNC"
+}
+
+
+hpec_start() {
+	# HPEC license found
+	if ! echo /var/lib/digium/licenses/HPEC-*.lic | grep -v '\*' | grep -q .; then
+		return
+	fi
+
+	# zaphpec_enable not installed in /usr/sbin
+	if [ ! -f /usr/sbin/zaphpec_enable ]; then
+		echo -n "Running zaphpec_enable: Failed"
+		echo -n "."
+		echo "  The zaphpec_enable binary is not installed in /usr/sbin."
+		return
+	fi
+
+	# zaphpec_enable not set executable
+	if [ ! -x /usr/sbin/zaphpec_enable ]; then
+		echo -n "Running zaphpec_enable: Failed"
+		echo -n "."
+		echo "  /usr/sbin/zaphpec_enable is not set as executable."
+		return
+	fi
+
+	# zaphpec_enable properly installed
+	if [ $system = debian ]; then
+		echo -n "Running zaphpec_enable: "
+		/usr/sbin/zaphpec_enable 2> /dev/null
+	elif [ $system = redhat ]; then
+		action "Running zaphpec_enable: " /usr/sbin/zaphpec_enable
+	fi
+	if [ $? = 0 ]; then
+		echo -n "done"
+		echo "."
+	else
+		echo -n "Failed"
+		echo -n "."
+		echo "  This can be caused if you had already run zaphpec_enable, or if your HPEC license is no longer valid."
+	fi
+}
+
+shutdown_dynamic() {
+	if ! grep -q ' ZTD/' /proc/* 2>/dev/null; then return; fi
+
+	# we should only get here if we have dynamic spans. Right?
+	$DAHDI_CFG_CMD -s
+}
+
+if [ ! -x "$DAHDI_CFG" ]; then
+       echo "dahdi_cfg not executable"
+       exit 0
+fi
+
+if [ ! -f /etc/zaptel.conf ]; then
+	echo "/etc/zaptel.conf not found. Nothing to do."
+       exit 0
+fi
+
+RETVAL=0
+
+# See how we were called.
+case "$1" in
+  start)
+	# Load drivers
+	echo -n "Loading zaptel hardware modules:"
+	for x in $MODULES; do 
+		eval localARGS="\$${x}_ARGS"
+		if modprobe ${x} ${localARGS} 2> /dev/null; then
+			echo -n " $x"
+			echo "."
+		fi
+	done
+	TMOUT=$DAHDI_DEV_TIMEOUT # max secs to wait
+	while [ ! -d /dev/zap ] ; do
+ 		sleep 1
+		TMOUT=`expr $TMOUT - 1`
+		if [ $TMOUT -eq 0 ] ; then
+			echo "Error: missing /dev/zap!"
+			exit 1
+		fi
+	done
+	sleep 3 # TODO: remove it
+	
+	# If you have zaptel-perl, the three below can be replaced with:
+	xpp_startup
+	
+	if [ ! -e /proc/zaptel/1 ]; then
+		echo "No hardware timing source found in /proc/zaptel, loading dahdi_dummy"
+		modprobe dahdi_dahdi_dummy 2> /dev/null
+	fi
+
+	if [ $system = debian ]; then
+	    echo -n "Running dahdi_cfg: " 
+	    $DAHDI_CFG_CMD 2> /dev/null && echo -n "done"
+	    echo "."
+	elif [ $system = redhat ]; then
+	    action "Running dahdi_cfg: " $DAHDI_CFG_CMD
+	fi
+	RETVAL=$?
+
+	[ $RETVAL -eq 0 ] && touch $LOCKFILE
+
+	if [ -x "$FXOTUNE" ] && [ -r /etc/fxotune.conf ]; then
+		# Allowed to fail if e.g. Asterisk already uses channels:
+		$FXOTUNE -s || : 
+	fi
+
+	hpec_start
+	;;
+  stop)
+	# Unload drivers
+	#shutdown_dynamic # FIXME: needs test from someone with dynamic spans
+	echo -n "Unloading zaptel hardware drivers:"
+  	unload_module zaptel
+	RETVAL=$?
+	echo "."
+
+	[ $RETVAL -eq 0 ] && rm -f $LOCKFILE
+	;;
+  unload)
+	# We don't have zaptel helper, so let's not replicate too much code:
+	# allow others to use the unload command.
+	unload_module zaptel
+	;;
+  restart|force-reload)
+	$0 stop
+	$0 start
+	;;
+  reload)
+	if [ $system = debian ]; then
+	    echo -n "Rerunning dahdi_cfg: "
+	    $DAHDI_CFG_CMD 2> /dev/null && echo -n "done"
+	    echo "."
+	elif [ $system = redhat ]; then
+	    action "Rerunning dahdi_cfg: " $DAHDI_CFG_CMD
+	fi
+	RETVAL=$?
+	;;
+  *)
+	echo "Usage: zaptel {start|stop|restart|reload|unload}"
+	exit 1
+esac
+
+exit $RETVAL
+

Propchange: tools/trunk/dahdi.init
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: tools/trunk/dahdi.init
------------------------------------------------------------------------------
    svn:executable = *

Propchange: tools/trunk/dahdi.init
------------------------------------------------------------------------------
    svn:keywords = Author Date Id Revision

Propchange: tools/trunk/dahdi.init
------------------------------------------------------------------------------
    svn:mime-type = text/plain




More information about the dahdi-commits mailing list