Compare commits
17 Commits
v2.7.0
...
v2.8.0-rc2
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
8d9a6bdd80 | ||
|
|
bb19620c52 | ||
|
|
11310bde53 | ||
|
|
b123bc87dd | ||
|
|
299d9d9d9c | ||
|
|
5e30a1401f | ||
|
|
2f688f83c4 | ||
|
|
680f3e1d1d | ||
|
|
60fca920bc | ||
|
|
c1e016fa33 | ||
|
|
dc5c7de9fc | ||
|
|
1e81ed14cf | ||
|
|
44a5285454 | ||
|
|
7a1e222309 | ||
|
|
52488d66fa | ||
|
|
00af777a97 | ||
|
|
025985d9b7 |
13
Makefile
13
Makefile
@@ -67,13 +67,7 @@ ifneq (,$(NETSCR_DIR))
|
||||
COPY_NETSCR := install -D ifup-hdlc $(NETSCR_TARGET)
|
||||
endif
|
||||
|
||||
ifneq ($(wildcard .version),)
|
||||
TOOLSVERSION:=$(shell cat .version)
|
||||
else
|
||||
ifneq ($(wildcard .svn),)
|
||||
TOOLSVERSION=$(shell build_tools/make_version . dahdi/tools)
|
||||
endif
|
||||
endif
|
||||
TOOLSVERSION=$(shell build_tools/make_version . dahdi/tools)
|
||||
|
||||
LTZ_A:=libtonezone.a
|
||||
LTZ_A_OBJS:=zonedata.o tonezone.o version.o
|
||||
@@ -110,9 +104,8 @@ ifeq (1,$(PBX_HDLC))
|
||||
endif
|
||||
MAN_PAGES:=$(wildcard $(BINS:%=doc/%.8))
|
||||
|
||||
PINNED_DATA_SCRIPTS:=dahdi_cfg_device_args handle_device \
|
||||
span_assignments span_types
|
||||
PINNED_UTILS:=dahdi_map
|
||||
PINNED_DATA_SCRIPTS:=handle_device span_config
|
||||
PINNED_UTILS:=span_assignments span_types
|
||||
PINNED_CONF:=pinned-spans.conf spantype.conf
|
||||
|
||||
TEST_BINS:=patgen pattest patlooptest hdlcstress hdlctest hdlcgen hdlcverify timertest dahdi_maint
|
||||
|
||||
@@ -12,6 +12,8 @@ blacklist wcfxo
|
||||
blacklist wctdm
|
||||
blacklist wctc4xxp
|
||||
blacklist wcb4xxp
|
||||
blacklist wcaxx
|
||||
blacklist wcte43x
|
||||
|
||||
# Some mISDN drivers may try to attach to cards supported by DAHDI. If you
|
||||
# have a card which is *not* supported by DAHDI but supported by one of the
|
||||
|
||||
@@ -1,10 +1,10 @@
|
||||
#!/bin/sh
|
||||
|
||||
if [ -f ${1}/.version ]; then
|
||||
cat ${1}.version
|
||||
cat ${1}/.version
|
||||
elif [ -f ${1}/.svnrevision ]; then
|
||||
echo SVN-`cat ${1}/.svnbranch`-r`cat ${1}/.svnrevision`
|
||||
elif [ -d .svn ]; then
|
||||
elif [ -d ${1}/.svn ]; then
|
||||
PARTS=`LANG=C svn info ${1} | grep URL | awk '{print $2;}' | sed -e s:^.*/svn/${2}/:: | sed -e 's:/: :g'`
|
||||
BRANCH=0
|
||||
TEAM=0
|
||||
@@ -53,4 +53,70 @@ elif [ -d .svn ]; then
|
||||
done
|
||||
|
||||
echo SVN-${RESULT##-}-r${REV}
|
||||
elif [ -d ${1}/.git ]; then
|
||||
# If the first log commit messages indicates that this is checked into
|
||||
# subversion, we'll just use the SVN- form of the revision.
|
||||
MODIFIED=""
|
||||
SVN_REV=`git log --pretty=full -1 | grep -F "git-svn-id:" | sed -e "s/.*\@\([^\s]*\)\s.*/\1/g"`
|
||||
if [ -z "$SVN_REV" ]; then
|
||||
VERSION=`git describe --tags --dirty=M 2> /dev/null | sed -e "s/^v\([0-9]\)/\1/"`
|
||||
if [ $? -ne 0 ]; then
|
||||
if [ "`git ls-files -m | wc -l`" != "0" ]; then
|
||||
MODIFIED="M"
|
||||
fi
|
||||
# Some older versions of git do not support all the above
|
||||
# options.
|
||||
VERSION=GIT-`git rev-parse --short --verify HEAD`${MODIFIED}
|
||||
fi
|
||||
echo ${VERSION}
|
||||
else
|
||||
PARTS=`LANG=C git log --pretty=full | grep -F "git-svn-id:" | head -1 | awk '{print $2;}' | sed -e s:^.*/svn/$2/:: | sed -e 's:/: :g' | sed -e 's/@.*$//g'`
|
||||
BRANCH=0
|
||||
TEAM=0
|
||||
|
||||
if [ "`git ls-files -m | wc -l`" != "0" ]; then
|
||||
MODIFIED="M"
|
||||
fi
|
||||
|
||||
if [ "${PARTS}" = "trunk" ]; then
|
||||
echo SVN-'trunk'-r${SVN_REV}${MODIFIED}
|
||||
exit 0
|
||||
fi
|
||||
|
||||
for PART in $PARTS
|
||||
do
|
||||
if [ ${BRANCH} != 0 ]; then
|
||||
RESULT="${RESULT}-${PART}"
|
||||
break
|
||||
fi
|
||||
|
||||
if [ ${TEAM} != 0 ]; then
|
||||
RESULT="${RESULT}-${PART}"
|
||||
continue
|
||||
fi
|
||||
|
||||
if [ "${PART}" = "branches" ]; then
|
||||
BRANCH=1
|
||||
RESULT="branch"
|
||||
continue
|
||||
fi
|
||||
|
||||
if [ "${PART}" = "tags" ]; then
|
||||
BRANCH=1
|
||||
RESULT="tag"
|
||||
continue
|
||||
fi
|
||||
|
||||
if [ "${PART}" = "team" ]; then
|
||||
TEAM=1
|
||||
continue
|
||||
fi
|
||||
done
|
||||
|
||||
echo SVN-${RESULT##-}-r${SVN_REV}${MODIFIED}
|
||||
fi
|
||||
else
|
||||
# Use the directory information in the absence of any other version
|
||||
# information
|
||||
pwd -P
|
||||
fi
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
# DAHDI devices with ownership/permissions for running as non-root
|
||||
SUBSYSTEM=="dahdi", OWNER="asterisk", GROUP="asterisk", MODE="0660"
|
||||
SUBSYSTEM=="dahdi_devices", RUN="/usr/share/dahdi/handle_device"
|
||||
SUBSYSTEM=="dahdi_spans", RUN="/usr/share/dahdi/span_config"
|
||||
|
||||
@@ -1500,7 +1500,10 @@ int main(int argc, char *argv[])
|
||||
error("Unable to open master device '%s'\n", MASTER_DEVICE);
|
||||
goto finish;
|
||||
}
|
||||
cf = fopen(filename, "r");
|
||||
if (strcmp(filename, "-") == 0)
|
||||
cf = fdopen(STDIN_FILENO, "r");
|
||||
else
|
||||
cf = fopen(filename, "r");
|
||||
if (cf) {
|
||||
while((buf = readline())) {
|
||||
if (*buf == 10) /* skip new line */
|
||||
|
||||
@@ -1,32 +0,0 @@
|
||||
#! /bin/sh
|
||||
|
||||
devbase='/sys/bus/dahdi_devices/devices'
|
||||
|
||||
# Use given devices or otherwise, all existing devices
|
||||
if [ "$#" -gt 0 ]; then
|
||||
DEVICES="$@"
|
||||
else
|
||||
DEVICES=`echo $devbase/*`
|
||||
fi
|
||||
|
||||
run_action_spans() {
|
||||
device="$1"
|
||||
for span in $device/span-*
|
||||
do
|
||||
spanno=`echo "$span" | sed 's,.*/span-,,'`
|
||||
spantype=`cat "$span/spantype"`
|
||||
basechan=`cat "$span/basechan"`
|
||||
channels=`cat "$span/channels"`
|
||||
endchan=`expr "$basechan" + "$channels" - 1`
|
||||
echo "-S $spanno -C $basechan-$endchan"
|
||||
done
|
||||
}
|
||||
|
||||
run_action() {
|
||||
for device in $DEVICES
|
||||
do
|
||||
run_action_spans "$device"
|
||||
done
|
||||
}
|
||||
|
||||
run_action
|
||||
39
dahdi_map
39
dahdi_map
@@ -1,39 +0,0 @@
|
||||
#! /bin/sh
|
||||
#
|
||||
# Show a map of dahdi devices with the following fields:
|
||||
# - spanno (or '-' if not assigned yet)
|
||||
# - (vendor assigned) name
|
||||
# - local spanno
|
||||
# - hardware_id (or empty if none)
|
||||
# - location (prefixed by '@')
|
||||
|
||||
devbase="/sys/bus/dahdi_devices/devices"
|
||||
|
||||
[ -d "$devbase" ] || {
|
||||
echo >&2 "$0: Missing '$devbase' (Old driver?)"
|
||||
exit 1
|
||||
}
|
||||
|
||||
fmt="%-4s %-17s %-3s %-12s %s\n"
|
||||
|
||||
printf "$fmt" 'SPAN' 'NAME' '#' 'HARDWARE_ID' 'LOCATION'
|
||||
|
||||
DEVICES=`echo $devbase/*`
|
||||
|
||||
for device in $DEVICES
|
||||
do
|
||||
hw_id=`cat "$device/hardware_id"`
|
||||
location=`cd "$device" && pwd -P | sed 's,/sys/devices/,,'`
|
||||
for local_spanno in `cut -d: -f1 "$device/spantype"`
|
||||
do
|
||||
span=`grep 2>/dev/null -Hw "$local_spanno" "$device/span-"*"/local_spanno" | \
|
||||
sed -e 's,/local_spanno:.*,,' -e 's,.*/,,'`
|
||||
if [ "$span" != '' ]; then
|
||||
spanno=`echo $span | sed 's/^.*-//'`
|
||||
name=`cat 2>/dev/null "$device/$span/name"`
|
||||
else
|
||||
spanno='-'
|
||||
fi
|
||||
printf "$fmt" "$spanno" "$name" "($local_spanno)" "[$hw_id]" "@$location"
|
||||
done | sort -n
|
||||
done
|
||||
@@ -24,6 +24,8 @@ the DAHDI init script.
|
||||
.RS
|
||||
Use an alternative configuration file instead of
|
||||
.I /etc/dahdi/system.conf
|
||||
|
||||
If \fICFG_FILE\fR is '\fB\-\fR', it is read from stdin.
|
||||
.RE
|
||||
|
||||
.B \-C \fICHANNELS
|
||||
|
||||
@@ -1,48 +0,0 @@
|
||||
.TH dahdi_test 8 "2013-05-24"
|
||||
.SH "NAME"
|
||||
dahdi_map \(em List hardware IDs and locations of DAHDI spans
|
||||
.SH "SYNOPSIS"
|
||||
.B dahdi_map
|
||||
|
||||
.SH DESCRIPTION
|
||||
.B dahdi_map
|
||||
prints a list of hardware IDs and locations of any DAHDI span on the system
|
||||
(possibly not yet assigned).
|
||||
|
||||
It takes no extra options or parameters.
|
||||
|
||||
Example output:
|
||||
.EX
|
||||
SPAN NAME # HARDWARE_ID LOCATION
|
||||
5 XBUS-00/XPD-00 (1) [usb:INT06380] @pci0000:00/0000:00:10.4/usb1/1-3/xbus-00/astribanks:xbus-00
|
||||
6 XBUS-00/XPD-01 (2) [usb:INT06380] @pci0000:00/0000:00:10.4/usb1/1-3/xbus-00/astribanks:xbus-00
|
||||
7 XBUS-00/XPD-02 (3) [usb:INT06380] @pci0000:00/0000:00:10.4/usb1/1-3/xbus-00/astribanks:xbus-00
|
||||
8 XBUS-00/XPD-03 (4) [usb:INT06380] @pci0000:00/0000:00:10.4/usb1/1-3/xbus-00/astribanks:xbus-00
|
||||
9 XBUS-00/XPD-04 (5) [usb:INT06380] @pci0000:00/0000:00:10.4/usb1/1-3/xbus-00/astribanks:xbus-00
|
||||
10 XBUS-00/XPD-05 (6) [usb:INT06380] @pci0000:00/0000:00:10.4/usb1/1-3/xbus-00/astribanks:xbus-00
|
||||
11 XBUS-00/XPD-06 (7) [usb:INT06380] @pci0000:00/0000:00:10.4/usb1/1-3/xbus-00/astribanks:xbus-00
|
||||
12 XBUS-00/XPD-07 (8) [usb:INT06380] @pci0000:00/0000:00:10.4/usb1/1-3/xbus-00/astribanks:xbus-00
|
||||
13 XBUS-00/XPD-10 (9) [usb:INT06380] @pci0000:00/0000:00:10.4/usb1/1-3/xbus-00/astribanks:xbus-00
|
||||
14 XBUS-00/XPD-20 (10) [usb:INT06380] @pci0000:00/0000:00:10.4/usb1/1-3/xbus-00/astribanks:xbus-00
|
||||
15 XBUS-00/XPD-30 (11) [usb:INT06380] @pci0000:00/0000:00:10.4/usb1/1-3/xbus-00/astribanks:xbus-00
|
||||
16 XBUS-01/XPD-00 (1) [] @pci0000:00/0000:00:10.4/usb1/1-4/xbus-01/astribanks:xbus-01
|
||||
1 XBUS-02/XPD-00 (1) [usb:XILINX_4] @pci0000:00/0000:00:10.4/usb1/1-1/xbus-02/astribanks:xbus-02
|
||||
2 XBUS-02/XPD-10 (2) [usb:XILINX_4] @pci0000:00/0000:00:10.4/usb1/1-1/xbus-02/astribanks:xbus-02
|
||||
3 XBUS-02/XPD-20 (3) [usb:XILINX_4] @pci0000:00/0000:00:10.4/usb1/1-1/xbus-02/astribanks:xbus-02
|
||||
4 XBUS-02/XPD-30 (4) [usb:XILINX_4] @pci0000:00/0000:00:10.4/usb1/1-1/xbus-02/astribanks:xbus-02
|
||||
.EE
|
||||
|
||||
.SH FILES
|
||||
.B /sys/bus/dahdi_devices/devices
|
||||
.RS
|
||||
Information taken from that area in SysFS.
|
||||
.RE
|
||||
|
||||
.SH SEE ALSO
|
||||
dahdi_cfg(8)
|
||||
|
||||
.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.
|
||||
222
doc/span_assignments.8
Normal file
222
doc/span_assignments.8
Normal file
@@ -0,0 +1,222 @@
|
||||
.TH "SPAN_ASSIGNMENTS" "8" "13 Oct 2013" "" ""
|
||||
|
||||
.SH NAME
|
||||
span_assignments \- handle DAHDI spans registration
|
||||
.SH SYNOPSIS
|
||||
|
||||
.B span_assignments [\-v|\-\-verbose] [\-n|\-\-dry\-run] <add|remove> \fIdevpath
|
||||
\fB[\fIdevpath \fB...]
|
||||
|
||||
.B span_assignments [\-v|\-\-verbose] [\-n|\-\-dry\-run] auto
|
||||
|
||||
.B span_assignments [\-v|\-\-verbose] list
|
||||
|
||||
.B span_assignments [\-v|\-\-verbose] [\-k|\-\-key \fIkey\fB] dumpconfig
|
||||
|
||||
.B span_assignments \-h|\-\-help
|
||||
|
||||
.SH DESCRIPTION
|
||||
When the kernel module parameter \fBdahdi.auto_assign_span\fR is unset,
|
||||
DAHDI devices (such as DAHDI PCI cards) that register with DAHDI don't
|
||||
register their spans (e.g.: each digital port is normally a span) with
|
||||
DAHDI. This allows user-space to order DAHDI to register them to specific
|
||||
span and channel numbers. This allows registering different spans out of
|
||||
order.
|
||||
|
||||
.B span_assignments
|
||||
is used to register those spans or to help creating the configuration
|
||||
file used in their registration:
|
||||
.B /etc/dahdi/pinned-spans.conf .
|
||||
|
||||
.SH OPTIONS
|
||||
|
||||
There are several sub-commands:
|
||||
|
||||
.B add \fIdevpath \fB[\fIdevpath \fB...]
|
||||
.RS
|
||||
Parameters are paths (in SysFS) to DAHDI devices with unregistered
|
||||
spans. The command will register with DAHDI according to according to
|
||||
configuration in \fBpinned-spans.conf\fR.
|
||||
.RE
|
||||
|
||||
.B remove \fIdevpath \fB[\fIdevpath \fB...]
|
||||
.RS
|
||||
Parameters are paths (in SysFS) to DAHDI devices with registered
|
||||
spans. The command will unregister with DAHDI.
|
||||
.RE
|
||||
|
||||
.B auto
|
||||
.RS
|
||||
Register all non-registered spans. Each span registers to first
|
||||
available span number and channel numbers, as if
|
||||
\fBdahdi.auto_assign_span\fR was set.
|
||||
.RE
|
||||
|
||||
.B list
|
||||
.RS
|
||||
List all spans in the system.
|
||||
.RE
|
||||
|
||||
.B dumpconfig
|
||||
.RS
|
||||
List all registered spans in the system in a format fit to be used in
|
||||
\fBpinned-spans.conf\fR. Use this to generate a configuration file after
|
||||
you have (perhaps manually) registered all existing spans.
|
||||
|
||||
.B dahdi_genconf pinnedspans
|
||||
uses this command internally.
|
||||
.RE
|
||||
|
||||
.B \-v \-\-verbose
|
||||
.RS
|
||||
Verbose output.
|
||||
.RE
|
||||
|
||||
.B \-n \-\-dry\-run
|
||||
.RS
|
||||
Don't register / unregister spans. Only print commands used to do so.
|
||||
.RE
|
||||
|
||||
.B \-k \fIkey
|
||||
.RS
|
||||
For \fBdumpconfig\fR \- The key by which to identify the hardware in the
|
||||
generated configuration. Legal values:
|
||||
|
||||
.B hwid
|
||||
.RS
|
||||
Hardware identifier (e.g.: software-readable serial number). This is the
|
||||
default. If the device has no hwid, devpath is used.
|
||||
.RE
|
||||
|
||||
.B location
|
||||
.RS
|
||||
The location field (file) in the SysFS device node (directory) for the
|
||||
DAHDI device. If not available (typically: DAHDI version <= 2.7.x),
|
||||
devpath is used.
|
||||
.RE
|
||||
|
||||
.B devpath
|
||||
.RS
|
||||
Path in SysFS to the device node.
|
||||
.RE
|
||||
.RE
|
||||
|
||||
.SH CONFIGURATOIN
|
||||
.B pinned-spans.conf
|
||||
is a file with lines specifying registration of spans.
|
||||
|
||||
Empty lines or lines beginning with '#' are ignored.
|
||||
|
||||
Each line is in the format of:
|
||||
|
||||
.I ID spanspec ...
|
||||
|
||||
The \fIID\fR field specifies the DAHDI device and the \fIspanspecs\fR
|
||||
define how to register its spans. A line may have multiple
|
||||
\fIspanspecs\fR in a single line (though dumpconfig generates a
|
||||
configuration with one per line).
|
||||
|
||||
.SS Span Identifier
|
||||
A DAHDI device may be specified either by a hardware identifier (a
|
||||
software readable serial number or whatever) or the location in which
|
||||
it is installed on the system. The former makes it simpler to change
|
||||
connector / slot whereas the latter makes it simpler to replace a unit.
|
||||
|
||||
The value in this field is matched (when the commands \fBadd\fR and
|
||||
\fBremove\fR) are used) to the following values:
|
||||
|
||||
\fIhwid\fR
|
||||
\fB@\fIlocation\fR
|
||||
\fIdevpath\fR
|
||||
|
||||
See above for their descriptions. The value may include shell wildcards:
|
||||
*, ? and [], which are used in the match. The values to be matched are
|
||||
first cleaned up: '!' is replaced with '/' and any character beyond
|
||||
"a-zA-Z0-9/:.-" is removed.
|
||||
|
||||
.SS Span Specification
|
||||
|
||||
Each line should have one or more span specifications: this is the value
|
||||
used to register a span with DAHDI in the SysFS interface. A
|
||||
specification has three colon-separated numbers:
|
||||
|
||||
.I rel_span_no:span_no:first_chan
|
||||
|
||||
for instance, the following are four span specifications for a quad-E1
|
||||
device: 1:6:53 2:7:84 3:8:115 4:9:146 occupying spans 6-9 and channels
|
||||
53-176.
|
||||
|
||||
.B rel_span_no
|
||||
.RS
|
||||
The relative number of the span in the device. E.g.: port number.
|
||||
.RE
|
||||
|
||||
.B span_no
|
||||
.RS
|
||||
The desired DAHDI span number. Must be available.
|
||||
.RE
|
||||
|
||||
.B first_chan
|
||||
.RS
|
||||
The desired DAHDI channel number for the first DAHDI channel in the span.
|
||||
All channels of the span will be registered following it and hence that
|
||||
space must be available.
|
||||
.RE
|
||||
|
||||
|
||||
.SH ENVIRONMENT
|
||||
|
||||
.B DAHDICONFDIR
|
||||
.RS
|
||||
The directory in which pinned-spans.conf resides. /etc/dahdi if not
|
||||
overridden from the environment.
|
||||
.RE
|
||||
|
||||
.B pinned_spans_conf
|
||||
.RS
|
||||
The path to pinned-spans.conf resides. /etc/dahdi/pinned-spans.conf if
|
||||
not overridden from the environment.
|
||||
.RE
|
||||
|
||||
.B SPAN_ASSIGNMENTS_KEY
|
||||
.RS
|
||||
The default value for \-k . Defaults to "hwid" if not overridden from the
|
||||
environment.
|
||||
.RE
|
||||
|
||||
|
||||
.SH FILES
|
||||
|
||||
.B /etc/dahdi/pinned-spans.conf
|
||||
.RS
|
||||
The default location for the configuration file.
|
||||
.RE
|
||||
|
||||
.B /sys/bus/dahdi_devices/devices/\fIdevice\fR
|
||||
.RS
|
||||
SysFS node for the device. In this directory reside the following
|
||||
files, among others:
|
||||
|
||||
.B location
|
||||
.RS
|
||||
The value of the device's location field.
|
||||
.RE
|
||||
|
||||
.B assign_span, unassign_span, auto_assign
|
||||
.RS
|
||||
Write only files for the operations. Used by \fBadd\fR, \fBremove\fR and
|
||||
\fBauto\fR, respectively.
|
||||
.RE
|
||||
|
||||
.RE
|
||||
|
||||
.SH SEE ALSO
|
||||
span_types(8), dahdi_genconf(8), dahdi_cfg(8)
|
||||
|
||||
.SH AUTHOR
|
||||
span_assignments was written by Oron Peled. This manual page was
|
||||
written by Tzafrir Cohen. 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.
|
||||
|
||||
146
doc/span_types.8
Normal file
146
doc/span_types.8
Normal file
@@ -0,0 +1,146 @@
|
||||
.TH "SPAN_TYPES" "8" "13 Oct 2013" "" ""
|
||||
|
||||
.SH NAME
|
||||
span_types \- set DAHDI spans properties before registration (E1/T1)
|
||||
.SH SYNOPSIS
|
||||
|
||||
.B span_types <list|dumpconfig|set> [\fIdevpath \fB[\fIdevpath \fB...]]
|
||||
|
||||
.SH DESCRIPTION
|
||||
The span type (E1/T1/J1) must be set to a span before registering it
|
||||
with DAHDI, as E1 spans use more channels. \fBspan_types\fR applies the
|
||||
span type configuration to an unregistered span.
|
||||
|
||||
Using it only makes sense when the kernel module parameter
|
||||
\fBdahdi.auto_assign_span\fR is unset, otherwise the DAHDI spans register
|
||||
automatically.
|
||||
|
||||
.SH OPTIONS
|
||||
.B span_types
|
||||
takes a command and an optional list of devices. If no device is given,
|
||||
the command is applied to all devices.
|
||||
|
||||
The device is marked as a path in the SysFS tree.
|
||||
|
||||
.B set
|
||||
.RS
|
||||
Reads settings from \fBspan-types.conf\fR and applies them to the
|
||||
device(s) specified in the command line (or all devices, if none
|
||||
specified).
|
||||
.RE
|
||||
|
||||
.B list
|
||||
.RS
|
||||
List types for all spans in the system which may be set with span_types
|
||||
(E1/T1/J1 spans).
|
||||
.RE
|
||||
|
||||
.B dumpconfig
|
||||
.RS
|
||||
List types for the spans in a format fit to be used in
|
||||
\fBspan-types.conf\fR. Use this to generate a configuration file after
|
||||
you have (perhaps manually) set all existing spans.
|
||||
|
||||
.B dahdi_genconf spantypes
|
||||
uses this command internally.
|
||||
.RE
|
||||
|
||||
.SH CONFIGURATION
|
||||
.B span-types.conf
|
||||
is a file with lines specifying registration of spans.
|
||||
|
||||
Empty lines or lines beginning with '#' are ignored.
|
||||
|
||||
Each line is in the format of:
|
||||
|
||||
.I ID spanspec ...
|
||||
|
||||
The \fIID\fR field specifies the DAHDI device and the \fIspanspecs\fR
|
||||
define how to register its spans. A line may have multiple
|
||||
\fIspanspecs\fR in a single line (though dumpconfig generates a
|
||||
configuration with one per line).
|
||||
|
||||
.SS Span Identifier
|
||||
A DAHDI device may be specified either by a hardware identifier (a
|
||||
software readable serial number or whatever) or the location in which
|
||||
it is installed on the system. The former makes it simpler to change
|
||||
connector / slot whereas the latter makes it simpler to replace a unit.
|
||||
|
||||
The value in this field is matched (when the commands \fBadd\fR and
|
||||
\fBremove\fR) are used) to the following values:
|
||||
|
||||
\fIhwid\fR
|
||||
\fB@\fIlocation\fR
|
||||
\fIdevpath\fR
|
||||
|
||||
See above for their descriptions. The value may include shell wildcards:
|
||||
*, ? and [], which are used in the match. The values to be matched are
|
||||
first cleaned up: '!' is replaced with '/' and any character beyond
|
||||
"a-zA-Z0-9/:.-" is removed.
|
||||
|
||||
.SS Span Specification
|
||||
|
||||
Each line should have one or more span specifications: this is the value
|
||||
used to register a span with DAHDI in the SysFS interface. A
|
||||
specification has three colon-separated numbers:
|
||||
|
||||
.I rel_span_no:span_type
|
||||
|
||||
for instance, the following are four span specifications specify ports 1 and 2 as E1 and ports 3 and 4 as T1: [12]:E1 [34]:T1 .
|
||||
|
||||
.B rel_span_no
|
||||
.RS
|
||||
The relative number of the span in the device. E.g.: port number.
|
||||
.RE
|
||||
|
||||
.B span_type
|
||||
.RS
|
||||
E1/T1/J1
|
||||
.RE
|
||||
|
||||
|
||||
.SH ENVIRONMENT
|
||||
|
||||
.B DAHDICONFDIR
|
||||
.RS
|
||||
The directory in which span-types.conf resides. /etc/dahdi if not
|
||||
overridden from the environment.
|
||||
.RE
|
||||
|
||||
.B span_types_conf
|
||||
.RS
|
||||
The path to span-types.conf resides. /etc/dahdi/span-types.conf if
|
||||
not overridden from the environment.
|
||||
.RE
|
||||
|
||||
|
||||
.SH FILES
|
||||
|
||||
.B /etc/dahdi/span-types.conf
|
||||
.RS
|
||||
The default location for the configuration file.
|
||||
.RE
|
||||
|
||||
.B /sys/bus/dahdi_devices/devices/\fIdevice\fR
|
||||
.RS
|
||||
SysFS node for the device. In this directory reside the following
|
||||
files, among others:
|
||||
|
||||
.B spantype
|
||||
.RS
|
||||
read/write file. Reading from it returns current configuration for spans
|
||||
of the device. Span-specifications can be written to it to change types
|
||||
(but only for a span that is not registered).
|
||||
.RE
|
||||
|
||||
|
||||
.SH SEE ALSO
|
||||
span_assignments(8), dahdi_genconf(8), dahdi_cfg(8)
|
||||
|
||||
.SH AUTHOR
|
||||
span_types was written by Oron Peled. This manual page was
|
||||
written by Tzafrir Cohen. 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.
|
||||
|
||||
@@ -2,7 +2,8 @@
|
||||
#
|
||||
# /usr/share/dahdi/handle_device
|
||||
#
|
||||
# Called by UDEV when a span goes online/offline to assign spans
|
||||
# Called by UDEV when a dahdi device is added/removed
|
||||
#
|
||||
|
||||
me=`basename $0`
|
||||
dir=`dirname $0`
|
||||
@@ -22,26 +23,45 @@ PATH="$dir:/usr/sbin:/sbin:/usr/bin:/bin"
|
||||
|
||||
set -e
|
||||
|
||||
run_dahdi_cfg() {
|
||||
args="-c $DAHDICONFDIR/system.conf $@"
|
||||
echo "Running dahdi_cfg $args"
|
||||
dahdi_cfg $args
|
||||
}
|
||||
#echo >&2 "$0($ACTION): DEBUG($# args): '$*'"
|
||||
|
||||
echo >&2 "$0($ACTION): DEBUG($# args): '$*'"
|
||||
# Check if we can safely do our job
|
||||
if [ ! -f /sys/module/dahdi/parameters/auto_assign_spans ]; then
|
||||
echo "Old driver (no auto_assign_spans parameter). Skip $DEVPATH" | $LOGGER
|
||||
exit 0
|
||||
fi
|
||||
if [ `cat /sys/module/dahdi/parameters/auto_assign_spans` -eq 1 ]; then
|
||||
echo "auto_assign_spans=1. 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
|
||||
|
||||
case "$ACTION" in
|
||||
add)
|
||||
echo "$ACTION: $DEVPATH" | $LOGGER
|
||||
# FIXME: need a way to add custom environment here:
|
||||
#export DAHDICONFDIR="/tmp/xortel/dahdi"
|
||||
span_types set "/sys/$DEVPATH" 2>&1 | $LOGGER
|
||||
span_assignments add "/sys/$DEVPATH" 2>&1 | $LOGGER
|
||||
dahdi_cfg_device_args | while read args; do
|
||||
run_dahdi_cfg $args 2>&1 | $LOGGER
|
||||
done
|
||||
# Can have alternate dahdi configuration directory for debugging
|
||||
# export DAHDICONFDIR="/tmp/xortel/dahdi"
|
||||
|
||||
# Don't block udev for too long
|
||||
(
|
||||
if [ -r "$DAHDICONFDIR/span-types.conf" ]; then
|
||||
span_types set "/sys$DEVPATH"
|
||||
fi
|
||||
if [ -r "$DAHDICONFDIR/pinned-spans.conf" ]; then
|
||||
span_assignments add "/sys$DEVPATH"
|
||||
else
|
||||
# No configuration. No order guaranteed
|
||||
span_assignments auto
|
||||
fi
|
||||
) 2>&1 < /dev/null | $LOGGER &
|
||||
;;
|
||||
remove)
|
||||
# Nothing to do yet...
|
||||
echo "$ACTION: $DEVPATH" | $LOGGER
|
||||
;;
|
||||
*)
|
||||
|
||||
@@ -13,6 +13,10 @@
|
||||
# Digium TE420: PCI-Express quad-port T1/E1/J1
|
||||
wct4xxp
|
||||
|
||||
# Digium TE435
|
||||
# Digium TE235
|
||||
wcte43x
|
||||
|
||||
# Digium TE120P: PCI single-port T1/E1/J1
|
||||
# Digium TE121: PCI-Express single-port T1/E1/J1
|
||||
# Digium TE122: PCI single-port T1/E1/J1
|
||||
@@ -34,6 +38,9 @@ wcte11xp
|
||||
# Digium TDM410P/AEX410: up to 4 analog ports
|
||||
wctdm24xxp
|
||||
|
||||
# Digium A4A/A4B/A8A/A8B
|
||||
wcaxx
|
||||
|
||||
# X100P - Single port FXO interface
|
||||
# X101P - Single port FXO interface
|
||||
wcfxo
|
||||
|
||||
214
span_assignments
214
span_assignments
@@ -1,41 +1,137 @@
|
||||
#! /bin/sh
|
||||
#
|
||||
# /usr/share/dahdi/span_assignments:
|
||||
# /usr/sbin/span_assignments:
|
||||
#
|
||||
# this script can be used both from udev and
|
||||
# from the command line to assign/unassign and list
|
||||
# current assignments.
|
||||
# current span assignments.
|
||||
#
|
||||
# It uses a configuration file: $DAHDICONFDIR/pinned-spans.conf
|
||||
# (default DAHDICONFDIR=/etc/dahdi)
|
||||
#
|
||||
# The first argument is an action:
|
||||
# "add" to assign (spans which are not already assigned)
|
||||
# "remove" to unassign (spans which are not already unassigned)
|
||||
# "list" to show all spans (with/without assignments)
|
||||
# "auto" - trigger driver auto_assign attribute for given devices
|
||||
# (no configuration file is used)
|
||||
# "add" - assign (spans which are not already assigned), according
|
||||
# to /etc/dahdi/pinned-spans.conf configuration file
|
||||
# "remove" - unassign spans which are not already unassigned
|
||||
# "list" - human-readable list of all spans (with/without assignments)
|
||||
# "dumpconfig" - dump current assignments in a /etc/dahdi/pinned-spans.conf
|
||||
# compatible format
|
||||
#
|
||||
# Without further arguments, it operates on all existing spans
|
||||
# With one or more sysfs dahdi_devices it is limited to those.
|
||||
#
|
||||
# We may use alternative "keys" for device matching:
|
||||
# * Available keys:
|
||||
# - "hwid" - Hardware id attribute from sysfs
|
||||
# - "@location" - Location attribute from sysfs (embeded inside '<>')
|
||||
# - "/devpath" - The sysfs absolute devpath
|
||||
#
|
||||
# * During "dumpconfig", for each device we take the first available key:
|
||||
# - The preference is: "hwid" or else "@location" or else "/devpath"
|
||||
# - This can be overriden via the SPAN_ASSIGNMENTS_KEY environment variable
|
||||
# or the '{-k|--key} key' command line option.
|
||||
#
|
||||
# * During "add":
|
||||
# - Any key match is valid (hwid/location/devpath)
|
||||
# - Shell globs (wildcards: '*', '?', '[...]') may be optionally used.
|
||||
#
|
||||
# Command line options:
|
||||
# - The '-h|--help' show a usage message.
|
||||
# - The '-n|--dry-run' affects the "add" and "remove" operations.
|
||||
# - The '-v|--verbose' currently shows device matches during "add" operation.
|
||||
# - The '-k <key>|--key <key>' overrides the SPAN_ASSIGNMENTS_KEY environment
|
||||
# variable.
|
||||
#
|
||||
# Examples:
|
||||
# span_assignments list
|
||||
# span_assignments add # all
|
||||
# span_assignments add /sys/bus/dahdi_devices/devices/astribanks:xbus-00
|
||||
# span_assignments remove # all
|
||||
# span_assignments add # all unassigned devices
|
||||
# span_assignments add /sys/bus/dahdi_devices/devices/astribanks:xbus-00
|
||||
# span_assignments remove # all assigned devices
|
||||
# span_assignments -k location dumpconfig
|
||||
#
|
||||
|
||||
devbase='/sys/bus/dahdi_devices/devices'
|
||||
DAHDICONFDIR="${DAHDICONFDIR:-/etc/dahdi}"
|
||||
pinned_spans_conf="$DAHDICONFDIR/pinned-spans.conf"
|
||||
SPAN_ASSIGNMENTS_KEY=${SPAN_ASSIGNMENTS_KEY:-hwid}
|
||||
dry_run=
|
||||
verbose=
|
||||
|
||||
usage() {
|
||||
echo >&2 "Usage: $0 {add|remove|list} [devpath ...]"
|
||||
echo >&2 "Usage: $0 [options] action [devpath ...]"
|
||||
echo >&2 " action:"
|
||||
echo >&2 " auto - trigger driver auto_assign attribute for given devices"
|
||||
echo >&2 " add - assign spans, according to /etc/dahdi/pinned-spans.conf"
|
||||
echo >&2 " remove - unassign spans"
|
||||
echo >&2 " list - human-readable list of all spans"
|
||||
echo >&2 " dumpconfig - dump current state as new configuration"
|
||||
echo >&2 ""
|
||||
echo >&2 " options:"
|
||||
echo >&2 " -h|--help - Show this help"
|
||||
echo >&2 " -n|--dry-run - For 'add/remove' actions"
|
||||
echo >&2 " -v|--versbose - Show matches during 'add' action"
|
||||
echo >&2 " -k|--key <k> - Override prefered key during dumpconfig action"
|
||||
exit 1
|
||||
}
|
||||
|
||||
# Parse command line options
|
||||
TEMP=`getopt -o hnvk: --long help,dry-run,verbose,key: -n "$0" -- "$@"`
|
||||
if [ $? != 0 ]; then
|
||||
echo >&2 "Bad options"
|
||||
usage
|
||||
fi
|
||||
|
||||
# Note the quotes around `$TEMP': they are essential!
|
||||
eval set -- "$TEMP"
|
||||
|
||||
while true ; do
|
||||
case "$1" in
|
||||
-h|--help)
|
||||
usage
|
||||
;;
|
||||
-n|--dry-run)
|
||||
dry_run='true'
|
||||
shift
|
||||
;;
|
||||
-v|--verbose)
|
||||
verbose='true'
|
||||
shift
|
||||
;;
|
||||
-k|--key)
|
||||
SPAN_ASSIGNMENTS_KEY="$2"
|
||||
shift
|
||||
shift
|
||||
;;
|
||||
--)
|
||||
shift
|
||||
break
|
||||
;;
|
||||
*)
|
||||
echo "Internal error!"
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
done
|
||||
|
||||
if [ "$#" -eq 0 ]; then
|
||||
echo >&2 "Missing action argument"
|
||||
usage
|
||||
fi
|
||||
action="$1"
|
||||
shift
|
||||
|
||||
# Validate SPAN_ASSIGNMENTS_KEY
|
||||
case "$SPAN_ASSIGNMENTS_KEY" in
|
||||
hwid|location|devpath)
|
||||
;;
|
||||
*)
|
||||
echo >&2 "Bad SPAN_ASSIGNMENTS_KEY='$SPAN_ASSIGNMENTS_KEY' (should be: hwid|location|devpath)"
|
||||
usage
|
||||
;;
|
||||
esac
|
||||
|
||||
if [ ! -d "$devbase" ]; then
|
||||
echo >&2 "$0: Missing '$devbase' (DAHDI driver unloaded?)"
|
||||
exit 1
|
||||
@@ -48,12 +144,18 @@ else
|
||||
DEVICES=`echo $devbase/*`
|
||||
fi
|
||||
|
||||
# Beware of special characters in attributes
|
||||
attr_clean() {
|
||||
cat "$1" 2>/dev/null | tr -d '\n' | tr '!' '/' | tr -c 'a-zA-Z0-9/:.-' '_'
|
||||
}
|
||||
|
||||
show_devices() {
|
||||
|
||||
for device in $DEVICES
|
||||
do
|
||||
hw_id=`cat "$device/hardware_id"`
|
||||
location=`cd "$device" && pwd -P | sed 's,/sys/devices/,,'`
|
||||
devpath=`cd "$device" && pwd -P`
|
||||
location='@'`attr_clean "$device/location"`
|
||||
hardware_id=`attr_clean "$device/hardware_id"`
|
||||
for local_spanno in `cut -d: -f1 "$device/spantype"`
|
||||
do
|
||||
span=`grep 2>/dev/null -Hw "$local_spanno" "$device/span-"*"/local_spanno" | \
|
||||
@@ -66,22 +168,29 @@ show_devices() {
|
||||
spanno='-'
|
||||
basechan='-'
|
||||
fi
|
||||
printf "%-4s %-12s %s\n" "$local_spanno:$spanno:$basechan" "[$hw_id]" "@$location"
|
||||
printf "%-8s %-14s %s %s\n" "$local_spanno:$spanno:$basechan" "[$hardware_id]" "$location" "$devpath"
|
||||
done | sort -n
|
||||
done
|
||||
}
|
||||
|
||||
dump_config() {
|
||||
|
||||
echo '#'
|
||||
echo "# Autogenerated by $0 on `date`"
|
||||
echo "# Map devices + local spans to span + base channel number"
|
||||
echo ''
|
||||
for device in $DEVICES
|
||||
do
|
||||
hw_id=`cat "$device/hardware_id"`
|
||||
location=`cd "$device" && pwd -P | sed 's,/sys/devices/,,'`
|
||||
if [ "$hw_id" != '' ]; then
|
||||
id="$hw_id"
|
||||
else
|
||||
devpath=`cd "$device" && pwd -P`
|
||||
location=`attr_clean "$device/location"`
|
||||
hardware_id=`attr_clean "$device/hardware_id"`
|
||||
if [ "$SPAN_ASSIGNMENTS_KEY" = 'hwid' -a "$hardware_id" != '' ]; then
|
||||
id="$hardware_id"
|
||||
elif [ "$SPAN_ASSIGNMENTS_KEY" = 'location' -a "$location" != '' ]; then
|
||||
id="@$location"
|
||||
else
|
||||
id="$devpath"
|
||||
fi
|
||||
echo "# Device: [$hardware_id] @$location $devpath"
|
||||
for local_spanno in `cut -d: -f1 "$device/spantype"`
|
||||
do
|
||||
span=`grep 2>/dev/null -Hw "$local_spanno" "$device/span-"*"/local_spanno" | \
|
||||
@@ -90,11 +199,12 @@ dump_config() {
|
||||
spanno=`echo $span | sed 's/^.*-//'`
|
||||
name=`cat 2>/dev/null "$device/$span/name"`
|
||||
basechan=`cat 2>/dev/null "$device/$span/basechan"`
|
||||
printf "%-30s %s\n" "$id" "$local_spanno:$spanno:$basechan"
|
||||
else
|
||||
spanno='-'
|
||||
echo "# Skipped unassigned local span $local_spanno"
|
||||
fi
|
||||
printf "%-30s %s\n" "$id" "$local_spanno:$spanno:$basechan"
|
||||
done | sort -n
|
||||
done | sort
|
||||
echo ''
|
||||
done
|
||||
}
|
||||
|
||||
@@ -104,6 +214,10 @@ unassign_all_spans() {
|
||||
find "$device" -follow -maxdepth 1 -name 'span-*' -type d | \
|
||||
sort | while read spandir; do
|
||||
local_spanno=`cat "$spandir/local_spanno"`
|
||||
if [ "$dry_run" = true ]; then
|
||||
echo "(dry-run) unassign $device $local_spanno"
|
||||
continue
|
||||
fi
|
||||
echo "unassign $device $local_spanno"
|
||||
if ! echo "$local_spanno" > "$device/unassign_span"; then
|
||||
echo >&2 "$0: failed unassigning '$local_spanno' in '$device'"
|
||||
@@ -117,11 +231,6 @@ filter_conf() {
|
||||
sed -e 's/#.*//' -e '/^[ \t]*$/d' "$pinned_spans_conf"
|
||||
}
|
||||
|
||||
# Beware of special characters in attributes
|
||||
attr_clean() {
|
||||
cat "$1" | tr -d '\n' | tr '!' '/' | tr -c 'a-zA-Z0-9/:.-' '_'
|
||||
}
|
||||
|
||||
assign_device_spans() {
|
||||
device="$1"
|
||||
for s in $spanspecs
|
||||
@@ -129,12 +238,16 @@ assign_device_spans() {
|
||||
local_spanno=`echo "$s" | cut -d: -f1`
|
||||
spanno=`echo "$s" | cut -d: -f2`
|
||||
span="$device/span-$spanno"
|
||||
if [ "$dry_run" = true ]; then
|
||||
echo "(dry-run) assign $device: $s"
|
||||
continue
|
||||
fi
|
||||
if [ -d "$span" ]; then
|
||||
span_local_spanno=`cat "$span/local_spanno"`
|
||||
if [ "$span_local_spanno" != "$local_spanno" ]; then
|
||||
echo "WARNING: $span_local_spanno != $local_spanno"
|
||||
fi
|
||||
echo "$device [$local_spanno] already assigned to $spanno. Skipping..."
|
||||
echo "$device [$local_spanno] already assigned to span $spanno. Skipping..."
|
||||
continue
|
||||
fi
|
||||
echo "assign $device: $s"
|
||||
@@ -146,21 +259,29 @@ assign_device_spans() {
|
||||
|
||||
match_device() {
|
||||
device="$1"
|
||||
location='@'`cd "$device" && pwd -P | sed 's,/sys/devices/,,'`
|
||||
devpath=`cd "$device" && pwd -P`
|
||||
location='@'`attr_clean "$device/location"`
|
||||
hardware_id=`attr_clean "$device/hardware_id"`
|
||||
filter_conf | while read id spanspecs
|
||||
do
|
||||
# We use case to enable shell-style globbing in configuration
|
||||
case "$location" in
|
||||
case "$hardware_id" in
|
||||
$id)
|
||||
#echo "match location($id ~ $location): $spanspecs"
|
||||
[ "$verbose" = true ] && echo "match by hwid ($id ~ $hardware_id): $spanspecs"
|
||||
assign_device_spans "$device"
|
||||
;;
|
||||
esac
|
||||
# We use case to enable shell-style globbing in configuration
|
||||
case "$hardware_id" in
|
||||
case "$location" in
|
||||
$id)
|
||||
#echo "match hardware_id([$id] ~ $hardware_id): $spanspecs"
|
||||
[ "$verbose" = true ] && echo "match by location ($id ~ $location): $spanspecs"
|
||||
assign_device_spans "$device"
|
||||
;;
|
||||
esac
|
||||
# We use case to enable shell-style globbing in configuration
|
||||
case "$devpath" in
|
||||
$id)
|
||||
[ "$verbose" = true ] && echo "match by devpath ($id ~ $devpath): $spanspecs"
|
||||
assign_device_spans "$device"
|
||||
;;
|
||||
esac
|
||||
@@ -168,18 +289,30 @@ match_device() {
|
||||
}
|
||||
|
||||
assign_devices() {
|
||||
if [ ! -f "$pinned_spans_conf" ]; then
|
||||
echo >&2 "$0: Missing '$pinned_spans_conf'"
|
||||
exit 1
|
||||
fi
|
||||
echo "using '$pinned_spans_conf'"
|
||||
for device in $DEVICES
|
||||
do
|
||||
match_device "$device"
|
||||
done
|
||||
}
|
||||
|
||||
auto_assign_devices() {
|
||||
for device in $DEVICES
|
||||
do
|
||||
echo "auto-assign $device"
|
||||
if [ "$dry_run" != true ]; then
|
||||
echo 1 > "$device/auto_assign"
|
||||
fi
|
||||
done
|
||||
}
|
||||
|
||||
case "$action" in
|
||||
list)
|
||||
show_devices
|
||||
;;
|
||||
dump)
|
||||
dump_config
|
||||
auto)
|
||||
auto_assign_devices
|
||||
;;
|
||||
add)
|
||||
assign_devices
|
||||
@@ -187,7 +320,14 @@ add)
|
||||
remove)
|
||||
unassign_all_spans
|
||||
;;
|
||||
list)
|
||||
show_devices
|
||||
;;
|
||||
dumpconfig)
|
||||
dump_config
|
||||
;;
|
||||
*)
|
||||
echo >&2 "Bad action='$action'"
|
||||
usage
|
||||
;;
|
||||
esac
|
||||
|
||||
84
span_config
Executable file
84
span_config
Executable file
@@ -0,0 +1,84 @@
|
||||
#! /bin/sh
|
||||
#
|
||||
# /usr/share/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): '$*'"
|
||||
|
||||
# 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>"
|
||||
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
|
||||
|
||||
# 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
|
||||
|
||||
65
span_types
65
span_types
@@ -1,34 +1,36 @@
|
||||
#! /bin/sh
|
||||
#
|
||||
# /usr/share/dahdi/span_types:
|
||||
# /usr/sbin/span_types
|
||||
#
|
||||
# this script can be used both from udev and
|
||||
# from the command line for spantype management.
|
||||
# This script can be used both from udev and
|
||||
# from the command line to manage PRI spans
|
||||
# type (E1/T1/J1).
|
||||
#
|
||||
# It use a configuration file /etc/dahdi/spantype.conf
|
||||
# (the format is documented inside this file)
|
||||
# Span types can be set only *BEFORE* span are assigned.
|
||||
#
|
||||
# The first argument is an action:
|
||||
# "list" to show existing E1/T1/J1 types
|
||||
# "dump" the same, but in a format (almost) suitable for
|
||||
# the configuration file
|
||||
# FIXME: we currently don't have the base channo in sysfs.
|
||||
# "set" actually write the setting to the driver
|
||||
# It reads a configuration file /etc/dahdi/span-types.conf
|
||||
# (the format is documented inside that file)
|
||||
#
|
||||
# A mandatory first argument is:
|
||||
# list - to show existing E1/T1/J1 types
|
||||
# dumpconfig - the same, but in a format (almost) suitable
|
||||
# for the configuration file
|
||||
# set - actually write the setting to the driver
|
||||
#
|
||||
# Examples:
|
||||
# span_types list
|
||||
# span_types dump
|
||||
# span_types set # all
|
||||
# span_types dumpconfig
|
||||
# span_types set # all devices
|
||||
# span_types set /sys/bus/dahdi_devices/devices/astribanks:xbus-00
|
||||
#
|
||||
|
||||
|
||||
devbase='/sys/bus/dahdi_devices/devices'
|
||||
DAHDICONFDIR="${DAHDICONFDIR:-/etc/dahdi}"
|
||||
spantype_conf="$DAHDICONFDIR/spantype.conf"
|
||||
spantypes_conf="$DAHDICONFDIR/span-types.conf"
|
||||
|
||||
usage() {
|
||||
echo >&2 "Usage: $0 {list|dump|set} [devpath ...]"
|
||||
echo >&2 "Usage: $0 {list|dumpconfig|set} [devpath ...]"
|
||||
exit 1
|
||||
}
|
||||
|
||||
@@ -38,6 +40,11 @@ fi
|
||||
action="$1"
|
||||
shift
|
||||
|
||||
if [ ! -d "$devbase" ]; then
|
||||
echo >&2 "$0: Missing '$devbase' (DAHDI driver unloaded?)"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Use given devices or otherwise, all existing devices
|
||||
if [ "$#" -gt 0 ]; then
|
||||
DEVICES="$@"
|
||||
@@ -46,19 +53,28 @@ else
|
||||
fi
|
||||
|
||||
show_spantypes() {
|
||||
echo "# PRI span types (E1/T1/J1)"
|
||||
for device in $DEVICES
|
||||
do
|
||||
hw_id=`cat "$device/hardware_id"`
|
||||
location='@'`cd "$device" && pwd -P | sed 's,/sys/devices/,,'`
|
||||
cat "$device/spantype" | while read st; do
|
||||
printf "%-10s %-20s %s\n" "$st" "[$hw_id]" "$location"
|
||||
case "$st" in
|
||||
*:[ETJ]1)
|
||||
printf "%-10s %-20s %s\n" \
|
||||
"$st" "[$hw_id]" "$location"
|
||||
;;
|
||||
esac
|
||||
done | sort -n
|
||||
done
|
||||
}
|
||||
|
||||
dump_config() {
|
||||
echo '#'
|
||||
echo "# Autogenerated by $0 on `date`"
|
||||
echo "# Map PRI DAHDI devices to span types for E1/T1/J1"
|
||||
echo ''
|
||||
fmt="%-65s %s\n"
|
||||
echo "# Map of dahdi_devices to span types for E1/T1/J1"
|
||||
printf "$fmt" '# @location/hardware_id' 'span_type'
|
||||
for device in $DEVICES
|
||||
do
|
||||
@@ -69,19 +85,24 @@ dump_config() {
|
||||
else
|
||||
id="$location"
|
||||
fi
|
||||
#echo "# Device: [$hw_id] $location"
|
||||
cat "$device/spantype" | while read st; do
|
||||
case "$st" in
|
||||
*:[ETJ]1)
|
||||
printf "$fmt" "$id" "$st"
|
||||
;;
|
||||
*)
|
||||
#echo "# Skipped local span `echo $st | sed 's/:/ -- /'`"
|
||||
;;
|
||||
esac
|
||||
done | sort -n
|
||||
#echo ''
|
||||
done
|
||||
}
|
||||
|
||||
# Allow comments and empty lines in config file
|
||||
filter_conf() {
|
||||
sed -e 's/#.*//' -e '/^[ \t]*$/d' "$spantype_conf"
|
||||
sed -e 's/#.*//' -e '/^[ \t]*$/d' "$spantypes_conf"
|
||||
}
|
||||
|
||||
conf_spans() {
|
||||
@@ -121,7 +142,7 @@ device_set_spantype() {
|
||||
hw_id=`attr_clean "$device/hardware_id"`
|
||||
location='@'`cd "$device" && pwd -P | sed 's,/sys/devices/,,'`
|
||||
spanspecs=`conf_spans "$hw_id" "$location"`
|
||||
echo >&2 "MATCHED($device): $spanspecs"
|
||||
#echo >&2 "MATCHED($device): $spanspecs"
|
||||
cut -d: -f1 "$attr_file" | while read spanno; do
|
||||
for sp in $spanspecs
|
||||
do
|
||||
@@ -138,6 +159,10 @@ device_set_spantype() {
|
||||
}
|
||||
|
||||
set_spantypes() {
|
||||
if [ ! -f "$spantypes_conf" ]; then
|
||||
echo >&2 "$0: Missing configuration '$spantypes_conf'"
|
||||
exit 1
|
||||
fi
|
||||
for device in $DEVICES
|
||||
do
|
||||
device_set_spantype "$device"
|
||||
@@ -148,7 +173,7 @@ case "$action" in
|
||||
list)
|
||||
show_spantypes
|
||||
;;
|
||||
dump)
|
||||
dumpconfig)
|
||||
dump_config
|
||||
;;
|
||||
set)
|
||||
|
||||
@@ -54,7 +54,7 @@ sub generator_list($) {
|
||||
}
|
||||
} else {
|
||||
# No files given. Use the defaults.
|
||||
@genlist = ('system', 'chandahdi');
|
||||
@genlist = ('spantypes', 'pinnedspans', 'system', 'chandahdi');
|
||||
if($gconfig->{'pri_connection_type'} eq 'R2') {
|
||||
push @genlist, 'unicall';
|
||||
}
|
||||
|
||||
@@ -19,11 +19,27 @@ use Dahdi::Xpp::Xpd;
|
||||
use Getopt::Std;
|
||||
|
||||
sub usage {
|
||||
die "Usage: $0 [-s sort_order] [on|off|1|0]\n";
|
||||
die "Usage: $0 [-v] [-R] [-s sort_order] [on|off|1|0]\n";
|
||||
}
|
||||
|
||||
sub check_param {
|
||||
my $param = shift || die;
|
||||
open(F, $param) || return '';
|
||||
my $val = <F>;
|
||||
close F;
|
||||
chomp $val;
|
||||
return $val;
|
||||
}
|
||||
|
||||
my %opts;
|
||||
getopts('s:', \%opts) || usage;
|
||||
getopts('vRs:', \%opts) || usage;
|
||||
|
||||
my $dahdi_autoreg = check_param('/sys/module/xpp/parameters/dahdi_autoreg') eq 'Y';
|
||||
my $auto_assign_spans = check_param('/sys/module/dahdi/parameters/auto_assign_spans') eq '1';
|
||||
my $pinned_spans_config = $ENV{'PINNED_SPANS_CONF_FILE'} || '/etc/dahdi/pinned-spans.conf';
|
||||
my $span_types_config = $ENV{'SPAN_TYPES_CONF_FILE'} || '/etc/dahdi/span-types.conf';
|
||||
my $have_pinned_spans_config = -f $pinned_spans_config || 0;
|
||||
my $have_span_types_config = -f $span_types_config || 0;
|
||||
|
||||
my $sorter;
|
||||
my $sort_order = $opts{'s'};
|
||||
@@ -41,9 +57,11 @@ if(defined $sort_order) {
|
||||
|
||||
@ARGV == 0 or @ARGV == 1 or usage;
|
||||
my $on = shift;
|
||||
my $verbose = 0;
|
||||
my $verbose = $opts{'v'};
|
||||
my $should_output = 1;
|
||||
|
||||
#print "dahdi_autoreg=$dahdi_autoreg auto_assign_spans=$auto_assign_spans have_pinned_spans_config='$have_pinned_spans_config' have_span_types_config='$have_span_types_config'\n";
|
||||
|
||||
if(defined($on)) { # Translate to booleans
|
||||
$on = uc($on);
|
||||
$on =~ /^(ON|OFF|1|0)$/ or usage;
|
||||
@@ -51,6 +69,8 @@ if(defined($on)) { # Translate to booleans
|
||||
$should_output = 0 unless $verbose;
|
||||
}
|
||||
|
||||
undef $on if $dahdi_autoreg and not $opts{'R'};
|
||||
|
||||
sub state2str($) {
|
||||
return (shift)?"on":"off";
|
||||
}
|
||||
@@ -80,6 +100,15 @@ foreach my $xbus (Dahdi::Xpp::xbuses($sorter)) {
|
||||
}
|
||||
myprintf "%3s ==> %3s\n", state2str($prev), state2str($on);
|
||||
}
|
||||
if (defined($on) && $on && ! $have_pinned_spans_config && ! $auto_assign_spans) {
|
||||
# Emulate /etc/dahdi/pinned-spans.conf:
|
||||
# - We iterate over $xbus according to /etc/dahdi/xpp_order
|
||||
# - We "auto" assign all spans of current $xbus
|
||||
my $devpath = sprintf "/sys/bus/dahdi_devices/devices/astribanks:xbus-%02d", $xbus->num;
|
||||
my @cmd = ('span_assignments', 'auto', $devpath);
|
||||
system @cmd;
|
||||
warn "Failed '@cmd' (status=$?)\n" if $?;
|
||||
}
|
||||
}
|
||||
myprintf "# Sorted: $sort_order\n" if defined $sort_order;
|
||||
|
||||
@@ -91,7 +120,7 @@ dahdi_registration - Handle registration of Xorcom XPD modules in dahdi.
|
||||
|
||||
=head1 SYNOPSIS
|
||||
|
||||
dahdi_registration [-s sortorder] [on|off]
|
||||
dahdi_registration [-v] [-s sortorder] [-R] [on|off]
|
||||
|
||||
=head1 DESCRIPTION
|
||||
|
||||
@@ -105,6 +134,13 @@ Span registration should generally always succeed. Span unregistration may
|
||||
fail if channels from the span are in use by e.g. asterisk. In such a case
|
||||
you'll also see those channels as '(In use)' in the output of lsdahdi(8).
|
||||
|
||||
dahdi_registration is intended to be used when the kernel module parameter
|
||||
B<xpp.dahdi_autoreg> is false (and implicitly: when the module parameter
|
||||
B<dahdi.auto_assign_span> is true). See also the NOTES section regarding
|
||||
C<span_assignments>.
|
||||
|
||||
If dahdi_autoreg is true, the program will normally do nothing.
|
||||
|
||||
=head2 Parameters
|
||||
|
||||
off -- deregisters all XPD's from dahdi.
|
||||
@@ -115,6 +151,15 @@ on -- registers all XPD's to dahdi.
|
||||
|
||||
=over
|
||||
|
||||
=item -v
|
||||
|
||||
verbose output.
|
||||
|
||||
=item -R
|
||||
|
||||
Force operations (on/off) even if the module parameter B<dahdi_autoreg>
|
||||
for xpp is enabled (which makes this program unneeded).
|
||||
|
||||
=item -s I<sort_order>
|
||||
|
||||
The sort order to use.
|
||||
@@ -165,3 +210,30 @@ This should allow you to register / unregister a specific XPD rather
|
||||
than all of them.
|
||||
|
||||
=back
|
||||
|
||||
=head1 NOTES
|
||||
|
||||
dahdi_registration is intended to be used when the kernel module
|
||||
parameter B<xpp.dahdi_autoreg> is false (and implicitly: when the module
|
||||
parameter B<dahdi.auto_assign_span> is true), that is, Astribank devices
|
||||
as detected by XPP (xbus / xpd) do not register automatically with the
|
||||
DAHDI core. This tool is used to register tem in an explicit order. It
|
||||
works well, but only if you can arange for all of the Astribanks of the
|
||||
system to be available (and not already registered) at a specific point
|
||||
in time.
|
||||
|
||||
Newer versions of DAHDI added support for registering a span to a
|
||||
specific span/channelss numbers specification. This allows registering
|
||||
them out of order. To use this capability, the module parameter
|
||||
B<dahdi.auto_assign_span> should be unset (set to 0) and thus spans of
|
||||
detected DAHDI devices could be registered using C<span_assignments>
|
||||
(which may also be run automatically from a udev hook).
|
||||
|
||||
In this case there is no point in delaying XPP device registration with
|
||||
dahdi and the parameter B<xpp.dahdi_autoreg> should be set.
|
||||
dahdi_registration will simply become a no-op.
|
||||
|
||||
=head1 SEE ALSO
|
||||
|
||||
B<dahdi_cfg>(8), B<span_assignments>(8).
|
||||
|
||||
|
||||
@@ -143,7 +143,7 @@ sub new($$$$$$) {
|
||||
$type = "FXO"; # likely Rhino
|
||||
} elsif ($fqn =~ m{---/.*}) {
|
||||
$type = "EMPTY"; # likely Rhino, empty slot.
|
||||
} elsif ($fqn =~ m{\b(TE[24]|WCT1|WCT13x|Tor2|TorISA|WP[TE]1|cwain[12]|R[124]T1|AP40[124]|APE40[124])/.*}) {
|
||||
} elsif ($fqn =~ m{\b(WCTE|TE[24]|WCT1|WCT13x|Tor2|TorISA|WP[TE]1|cwain[12]|R[124]T1|AP40[124]|APE40[124])/.*}) {
|
||||
# TE[24]: Digium wct4xxp
|
||||
# WCT1: Digium single span card drivers?
|
||||
# Tor2: Tor PCI cards
|
||||
|
||||
63
xpp/perl_modules/Dahdi/Config/Gen/Pinnedspans.pm
Normal file
63
xpp/perl_modules/Dahdi/Config/Gen/Pinnedspans.pm
Normal file
@@ -0,0 +1,63 @@
|
||||
package Dahdi::Config::Gen::Pinnedspans;
|
||||
use strict;
|
||||
|
||||
use Dahdi::Config::Gen qw(is_true);
|
||||
|
||||
sub new($$$) {
|
||||
my $pack = shift || die;
|
||||
my $gconfig = shift || die;
|
||||
my $genopts = shift || die;
|
||||
my $file = $ENV{PINNED_SPANS_CONF_FILE} || "/etc/dahdi/pinned-spans.conf";
|
||||
my $self = {
|
||||
FILE => $file,
|
||||
GCONFIG => $gconfig,
|
||||
GENOPTS => $genopts,
|
||||
};
|
||||
bless $self, $pack;
|
||||
return $self;
|
||||
}
|
||||
|
||||
sub generate($$$) {
|
||||
my $self = shift || die;
|
||||
my $file = $self->{FILE};
|
||||
my $gconfig = $self->{GCONFIG};
|
||||
my $genopts = $self->{GENOPTS};
|
||||
my @spans = @_;
|
||||
|
||||
# If the span_types utilities were not installed we do not want to run
|
||||
# this generator or report any errors.
|
||||
system "which span_assignments > /dev/null 2>&1";
|
||||
return if $?;
|
||||
|
||||
warn "Empty configuration -- no spans\n" unless @spans;
|
||||
rename "$file", "$file.bak"
|
||||
or $! == 2 # ENOENT (No dependency on Errno.pm)
|
||||
or die "Failed to backup old config: $!\n";
|
||||
#$gconfig->dump;
|
||||
print "Generating $file\n" if $genopts->{verbose};
|
||||
my $cmd = "span_assignments dumpconfig > $file";
|
||||
system $cmd;
|
||||
die "Command failed (status=$?): '$cmd'" if $?;
|
||||
}
|
||||
|
||||
1;
|
||||
|
||||
__END__
|
||||
|
||||
=head1 NAME
|
||||
|
||||
dahdi - Generate configuration for dahdi drivers.
|
||||
|
||||
=head1 SYNOPSIS
|
||||
|
||||
use Dahdi::Config::Gen::Dahdi;
|
||||
|
||||
my $cfg = new Dahdi::Config::Gen::Dahdi(\%global_config, \%genopts);
|
||||
$cfg->generate(@span_list);
|
||||
|
||||
=head1 DESCRIPTION
|
||||
|
||||
Generate the F</etc/dahdi/pinned-spans.conf>.
|
||||
This is the configuration for span_assignments.
|
||||
|
||||
Its location may be overriden via the environment variable F<PINNED_SPANS_CONF_FILE>.
|
||||
63
xpp/perl_modules/Dahdi/Config/Gen/Spantypes.pm
Normal file
63
xpp/perl_modules/Dahdi/Config/Gen/Spantypes.pm
Normal file
@@ -0,0 +1,63 @@
|
||||
package Dahdi::Config::Gen::Spantypes;
|
||||
use strict;
|
||||
|
||||
use Dahdi::Config::Gen qw(is_true);
|
||||
|
||||
sub new($$$) {
|
||||
my $pack = shift || die;
|
||||
my $gconfig = shift || die;
|
||||
my $genopts = shift || die;
|
||||
my $file = $ENV{SPAN_TYPES_CONF_FILE} || "/etc/dahdi/span-types.conf";
|
||||
my $self = {
|
||||
FILE => $file,
|
||||
GCONFIG => $gconfig,
|
||||
GENOPTS => $genopts,
|
||||
};
|
||||
bless $self, $pack;
|
||||
return $self;
|
||||
}
|
||||
|
||||
sub generate($$$) {
|
||||
my $self = shift || die;
|
||||
my $file = $self->{FILE};
|
||||
my $gconfig = $self->{GCONFIG};
|
||||
my $genopts = $self->{GENOPTS};
|
||||
my @spans = @_;
|
||||
|
||||
# If the span_types utilities were not installed we do not want to run
|
||||
# this generator or report any errors.
|
||||
system "which span_types > /dev/null 2>&1";
|
||||
return if $?;
|
||||
|
||||
warn "Empty configuration -- no spans\n" unless @spans;
|
||||
rename "$file", "$file.bak"
|
||||
or $! == 2 # ENOENT (No dependency on Errno.pm)
|
||||
or die "Failed to backup old config: $!\n";
|
||||
#$gconfig->dump;
|
||||
print "Generating $file\n" if $genopts->{verbose};
|
||||
my $cmd = "span_types dumpconfig > $file";
|
||||
system $cmd;
|
||||
die "Command failed (status=$?): '$cmd'" if $?;
|
||||
}
|
||||
|
||||
1;
|
||||
|
||||
__END__
|
||||
|
||||
=head1 NAME
|
||||
|
||||
dahdi - Generate configuration for dahdi drivers.
|
||||
|
||||
=head1 SYNOPSIS
|
||||
|
||||
use Dahdi::Config::Gen::Dahdi;
|
||||
|
||||
my $cfg = new Dahdi::Config::Gen::Dahdi(\%global_config, \%genopts);
|
||||
$cfg->generate(@span_list);
|
||||
|
||||
=head1 DESCRIPTION
|
||||
|
||||
Generate the F</etc/dahdi/span-types.conf>.
|
||||
This is the configuration for span_types.
|
||||
|
||||
Its location may be overriden via the environment variable F<SPAN_TYPES_CONF_FILE>.
|
||||
@@ -97,6 +97,15 @@ my %pci_ids = (
|
||||
'd161:800a' => { DRIVER => 'wcte13xp', DESCRIPTION => 'Wildcard TE133' },
|
||||
'd161:800b' => { DRIVER => 'wcte13xp', DESCRIPTION => 'Wildcard TE134' },
|
||||
|
||||
# from wcaxx
|
||||
'd161:800c' => { DRIVER => 'wcaxx', DESCRIPTION => 'Digium A8A' },
|
||||
'd161:800d' => { DRIVER => 'wcaxx', DESCRIPTION => 'Digium A8B' },
|
||||
'd161:800f' => { DRIVER => 'wcaxx', DESCRIPTION => 'Digium A4A' },
|
||||
'd161:8010' => { DRIVER => 'wcaxx', DESCRIPTION => 'Digium A4B' },
|
||||
|
||||
# from wcte435/235
|
||||
'd161:800e' => { DRIVER => 'wcte43x', DESCRIPTION => 'Wildcard TE435/235' },
|
||||
|
||||
# from wcb4xxp
|
||||
'd161:b410' => { DRIVER => 'wcb4xxp', DESCRIPTION => 'Digium Wildcard B410P' },
|
||||
|
||||
|
||||
@@ -147,6 +147,8 @@ my @pri_strings = (
|
||||
'Wildcard TE133', # wcte13xp
|
||||
'Wildcard TE134', # wcte13xp
|
||||
'T[248]XXP \(PCI\) Card ', # wct4xxp
|
||||
'WCTE43X \(PCI\) Card ', # wcte43xp
|
||||
'WCTE23X \(PCI\) Card ', # wcte43xp
|
||||
'R[24]T1 \(PCI\) Card', # rxt1
|
||||
'Rhino R1T1 (E1)/PRA Card', # r1t1
|
||||
'Rhino R1T1 (T1)/PRI Card', # r1t1
|
||||
|
||||
@@ -217,12 +217,14 @@ usb_firmware_device() {
|
||||
id_str="$1"
|
||||
devpath="$2"
|
||||
|
||||
bcd_device=`echo "$id_str" | cut -d/ -f3`
|
||||
|
||||
case "$id_str" in
|
||||
e4e4/11[3456]0/101|e4e4/1163/101)
|
||||
fw="USB_FW.hex"
|
||||
;;
|
||||
e4e4/116[03]/201)
|
||||
fw="USB_FW.201.hex"
|
||||
e4e4/116[03]/20?)
|
||||
fw="USB_FW.${bcd_device}.hex"
|
||||
;;
|
||||
e4e4/*)
|
||||
debug "No USB firmware for device $devpath ($id_str)"
|
||||
@@ -332,7 +334,7 @@ fpga_firmware_device() {
|
||||
e4e4/11[456]1/101)
|
||||
fw="FPGA_${id_product}.hex"
|
||||
;;
|
||||
e4e4/1161/201)
|
||||
e4e4/1161/20?)
|
||||
fw="FPGA_${id_product}.${bcd_device}.hex"
|
||||
;;
|
||||
e4e4/*)
|
||||
|
||||
Reference in New Issue
Block a user