diff options
author | tzafrir <tzafrir@5390a7c7-147a-4af0-8ec9-7488f05a26cb> | 2007-12-04 23:15:04 +0000 |
---|---|---|
committer | tzafrir <tzafrir@5390a7c7-147a-4af0-8ec9-7488f05a26cb> | 2007-12-04 23:15:04 +0000 |
commit | 238e74d3812dc67b4e2cad6af306130db0b58433 (patch) | |
tree | 475a2112628aa6adbb64dac212df112e66388e86 /live_zap | |
parent | 4e11e9db4502c239bd2495c116d112a1f708d031 (diff) |
live_zap - A script to test Zaptel without fully installing it.
git-svn-id: http://svn.digium.com/svn/zaptel/branches/1.4@3308 5390a7c7-147a-4af0-8ec9-7488f05a26cb
Diffstat (limited to 'live_zap')
-rwxr-xr-x | live_zap | 121 |
1 files changed, 121 insertions, 0 deletions
diff --git a/live_zap b/live_zap new file mode 100755 index 0000000..7be8b98 --- /dev/null +++ b/live_zap @@ -0,0 +1,121 @@ +#!/bin/sh + +set -e + +DESTDIR=$PWD/live +KVERS=${KVERS:-`uname -r`} +MODULES_DIR="$DESTDIR/lib/modules/$KVERS/misc" +XPP_SYNC=auto +AST_SCRIPT=/etc/init.d/asterisk +# Use this file to pass options to modules: +MODPROBE_FILE=$DESTDIR/modprobe.conf +PERLLIBDIR=`perl -V:sitelib | cut -d "'" -f 2` + +# Manual list of modules. They will be loaded by insmod. +# If reside in a subdir, add it explicitly. +MODULES_LOAD="zaptel xpp/xpp xpp/xpd_fxs xpp/xpd_fxo xpp/xpp_usb" + +if [ -r $DESTDIR/live.conf ]; then . $DESTDIR/live.conf; fi + +# 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 zt_registration on + + # this one could actually be run after ztcfg: + LC_ALL=C xpp_sync "$XPP_SYNC" +} + +# 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 +} + +usage() { + me=`basename $0` + echo "$me: Run Zaptel in a test environment" + echo 'Version: $Id$' + echo '' + echo "Usage: equivalent of:" + echo "$me install make install" + echo "$me config make config" + echo "$me unload /etc/init.d/zaptel stop" + echo "$me load /etc/init.d/zaptel start" +} + +# Give priority to our installed binaries: +PATH=$DESTDIR/sbin:$DESTDIR/usr/sbin:$PATH +export PATH + +# TODO: If you already use PERL5DIR, please fix this part: +PERL5LIB="$DESTDIR/$PERLLIBDIR" +export PERL5LIB + +case "$1" in +install) + make install DESTDIR=$DESTDIR + ;; +config) + make config DESTDIR=$DESTDIR + touch $MODPROBE_FILE + mkdir -p $DESTDIR/etc/asterisk + ;; +unload) + $AST_SCRIPT stop + unload_module zaptel + ;; +load) + # TODO: Find a way to use modprobe. + # Or implement a way to pass arguments to modules here (yuck) + for module in $MODULES_LOAD; do + insmod $MODULES_DIR/$module.ko + done + xpp_startup + ZAPTEL_FILE=$DESTDIR/etc/zaptel.conf \ + ZAPATA_FILE=$DESTDIR/etc/asterisk/zapata-channels.conf \ + zapconf + ztcfg + # TODO: fxotune, hpec + # or find a way to reuse init.d start sequence. + + # TODO: A local copy of Asterisk, configured with zapconf. + # doable, but trickier. + $AST_SCRIPT start + ;; +help) + usage + ;; +*) + echo >&2 "$0: Error: incorrect command \"$1\". Aborting" + usage + exit 1 +esac |