#! /bin/sh # # /usr/share/dahdi/dahdi_span_config # # Called by UDEV when a dahdi span is added/removed # me=`basename $0` dir=`dirname $0` LOGGER="logger -i -t '$me'" NAME=`basename "$DEVPATH" | tr -c 'A-Za-z0-9-' '_'` exec 2> /dev/null # Always redirect stderr somewhere, otherwise the shell script will die # when it tries to do I/O related stuff on closed file descriptor. # Our default is to throw it down the bit-bucket. #exec 2> /dev/console ## If you wish to trace this script: #exec 2> "/tmp/${me}.$NAME" 1>&2 # Our directory in the beginning, so we can use local lab setup PATH="$dir:/usr/sbin:/sbin:/usr/bin:/bin" set -e #echo >&2 "$0($ACTION): DEBUG($# args): '$*'" # Do we have a configuration? if [ -f /etc/dahdi/init.conf ]; then . /etc/dahdi/init.conf fi if [ "$DAHDI_UDEV_DISABLE_SPANS" = 'yes' ]; then echo "DAHDI_UDEV_DISABLE_SPANS=yes. Skip $DEVPATH" | $LOGGER exit 0 fi # Can we pass a different value so we can use # alternate (testing) configuration? # Meanwhile, make it hard-coded. DAHDICONFDIR='/etc/dahdi' export DAHDICONFDIR run_dahdi_cfg() { echo "dahdi_cfg: span $spanno <$basechan-$endchan> ($DEVPATH)" dahdi_cfg -c "$cfg_file" -S "$spanno" -C "$basechan-$endchan" } configure_span() { span_devpath="$1" # Sanity check checkit=`"dahdi_cfg" --help 2>&1 | grep -- '-S' | wc -l` if [ "$checkit" != 1 ]; then echo "Bad dahdi_cfg (no -S support). Skipping" exit 0 fi # Set variables spanno=`echo "$span_devpath" | sed 's,.*/span-,,'` basechan=`cat "$span_devpath/basechan"` channels=`cat "$span_devpath/channels"` endchan=`expr "$basechan" + "$channels" - 1` # Configure DAHDI cfg_file="$DAHDICONFDIR/system.conf" if [ -r "$cfg_file" ]; then run_dahdi_cfg else echo "Using auto-generated config for dahdi_cfg" cfg_file='-' DAHDI_CONF_FILE="$cfg_file" dahdi_genconf system | run_dahdi_cfg fi fxotune_cfg='/etc/fxotune.conf' if [ -r "$fxotune_cfg" ]; then echo "fxotune: span $spanno <$basechan-$endchan> ($DEVPATH)" fxotune -s -b "$basechan" -e "$endchan" fi # Add to asterisk asterisk -rx "dahdi create channels $basechan $endchan" } case "$ACTION" in add) echo "$ACTION: $DEVPATH" | $LOGGER # Can have alternate dahdi configuration directory for debugging # export DAHDICONFDIR="/tmp/xortel/dahdi" configure_span "/sys$DEVPATH" 2>&1 | $LOGGER ;; remove|online|offline) # Nothing to do yet... echo "$ACTION: $DEVPATH" | $LOGGER ;; *) echo "UNHANDLED: $ACTION: $DEVPATH" | $LOGGER ;; esac