dahdi_span_assignments: matched and unmatched
[dahdi/tools.git] / dahdi.init
index 874fa46..68420c7 100755 (executable)
@@ -16,6 +16,7 @@
 # Should-Stop:     $network $syslog
 # Default-Start:   2 3 4 5
 # Default-Stop:    0 1 6
+# Short-Description: DAHDI kernel modules
 # Description:     dahdi - load and configure DAHDI modules
 ### END INIT INFO
 
@@ -143,15 +144,18 @@ hotplug_exit_after_load() {
 
 # Initialize the Xorcom Astribank (xpp/) using perl utiliites:
 xpp_startup() {
+       if [ "$ASTERISK_SUPPORTS_DAHDI_HOTPLUG" = yes ]; then
+               aas_param='/sys/module/dahdi/parameters/auto_assign_spans'
+               aas=`cat "$aas_param" 2>/dev/null`
+               if [ "$aas" = 0 ]; then
+                       echo 1>&2 "Don't wait for Astribanks (use Asterisk hotplug-support)"
+                       return 0
+               fi
+       fi
        # do nothing if there are no astribank devices:
        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
 }
 
 
@@ -226,21 +230,25 @@ load_modules() {
        echo ""
 }
 
+# Make sure that either dahdi is loaded or modprobe-able
+dahdi_modules_loadable() {
+       modinfo dahdi >/dev/null 2>&1 || lsmod | grep -q -w ^dahdi
+}
+
 if [ ! -x "$DAHDI_CFG" ]; then
        echo "dahdi_cfg not executable"
        exit 0
 fi
 
-if [ ! -f /etc/dahdi/system.conf ]; then
-       echo "/etc/dahdi/system.conf not found. Nothing to do."
-       exit 0
-fi
-
 RETVAL=0
 
 # See how we were called.
 case "$1" in
   start)
+       if ! dahdi_modules_loadable; then
+               echo "No DAHDI modules on the system. Not starting"
+               exit 0
+       fi
        if hotplug_should_load_modules; then
                load_modules
        fi
@@ -258,10 +266,8 @@ case "$1" in
 
        xpp_startup
 
-       if [ ! -e /proc/dahdi/1 ]; then
-               echo "No hardware timing source found in /proc/dahdi, loading dahdi_dummy"
-               modprobe dahdi_dummy 2> /dev/null
-       fi
+       # 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: "
@@ -281,8 +287,12 @@ case "$1" in
                $FXOTUNE -s || :
        fi
 
-       # Set the right Astribanks ticker:
-       LC_ALL=C xpp_sync "$XPP_SYNC"
+       # Do not try to call xpp_sync if there are no Astribank devices
+       # installed.
+       if test -e /sys/bus/astribanks; then 
+               # Set the right Astribanks ticker:
+               LC_ALL=C xpp_sync "$XPP_SYNC"
+       fi
 
        hpec_start
        ;;