Make udev run dahdi_cfg on each device:
[dahdi/tools.git] / handle_device
1 #! /bin/sh
2 #
3 # /usr/share/dahdi/handle_device
4 #
5 # Called by UDEV when a span goes online/offline to assign spans
6
7 me=`basename $0`
8 dir=`dirname $0`
9 LOGGER="logger -i -t '$me'"
10 NAME=`basename "$DEVPATH" | tr -c 'A-Za-z0-9-' '_'`
11
12 # Always redirect stderr somewhere, otherwise the shell script will die
13 # when it tries to do I/O related stuff on closed file descriptor.
14 # Our default is to throw it down the bit-bucket.
15 exec 2> /dev/null
16 # If you wish to trace this script:
17 #exec 2> "/tmp/${me}.$NAME" 1>&2
18 #exec 2> /dev/console
19
20 # Our directory in the beginning, so we can use local lab setup
21 PATH="$dir:/usr/sbin:/sbin:/usr/bin:/bin"
22
23 set -e
24
25 run_dahdi_cfg() {
26         args="-c $DAHDICONFDIR/system.conf $@"
27         echo "Running dahdi_cfg $args"
28         dahdi_cfg $args
29 }
30
31 echo >&2 "$0($ACTION): DEBUG($# args): '$*'"
32
33 case "$ACTION" in
34 add)
35         echo "$ACTION: $DEVPATH" | $LOGGER
36         # FIXME: need a way to add custom environment here:
37         #export DAHDICONFDIR="/tmp/xortel/dahdi"
38         span_types set "/sys/$DEVPATH" 2>&1 | $LOGGER
39         span_assignments add "/sys/$DEVPATH" 2>&1 | $LOGGER
40         dahdi_cfg_device_args | while read args; do
41                         run_dahdi_cfg $args 2>&1 | $LOGGER
42                 done
43         ;;
44 remove)
45         echo "$ACTION: $DEVPATH" | $LOGGER
46         ;;
47 *)
48         echo "UNHANDLED: $ACTION: $DEVPATH" | $LOGGER
49         ;;
50 esac