registration-order: Added dahdi_auto_assign_compat

Maintains the original registration order as was before span
assignments. Should allow seemless trannsition to
dahdi.auto_assign_spans=0

* The idea:
  - We stop handling in udev the case of missing
    /etc/dahdi/assigned-spans.conf
  - Instead we rely on "registration_time" dahdi_device attribute from
    DAHDI-linux
  - Then, we can sort the devices and assign their spans in
    /etc/init.d/dahdi
* Mechanics:
  - From /etc/init.d/dahdi, we run a new 'dahdi_auto_assign_compat'
    script (after "waitfor_xpds" etc.)
  - In this script we "auto" assign spans of non-Astribank devices
  - In the end of the script we run "dahdi_registration" which
    does the same for Astribank devices.

Signed-off-by: Tzafrir Cohen <tzafrir.cohen@xorcom.com>
Acked-by: Russ Meyerriecks <rmeyerriecks@digium.com>
This commit is contained in:
Oron Peled 2014-03-09 14:20:17 +02:00 committed by Tzafrir Cohen
parent cfee27106b
commit 1292ea9078
4 changed files with 32 additions and 8 deletions

View File

@ -108,6 +108,7 @@ endif
ASSIGNED_DATA_SCRIPTS:=\ ASSIGNED_DATA_SCRIPTS:=\
dahdi_handle_device \ dahdi_handle_device \
dahdi_span_config \ dahdi_span_config \
dahdi_auto_assign_compat \
span_config.d/10-dahdi-cfg \ span_config.d/10-dahdi-cfg \
span_config.d/20-fxotune \ span_config.d/20-fxotune \
span_config.d/50-asterisk \ span_config.d/50-asterisk \

View File

@ -148,11 +148,6 @@ xpp_startup() {
if ! /usr/share/dahdi/waitfor_xpds; then return 0; fi if ! /usr/share/dahdi/waitfor_xpds; then return 0; fi
hotplug_exit_after_load hotplug_exit_after_load
# overriding locales for the above two, as perl can be noisy
# when locales are missing.
# No register all the devices if they didn't auto-register:
LC_ALL=C dahdi_registration on
} }
@ -263,6 +258,9 @@ case "$1" in
xpp_startup xpp_startup
# Assign all spans that weren't handled via udev + /etc/dahdi/assigned-spans.conf
/usr/share/dahdi/dahdi_auto_assign_compat
if [ $system = debian ]; then if [ $system = debian ]; then
echo -n "Running dahdi_cfg: " echo -n "Running dahdi_cfg: "
$DAHDI_CFG_CMD 2> /dev/null && echo -n "done" $DAHDI_CFG_CMD 2> /dev/null && echo -n "done"

View File

@ -0,0 +1,25 @@
#! /bin/sh
devdir='/sys/bus/dahdi_devices/devices'
# DAHDI is loaded?
if [ ! -d "$devdir" ]; then
exit 0
fi
devices_by_registration_time() {
grep -H '' $devdir/*/registration_time 2>/dev/null | \
sed 's,/registration_time:,\t,' | \
sort -k 2,2
}
# First assign non-Astribank devices
devices_by_registration_time | \
grep -v '/astribanks:' | \
while read devpath time; do
echo >&2 "D: auto '$devpath'"
dahdi_span_assignments auto "$devpath"
done
# Now handle Astribanks
LC_ALL=C dahdi_registration -Rv on

View File

@ -7,9 +7,9 @@ add)
exit 0 exit 0
esac esac
# For now, handle only spans in assigned-spans.conf
# We leave other cases to /etc/init.d/dahdi, so
# legacy ordering can be preserved.
if [ -r "$DAHDICONFDIR/assigned-spans.conf" ]; then if [ -r "$DAHDICONFDIR/assigned-spans.conf" ]; then
dahdi_span_assignments add "/sys$DEVPATH" dahdi_span_assignments add "/sys$DEVPATH"
else
# No configuration. No order guaranteed
dahdi_span_assignments auto "/sys$DEVPATH"
fi fi