diff options
author | Sean Bright <sean@malleable.com> | 2008-10-03 18:29:07 +0000 |
---|---|---|
committer | Sean Bright <sean@malleable.com> | 2008-10-03 18:29:07 +0000 |
commit | 0b6c6503b2f0c097b843b074003e731c64360ff7 (patch) | |
tree | 4494a2795b5cba2b77fed7eb094f4342972f6391 /xpp | |
parent | b9a4c9def1ecdf8af12d2c0aa8bf77804bf44e62 (diff) |
Remove some leftovers.
git-svn-id: http://svn.asterisk.org/svn/dahdi/tools/trunk@5039 a0bf4364-ded3-4de4-8d8a-66a801d63aff
Diffstat (limited to 'xpp')
-rwxr-xr-x | xpp/genzaptelconf | 1198 | ||||
-rw-r--r-- | xpp/genzaptelconf.8 | 326 |
2 files changed, 0 insertions, 1524 deletions
diff --git a/xpp/genzaptelconf b/xpp/genzaptelconf deleted file mode 100755 index c74e573..0000000 --- a/xpp/genzaptelconf +++ /dev/null @@ -1,1198 +0,0 @@ -#! /bin/bash - -# genzaptelconf: generate as smartly as you can: -# /etc/dahdi/system.conf -# /etc/asterisk/zapata-channels.conf (to be #include-d into zapata.conf) -# update: -# With '-M' /etc/modules (list of modules to load) -# -# Copyright (C) 2005 by Xorcom <support@xorcom.com> -# -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 2 of the License, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -# -# -# If you have any technical questions, contact -# Tzafrir Cohen <tzafrir.cohen@xorcom.com> -# - -# The script uses a number of bash-specific features -# TODO: either ditch them or convert to perl -# Don't override variables here. -# Override them in /etc/default/zaptel (debian) or /etc/sysconfig/zaptel -# (redhat/centos) - -# /etc/default/zaptel may override the following variables -VERSION=0.5.10 -rcsid='$Id$' -lc_country=us -# set to: ls, ks or gs for (Loopstart, Kewlstart and GroundStart) -# on FXS channels (FXO signalling). -fxs_default_start=ks -base_exten=6000 -# If set: no context changes are made in zapata-channels.conf -#context_manual=yes -context_lines=from-pstn # context into which PSTN calls go -context_phones=from-internal # context for internal phones calls. -# The two below apply to input and output ports of the Xorcom Astribank: -context_input=astbank-input -context_output=astbank-output # useless, but helps marking the channels :-) -# TODO: what about PRI/BRI? -# If set: no group changes are made in zapata-channels.conf -#group_manual=yes -group_phones=5 # group for phones -group_lines=0 # group for lines -# Set fxs_immediate to 'yes' to make all FXS lines answer immediately. -fxs_immediate=no - -ZAPCONF_FILE=${ZAPCONF_FILE:-/etc/dahdi/system.conf} -ZAPCONF_FILE_SYSTEM=$ZAPCONF_FILE -ZAPATA_FILE=${ZAPATA_FILE:-/etc/asterisk/zapata-channels.conf} -ZAPSCAN_FILE=${ZAPSCAN_FILE:-/etc/asterisk/zapscan.conf} -ZAPTEL_BOOT_DEBIAN=${ZAPTEL_BOOT_DEBIAN:-/etc/default/zaptel} -ZAPTEL_BOOT_FEDORA=${ZAPTEL_BOOT_FEDORA:-/etc/sysconfig/zaptel} -MODLIST_FILE=/etc/modules -MODLIST_FILE_FEDORA=/etc/sysconfig/zaptel -exten_base_dir=/etc/asterisk/extensions-phones.d -exten_defs_file=/etc/asterisk/extensions-defs.conf -# perl utilities: -xpp_sync=/usr/sbin/xpp_sync -dahdi_registration=/usr/sbin/dahdi_registration -# how long to wait for /dev/zap/ctl to appear? (seconds) -DEVZAP_TIMEOUT=${DEVZAP_TIMEOUT:-20} -DAHDI_CFG=${DAHDI_CFG:-/sbin/dahdi_cfg} -# BRI/PRI spans will be in an additional per-span group whose number -# is SPAN_GROUP_BASE + span-number -SPAN_GROUP_BASE=10 -# set to "yes" to make BRI NT spans set overlapdial (handy for ISDN phones -# and other devices). -brint_overlap=no - -# a temporary directory to store whatever we need to remember. -# -# The main loop of genconf is run in a sub-process. -tmp_dir= - -# A list of all modules: -# - the list of modules which will be probed (in this order) if -d is used -# - The module that will be deleted from /etc/modules , if -d -M is used -ALL_MODULES="wct4xxp wcte12xp wcte11xp wct1xxp wanpipe tor2 torisa qozap vzaphfc zaphfc ztgsm wctdm24xxp wctdm opvxa1200 wcfxo pciradio wcusb xpp_usb" - -# The name of the variable in /etc/sysconfig/zaptel into which to set -# the list of detected modules. -modules_var=MODULES -# On SuSE with the rpm package: -#modules_var=ZAPTEL_MODULES - -# What signalling to give to ZapBRI channels? -# bri: bri_net; bri_cpe (Bristuffed Asterisk. No multi- support) -# bri_ptmpi: bri_net_ptmp; bri_cpe_ptmp (Bristuffed Asterisk, multi- support) -# pri: pri_net; pri_cpe (Recent Asterisk. Experimental) -#ZAPBRI_SIGNALLING=bri -ZAPBRI_SIGNALLING=bri_ptmp -#ZAPBRI_SIGNALLING=pri -zapconf_def_termtype=te - -# A command to stop / start asterisk. Must support parameters "start" -# and "stop" . This is the executable: -ZAPCONF_ASTERISK_SCRIPT=/etc/init.d/asterisk -# -# Should you need to pass extra arguments: -ZAPCONF_ASTERISK_CMD=$ZAPCONF_ASTERISK_SCRIPT - -# read default configuration from /etc/default/zaptel -if [ -r $ZAPTEL_BOOT_DEBIAN ]; then . $ZAPTEL_BOOT_DEBIAN; fi -if [ -r $ZAPTEL_BOOT_FEDORA ]; then . $ZAPTEL_BOOT_FEDORA; fi - -if [ ! -x "$DAHDI_CFG" ]; then - # Work around a bug in the rpm package: dahdi_cfg should be in - # /sbin as it may be required for starting a network interface - if [ -x /usr/sbin/dahdi_cfg ]; then - DAHDI_CFG=/usr/sbin/dahdi_cfg - else - echo >&2 "dahdi_cfg is not on found, do you have dahdi properly installed?" - exit_cleanup 1 - fi -fi - -XPP_SYNC=auto # sync mode. can be set to '0' or '1' or HOST explicitly. - -# it is safe to use -c twice: the last one will be used. -dahdi_cfg_cmd="$DAHDI_CFG -c $ZAPCONF_FILE" - -# work around a bug (that was already fixed) in the installer: -if [ "$lc_country" = '' ]; then lc_country=us; fi - -force_stop_ast=no -do_detect=no -do_unload=no -do_module_list=no -verbose=no -do_restart=yes -fxsdisable=no -do_gen_zapscan=no - -span_te_timing_counter=1 - -case "$ZAPBRI_SIGNALLING" in -bri) ZAPBRI_NET=bri_net; ZAPBRI_CPE=bri_cpe ;; -pri) ZAPBRI_NET=pri_net; ZAPBRI_CPE=pri_cpe ;; -bri_ptmp) ZAPBRI_NET=bri_net_ptmp; ZAPBRI_CPE=bri_cpe_ptmp ;; -*) - die "Incorrect value for ZAPBRI_SIGNALLING ($ZAPBRI_SIGNALLING). Abortring" - ;; -esac - -die() { - echo "$@" >&2 - exit_cleanup 1 -} - -say() { - if [ "$verbose" = no ]; then - return - fi - echo "$@" >&2 -} - -# exit (exit value is the optional $1), and clean up after us -exit_cleanup() { - if [ -d "$tmp_dir" ]; then - # don't fail but don't hide error if directory is not - # empty - rmdir "$tmp_dir" || : - fi - exit $1 -} - -# Wait for udev to generate /dev/zap/ctl, if needed: -wait_for_zapctl() { - # if device file already exists, or if dahdi has failed to load: - # no point waiting. - if [ -c /dev/zap/ctl ] || ! grep -q dahdi /proc/modules ; then - return - fi - say "Waiting for /dev/zap/ctl to be generated" - devzap_found=0 - for i in `seq $DEVZAP_TIMEOUT`; do - sleep 1 - if [ -c /dev/zap/ctl ]; then - devzap_found=1 - break - fi - done - if [ "$devzap_found" != 1 ]; then - say "Still no /dev/zap/ctl after $devzap_timeout seconds." - echo >&2 "No /dev/zap/ctl: cannot run dahdi_cfg. Aborting." - fi -} - -run_dahdi_cfg() { - # Run dahdi_cfg itself - if [ "$verbose" = no ]; then - $dahdi_cfg_cmd "$@" - else - say "Reconfiguring identified channels" - $dahdi_cfg_cmd -vv "$@" - fi -} - -update_module_list_debian() { - say "Updating Debian modules list $MODLIST_FILE." - del_args=`for i in $ALL_MODULES ztdummy - do - echo "$i" | sed s:.\*:-e\ '/^&/d': - done` - add_args=`for i in $* - do - echo "$i" | sed s:.\*:-e\ '\$a&': - done` - - sed -i.bak $del_args "$MODLIST_FILE" - for i in $* - do - echo "$i" - done >> "$MODLIST_FILE" -} - -update_module_list_fedora() { - say "Updating modules list in dahdi init config $MODLIST_FILE_FEDORA." - sed -i.bak -e "/^$modules_var=/d" "$MODLIST_FILE_FEDORA" - echo "$modules_var=\"$*\"" >> "$MODLIST_FILE_FEDORA" -} - -update_module_list() { - if [ -f "$MODLIST_FILE" ]; then - update_module_list_debian "$@" - elif [ -f "$MODLIST_FILE_FEDORA" ]; then - update_module_list_fedora "$@" - else - die "Can't find a modules list to update. Tried: $MODLIST_FILE, $MODLIST_FILE_FEDORA. Aborting" - fi -} - - - -zap_reg_xpp() { - if [ ! -d /proc/xpp ]; then return; fi - - # Get a list of connected Astribank devices, sorted by the name of - # the USB connector. That order is rather arbitrary, but will not - # change without changes to the cabling. - xbusses=`sed -e '/STATUS=connected/!d' -e 's/ *STATUS=.*//' -e 's/ *CONNECTOR=//' /proc/xpp/xbuses | sort -t: -k 2 | cut -d: -f1` - say "Dahdi registration order:" - say "$xbusses" - - # get a list of XPDs that were not yet registered as dahdi spans. - # this will be the case if you set the parameter zap_autoreg=0 to - # the module xpp - # Append /dev/null to provide a valid file name in case of an empty pattern. - xbusses_pattern=`echo $xbusses| sed -e 's|XBUS-[0-9]*|/proc/xpp/&/XPD-*/dahdi_registration|g'`' /dev/null' - xpds_to_register=`grep -l 0 $xbusses_pattern` - for file in $xpds_to_register; do - echo 1 >$file - done -} - -# Initialize the Xorcom Astribank (xpp/) -xpp_startup() { - # do nothing if the module xpp was not loaded, or if no - # Astribanks connected: - if [ ! -d /proc/xpp ]; then return 0; fi - if ! grep -q 'STATUS=connected' /proc/xpp/xbuses; 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" -} - - - -usage() { - program=`basename $0` - - echo >&2 "$program: generate dahdi system.conf and zapata.conf" - echo >&2 "(version $VERSION, $rcsid)" - echo >&2 "usage:" - echo >&2 " $program [-sRdv] [-m k|l|g] [-c <country_code>] [-e <base_exten>] [-F]" - echo >&2 " $program [-sRdv] -l" - echo >&2 " $program -su" - echo >&2 " $program -h (this screen)" - echo >&2 "" - echo >&2 "Options:" - echo >&2 " -c CODE: set the country code (default: $lc_country)" - echo >&2 " -e NUM: set the base extension number (default: $base_exten)" - echo >&2 " -F: Don't print FXSs in zapata.conf" - echo >&2 " -l: output a list of detected channels instead of dahdi system.conf" - echo >&2 " -d: Perform hardware detection" - echo >&2 " -u: Unload dahdi modules (will not restart Asterisk)." - echo >&2 " -v: verbose" - echo >&2 " -s: Stop Asterisk before running, and start it at the end." - echo >&2 " -R: Don't restart asterisk in the end." - echo >&2 " -z: also generate zapscan.conf for the asterisk GUI." -} - -# print /etc/asterisk/zapscan.conf for the Asterisk-GUI -# $1: port type. Currently only fxs/fxo . Note that this is the type, and -# not the signalling (which would be the fxo fir an fxs port. -# $2: port number. Probably a range of ports is also allowed. -print_zapscan_port () { - if [ "$do_gen_zapscan" != 'yes' ]; then return 0; fi - - echo " -[$2] -port=$1 -" >>$zapscan_file -} - -# $1: channel number -print_pattern() { - local astbank_type='' - local reset_values="" - OPTIND=1 - while getopts 'a:' arg - do - case "$arg" in - a) case "$OPTARG" in input|output) astbank_type=$OPTARG;;esac ;; - esac - done - shift $(( $OPTIND-1 )) - - - local chan=$1 - local sig=$2 #fxs/fxo - local mode=$3 - local method - - if [ "$sig" = 'fxs' ]; then - # Coutries in which we need to use busydetect: - # United Arab Emirats, Israel, Slovenia - case "$lc_country" in - ae|il|si) - method=ls - ;; - *) - method=ks - ;; - esac - else - method="$fxs_default_start" - fi - case "$sig" in - fxs) sig_name=FXO;; - fxo) sig_name=FXS;; - esac - case "$mode" in - list) - echo $chan $sig_name $astbank_type;; - files) - # sadly, both input ports and output ports go into the same span as - # the FXS ports. Thus we need to separate between them. See also - # the zapata.conf section: - - echo ";;; line=\"$line\"" >> $zapata_file - - if [ "$astbank_type" != '' ]; - then echo "# astbanktype: $astbank_type" >>$dahdi_file; - fi - echo "${sig}$method=$chan" >>$dahdi_file - # zap2amp will rewrite those from dahdi system.conf and hints there - if [ "$fxsdisable" = 'yes' ] && [ "$sig" = 'fxo' ]; then return; fi - - echo "signalling=${sig}_$method" >>$zapata_file - if [ "$sig" = 'fxo' ] - then - # to preconfigure channel 1's extension to 550, set - # chan_1_exten=550 - # in, e.g, /etc/default/zaptel - var_name=`echo chan_${chan}_exten` - cfg_exten=`echo ${!var_name} | tr -d -c 0-9` - var_name=`echo chan_${chan}_vmbox` - cfg_vmbox=`echo ${!var_name} | tr -d -c 0-9` - var_name=`echo chan_${chan}_cntxt` - cfg_cntxt=`echo ${!var_name} | tr -d -c 0-9` - - if [ "$cfg_exten" = '' ] - then # No extension number set for this channel - exten=$(($chan+$base_exten)) - else # use the pre-configured extension number - exten=$cfg_exten - fi - # is there any real need to set 'mailbox=' ? - if [ "x$cfg_vmbox" = x ] - then # No extension number set for this channel - vmbox=$exten - else # use the pre-configured extension number - vmbox=$cfg_vmbox - fi - echo "callerid=\"Channel $chan\" <$exten>" >> $zapata_file - reset_values="$reset_values callerid" - echo "mailbox=$exten" >> $zapata_file - reset_values="$reset_values mailbox" - if [ "$group_manual" != "yes" ] - then - echo "group=$group_phones" >> $zapata_file - reset_values="$reset_values group" - fi - if [ "$context_manual" != "yes" ] - then - if [ "$astbank_type" != '' ]; - then - context_var_name=context_$astbank_type - echo context=${!context_var_name} >> $zapata_file - else - echo "context=$context_phones" >> $zapata_file - fi - reset_values="$reset_values context" - fi - else # this is an FXO (trunk/phone: FXO signalling) - # we have may have set it. So reset it: - echo "callerid=asreceived" >> $zapata_file - if [ "$group_manual" != "yes" ] - then - echo "group=$group_lines" >> $zapata_file - fi - if [ "$context_manual" != "yes" ] - then - echo "context=$context_lines" >> $zapata_file - reset_values="$reset_values context" - fi - if [ "$lc_country" = 'uk' ] - then - echo "cidsignalling=v23" >> $zapata_file - case $line in - *WCFXO*) echo "cidstart=history" >> $zapata_file;; - *) echo "cidstart=polarity" >> $zapata_file;; - esac - reset_values="$reset_values cidsignalling cidstart" - fi - case "$line" in - *XPP_FXO*) - if [ "$xpp_fxo_rxgain" != '' ]; then - echo "rxgain=$xpp_fxo_rxgain" >> $zapata_file - reset_values="$reset_values rxgain" - fi - ;; - esac - # if kewlstart is not used, busydetect has to be employed: - if [ "$method" = 'ls' ] - then - echo 'busydetect=yes' >> $zapata_file - reset_values="$reset_values busydetect" - fi - fi - - if [ "$astbank_type" = 'input' ] || \ - ( [ "$fxs_immediate" = 'yes' ] && [ "$sig" = "fxo" ] ) - then - echo 'immediate=yes' >> $zapata_file - reset_values="$reset_values immediate" - fi - echo "channel => $chan" >> $zapata_file - reset_zapata_entry $zapata_file $reset_values - echo "" >> $zapata_file - - print_zapscan_port "$sig" "$chan" - ;; - esac - -} - -# the number of channels from /proc/dahdi -# must always print a number as its output. -count_proc_zap_lines() { - # if dahdi is not loaded there are 0 channels: - if [ ! -d /proc/dahdi ]; then echo '0'; return; fi - - ( - for file in `echo /proc/dahdi/* |grep -v '\*'` - do sed -e 1,2d $file # remove the two header lines - done - ) | wc -l # the total number of lines -} - -load_modules() { - say "Test Loading modules:" - for i in $ALL_MODULES - do - lines_before=`count_proc_zap_lines` - args="${i}_args" - eval "args=\$$args" - # a module is worth listing if it: - # a. loaded successfully, and - # b. added channels lines under /proc/dahdi/* - if /sbin/modprobe $i $args 2> /dev/null - then - check=0 - case "$i" in - xpp_usb) check=`grep 'STATUS=connected' 2>/dev/null /proc/xpp/xbuses | wc -l` ;; - *) if [ $lines_before -lt `count_proc_zap_lines` ]; then check=1; fi ;; - esac - if [ "$check" != 0 ] - then - probed_modules="$probed_modules $i" - say " ok $i $args" - else - say " - $i $args" - rmmod $i - fi - else - say " - $i $args" - fi - done -} - -# 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, and 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 -} - -unload_modules() { - say "Unloading dahdi modules:" - unload_module dahdi - say '' -} - -# sleep a while until the xpp modules fully register -wait_for_xpp() { - if [ -d /proc/xpp ] - then - # wait for the XPDs to register: - # TODO: improve error reporting and produce a messagee here - cat /proc/xpp/XBUS-*/waitfor_xpds 2>/dev/null >/dev/null || true - fi -} - -detect() { - unload_modules - temporary_zapconf save - load_modules - temporary_zapconf restore - modlist="$probed_modules" - modlist="$(echo $modlist)" # clean spaces - if [ "$do_module_list" = yes ] - then - update_module_list "$modlist" - fi - if echo $modlist | grep -q xpp_usb; then wait_for_xpp; fi -} - -# The module configuration generated by dahdi includes a totally useless -# automatic run of dahdi_cfg after modules loading. As a workaround for that, -# we provide an empty dahdi system.conf temporarily. -# -# At hardware detection time we shouldn't really touch dahdi system.conf . So we -# must keep a copy of it somewhere. -# -# I use ZAPCONF_FILE_SYSTEM rather than ZAPCONF_FILE, as the bogus modprobe -# entries will not be initiated by us. -# -# ZAPCONF_FILE_TMP is a "global", as it needs to be preserved between the -# call to 'save' and to 'restore' -ZAPCONF_FILE_TMP= -temporary_zapconf() { - case "$1" in - save) - say "Temporarily moving dahdi system.conf aside to work around broken modprobe.conf" - ZAPCONF_FILE_TMP=`mktemp /tmp/genzaptelconf-dahdi-system.conf-XXXXXX` || die "Error creating temporary dahdi system.conf" - if [ -f $ZAPCONF_FILE_SYSTEM ]; then - cp -a $ZAPCONF_FILE_SYSTEM $ZAPCONF_FILE_TMP - fi - echo -n >$ZAPCONF_FILE_SYSTEM - ;; - restore) - # restore original dahdi system.conf: - if [ "$ZAPCONF_FILE_TMP" = '' ]; then return; fi - mv $ZAPCONF_FILE_TMP $ZAPCONF_FILE_SYSTEM - ZAPCONF_FILE_TMP='' - ;; - esac -} - -# run after the channel's entry. Used to reset all the values -reset_zapata_entry() { - conf_file="$1"; shift - - for arg in "$@"; do - case "$arg" in - busydetect) echo "$arg=no" >>$conf_file;; - context) echo "$arg=default" >>$conf_file;; - immediate) echo "$arg=no" >>$conf_file;; - overlapdial) echo "$arg=no" >>$conf_file;; - rxgain) echo "$arg=0" >>$conf_file;; - txgain) echo "$arg=0" >>$conf_file;; - *) echo "$arg=" >>$conf_file;; - esac - done -} - - -# we need to preserve the permissions of existing configurations files. -# However we also don't want to be left with incomplete configurations in -# case we are stopped in the middle. Thus we create a temporary file and -# mv it to the original file only when done. -# -# This function gives the temporary file the permissions of the original, -# or some sane defaults. -# -# The temporary file is generated here, and ths its name is passed through -# a variable whose name is passed as a parameter (new_var). -# -# $1: orig_cfg_file -# $2: new_var -gen_tmp_conf() { - orig_cfg_file=$1 - new_var=$2 - - # assign to new_var by reference: - eval $new_var=`mktemp /tmp/genzaptelconf-conf-XXXXXX` \ - || die "Unable to create temporary config file for $orig_cfg_file" - if [ -r "$orig_cfg_file" ]; then - chown --reference="$orig_cfg_file" ${!new_var} 2>/dev/null - chmod --reference="$orig_cfg_file" ${!new_var} 2>/dev/null - else - chmod 644 ${!new_var} - fi -} - -# Extract information from one digital channel (one line in a /proc/dahdi -# file). Information is saved to $tmp_dir/span_foo variables. -# FIXME: detection should move to when we know the number of channels -# and hence can tell between an E1 and a T1. -detect_digital_channel() { - line="$1" - chan_num="$2" - span_num="$3" - - # PRI/BRI channel - # Rather than identifying cards by the header line, we identify - # them by the channel names. This is shorter. - # This also allows us to count the channel numbers and check if - # we have a E1 span, a T1 span or a BRI span. - - # span_lastd is always the one before last - # channel. span_bchan is the last: - echo $chan_num >$tmp_dir/span_end - - if [ "`cat $tmp_dir/span_begin`" != "-1" ] - then - return #we already configured this span. - fi - - # Now we need to give initial configuration to the span - echo $chan_num >$tmp_dir/span_begin - echo $span_num >$tmp_dir/span_num - - case "$line" in - *ZTHFC*/* | *ztqoz*/* | *XPP_BRI_*/*) - # BRI channel - echo 'ccs' >$tmp_dir/span_framing - echo 'euroisdn' >$tmp_dir/span_switchtype - if [ "`cat $tmp_dir/span_termtype`" = 'nt' 2>/dev/null ] - then - echo $ZAPBRI_NET >$tmp_dir/span_signalling - else - echo $ZAPBRI_CPE >$tmp_dir/span_signalling - fi - ;; - *ztgsm*/*) - # Junghanns's GSM cards. - echo 'ccs' >$tmp_dir/span_framing - #Does this mean anything? - echo 'gsm' >$tmp_dir/span_signalling - ;; - *TE[24]/* | *WCT1/* | *Tor2/* | *TorISA/* | *WP[TE]1/* | \ - *R[124]T1/* | *XPP_[TEJ]1_*) - # FIXME: handle cwain around here. - # name: *cwain[12]/* . Always E1. - - # PRI span (E1/T1) - echo 'esf' >$tmp_dir/span_framing - echo 'b8zs' >$tmp_dir/span_coding - echo 'national' >$tmp_dir/span_switchtype - if [ "`cat $tmp_dir/span_termtype`" = 'nt' 2>/dev/null ] - then - echo pri_net >$tmp_dir/span_signalling - else - echo pri_cpe >$tmp_dir/span_signalling - fi - # an example of country-specific setup. This is probably not accurate - # Contributions are welcome - case "$lc_country" in - nl) - # (Just an example for per-country info) - echo 'ccs' >$tmp_dir/span_framing - echo 'ami' >$tmp_dir/span_coding - #echo 'crc4' >$tmp_dir/span_yellow - #echo 'euroisdn' >$tmp_dir/span_switchtype - #echo 'pri_cpe' >$tmp_dir/span_signalling - ;; - il|de|au) - echo 'ccs' >$tmp_dir/span_framing - echo 'hdb3' >$tmp_dir/span_coding - echo 'crc4' >$tmp_dir/span_yellow - echo 'euroisdn' >$tmp_dir/span_switchtype - ;; - cl) - echo 'ccs' >$tmp_dir/span_framing - echo 'hdb3' >$tmp_dir/span_coding - #echo 'crc4' >$tmp_dir/span_yellow - echo 'national' >$tmp_dir/span_switchtype - ;; - esac - ;; - esac -} - -# read information from the $tmp_dir/span_foo files and generate -# configuration for the span and its channels. -write_digital_config() { - # if the current file we checked was not of a digital span, we have - # nothing to do: - if [ "`cat $tmp_dir/span_begin`" = -1 ]; then return; fi - - # read files to variables: - for suffix in num begin end timing lbo framing \ - coding switchtype signalling yellow termtype - do - eval span_$suffix=`cat $tmp_dir/span_$suffix 2>/dev/null` - done - - # exactly the same logic is used in asterisk's chan_zap.c. - # also not that $(( )) is bash-specific - case "$((1+ $span_end - $span_begin))" in - 2|3|24) #ztgsm, BRI or T1 - dchan=$span_end - bchans="$span_begin-$(($span_end-1))" - ;; - 31) #E1 - dchan="$(($span_begin+15))" - bchans="$span_begin-$(($span_begin+14)),$(($span_begin+16))-$span_end" - if [ "$span_framing" = 'esf' ]; then - # don't leave an E1 span with defective defaults: - span_framing=ccs - span_coding=hdb3 - span_switchtype=euroisdn - span_yellow=crc4 - fi - ;; - esac - if [ "$span_yellow" != '' ]; then span_yellow=",$span_yellow"; fi - # Let's assume that a TE span should get the clock from the remote unit, - # and NT spans should provide timing. Just as a sane default. - # If we have several TE spans, the first will have priority 1, - # second: 2, etc. - case "$span_signalling" in *_cpe*) - span_timing=$span_te_timing_counter - span_te_timing_counter=$(($span_te_timing_counter + 1)) - ;; - esac - case "$mode" in - files) - echo span=$span_num,$span_timing,$span_lbo,$span_framing,$span_coding$span_yellow >> $dahdi_file - # leave a comment in dahdi system.conf that allows to tell if - # this span is TE or NT: - if [ "$span_termtype" != '' ] - then echo "# termtype: $span_termtype" >>$dahdi_file - fi - - echo bchan=$bchans >>$dahdi_file - echo dchan=$dchan >>$dahdi_file - if [ "$fxsdisable" = 'yes' ] && [ "$span_termtype" = 'nt' ]; then return; fi - # You should not send content to zapata.conf below this line - - span_group=$(($SPAN_GROUP_BASE + $span_num)) - - if [ "$span_termtype" != '' ] - then - # an ISDN card's span that we know if it is in NT mode or TE mode. - # NT is the same as FXS for us and TE is the same as FXO - if [ "$span_termtype" = 'nt' ] - then - echo "callerid=\"Channels $span_begin - $span_end\" <$span_begin>" >> $zapata_file - reset_values="$reset_values callerid" - #echo "mailbox=$exten" - if [ "$brint_overlap" = 'yes' ] - then - echo "overlapdial=yes" >> $zapata_file - reset_values="$reset_values overlapdial" - fi - if [ "$group_manual" != "yes" ] - then - echo "group=$group_phones,$span_group" >> $zapata_file - reset_values="$reset_values group" - fi - if [ "$context_manual" != "yes" ] - then - echo "context=$context_phones" >> $zapata_file - fi - else - #echo "mailbox=" - if [ "$group_manual" != "yes" ] - then - echo "group=$group_lines,$span_group" >> $zapata_file - reset_values="$reset_values group" - fi - if [ "$context_manual" != "yes" ] - then - echo "context=$context_lines" >> $zapata_file - reset_values="$reset_values context" - fi - fi - fi - echo "switchtype = $span_switchtype" >> $zapata_file - echo "signalling = $span_signalling" >> $zapata_file - echo "channel => $bchans" >> $zapata_file - reset_zapata_entry $zapata_file $reset_values - reset_values= - ;; - list) - echo "### BRI/PRI: $span_termtype" - echo "$bchans Data" - echo "$dchan Control" - #echo BRI/PRI: chans: $bchans, control: $dchan - ;; - esac -} - -# This is where the actual detection configuration detection work happens. -genconf() { - local mode=$1 - local reset_values="" - -# spanlist=`echo /proc/dahdi/* | grep -v '\*'` -# spanlist=$(for i in `for i in /proc/dahdi/*; do if [ -f $i ]; then echo $i | cut -f 4 -d / ; fi; done | sort -n`; do echo -n "/proc/dahdi/$i "; done) -# spanlist=(cd /proc/dahdi; ls | sort -n | sed 's|^|/proc/dahdi/|') - spanlist=`ls /proc/dahdi/ 2>/dev/null | sort -n | sed 's|^|/proc/dahdi/|'` - - #if [ "$spanlist" == "" ]; then - # die "No zapata interfaces in /proc/dahdi" - #fi - - - case "$mode" in - files) - if [ "$do_gen_zapscan" = 'yes' ]; then - gen_tmp_conf "$ZAPSCAN_FILE" zapscan_file - cat <<EOF >$zapscan_file -; zapscan.conf: information about detected dahdi channels -; (currently: analog only) -; -; Automatically generated by $0 -- Please do not edit. - -EOF - fi - gen_tmp_conf "$ZAPTEL_FILE" dahdi_file - gen_tmp_conf "$ZAPATA_FILE" zapata_file - cat <<EOF >$dahdi_file -# Autogenerated by $0 -- do not hand edit -# Dahdi Configuration File -# -# This file is parsed by the Dahdi Configurator, dahdi_cfg -# - -# It must be in the module loading order - -EOF - cat <<EOF >$zapata_file -; Autogenerated by $0 -- do not hand edit -; Dahdi Channels Configurations (zapata.conf) -; -; This is not intended to be a complete zapata.conf. Rather, it is intended -; to be #include-d by /etc/zapata.conf that will include the global settings -; -EOF - ;; - esac - - # For each line in the spanlist: see if it represents a channel. - # if it does, test that the channel is usable. - # we do that by configuring it (using dahdi_cfg with a 1-line config file) - # and then trying to read 1 byte from the device file. - # - # The '<(command)' syntax creates a temporary file whose content is is the - # output of 'command'. - # - # Another problem with such an approach is how to include an existing - # configuration file. For instance: how to include some default settings. - # - # Maybe an 'include' directive should be added to dahdi system.conf ? - #cat $spanlist | - for procfile in $spanlist - do - span_num=`basename $procfile` - # the first line is the title line. It states the model name - # the second line is empty - title=`head -n 1 $procfile` - # stuff that needs to be remembered accross lines (for PRI/BRI support) - case "$mode" in - list) echo "### $title";; - files) - echo "" >>$dahdi_file - echo "# $title" >>$dahdi_file - echo "" >>$zapata_file - echo "; $title" >>$zapata_file - ;; - esac - echo '-1' >$tmp_dir/span_begin - echo '-1' >$tmp_dir/span_end - echo '0' >$tmp_dir/span_timing - echo '0' >$tmp_dir/span_lbo - echo '' >$tmp_dir/span_framing - echo 'ami' >$tmp_dir/span_coding - echo '' >$tmp_dir/span_switchtype - echo '' >$tmp_dir/span_signalling - if [ "$zapconf_def_termtype" != '' ] - then - echo "$zapconf_def_termtype" >$tmp_dir/span_termtype - fi - - # Check if ZapBRI cards are in TE or NT mode - if echo $title | egrep -q '((quad|octo)BRI PCI ISDN Card.* \[NT\]\ |octoBRI \[NT\] |HFC-S PCI A ISDN.* \[NT\] |Xorcom .* (BRI|T1|E1)_NT)' - then - echo 'nt' >$tmp_dir/span_termtype - elif echo $title | egrep -q '((quad|octo)BRI PCI ISDN Card.* \[TE\]\ |octoBRI \[TE\] |HFC-S PCI A ISDN.* \[TE\] |Xorcom .* (BRI|T1|E1)_TE)' - then - echo 'te' >$tmp_dir/span_termtype - fi - - # The rest of the lines are per-channel lines - sed -e 1,2d $procfile | \ - while read line - do - # in case this is a real channel. - chan_num=`echo $line |awk '{print $1}'` - case "$line" in - *WCTDM/* | *\ WRTDM/* | *OPVXA1200/*) - # TDM400P/2400P and similar cards (Sangoma A200, OpenVox A1200) - # this can be either FXS or FXO - maybe_fxs=0 - maybe_fxo=0 - $dahdi_cfg_cmd -c <(echo fxoks=$chan_num) &>/dev/null && maybe_fxs=1 - $dahdi_cfg_cmd -c <(echo fxsks=$chan_num) &>/dev/null && maybe_fxo=1 - if [ $maybe_fxs = 1 ] && [ $maybe_fxo = 1 ] - then - # An installed module won't accept both FXS and FXO signalling types: - # this is an empty slot. - # TODO: I believe that the Sangoma A20x will reject both and thus - # print nothing here. - case "$mode" in - list) echo "# channel $chan_num, WCTDM, no module.";; - files) echo "# channel $chan_num, WCTDM, no module." >> $dahdi_file;; - esac - continue - fi - - if [ $maybe_fxs = 1 ]; then print_pattern $chan_num fxo $mode; fi - if [ $maybe_fxo = 1 ]; then print_pattern $chan_num fxs $mode; fi - ;; - *WCFXO/*) - # X100P - print_pattern $chan_num fxs $mode || \ - echo "# channel $chan_num, WCFXO, inactive." >>$dahdi_file - ;; - *WCUSB/*) - print_pattern $chan_num fxo $mode - ;; - *XPP_FXO/*) - # Astribank FXO span - print_pattern $chan_num fxs $mode - ;; - *XPP_FXS/*) - # Astribank FXS span (regular port) - print_pattern $chan_num fxo $mode - ;; - *' FXO'/*) - # FXO module (probably Rhino) - print_pattern $chan_num fxs $mode - ;; - *' FXS'/*) - # FXS module (probably Rhino) - print_pattern $chan_num fxo $mode - ;; - *' ---'/*) - # no module (probably Rhino) - continue - ;; - *XPP_OUT/*) - # Astribank FXS span (output port) - print_pattern -a output $chan_num fxo $mode - ;; - *XPP_IN/*) - # Astribank FXS span (input port) - print_pattern -a input $chan_num fxo $mode - ;; - *ZTHFC*/* | *ztqoz*/* |*ztgsm/* |*TE[24]/* | \ - *WCT1/*|*Tor2/* | *TorISA/* | \ - *XPP_BRI_*/* | *WP[TE]1/* | *R[124]T1/* | \ - *XPP_[TE]1*/* ) - detect_digital_channel "$line" "$chan_num" "$span_num" - ;; - '') ;; # Empty line (after span header) - *) - case "$mode" in - list) echo "# ??: $line";; - files) - echo "# ??: $line" >>$dahdi_file - echo "; ??: $line" >>$zapata_file - esac - ;; - esac - done - # end of part in sub-process. - - write_digital_config - done - - if [ "$mode" = 'files' ] - then - cat <<EOF >> ${dahdi_file} - -# Global data - -loadzone = $loadzone -defaultzone = $defaultzone -EOF - fi - - if [ "$mode" = 'files' ]; then - mv ${ZAPCONF_FILE} ${ZAPCONF_FILE}.bak 2>/dev/null - mv $dahdi_file ${ZAPCONF_FILE} - mv ${ZAPATA_FILE} ${ZAPATA_FILE}.bak 2>/dev/nullk - mv $zapata_file ${ZAPATA_FILE} - if [ "$do_gen_zapscan" = 'yes' ]; then - mv $ZAPSCAN_FILE $ZAPSCAN_FILE.bak 2>/dev/null - mv $zapscan_file $ZAPSCAN_FILE - fi - - zapata_file_name=`basename $ZAPATA_FILE` - if ! grep -q "^#include.*$zapata_file_name" \ - /etc/asterisk/zapata.conf - then - say "Note: generated $ZAPATA_FILE not included in zapata.conf" - say "To fix: echo '#include $zapata_file_name' >>/etc/asterisk/zapata.conf" - fi - fi -} - -while getopts 'c:de:Fhlm:MRsuvz' arg -do - case "$arg" in - e) # guarantee that it is a number: - new_base_exten=`echo $OPTARG | tr -d -c 0-9` - if [ "x$new_base_exten" != x ]; then base_exten=$new_base_exten; fi - ;; - c) lc_country=`echo $OPTARG | tr -d -c a-z` ;; - d) do_detect=yes ;; - F) fxsdisable=yes;; - u) do_unload=yes ; force_stop_ast=yes ;; - v) verbose=yes ;; - l) mode='list' ;; - M) do_module_list=yes; do_detect=yes ;; - s) force_stop_ast=yes ;; - R) do_restart=no ;; - z) do_gen_zapscan=yes ;; - h) usage; exit 0;; - *) echo >&2 "unknown parameter -$arg, Aborting"; usage; exit 1;; - esac -done -shift $(( $OPTIND-1 )) -if [ $# != 0 ]; then - echo >&2 "$0: too many parameters" - usage - exit 1 -fi - -tmp_dir=`mktemp -d /tmp/genzaptelconf-dir-XXXXXX` || \ - die "$0: failed to create temporary directory. Aborting" - - -case "$lc_country" in - # the list was generated from the source of dahdi: - #grep '{.*[0-9]\+,.*"[a-z][a-z]"' zonedata.c | cut -d'"' -f 2 | xargs |tr ' ' '|' - us|au|fr|nl|uk|fi|es|jp|no|at|nz|it|gr|tw|cl|se|be|sg|il|br|hu|lt|pl|za|pt|ee|mx|in|de|ch|dk|cz|cn):;; - *) - lc_country=us - echo >&2 "unknown country-code $lc_country, defaulting to \"us\"" - ;; -esac -# any reason for loadzone and defaultzone to be different? If so, this is -# the place to make that difference -loadzone=$lc_country -defaultzone=$loadzone - -# make sure asterisk is not in our way -if [ "$force_stop_ast" = 'yes' ] -then - $ZAPCONF_ASTERISK_CMD stop 1>&2 -else - # if asterisk is running and we wanted to detect modules - # or simply to unload modules, asterisk needs to go away. - if ( [ "$do_unload" = yes ] || [ "$do_detect" = yes ] ) && \ - pidof asterisk >/dev/null - then - echo >&2 "Asterisk is already running. Configuration left untouched" - echo >&2 "You can use the option -s to shut down Asterisk for the" - echo >&2 "duration of the detection." - exit_cleanup 1 - fi -fi - -if [ "$do_unload" = yes ] -then - unload_modules - exit_cleanup $? -fi - -if [ "$do_detect" = yes ] -then - detect -fi - -if [ "$zapconf_use_perl" = yes ]; then - #redefine genconf to use perl utilities: - genconf() { - case "$1" in - list) dahdi_hardware ;; - files) zapconf ;; - esac - } -fi - -if [ "$mode" = list ]; then - genconf list -else - #zap_reg_xpp - xpp_startup - wait_for_zapctl - say "Generating '${ZAPCONF_FILE} and ${ZAPATA_FILE}'" - genconf files - run_dahdi_cfg -fi - -if [ "$tmp_dir" != '' ] -then - rm -rf "$tmp_dir" -fi - -if [ "$force_stop_ast" != 'yes' ] || [ "$do_restart" != 'yes' ] -then - exit_cleanup 0 -fi - -if [ -x "$ZAPCONF_ASTERISK_SCRIPT" ] -then - $ZAPCONF_ASTERISK_CMD start 1>&2 -fi - -# if in verbose mode: verify that asterisk is running -if [ "$verbose" != 'no' ] - then - say "Checking channels configured in Asterisk:" - sleep 1 # give it some time. This is enough on our simple test server - if [ -x ast-cmd ] - then - ast-cmd cmd "zap show channels" - else - asterisk -rx "zap show channels" - fi -fi - -# vim:ts=8: diff --git a/xpp/genzaptelconf.8 b/xpp/genzaptelconf.8 deleted file mode 100644 index 60568d2..0000000 --- a/xpp/genzaptelconf.8 +++ /dev/null @@ -1,326 +0,0 @@ -.TH GENZAPTELCONF 8 "July 18th, 2005" "Xorcom Rapid Asterisk" "Linux Programmer's Manual" -.SH "NAME" -.B genzaptelconf --- generates dahdi configuration (TDM adaptors) -.SH SYNOPSIS -.PP -.B genzaptelconf -[-sRdvzF] [-c <country_code>] [-e <base_exten>] - -.B genzaptelconf -[-sRdv] -l -- only list to standard output - -.B genzaptelconf --su -- only unload dahdi modules - -.B genzaptelconf --h -- Help screen - -.SH DESCRIPTION -.B genzaptelconf -is a script to detect dahdi devices (currently mostly TDM cards are -supported). It generates both -.I /etc/dahdi/system.conf -and -.I /etc/asterisk/zapata-channels.conf - -.I PRI -and -.I BRI -(with ZapBRI) cards are basically identified as well. However the span -configiration is a default that I only hope is sane. Looking for feedback - -.SH OPTIONS -.B -c -.I country_code -.RS -A two-letter country code. Sets the country-code for the zonezone -entries in -.I system.conf -, The default is the value of -.I lc_country -from -.I /etc/default/zaptel -and failing that, "us". -.RE - -.B -d -.RS -Also try to detect modules. Unloads all dahdi modules and loads them -one by one. Considers a module useful if it loaded successfully and if -loading it has generated at least one zapata channel. - -The list of detected modules is written as the value of -.I ZAPTEL_MODS -in -.I /etc/default/zaptel -.RE - -.B -e -.I base_exten_num -.RS -Configure channel -.I i -as extension -.I exten_num -+ -.I i - . This is mostly for the caller-id values. Crude, but may be good enough. -See also -.I -r -.RE - -.B -F -.RS -Disable writing FXS extensions in zapata.conf -.RE - -.B -l -.RS -Only list deceted channels and their signalling. Don't write -configuration files. Note, however that -.I -ld -will still rewrite the modules line in -.I /etc/default/zaptel -(see -.I -d -above). -.RE - -.B -M -.RS -Update -.I /etc/modules -with a list of our modules, thereby -triggers their loading via modprobe on the next boot. - -This triggers the -.I -d -option as well. -.RE - -.B -R -.RS -Don't restart asterisk even if it was stopped using -.I -s - . -.RE - -.B -s -.RS -Stop asterisk for the duration of the test. The detection will only -work if nobody uses the dahdi channels: - -* To allow unloading of modules - -* to allow reading configuration files. - -This option tells the script to stop asterisk (if it was running) and to -try to start it after the end of the test. -.RE - -.B -v -.RS -Be verbose. lists the detected modules if -.I -d -is used. Lists detected channls. In the end tries to connect to asterisk -to get a list of configured dahdi channels. -.RE - -.B -z -.RS -emulate the operation of zapscan.bin: generate -.I /etc/asterisk/zapscan.conf -with the results of the scan. -.RE - -.SH CONFIGURATION -Look at the beginning of the script for a number of variables that can -be overriden through the configuraion file. Some variables can also be -overriden through the environment. The configuration file is sourced by -bash but for compatibility expected to have only 'var=VALUE' lines and -comments or empty lines. - -The configuration will first be read from -.I /etc/default/zaptel -if it exists, and -.I /etc/sysconfig/zaptel -otherwise (But those file names may be overriden, see -.I ZAPTEL_BOOT_DEBIAN -and -.I ZAPTEL_BOOT_FEDORA -below). Variables set in those files will override the default settings -and setting rom the environment. - -The following variables may be set from the environment: -ZAPCONF_FILE, ZAPATA_FILE, ZAPTEL_BOOT_DEBIAN, ZAPTEL_BOOT_FEDORA, -DEVZAP_TIMEOUT, ZTCFG - -.RS -.I lc_country -.RS -The default country. Can be also overriden by the option -c -.RE - -.I base_exten -.RS -The base number used for automatic numbering -.RE - -.I context_manual -.RS -If set to 'yes', no context changes are made in zapata-channels.conf -.RE - -.I context_lines -.RS -The context into which calls will go from dahdi trunks. -.RE - -.I context_phones -.RS -The context into which calls will go from dahdi phones. -.RE - -.I context_manual -.RS -If set to 'yes', no group settings are made in zapata-channels.conf -.RE - -.I group_lines -.RS -The group number for dahdi trunks. -.RE - -.I group_phones -.RS -The group number for dahdi phones. -.RE - -.I ALL_MODULES -.RS -modules list. Used for unloading and modules detection. The order of modules -is the same for both. -.RE - -.I ZAPCONF_FILE -.RS -ztcfg's configuration file. The sane default is /etc/dahdi/system.conf . -.RE - -.I ZAPATA_FILE -.RS -The generated partial zapata.conf snippet. Default: -/etc/asterisk/zapata-channels.conf . -.RE - -.I ZAPTEL_BOOT_DEBIAN -.RS -The Debian Dahdi defaults file. Normally -.I /etc/default/zaptel -. -.RE - - -.I ZAPTEL_BOOT_FEDORA -.RS -The Dahdi defaults file on various other distributions. Normally -.I /etc/sysconfig/zaptel - . -.RE - -.I DEVZAP_TIMEOUT -.RS -Maximal number of seconds to wait for /dev/zap to be initializaed by -udev. -.RE - -.I ZTCFG -.RS -The full path to the ztcfg tool. Default: -.I /sbin/ztcfg -genzaptelconf will also explicitly test for -.I /usr/sbin/ztcfg -as a last resort. -.RE -.RE - -.SH FILES -.I /etc/dahdi/system.conf -.RS -The configuration file used by -.I ztcfg -to configure dahdi devices. re-written by -.I genzaptelconf - . A backup copy is saved to -.I /etc/dahdi/system.conf.bak - . -.RE - -.I /etc/asterisk/zapata.conf -.RS -The configuration file of Asterisk's -.I chan_zap. -Not modified directly by -.I genzaptelconf. -If you want genzaptelconf's setting to take effect, add the following -line at the end of -.I zapata.conf: -.RS -#include "zapata-channels.conf" -.RE -.RE - -.I /etc/asterisk/zapata-channels.conf -.RS -This is the snippet of -.I chan_zap -configuration file that -.I genzaptelconf generates. - . A backup copy is saved to -.I /etc/asterisk/zapata-channels.conf.bak - . -.RE - -.I /etc/default/zaptel -.RS -This file holds configuration for both -.I genzaptelconf -and -.I /etc/init.d/dahdi . -It is sourced by both scripts and can thus be used to override settings -of variables from those scripts. -.RE - -.I /etc/modules -.RS -A debian-specific list of kernel modules to be loaded by modprobe at -boot time. When the option -.I -d -(detect) is used, genzaptelconf will write in this file dahdi modules -to be loaded. If you want to use a different file, set -.I MOD_FILELIST - . If it is rewritten, a backup copy is saved to -.I /etc/modules.bak - . -.RS -The backup copy of -.I /etc/modules -.RE - -.SH "SEE ALSO" -ztcfg(8) asterisk(8). - -.SH BUGS -If you override a configuration variable both through the environment -and through the configuration file, the value from the configuration -file wins. - -.SH "AUTHOR" -This manual page was written by Tzafrir Cohen <tzafrir.cohen@xorcom.com> -Permission is granted to copy, distribute and/or modify this document under -the terms of the GNU General Public License, Version 2 any -later version published by the Free Software Foundation. - -On Debian systems, the complete text of the GNU General Public -License can be found in /usr/share/common-licenses/GPL. |