diff --git a/Makefile b/Makefile index 5566cbc..e3aa4b6 100644 --- a/Makefile +++ b/Makefile @@ -108,6 +108,7 @@ endif ASSIGNED_DATA_SCRIPTS:=\ dahdi_handle_device \ dahdi_span_config \ + dahdi_auto_assign_compat \ span_config.d/10-dahdi-cfg \ span_config.d/20-fxotune \ span_config.d/50-asterisk \ diff --git a/dahdi.init b/dahdi.init index 064fa4f..2b77fd3 100755 --- a/dahdi.init +++ b/dahdi.init @@ -148,11 +148,6 @@ xpp_startup() { if ! /usr/share/dahdi/waitfor_xpds; then return 0; fi 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 + # 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 echo -n "Running dahdi_cfg: " $DAHDI_CFG_CMD 2> /dev/null && echo -n "done" diff --git a/hotplug/dahdi_auto_assign_compat b/hotplug/dahdi_auto_assign_compat new file mode 100755 index 0000000..96f90dd --- /dev/null +++ b/hotplug/dahdi_auto_assign_compat @@ -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 diff --git a/hotplug/handle_device.d/20-span-assignments b/hotplug/handle_device.d/20-span-assignments index bfb724b..5493232 100755 --- a/hotplug/handle_device.d/20-span-assignments +++ b/hotplug/handle_device.d/20-span-assignments @@ -7,9 +7,9 @@ add) exit 0 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 dahdi_span_assignments add "/sys$DEVPATH" -else - # No configuration. No order guaranteed - dahdi_span_assignments auto "/sys$DEVPATH" fi