Do the Right Thing when there's no config
authorTzafrir Cohen <tzafrir.cohen@xorcom.com>
Tue, 1 Oct 2013 19:13:43 +0000 (22:13 +0300)
committerTzafrir Cohen <tzafrir.cohen@xorcom.com>
Sun, 13 Oct 2013 14:18:34 +0000 (10:18 -0400)
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@xorcom.com>

handle_device
span_config

index a25c921..4a95b7b 100755 (executable)
@@ -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 &
        ;;
index 8500d46..64a6ede 100755 (executable)
@@ -32,22 +32,36 @@ 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
-               $LOGGER "Bad dahdi_cfg (no -S support). Skipping"
+               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`
-       echo "dahdi_cfg: span $spanno <$basechan-$endchan>"
-       dahdi_cfg \
-               -c "$DAHDICONFDIR/system.conf" \
-               -S "$spanno" \
-               -C "$basechan-$endchan"
+
+       # 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"
 }
 
@@ -57,9 +71,9 @@ add)
        # Can have alternate dahdi configuration directory for debugging
        # export DAHDICONFDIR="/tmp/xortel/dahdi"
 
-       run_dahdi_cfg "/sys$DEVPATH" 2>&1 | $LOGGER
+       configure_span "/sys$DEVPATH" 2>&1 | $LOGGER
        ;;
-remove)
+remove|online|offline)
        # Nothing to do yet...
        echo "$ACTION: $DEVPATH" | $LOGGER
        ;;