[Pkg-voip-commits] r10313 - in /dahdi-tools/trunk/debian: ./ patches/ patches/hotplug/

tzafrir at alioth.debian.org tzafrir at alioth.debian.org
Wed Oct 2 19:10:56 UTC 2013


Author: tzafrir
Date: Wed Oct  2 19:10:56 2013
New Revision: 10313

URL: http://svn.debian.org/wsvn/pkg-voip/?sc=1&rev=10313
Log:
Patches for hotplug support

Add hotplug patches (an experimental git branch) - fixes to scriptary.

Added:
    dahdi-tools/trunk/debian/patches/hotplug/
    dahdi-tools/trunk/debian/patches/hotplug/0001-Newer-version-of-DAHDI-hotplug-scripts.patch
    dahdi-tools/trunk/debian/patches/hotplug/0002-handle_device-don-t-fail-if-no-config-files.patch
    dahdi-tools/trunk/debian/patches/hotplug/0003-remove-unused-dahdi_cfg_device_args.patch
    dahdi-tools/trunk/debian/patches/hotplug/0004-add-new-dahdi_genconf-generators.patch
    dahdi-tools/trunk/debian/patches/hotplug/0005-Augment-dahdi_genconf-default-generators-list.patch
    dahdi-tools/trunk/debian/patches/hotplug/0006-Do-the-Right-Thing-when-there-s-no-config.patch
    dahdi-tools/trunk/debian/patches/hotplug/0007-span_assignments-k-keys-and-more.patch
    dahdi-tools/trunk/debian/patches/hotplug/0008-dahdi_registration-adapt-to-pinned-spans.patch
Modified:
    dahdi-tools/trunk/debian/changelog
    dahdi-tools/trunk/debian/patches/series

Modified: dahdi-tools/trunk/debian/changelog
URL: http://svn.debian.org/wsvn/pkg-voip/dahdi-tools/trunk/debian/changelog?rev=10313&op=diff
==============================================================================
--- dahdi-tools/trunk/debian/changelog	(original)
+++ dahdi-tools/trunk/debian/changelog	Wed Oct  2 19:10:56 2013
@@ -5,6 +5,8 @@
   * Upstream init script will no longer barf if no DAHDI modules on system
     (Closes: #706046).
   * Only build on Linux. At least until someone packages dahdi-kfreebsd.
+  * hotplug support:
+    - Add hotplug patches (an experimental git branch) - fixes to scriptary.
 
   [ Mark Purcell ]
   * New upstream release.

Added: dahdi-tools/trunk/debian/patches/hotplug/0001-Newer-version-of-DAHDI-hotplug-scripts.patch
URL: http://svn.debian.org/wsvn/pkg-voip/dahdi-tools/trunk/debian/patches/hotplug/0001-Newer-version-of-DAHDI-hotplug-scripts.patch?rev=10313&op=file
==============================================================================
--- dahdi-tools/trunk/debian/patches/hotplug/0001-Newer-version-of-DAHDI-hotplug-scripts.patch	(added)
+++ dahdi-tools/trunk/debian/patches/hotplug/0001-Newer-version-of-DAHDI-hotplug-scripts.patch	Wed Oct  2 19:10:56 2013
@@ -0,0 +1,488 @@
+From 00af777a979de1b50f09461bd5645d199682f8ad Mon Sep 17 00:00:00 2001
+From: Oron Peled <oron.peled at xorcom.com>
+Date: Mon, 23 Sep 2013 13:59:14 +0200
+Subject: [PATCH 1/9] Newer version of DAHDI hotplug scripts
+
+A newer version of the scripts fully adapted to pinned spans:
+* handle_device does not run dahdi_cfg.
+* A separate UDEV rule script for that: span_config. Should also work
+  for the non-pinned case.
+* span_assignments, span_types: add actions 'auto' (manually enable all)
+  and 'dumpconfig' (dump current status in the format of configuration
+  file).
+* Fixed name of span_types and span_assignments (no '-').
+* spantype.conf renamed span-types.conf: configuration files do have a
+  dash.
+* Those two are useful programs, insstalled to /usr/sbin.
+
+Signed-off-by: Tzafrir Cohen <tzafrir.cohen at xorcom.com>
+---
+ Makefile         |    5 ++--
+ dahdi.rules      |    1 +
+ handle_device    |   41 +++++++++++++++++++++-----------
+ span_assignments |   65 ++++++++++++++++++++++++++++++++++++--------------
+ span_config      |   70 ++++++++++++++++++++++++++++++++++++++++++++++++++++++
+ span_types       |   65 ++++++++++++++++++++++++++++++++++----------------
+ 6 files changed, 192 insertions(+), 55 deletions(-)
+ create mode 100755 span_config
+
+diff --git a/Makefile b/Makefile
+index 54bdefa..9bfa294 100644
+--- a/Makefile
++++ b/Makefile
+@@ -104,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:=dahdi_map span_assignments span_types
+ PINNED_CONF:=pinned-spans.conf spantype.conf
+ 
+ TEST_BINS:=patgen pattest patlooptest hdlcstress hdlctest hdlcgen hdlcverify timertest dahdi_maint
+diff --git a/dahdi.rules b/dahdi.rules
+index ef08fd3..8674cd1 100644
+--- a/dahdi.rules
++++ b/dahdi.rules
+@@ -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"
+diff --git a/handle_device b/handle_device
+index 59d0f62..498ebf0 100755
+--- a/handle_device
++++ b/handle_device
+@@ -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,38 @@ 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): '$*'"
++
++# 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
+ 
+-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
+ 
+ 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
++	(
++		span_types set "/sys$DEVPATH"
++		span_assignments add "/sys$DEVPATH"
++	) 2>&1 < /dev/null | $LOGGER &
+ 	;;
+ remove)
++	# Nothing to do yet...
+ 	echo "$ACTION: $DEVPATH" | $LOGGER
+ 	;;
+ *)
+diff --git a/span_assignments b/span_assignments
+index 0f4e006..8f29d39 100755
+--- a/span_assignments
++++ b/span_assignments
+@@ -1,15 +1,23 @@
+ #! /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.
+@@ -26,7 +34,7 @@ DAHDICONFDIR="${DAHDICONFDIR:-/etc/dahdi}"
+ pinned_spans_conf="$DAHDICONFDIR/pinned-spans.conf"
+ 
+ usage() {
+-	echo >&2 "Usage: $0 {add|remove|list} [devpath ...]"
++	echo >&2 "Usage: $0 {auto|add|remove|list|dumpconfig} [devpath ...]"
+ 	exit 1
+ }
+ 
+@@ -66,22 +74,26 @@ show_devices() {
+ 				spanno='-'
+ 				basechan='-'
+ 			fi
+-			printf "%-4s %-12s %s\n" "$local_spanno:$spanno:$basechan" "[$hw_id]" "@$location"
++			printf "%-8s %-14s %s\n" "$local_spanno:$spanno:$basechan" "[$hw_id]" "@$location"
+ 		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/,,'`
++		location='@'`cd "$device" && pwd -P | sed 's,/sys/devices/,,'`
+ 		if [ "$hw_id" != '' ]; then
+ 			id="$hw_id"
+ 		else
+-			id="@$location"
++			id="$location"
+ 		fi
++		echo "# Device: [$hw_id] $location"
+ 		for local_spanno in `cut -d: -f1 "$device/spantype"`
+ 		do
+ 			span=`grep 2>/dev/null -Hw "$local_spanno" "$device/span-"*"/local_spanno" | \
+@@ -90,11 +102,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
+ }
+ 
+@@ -168,18 +181,28 @@ 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"
++		echo 1 > "$device/auto_assign"
++	done
++}
++
+ case "$action" in
+-list)
+-	show_devices
+-	;;
+-dump)
+-	dump_config
++auto)
++	auto_assign_devices
+ 	;;
+ add)
+ 	assign_devices
+@@ -187,6 +210,12 @@ add)
+ remove)
+ 	unassign_all_spans
+ 	;;
++list)
++	show_devices
++	;;
++dumpconfig)
++	dump_config
++	;;
+ *)
+ 	usage
+ 	;;
+diff --git a/span_config b/span_config
+new file mode 100755
+index 0000000..8500d46
+--- /dev/null
++++ b/span_config
+@@ -0,0 +1,70 @@
++#! /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() {
++	span_devpath="$1"
++	# Sanity check
++	checkit=`"dahdi_cfg" --help 2>&1 | grep -- '-S' | wc -l`
++	if [ "$checkit" != 1 ]; then
++		$LOGGER "Bad dahdi_cfg (no -S support). Skipping"
++		exit 0
++	fi
++	spanno=`echo "$span_devpath" | sed 's,.*/span-,,'`
++	basechan=`cat "$span_devpath/basechan"`
++	channels=`cat "$span_devpath/channels"`
++	endchan=`expr "$basechan" + "$channels" - 1`
++	echo "dahdi_cfg: span $spanno <$basechan-$endchan>"
++	dahdi_cfg \
++		-c "$DAHDICONFDIR/system.conf" \
++		-S "$spanno" \
++		-C "$basechan-$endchan"
++	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"
++
++	run_dahdi_cfg "/sys$DEVPATH" 2>&1 | $LOGGER
++	;;
++remove)
++	# Nothing to do yet...
++	echo "$ACTION: $DEVPATH" | $LOGGER
++	;;
++*)
++	echo "UNHANDLED: $ACTION: $DEVPATH" | $LOGGER
++	;;
++esac
++
+diff --git a/span_types b/span_types
+index cf7c70d..74d18f1 100755
+--- a/span_types
++++ b/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)
+-- 
+1.7.10.4
+

Added: dahdi-tools/trunk/debian/patches/hotplug/0002-handle_device-don-t-fail-if-no-config-files.patch
URL: http://svn.debian.org/wsvn/pkg-voip/dahdi-tools/trunk/debian/patches/hotplug/0002-handle_device-don-t-fail-if-no-config-files.patch?rev=10313&op=file
==============================================================================
--- dahdi-tools/trunk/debian/patches/hotplug/0002-handle_device-don-t-fail-if-no-config-files.patch	(added)
+++ dahdi-tools/trunk/debian/patches/hotplug/0002-handle_device-don-t-fail-if-no-config-files.patch	Wed Oct  2 19:10:56 2013
@@ -0,0 +1,34 @@
+From 52488d66fa209fef71ae58fb6185e2d855769b04 Mon Sep 17 00:00:00 2001
+From: Tzafrir Cohen <tzafrir.cohen at xorcom.com>
+Date: Mon, 23 Sep 2013 20:43:25 +0300
+Subject: [PATCH 2/9] handle_device: don't fail if no config files
+
+Allow the udev rule to work well even if there's no span-types.conf
+
+Signed-off-by: Tzafrir Cohen <tzafrir.cohen at xorcom.com>
+---
+ handle_device |    8 ++++++--
+ 1 file changed, 6 insertions(+), 2 deletions(-)
+
+diff --git a/handle_device b/handle_device
+index 498ebf0..a25c921 100755
+--- a/handle_device
++++ b/handle_device
+@@ -49,8 +49,12 @@ add)
+ 
+ 	# Don't block udev for too long
+ 	(
+-		span_types set "/sys$DEVPATH"
+-		span_assignments add "/sys$DEVPATH"
++		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"
++		fi
+ 	) 2>&1 < /dev/null | $LOGGER &
+ 	;;
+ remove)
+-- 
+1.7.10.4
+

Added: dahdi-tools/trunk/debian/patches/hotplug/0003-remove-unused-dahdi_cfg_device_args.patch
URL: http://svn.debian.org/wsvn/pkg-voip/dahdi-tools/trunk/debian/patches/hotplug/0003-remove-unused-dahdi_cfg_device_args.patch?rev=10313&op=file
==============================================================================
--- dahdi-tools/trunk/debian/patches/hotplug/0003-remove-unused-dahdi_cfg_device_args.patch	(added)
+++ dahdi-tools/trunk/debian/patches/hotplug/0003-remove-unused-dahdi_cfg_device_args.patch	Wed Oct  2 19:10:56 2013
@@ -0,0 +1,172 @@
+From 7a1e2223094faeb5c44b7ee499fe97fefab409f0 Mon Sep 17 00:00:00 2001
+From: Oron Peled <oron.peled at xorcom.com>
+Date: Mon, 23 Sep 2013 17:19:03 +0200
+Subject: [PATCH 3/9] remove unused scripts
+
+dahdi_cfg_device_args and dahdi_map are now no longer used.
+
+Signed-off-by: Tzafrir Cohen <tzafrir.cohen at xorcom.com>
+---
+ Makefile              |    2 +-
+ dahdi_cfg_device_args |   32 --------------------------------
+ dahdi_map             |   39 ---------------------------------------
+ doc/dahdi_map.8       |   48 ------------------------------------------------
+ 3 files changed, 1 insertion(+), 120 deletions(-)
+ delete mode 100755 dahdi_cfg_device_args
+ delete mode 100755 dahdi_map
+ delete mode 100644 doc/dahdi_map.8
+
+diff --git a/Makefile b/Makefile
+index 9bfa294..b24f6ef 100644
+--- a/Makefile
++++ b/Makefile
+@@ -105,7 +105,7 @@ endif
+ MAN_PAGES:=$(wildcard $(BINS:%=doc/%.8))
+ 
+ PINNED_DATA_SCRIPTS:=handle_device span_config
+-PINNED_UTILS:=dahdi_map span_assignments span_types
++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
+diff --git a/dahdi_cfg_device_args b/dahdi_cfg_device_args
+deleted file mode 100755
+index de5d557..0000000
+--- a/dahdi_cfg_device_args
++++ /dev/null
+@@ -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
+-- 
+diff --git a/dahdi_map b/dahdi_map
+deleted file mode 100755
+index a95ebae..0000000
+--- a/dahdi_map
++++ /dev/null
+@@ -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
+diff --git a/doc/dahdi_map.8 b/doc/dahdi_map.8
+deleted file mode 100644
+index 80d5d8f..0000000
+--- a/doc/dahdi_map.8
++++ /dev/null
+@@ -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 at 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. 
+-- 
+1.7.10.4
+

Added: dahdi-tools/trunk/debian/patches/hotplug/0004-add-new-dahdi_genconf-generators.patch
URL: http://svn.debian.org/wsvn/pkg-voip/dahdi-tools/trunk/debian/patches/hotplug/0004-add-new-dahdi_genconf-generators.patch?rev=10313&op=file
==============================================================================
--- dahdi-tools/trunk/debian/patches/hotplug/0004-add-new-dahdi_genconf-generators.patch	(added)
+++ dahdi-tools/trunk/debian/patches/hotplug/0004-add-new-dahdi_genconf-generators.patch	Wed Oct  2 19:10:56 2013
@@ -0,0 +1,145 @@
+From 44a5285454166ad798eccf67f120d545a394b2ea Mon Sep 17 00:00:00 2001
+From: Oron Peled <oron.peled at xorcom.com>
+Date: Mon, 23 Sep 2013 17:08:49 +0200
+Subject: [PATCH 4/9] add new dahdi_genconf generators
+
+* pinnedspas: For /etc/dahdi/pinned-spans.conf
+* spantypes: For /etc/dahdi/span-types.conf
+
+Signed-off-by: Tzafrir Cohen <tzafrir.cohen at xorcom.com>
+---
+ xpp/perl_modules/Dahdi/Config/Gen/Pinnedspans.pm |   57 ++++++++++++++++++++++
+ xpp/perl_modules/Dahdi/Config/Gen/Spantypes.pm   |   57 ++++++++++++++++++++++
+ 2 files changed, 114 insertions(+)
+ create mode 100644 xpp/perl_modules/Dahdi/Config/Gen/Pinnedspans.pm
+ create mode 100644 xpp/perl_modules/Dahdi/Config/Gen/Spantypes.pm
+
+diff --git a/xpp/perl_modules/Dahdi/Config/Gen/Pinnedspans.pm b/xpp/perl_modules/Dahdi/Config/Gen/Pinnedspans.pm
+new file mode 100644
+index 0000000..8eaf72d
+--- /dev/null
++++ b/xpp/perl_modules/Dahdi/Config/Gen/Pinnedspans.pm
+@@ -0,0 +1,57 @@
++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 = @_;
++	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>.
+diff --git a/xpp/perl_modules/Dahdi/Config/Gen/Spantypes.pm b/xpp/perl_modules/Dahdi/Config/Gen/Spantypes.pm
+new file mode 100644
+index 0000000..1a31a62
+--- /dev/null
++++ b/xpp/perl_modules/Dahdi/Config/Gen/Spantypes.pm
+@@ -0,0 +1,57 @@
++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 = @_;
++	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>.
+-- 
+1.7.10.4
+

Added: dahdi-tools/trunk/debian/patches/hotplug/0005-Augment-dahdi_genconf-default-generators-list.patch
URL: http://svn.debian.org/wsvn/pkg-voip/dahdi-tools/trunk/debian/patches/hotplug/0005-Augment-dahdi_genconf-default-generators-list.patch?rev=10313&op=file
==============================================================================
--- dahdi-tools/trunk/debian/patches/hotplug/0005-Augment-dahdi_genconf-default-generators-list.patch	(added)
+++ dahdi-tools/trunk/debian/patches/hotplug/0005-Augment-dahdi_genconf-default-generators-list.patch	Wed Oct  2 19:10:56 2013
@@ -0,0 +1,28 @@
+From 1e81ed14cf3691547fcfa276bf0cf321fa1771fa Mon Sep 17 00:00:00 2001
+From: Oron Peled <oron.peled at xorcom.com>
+Date: Mon, 23 Sep 2013 17:11:36 +0200
+Subject: [PATCH 5/9] Augment dahdi_genconf default generators list
+
+Run Add spantypes and pinnedspans generators by default.
+
+Signed-off-by: Tzafrir Cohen <tzafrir.cohen at xorcom.com>
+---
+ xpp/dahdi_genconf |    2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/xpp/dahdi_genconf b/xpp/dahdi_genconf
+index eb55948..bf1a3ca 100755
+--- a/xpp/dahdi_genconf
++++ b/xpp/dahdi_genconf
+@@ -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';
+ 		}
+-- 
+1.7.10.4
+

Added: dahdi-tools/trunk/debian/patches/hotplug/0006-Do-the-Right-Thing-when-there-s-no-config.patch
URL: http://svn.debian.org/wsvn/pkg-voip/dahdi-tools/trunk/debian/patches/hotplug/0006-Do-the-Right-Thing-when-there-s-no-config.patch?rev=10313&op=file
==============================================================================
--- dahdi-tools/trunk/debian/patches/hotplug/0006-Do-the-Right-Thing-when-there-s-no-config.patch	(added)
+++ dahdi-tools/trunk/debian/patches/hotplug/0006-Do-the-Right-Thing-when-there-s-no-config.patch	Wed Oct  2 19:10:56 2013
@@ -0,0 +1,81 @@
+From c8b6356cdf7f5659198e429b642e85eb1c7d9d44 Mon Sep 17 00:00:00 2001
+From: Tzafrir Cohen <tzafrir.cohen at xorcom.com>
+Date: Tue, 1 Oct 2013 22:13:43 +0300
+Subject: [PATCH 6/9] Do the Right Thing when there's no config
+
+Do the "right thing" (hopefully. At least for a system with a single
+device) if there is are no configuration files:
+
+* No span-types.conf: just ignore it as before. It is optional.
+* No pinned-spans.conf: use span_assignments auto (same as having
+  dahdi.auto_assign_spans=1).
+* No system.conf: generate a temporary one with dahdi_genconf.
+
+This will hopefully allow having a partially-working system, and help
+making ut usable with 'span_assignments dumpconfig'. Or maybe just work
+as-is.
+
+Signed-off-by: Tzafrir Cohen <tzafrir.cohen at xorcom.com>
+---
+ handle_device |    3 +++
+ span_config   |   16 ++++++++++++++++
+ 2 files changed, 19 insertions(+)
+
+diff --git a/handle_device b/handle_device
+index a25c921..4a95b7b 100755
+--- a/handle_device
++++ b/handle_device
+@@ -54,6 +54,9 @@ add)
+ 		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 &
+ 	;;
+diff --git a/span_config b/span_config
+index 8500d46..bdbf5d2 100755
+--- a/span_config
++++ b/span_config
+@@ -31,6 +31,14 @@ set -e
+ DAHDICONFDIR='/etc/dahdi'
+ export DAHDICONFDIR
+ 
++is_cfg_tmp=false
++
++gen_dahdi_cfg() {
++	local cfg_file=`mktemp dahdi_system_XXXXXX.cfg`
++	DAHDI_CONF_FILE="$cfg_file" dahdi_genconf system 1>&2
++	echo "$cfg_file"
++}
++
+ run_dahdi_cfg() {
+ 	span_devpath="$1"
+ 	# Sanity check
+@@ -39,6 +47,11 @@ run_dahdi_cfg() {
+ 		$LOGGER "Bad dahdi_cfg (no -S support). Skipping"
+ 		exit 0
+ 	fi
++	cfg_file="$DAHDICONFDIR/system.conf"
++	if [ ! -r "$cfg_file" ]; then
++		cfg_file=`gen_dahdi_cfg`
++		is_cfg_tmp=true
++	fi
+ 	spanno=`echo "$span_devpath" | sed 's,.*/span-,,'`
+ 	basechan=`cat "$span_devpath/basechan"`
+ 	channels=`cat "$span_devpath/channels"`
+@@ -48,6 +61,9 @@ run_dahdi_cfg() {
+ 		-c "$DAHDICONFDIR/system.conf" \
+ 		-S "$spanno" \
+ 		-C "$basechan-$endchan"
++	if $is_cfg_tmp; then
++		rm "$cfg_file"
++	fi
+ 	asterisk -rx "dahdi create channels $basechan $endchan"
+ }
+ 
+-- 
+1.7.10.4
+

Added: dahdi-tools/trunk/debian/patches/hotplug/0007-span_assignments-k-keys-and-more.patch
URL: http://svn.debian.org/wsvn/pkg-voip/dahdi-tools/trunk/debian/patches/hotplug/0007-span_assignments-k-keys-and-more.patch?rev=10313&op=file
==============================================================================
--- dahdi-tools/trunk/debian/patches/hotplug/0007-span_assignments-k-keys-and-more.patch	(added)
+++ dahdi-tools/trunk/debian/patches/hotplug/0007-span_assignments-k-keys-and-more.patch	Wed Oct  2 19:10:56 2013
@@ -0,0 +1,292 @@
+From bcadd0d8b32678c98e3431d7a418e10de7d34976 Mon Sep 17 00:00:00 2001
+From: Oron Peled <oron.peled at xorcom.com>
+Date: Sun, 29 Sep 2013 10:09:56 +0200
+Subject: [PATCH 7/9] span_assignments: -k / --keys and more
+
+* New functionality (documented in the script header):
+  - Alternative "keys" for device matching
+  - Added new command line options: --help, --dry-run, --verbose, --key
+
+* Clean sysfs attribute contents from special characters in every use-case.
+
+Signed-off-by: Tzafrir Cohen <tzafrir.cohen at xorcom.com>
+---
+ span_assignments |  159 +++++++++++++++++++++++++++++++++++++++++++++---------
+ 1 file changed, 135 insertions(+), 24 deletions(-)
+
+diff --git a/span_assignments b/span_assignments
+index 8f29d39..96e49cd 100755
+--- a/span_assignments
++++ b/span_assignments
+@@ -22,28 +22,116 @@
+ # 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 {auto|add|remove|list|dumpconfig} [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
+@@ -56,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" | \
+@@ -74,7 +168,7 @@ show_devices() {
+ 				spanno='-'
+ 				basechan='-'
+ 			fi
+-			printf "%-8s %-14s %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
+ }
+@@ -86,14 +180,17 @@ dump_config() {
+ 	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"
++		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="$location"
++			id="$devpath"
+ 		fi
+-		echo "# Device: [$hw_id] $location"
++		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" | \
+@@ -117,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'"
+@@ -130,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
+@@ -142,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"
+@@ -159,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 "$hardware_id" in
++		$id)
++			[ "$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 "$location" in
+ 		$id)
+-			#echo "match location($id ~ $location): $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 "$hardware_id" in
++		case "$devpath" in
+ 		$id)
+-			#echo "match hardware_id([$id] ~ $hardware_id): $spanspecs"
++			[ "$verbose" = true ] && echo "match by devpath ($id ~ $devpath): $spanspecs"
+ 			assign_device_spans "$device"
+ 			;;
+ 		esac
+@@ -196,7 +304,9 @@ auto_assign_devices() {
+ 	for device in $DEVICES
+ 	do
+ 		echo "auto-assign $device"
+-		echo 1 > "$device/auto_assign"
++		if [ "$dry_run" != true ]; then
++			echo 1 > "$device/auto_assign"
++		fi
+ 	done
+ }
+ 
+@@ -217,6 +327,7 @@ dumpconfig)
+ 	dump_config
+ 	;;
+ *)
++	echo >&2 "Bad action='$action'"
+ 	usage
+ 	;;
+ esac
+-- 
+1.7.10.4
+

Added: dahdi-tools/trunk/debian/patches/hotplug/0008-dahdi_registration-adapt-to-pinned-spans.patch
URL: http://svn.debian.org/wsvn/pkg-voip/dahdi-tools/trunk/debian/patches/hotplug/0008-dahdi_registration-adapt-to-pinned-spans.patch?rev=10313&op=file
==============================================================================
--- dahdi-tools/trunk/debian/patches/hotplug/0008-dahdi_registration-adapt-to-pinned-spans.patch	(added)
+++ dahdi-tools/trunk/debian/patches/hotplug/0008-dahdi_registration-adapt-to-pinned-spans.patch	Wed Oct  2 19:10:56 2013
@@ -0,0 +1,130 @@
+From 12ed86f0379903700bc8382280e756aaedb8c5c3 Mon Sep 17 00:00:00 2001
+From: Oron Peled <oron.peled at xorcom.com>
+Date: Sun, 29 Sep 2013 18:24:08 +0200
+Subject: [PATCH 8/9] dahdi_registration: adapt to pinned-spans
+
+* If xpp.dahdi_autoreg parameter is 'Y' -- Skip actuall registration.
+* If dahdi.auto_assign_spans is '0' and there's no /etc/dahdi/pinned-spans.conf
+  Than use 'span_assignments auto ...' to assign device spans.
+* Since dahdi_registration iterate in correct xpp_order, the span
+  assignment logic provides migration path for users who did not
+  generate their pinned-spans.conf configuration yet.
+
+Signed-off-by: Tzafrir Cohen <tzafrir.cohen at xorcom.com>
+---
+ xpp/dahdi_registration |   52 ++++++++++++++++++++++++++++++++++++++++++++----
+ 1 file changed, 48 insertions(+), 4 deletions(-)
+
+diff --git a/xpp/dahdi_registration b/xpp/dahdi_registration
+index 8b73aea..cdd715d 100755
+--- a/xpp/dahdi_registration
++++ b/xpp/dahdi_registration
+@@ -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,12 @@ 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 xpp module parameter
++B<dahdi_autoreg> is false (and implicitly: when the dahdi module parameter
++B<auto_assign_span> is true.
++
++If dahdi_autoreg is true, the program will normally do nothing.
++
+ =head2 Parameters
+ 
+ off -- deregisters all XPD's from dahdi.
+@@ -115,6 +150,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. 
+-- 
+1.7.10.4
+

Modified: dahdi-tools/trunk/debian/patches/series
URL: http://svn.debian.org/wsvn/pkg-voip/dahdi-tools/trunk/debian/patches/series?rev=10313&op=diff
==============================================================================
--- dahdi-tools/trunk/debian/patches/series	(original)
+++ dahdi-tools/trunk/debian/patches/series	Wed Oct  2 19:10:56 2013
@@ -2,3 +2,13 @@
 echocan_oslec
 init_unload_oslec
 remove_dahdi_speed
+
+# hotplug support (a an experimental patch set)
+hotplug/0001-Newer-version-of-DAHDI-hotplug-scripts.patch
+hotplug/0002-handle_device-don-t-fail-if-no-config-files.patch
+hotplug/0003-remove-unused-dahdi_cfg_device_args.patch
+hotplug/0004-add-new-dahdi_genconf-generators.patch
+hotplug/0005-Augment-dahdi_genconf-default-generators-list.patch
+hotplug/0006-Do-the-Right-Thing-when-there-s-no-config.patch
+hotplug/0007-span_assignments-k-keys-and-more.patch
+hotplug/0008-dahdi_registration-adapt-to-pinned-spans.patch




More information about the Pkg-voip-commits mailing list